• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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