root/include/sound/soc-acpi.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. snd_soc_acpi_find_machine
  2. snd_soc_acpi_find_package_from_hid
  3. snd_soc_acpi_codec_list

   1 /* SPDX-License-Identifier: GPL-2.0
   2  *
   3  * Copyright (C) 2013-15, Intel Corporation. All rights reserved.
   4  */
   5 
   6 #ifndef __LINUX_SND_SOC_ACPI_H
   7 #define __LINUX_SND_SOC_ACPI_H
   8 
   9 #include <linux/stddef.h>
  10 #include <linux/acpi.h>
  11 #include <linux/mod_devicetable.h>
  12 
  13 struct snd_soc_acpi_package_context {
  14         char *name;           /* package name */
  15         int length;           /* number of elements */
  16         struct acpi_buffer *format;
  17         struct acpi_buffer *state;
  18         bool data_valid;
  19 };
  20 
  21 /* codec name is used in DAIs is i2c-<HID>:00 with HID being 8 chars */
  22 #define SND_ACPI_I2C_ID_LEN (4 + ACPI_ID_LEN + 3 + 1)
  23 
  24 #if IS_ENABLED(CONFIG_ACPI)
  25 /* acpi match */
  26 struct snd_soc_acpi_mach *
  27 snd_soc_acpi_find_machine(struct snd_soc_acpi_mach *machines);
  28 
  29 bool snd_soc_acpi_find_package_from_hid(const u8 hid[ACPI_ID_LEN],
  30                                     struct snd_soc_acpi_package_context *ctx);
  31 
  32 /* check all codecs */
  33 struct snd_soc_acpi_mach *snd_soc_acpi_codec_list(void *arg);
  34 
  35 #else
  36 /* acpi match */
  37 static inline struct snd_soc_acpi_mach *
  38 snd_soc_acpi_find_machine(struct snd_soc_acpi_mach *machines)
  39 {
  40         return NULL;
  41 }
  42 
  43 static inline bool
  44 snd_soc_acpi_find_package_from_hid(const u8 hid[ACPI_ID_LEN],
  45                                    struct snd_soc_acpi_package_context *ctx)
  46 {
  47         return false;
  48 }
  49 
  50 /* check all codecs */
  51 static inline struct snd_soc_acpi_mach *snd_soc_acpi_codec_list(void *arg)
  52 {
  53         return NULL;
  54 }
  55 #endif
  56 
  57 /**
  58  * snd_soc_acpi_mach_params: interface for machine driver configuration
  59  *
  60  * @acpi_ipc_irq_index: used for BYT-CR detection
  61  * @platform: string used for HDaudio codec support
  62  * @codec_mask: used for HDAudio support
  63  */
  64 struct snd_soc_acpi_mach_params {
  65         u32 acpi_ipc_irq_index;
  66         const char *platform;
  67         u32 codec_mask;
  68         u32 dmic_num;
  69 };
  70 
  71 /**
  72  * snd_soc_acpi_mach: ACPI-based machine descriptor. Most of the fields are
  73  * related to the hardware, except for the firmware and topology file names.
  74  * A platform supported by legacy and Sound Open Firmware (SOF) would expose
  75  * all firmware/topology related fields.
  76  *
  77  * @id: ACPI ID (usually the codec's) used to find a matching machine driver.
  78  * @drv_name: machine driver name
  79  * @fw_filename: firmware file name. Used when SOF is not enabled.
  80  * @board: board name
  81  * @machine_quirk: pointer to quirk, usually based on DMI information when
  82  * ACPI ID alone is not sufficient, wrong or misleading
  83  * @quirk_data: data used to uniquely identify a machine, usually a list of
  84  * audio codecs whose presence if checked with ACPI
  85  * @pdata: intended for platform data or machine specific-ops. This structure
  86  *  is not constant since this field may be updated at run-time
  87  * @sof_fw_filename: Sound Open Firmware file name, if enabled
  88  * @sof_tplg_filename: Sound Open Firmware topology file name, if enabled
  89  */
  90 /* Descriptor for SST ASoC machine driver */
  91 struct snd_soc_acpi_mach {
  92         const u8 id[ACPI_ID_LEN];
  93         const char *drv_name;
  94         const char *fw_filename;
  95         const char *board;
  96         struct snd_soc_acpi_mach * (*machine_quirk)(void *arg);
  97         const void *quirk_data;
  98         void *pdata;
  99         struct snd_soc_acpi_mach_params mach_params;
 100         const char *sof_fw_filename;
 101         const char *sof_tplg_filename;
 102 };
 103 
 104 #define SND_SOC_ACPI_MAX_CODECS 3
 105 
 106 /**
 107  * struct snd_soc_acpi_codecs: Structure to hold secondary codec information
 108  * apart from the matched one, this data will be passed to the quirk function
 109  * to match with the ACPI detected devices
 110  *
 111  * @num_codecs: number of secondary codecs used in the platform
 112  * @codecs: holds the codec IDs
 113  *
 114  */
 115 struct snd_soc_acpi_codecs {
 116         int num_codecs;
 117         u8 codecs[SND_SOC_ACPI_MAX_CODECS][ACPI_ID_LEN];
 118 };
 119 
 120 #endif

/* [<][>][^][v][top][bottom][index][help] */