blob: d0bab8bd45e9424545705d7a3d2b069f5d7f13c4 [file] [log] [blame]
Dan Albert2a18e9f2018-05-17 09:13:22 -07001/****************************************************************************
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)
111struct 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));
122struct snd_soc_tplg_vendor_uuid_elem {
123 __le32 token;
124 char uuid[16];
125} __attribute__((packed));
126struct snd_soc_tplg_vendor_value_elem {
127 __le32 token;
128 __le32 value;
129} __attribute__((packed));
130struct snd_soc_tplg_vendor_string_elem {
131 __le32 token;
132 char string[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
133} __attribute__((packed));
134struct 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));
144struct 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));
151struct snd_soc_tplg_tlv_dbscale {
152 __le32 min;
153 __le32 step;
154 __le32 mute;
155} __attribute__((packed));
156struct 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));
164struct snd_soc_tplg_channel {
165 __le32 size;
166 __le32 reg;
167 __le32 shift;
168 __le32 id;
169} __attribute__((packed));
170struct snd_soc_tplg_io_ops {
171 __le32 get;
172 __le32 put;
173 __le32 info;
174} __attribute__((packed));
175struct 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));
183struct 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));
200struct 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));
209struct 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));
232struct 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));
243struct 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));
254struct 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));
266struct 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));
276struct 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));
281struct 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));
297struct 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));
313struct 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));
327struct 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