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_DAI_FORMAT_I2S 1
     99 #define SND_SOC_DAI_FORMAT_RIGHT_J 2
    100 #define SND_SOC_DAI_FORMAT_LEFT_J 3
    101 #define SND_SOC_DAI_FORMAT_DSP_A 4
    102 #define SND_SOC_DAI_FORMAT_DSP_B 5
    103 #define SND_SOC_DAI_FORMAT_AC97 6
    104 #define SND_SOC_DAI_FORMAT_PDM 7
    105 #define SND_SOC_DAI_FORMAT_MSB SND_SOC_DAI_FORMAT_LEFT_J
    106 #define SND_SOC_DAI_FORMAT_LSB SND_SOC_DAI_FORMAT_RIGHT_J
    107 #define SND_SOC_TPLG_LNK_FLGBIT_SYMMETRIC_RATES (1 << 0)
    108 #define SND_SOC_TPLG_LNK_FLGBIT_SYMMETRIC_CHANNELS (1 << 1)
    109 #define SND_SOC_TPLG_LNK_FLGBIT_SYMMETRIC_SAMPLEBITS (1 << 2)
    110 #define SND_SOC_TPLG_LNK_FLGBIT_VOICE_WAKEUP (1 << 3)
    111 struct snd_soc_tplg_hdr {
    112   __le32 magic;
    113   __le32 abi;
    114   __le32 version;
    115   __le32 type;
    116   __le32 size;
    117   __le32 vendor_type;
    118   __le32 payload_size;
    119   __le32 index;
    120   __le32 count;
    121 } __attribute__((packed));
    122 struct snd_soc_tplg_vendor_uuid_elem {
    123   __le32 token;
    124   char uuid[16];
    125 } __attribute__((packed));
    126 struct snd_soc_tplg_vendor_value_elem {
    127   __le32 token;
    128   __le32 value;
    129 } __attribute__((packed));
    130 struct snd_soc_tplg_vendor_string_elem {
    131   __le32 token;
    132   char string[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
    133 } __attribute__((packed));
    134 struct snd_soc_tplg_vendor_array {
    135   __le32 size;
    136   __le32 type;
    137   __le32 num_elems;
    138   union {
    139     struct snd_soc_tplg_vendor_uuid_elem uuid[0];
    140     struct snd_soc_tplg_vendor_value_elem value[0];
    141     struct snd_soc_tplg_vendor_string_elem string[0];
    142   };
    143 } __attribute__((packed));
    144 struct snd_soc_tplg_private {
    145   __le32 size;
    146   union {
    147     char data[0];
    148     struct snd_soc_tplg_vendor_array array[0];
    149   };
    150 } __attribute__((packed));
    151 struct snd_soc_tplg_tlv_dbscale {
    152   __le32 min;
    153   __le32 step;
    154   __le32 mute;
    155 } __attribute__((packed));
    156 struct snd_soc_tplg_ctl_tlv {
    157   __le32 size;
    158   __le32 type;
    159   union {
    160     __le32 data[SND_SOC_TPLG_TLV_SIZE];
    161     struct snd_soc_tplg_tlv_dbscale scale;
    162   };
    163 } __attribute__((packed));
    164 struct snd_soc_tplg_channel {
    165   __le32 size;
    166   __le32 reg;
    167   __le32 shift;
    168   __le32 id;
    169 } __attribute__((packed));
    170 struct snd_soc_tplg_io_ops {
    171   __le32 get;
    172   __le32 put;
    173   __le32 info;
    174 } __attribute__((packed));
    175 struct snd_soc_tplg_ctl_hdr {
    176   __le32 size;
    177   __le32 type;
    178   char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
    179   __le32 access;
    180   struct snd_soc_tplg_io_ops ops;
    181   struct snd_soc_tplg_ctl_tlv tlv;
    182 } __attribute__((packed));
    183 struct snd_soc_tplg_stream_caps {
    184   __le32 size;
    185   char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
    186   __le64 formats;
    187   __le32 rates;
    188   __le32 rate_min;
    189   __le32 rate_max;
    190   __le32 channels_min;
    191   __le32 channels_max;
    192   __le32 periods_min;
    193   __le32 periods_max;
    194   __le32 period_size_min;
    195   __le32 period_size_max;
    196   __le32 buffer_size_min;
    197   __le32 buffer_size_max;
    198   __le32 sig_bits;
    199 } __attribute__((packed));
    200 struct snd_soc_tplg_stream {
    201   __le32 size;
    202   char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
    203   __le64 format;
    204   __le32 rate;
    205   __le32 period_bytes;
    206   __le32 buffer_bytes;
    207   __le32 channels;
    208 } __attribute__((packed));
    209 struct snd_soc_tplg_hw_config {
    210   __le32 size;
    211   __le32 id;
    212   __le32 fmt;
    213   __u8 clock_gated;
    214   __u8 invert_bclk;
    215   __u8 invert_fsync;
    216   __u8 bclk_master;
    217   __u8 fsync_master;
    218   __u8 mclk_direction;
    219   __le16 reserved;
    220   __le32 mclk_rate;
    221   __le32 bclk_rate;
    222   __le32 fsync_rate;
    223   __le32 tdm_slots;
    224   __le32 tdm_slot_width;
    225   __le32 tx_slots;
    226   __le32 rx_slots;
    227   __le32 tx_channels;
    228   __le32 tx_chanmap[SND_SOC_TPLG_MAX_CHAN];
    229   __le32 rx_channels;
    230   __le32 rx_chanmap[SND_SOC_TPLG_MAX_CHAN];
    231 } __attribute__((packed));
    232 struct snd_soc_tplg_manifest {
    233   __le32 size;
    234   __le32 control_elems;
    235   __le32 widget_elems;
    236   __le32 graph_elems;
    237   __le32 pcm_elems;
    238   __le32 dai_link_elems;
    239   __le32 dai_elems;
    240   __le32 reserved[20];
    241   struct snd_soc_tplg_private priv;
    242 } __attribute__((packed));
    243 struct snd_soc_tplg_mixer_control {
    244   struct snd_soc_tplg_ctl_hdr hdr;
    245   __le32 size;
    246   __le32 min;
    247   __le32 max;
    248   __le32 platform_max;
    249   __le32 invert;
    250   __le32 num_channels;
    251   struct snd_soc_tplg_channel channel[SND_SOC_TPLG_MAX_CHAN];
    252   struct snd_soc_tplg_private priv;
    253 } __attribute__((packed));
    254 struct snd_soc_tplg_enum_control {
    255   struct snd_soc_tplg_ctl_hdr hdr;
    256   __le32 size;
    257   __le32 num_channels;
    258   struct snd_soc_tplg_channel channel[SND_SOC_TPLG_MAX_CHAN];
    259   __le32 items;
    260   __le32 mask;
    261   __le32 count;
    262   char texts[SND_SOC_TPLG_NUM_TEXTS][SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
    263   __le32 values[SND_SOC_TPLG_NUM_TEXTS * SNDRV_CTL_ELEM_ID_NAME_MAXLEN / 4];
    264   struct snd_soc_tplg_private priv;
    265 } __attribute__((packed));
    266 struct snd_soc_tplg_bytes_control {
    267   struct snd_soc_tplg_ctl_hdr hdr;
    268   __le32 size;
    269   __le32 max;
    270   __le32 mask;
    271   __le32 base;
    272   __le32 num_regs;
    273   struct snd_soc_tplg_io_ops ext_ops;
    274   struct snd_soc_tplg_private priv;
    275 } __attribute__((packed));
    276 struct snd_soc_tplg_dapm_graph_elem {
    277   char sink[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
    278   char control[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
    279   char source[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
    280 } __attribute__((packed));
    281 struct snd_soc_tplg_dapm_widget {
    282   __le32 size;
    283   __le32 id;
    284   char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
    285   char sname[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
    286   __le32 reg;
    287   __le32 shift;
    288   __le32 mask;
    289   __le32 subseq;
    290   __le32 invert;
    291   __le32 ignore_suspend;
    292   __le16 event_flags;
    293   __le16 event_type;
    294   __le32 num_kcontrols;
    295   struct snd_soc_tplg_private priv;
    296 } __attribute__((packed));
    297 struct snd_soc_tplg_pcm {
    298   __le32 size;
    299   char pcm_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
    300   char dai_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
    301   __le32 pcm_id;
    302   __le32 dai_id;
    303   __le32 playback;
    304   __le32 capture;
    305   __le32 compress;
    306   struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX];
    307   __le32 num_streams;
    308   struct snd_soc_tplg_stream_caps caps[2];
    309   __le32 flag_mask;
    310   __le32 flags;
    311   struct snd_soc_tplg_private priv;
    312 } __attribute__((packed));
    313 struct snd_soc_tplg_link_config {
    314   __le32 size;
    315   __le32 id;
    316   char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
    317   char stream_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
    318   struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX];
    319   __le32 num_streams;
    320   struct snd_soc_tplg_hw_config hw_config[SND_SOC_TPLG_HW_CONFIG_MAX];
    321   __le32 num_hw_configs;
    322   __le32 default_hw_config_id;
    323   __le32 flag_mask;
    324   __le32 flags;
    325   struct snd_soc_tplg_private priv;
    326 } __attribute__((packed));
    327 struct snd_soc_tplg_dai {
    328   __le32 size;
    329   char dai_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
    330   __le32 dai_id;
    331   __le32 playback;
    332   __le32 capture;
    333   struct snd_soc_tplg_stream_caps caps[2];
    334   __le32 flag_mask;
    335   __le32 flags;
    336   struct snd_soc_tplg_private priv;
    337 } __attribute__((packed));
    338 #endif
    339