Home | History | Annotate | Download | only in sound
      1 /****************************************************************************
      2  ****************************************************************************
      3  ***
      4  ***   This header was automatically generated from a Linux kernel header
      5  ***   of the same name, to make information necessary for userspace to
      6  ***   call into the kernel available to libc.  It contains only constants,
      7  ***   structures, and macros generated from the original header, and thus,
      8  ***   contains no copyrightable information.
      9  ***
     10  ***   To edit the content of this header, modify the corresponding
     11  ***   source file (e.g. under external/kernel-headers/original/) then
     12  ***   run bionic/libc/kernel/tools/update_all.py
     13  ***
     14  ***   Any manual change here will be lost the next time this script will
     15  ***   be run. You've been warned!
     16  ***
     17  ****************************************************************************
     18  ****************************************************************************/
     19 #ifndef __LINUX_UAPI_SND_ASOC_H
     20 #define __LINUX_UAPI_SND_ASOC_H
     21 #include <linux/types.h>
     22 #include <sound/asound.h>
     23 #define SND_SOC_TPLG_MAX_CHAN 8
     24 #define SND_SOC_TPLG_MAX_FORMATS 16
     25 #define SND_SOC_TPLG_STREAM_CONFIG_MAX 8
     26 #define SND_SOC_TPLG_HW_CONFIG_MAX 8
     27 #define SND_SOC_TPLG_CTL_VOLSW 1
     28 #define SND_SOC_TPLG_CTL_VOLSW_SX 2
     29 #define SND_SOC_TPLG_CTL_VOLSW_XR_SX 3
     30 #define SND_SOC_TPLG_CTL_ENUM 4
     31 #define SND_SOC_TPLG_CTL_BYTES 5
     32 #define SND_SOC_TPLG_CTL_ENUM_VALUE 6
     33 #define SND_SOC_TPLG_CTL_RANGE 7
     34 #define SND_SOC_TPLG_CTL_STROBE 8
     35 #define SND_SOC_TPLG_DAPM_CTL_VOLSW 64
     36 #define SND_SOC_TPLG_DAPM_CTL_ENUM_DOUBLE 65
     37 #define SND_SOC_TPLG_DAPM_CTL_ENUM_VIRT 66
     38 #define SND_SOC_TPLG_DAPM_CTL_ENUM_VALUE 67
     39 #define SND_SOC_TPLG_DAPM_CTL_PIN 68
     40 #define SND_SOC_TPLG_DAPM_INPUT 0
     41 #define SND_SOC_TPLG_DAPM_OUTPUT 1
     42 #define SND_SOC_TPLG_DAPM_MUX 2
     43 #define SND_SOC_TPLG_DAPM_MIXER 3
     44 #define SND_SOC_TPLG_DAPM_PGA 4
     45 #define SND_SOC_TPLG_DAPM_OUT_DRV 5
     46 #define SND_SOC_TPLG_DAPM_ADC 6
     47 #define SND_SOC_TPLG_DAPM_DAC 7
     48 #define SND_SOC_TPLG_DAPM_SWITCH 8
     49 #define SND_SOC_TPLG_DAPM_PRE 9
     50 #define SND_SOC_TPLG_DAPM_POST 10
     51 #define SND_SOC_TPLG_DAPM_AIF_IN 11
     52 #define SND_SOC_TPLG_DAPM_AIF_OUT 12
     53 #define SND_SOC_TPLG_DAPM_DAI_IN 13
     54 #define SND_SOC_TPLG_DAPM_DAI_OUT 14
     55 #define SND_SOC_TPLG_DAPM_DAI_LINK 15
     56 #define SND_SOC_TPLG_DAPM_BUFFER 16
     57 #define SND_SOC_TPLG_DAPM_SCHEDULER 17
     58 #define SND_SOC_TPLG_DAPM_EFFECT 18
     59 #define SND_SOC_TPLG_DAPM_SIGGEN 19
     60 #define SND_SOC_TPLG_DAPM_SRC 20
     61 #define SND_SOC_TPLG_DAPM_ASRC 21
     62 #define SND_SOC_TPLG_DAPM_ENCODER 22
     63 #define SND_SOC_TPLG_DAPM_DECODER 23
     64 #define SND_SOC_TPLG_DAPM_LAST SND_SOC_TPLG_DAPM_DECODER
     65 #define SND_SOC_TPLG_MAGIC 0x41536F43
     66 #define SND_SOC_TPLG_NUM_TEXTS 16
     67 #define SND_SOC_TPLG_ABI_VERSION 0x5
     68 #define SND_SOC_TPLG_ABI_VERSION_MIN 0x4
     69 #define SND_SOC_TPLG_TLV_SIZE 32
     70 #define SND_SOC_TPLG_TYPE_MIXER 1
     71 #define SND_SOC_TPLG_TYPE_BYTES 2
     72 #define SND_SOC_TPLG_TYPE_ENUM 3
     73 #define SND_SOC_TPLG_TYPE_DAPM_GRAPH 4
     74 #define SND_SOC_TPLG_TYPE_DAPM_WIDGET 5
     75 #define SND_SOC_TPLG_TYPE_DAI_LINK 6
     76 #define SND_SOC_TPLG_TYPE_PCM 7
     77 #define SND_SOC_TPLG_TYPE_MANIFEST 8
     78 #define SND_SOC_TPLG_TYPE_CODEC_LINK 9
     79 #define SND_SOC_TPLG_TYPE_BACKEND_LINK 10
     80 #define SND_SOC_TPLG_TYPE_PDATA 11
     81 #define SND_SOC_TPLG_TYPE_DAI 12
     82 #define SND_SOC_TPLG_TYPE_MAX SND_SOC_TPLG_TYPE_DAI
     83 #define SND_SOC_TPLG_TYPE_VENDOR_FW 1000
     84 #define SND_SOC_TPLG_TYPE_VENDOR_CONFIG 1001
     85 #define SND_SOC_TPLG_TYPE_VENDOR_COEFF 1002
     86 #define SND_SOC_TPLG_TYPEVENDOR_CODEC 1003
     87 #define SND_SOC_TPLG_STREAM_PLAYBACK 0
     88 #define SND_SOC_TPLG_STREAM_CAPTURE 1
     89 #define SND_SOC_TPLG_TUPLE_TYPE_UUID 0
     90 #define SND_SOC_TPLG_TUPLE_TYPE_STRING 1
     91 #define SND_SOC_TPLG_TUPLE_TYPE_BOOL 2
     92 #define SND_SOC_TPLG_TUPLE_TYPE_BYTE 3
     93 #define SND_SOC_TPLG_TUPLE_TYPE_WORD 4
     94 #define SND_SOC_TPLG_TUPLE_TYPE_SHORT 5
     95 #define SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_RATES (1 << 0)
     96 #define SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_CHANNELS (1 << 1)
     97 #define SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_SAMPLEBITS (1 << 2)
     98 #define SND_SOC_TPLG_DAI_CLK_GATE_UNDEFINED 0
     99 #define SND_SOC_TPLG_DAI_CLK_GATE_GATED 1
    100 #define SND_SOC_TPLG_DAI_CLK_GATE_CONT 2
    101 #define SND_SOC_TPLG_MCLK_CO 0
    102 #define SND_SOC_TPLG_MCLK_CI 1
    103 #define SND_SOC_DAI_FORMAT_I2S 1
    104 #define SND_SOC_DAI_FORMAT_RIGHT_J 2
    105 #define SND_SOC_DAI_FORMAT_LEFT_J 3
    106 #define SND_SOC_DAI_FORMAT_DSP_A 4
    107 #define SND_SOC_DAI_FORMAT_DSP_B 5
    108 #define SND_SOC_DAI_FORMAT_AC97 6
    109 #define SND_SOC_DAI_FORMAT_PDM 7
    110 #define SND_SOC_DAI_FORMAT_MSB SND_SOC_DAI_FORMAT_LEFT_J
    111 #define SND_SOC_DAI_FORMAT_LSB SND_SOC_DAI_FORMAT_RIGHT_J
    112 #define SND_SOC_TPLG_LNK_FLGBIT_SYMMETRIC_RATES (1 << 0)
    113 #define SND_SOC_TPLG_LNK_FLGBIT_SYMMETRIC_CHANNELS (1 << 1)
    114 #define SND_SOC_TPLG_LNK_FLGBIT_SYMMETRIC_SAMPLEBITS (1 << 2)
    115 #define SND_SOC_TPLG_LNK_FLGBIT_VOICE_WAKEUP (1 << 3)
    116 #define SND_SOC_TPLG_BCLK_CM 0
    117 #define SND_SOC_TPLG_BCLK_CS 1
    118 #define SND_SOC_TPLG_FSYNC_CM 0
    119 #define SND_SOC_TPLG_FSYNC_CS 1
    120 struct snd_soc_tplg_hdr {
    121   __le32 magic;
    122   __le32 abi;
    123   __le32 version;
    124   __le32 type;
    125   __le32 size;
    126   __le32 vendor_type;
    127   __le32 payload_size;
    128   __le32 index;
    129   __le32 count;
    130 } __attribute__((packed));
    131 struct snd_soc_tplg_vendor_uuid_elem {
    132   __le32 token;
    133   char uuid[16];
    134 } __attribute__((packed));
    135 struct snd_soc_tplg_vendor_value_elem {
    136   __le32 token;
    137   __le32 value;
    138 } __attribute__((packed));
    139 struct snd_soc_tplg_vendor_string_elem {
    140   __le32 token;
    141   char string[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
    142 } __attribute__((packed));
    143 struct snd_soc_tplg_vendor_array {
    144   __le32 size;
    145   __le32 type;
    146   __le32 num_elems;
    147   union {
    148     struct snd_soc_tplg_vendor_uuid_elem uuid[0];
    149     struct snd_soc_tplg_vendor_value_elem value[0];
    150     struct snd_soc_tplg_vendor_string_elem string[0];
    151   };
    152 } __attribute__((packed));
    153 struct snd_soc_tplg_private {
    154   __le32 size;
    155   union {
    156     char data[0];
    157     struct snd_soc_tplg_vendor_array array[0];
    158   };
    159 } __attribute__((packed));
    160 struct snd_soc_tplg_tlv_dbscale {
    161   __le32 min;
    162   __le32 step;
    163   __le32 mute;
    164 } __attribute__((packed));
    165 struct snd_soc_tplg_ctl_tlv {
    166   __le32 size;
    167   __le32 type;
    168   union {
    169     __le32 data[SND_SOC_TPLG_TLV_SIZE];
    170     struct snd_soc_tplg_tlv_dbscale scale;
    171   };
    172 } __attribute__((packed));
    173 struct snd_soc_tplg_channel {
    174   __le32 size;
    175   __le32 reg;
    176   __le32 shift;
    177   __le32 id;
    178 } __attribute__((packed));
    179 struct snd_soc_tplg_io_ops {
    180   __le32 get;
    181   __le32 put;
    182   __le32 info;
    183 } __attribute__((packed));
    184 struct snd_soc_tplg_ctl_hdr {
    185   __le32 size;
    186   __le32 type;
    187   char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
    188   __le32 access;
    189   struct snd_soc_tplg_io_ops ops;
    190   struct snd_soc_tplg_ctl_tlv tlv;
    191 } __attribute__((packed));
    192 struct snd_soc_tplg_stream_caps {
    193   __le32 size;
    194   char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
    195   __le64 formats;
    196   __le32 rates;
    197   __le32 rate_min;
    198   __le32 rate_max;
    199   __le32 channels_min;
    200   __le32 channels_max;
    201   __le32 periods_min;
    202   __le32 periods_max;
    203   __le32 period_size_min;
    204   __le32 period_size_max;
    205   __le32 buffer_size_min;
    206   __le32 buffer_size_max;
    207   __le32 sig_bits;
    208 } __attribute__((packed));
    209 struct snd_soc_tplg_stream {
    210   __le32 size;
    211   char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
    212   __le64 format;
    213   __le32 rate;
    214   __le32 period_bytes;
    215   __le32 buffer_bytes;
    216   __le32 channels;
    217 } __attribute__((packed));
    218 struct snd_soc_tplg_hw_config {
    219   __le32 size;
    220   __le32 id;
    221   __le32 fmt;
    222   __u8 clock_gated;
    223   __u8 invert_bclk;
    224   __u8 invert_fsync;
    225   __u8 bclk_master;
    226   __u8 fsync_master;
    227   __u8 mclk_direction;
    228   __le16 reserved;
    229   __le32 mclk_rate;
    230   __le32 bclk_rate;
    231   __le32 fsync_rate;
    232   __le32 tdm_slots;
    233   __le32 tdm_slot_width;
    234   __le32 tx_slots;
    235   __le32 rx_slots;
    236   __le32 tx_channels;
    237   __le32 tx_chanmap[SND_SOC_TPLG_MAX_CHAN];
    238   __le32 rx_channels;
    239   __le32 rx_chanmap[SND_SOC_TPLG_MAX_CHAN];
    240 } __attribute__((packed));
    241 struct snd_soc_tplg_manifest {
    242   __le32 size;
    243   __le32 control_elems;
    244   __le32 widget_elems;
    245   __le32 graph_elems;
    246   __le32 pcm_elems;
    247   __le32 dai_link_elems;
    248   __le32 dai_elems;
    249   __le32 reserved[20];
    250   struct snd_soc_tplg_private priv;
    251 } __attribute__((packed));
    252 struct snd_soc_tplg_mixer_control {
    253   struct snd_soc_tplg_ctl_hdr hdr;
    254   __le32 size;
    255   __le32 min;
    256   __le32 max;
    257   __le32 platform_max;
    258   __le32 invert;
    259   __le32 num_channels;
    260   struct snd_soc_tplg_channel channel[SND_SOC_TPLG_MAX_CHAN];
    261   struct snd_soc_tplg_private priv;
    262 } __attribute__((packed));
    263 struct snd_soc_tplg_enum_control {
    264   struct snd_soc_tplg_ctl_hdr hdr;
    265   __le32 size;
    266   __le32 num_channels;
    267   struct snd_soc_tplg_channel channel[SND_SOC_TPLG_MAX_CHAN];
    268   __le32 items;
    269   __le32 mask;
    270   __le32 count;
    271   char texts[SND_SOC_TPLG_NUM_TEXTS][SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
    272   __le32 values[SND_SOC_TPLG_NUM_TEXTS * SNDRV_CTL_ELEM_ID_NAME_MAXLEN / 4];
    273   struct snd_soc_tplg_private priv;
    274 } __attribute__((packed));
    275 struct snd_soc_tplg_bytes_control {
    276   struct snd_soc_tplg_ctl_hdr hdr;
    277   __le32 size;
    278   __le32 max;
    279   __le32 mask;
    280   __le32 base;
    281   __le32 num_regs;
    282   struct snd_soc_tplg_io_ops ext_ops;
    283   struct snd_soc_tplg_private priv;
    284 } __attribute__((packed));
    285 struct snd_soc_tplg_dapm_graph_elem {
    286   char sink[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
    287   char control[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
    288   char source[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
    289 } __attribute__((packed));
    290 struct snd_soc_tplg_dapm_widget {
    291   __le32 size;
    292   __le32 id;
    293   char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
    294   char sname[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
    295   __le32 reg;
    296   __le32 shift;
    297   __le32 mask;
    298   __le32 subseq;
    299   __le32 invert;
    300   __le32 ignore_suspend;
    301   __le16 event_flags;
    302   __le16 event_type;
    303   __le32 num_kcontrols;
    304   struct snd_soc_tplg_private priv;
    305 } __attribute__((packed));
    306 struct snd_soc_tplg_pcm {
    307   __le32 size;
    308   char pcm_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
    309   char dai_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
    310   __le32 pcm_id;
    311   __le32 dai_id;
    312   __le32 playback;
    313   __le32 capture;
    314   __le32 compress;
    315   struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX];
    316   __le32 num_streams;
    317   struct snd_soc_tplg_stream_caps caps[2];
    318   __le32 flag_mask;
    319   __le32 flags;
    320   struct snd_soc_tplg_private priv;
    321 } __attribute__((packed));
    322 struct snd_soc_tplg_link_config {
    323   __le32 size;
    324   __le32 id;
    325   char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
    326   char stream_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
    327   struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX];
    328   __le32 num_streams;
    329   struct snd_soc_tplg_hw_config hw_config[SND_SOC_TPLG_HW_CONFIG_MAX];
    330   __le32 num_hw_configs;
    331   __le32 default_hw_config_id;
    332   __le32 flag_mask;
    333   __le32 flags;
    334   struct snd_soc_tplg_private priv;
    335 } __attribute__((packed));
    336 struct snd_soc_tplg_dai {
    337   __le32 size;
    338   char dai_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
    339   __le32 dai_id;
    340   __le32 playback;
    341   __le32 capture;
    342   struct snd_soc_tplg_stream_caps caps[2];
    343   __le32 flag_mask;
    344   __le32 flags;
    345   struct snd_soc_tplg_private priv;
    346 } __attribute__((packed));
    347 struct snd_soc_tplg_manifest_v4 {
    348   __le32 size;
    349   __le32 control_elems;
    350   __le32 widget_elems;
    351   __le32 graph_elems;
    352   __le32 pcm_elems;
    353   __le32 dai_link_elems;
    354   struct snd_soc_tplg_private priv;
    355 } __packed;
    356 struct snd_soc_tplg_stream_caps_v4 {
    357   __le32 size;
    358   char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
    359   __le64 formats;
    360   __le32 rates;
    361   __le32 rate_min;
    362   __le32 rate_max;
    363   __le32 channels_min;
    364   __le32 channels_max;
    365   __le32 periods_min;
    366   __le32 periods_max;
    367   __le32 period_size_min;
    368   __le32 period_size_max;
    369   __le32 buffer_size_min;
    370   __le32 buffer_size_max;
    371 } __packed;
    372 struct snd_soc_tplg_pcm_v4 {
    373   __le32 size;
    374   char pcm_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
    375   char dai_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
    376   __le32 pcm_id;
    377   __le32 dai_id;
    378   __le32 playback;
    379   __le32 capture;
    380   __le32 compress;
    381   struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX];
    382   __le32 num_streams;
    383   struct snd_soc_tplg_stream_caps_v4 caps[2];
    384 } __packed;
    385 struct snd_soc_tplg_link_config_v4 {
    386   __le32 size;
    387   __le32 id;
    388   struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX];
    389   __le32 num_streams;
    390 } __packed;
    391 #endif
    392