blob: 706fddc127e364df56277b5c6bb5df1730b5124d [file] [log] [blame]
Christopher Ferris05d08e92016-02-04 13:16:38 -08001/****************************************************************************
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>
Christopher Ferris05d08e92016-02-04 13:16:38 -080022#define SND_SOC_TPLG_MAX_CHAN 8
Christopher Ferris05d08e92016-02-04 13:16:38 -080023#define SND_SOC_TPLG_MAX_FORMATS 16
24#define SND_SOC_TPLG_STREAM_CONFIG_MAX 8
Christopher Ferris48af7cb2017-02-21 12:35:09 -080025#define SND_SOC_TPLG_HW_CONFIG_MAX 8
Christopher Ferris48af7cb2017-02-21 12:35:09 -080026#define SND_SOC_TPLG_CTL_VOLSW 1
Christopher Ferris6a9755d2017-01-13 14:09:31 -080027#define SND_SOC_TPLG_CTL_VOLSW_SX 2
Christopher Ferris05d08e92016-02-04 13:16:38 -080028#define SND_SOC_TPLG_CTL_VOLSW_XR_SX 3
29#define SND_SOC_TPLG_CTL_ENUM 4
Christopher Ferris48af7cb2017-02-21 12:35:09 -080030#define SND_SOC_TPLG_CTL_BYTES 5
Christopher Ferris6a9755d2017-01-13 14:09:31 -080031#define SND_SOC_TPLG_CTL_ENUM_VALUE 6
Christopher Ferris05d08e92016-02-04 13:16:38 -080032#define SND_SOC_TPLG_CTL_RANGE 7
33#define SND_SOC_TPLG_CTL_STROBE 8
Christopher Ferris48af7cb2017-02-21 12:35:09 -080034#define SND_SOC_TPLG_DAPM_CTL_VOLSW 64
Christopher Ferris6a9755d2017-01-13 14:09:31 -080035#define SND_SOC_TPLG_DAPM_CTL_ENUM_DOUBLE 65
Christopher Ferris05d08e92016-02-04 13:16:38 -080036#define SND_SOC_TPLG_DAPM_CTL_ENUM_VIRT 66
37#define SND_SOC_TPLG_DAPM_CTL_ENUM_VALUE 67
Christopher Ferris48af7cb2017-02-21 12:35:09 -080038#define SND_SOC_TPLG_DAPM_CTL_PIN 68
Christopher Ferris6a9755d2017-01-13 14:09:31 -080039#define SND_SOC_TPLG_DAPM_INPUT 0
Christopher Ferris05d08e92016-02-04 13:16:38 -080040#define SND_SOC_TPLG_DAPM_OUTPUT 1
41#define SND_SOC_TPLG_DAPM_MUX 2
Christopher Ferris48af7cb2017-02-21 12:35:09 -080042#define SND_SOC_TPLG_DAPM_MIXER 3
Christopher Ferris6a9755d2017-01-13 14:09:31 -080043#define SND_SOC_TPLG_DAPM_PGA 4
Christopher Ferris05d08e92016-02-04 13:16:38 -080044#define SND_SOC_TPLG_DAPM_OUT_DRV 5
45#define SND_SOC_TPLG_DAPM_ADC 6
Christopher Ferris48af7cb2017-02-21 12:35:09 -080046#define SND_SOC_TPLG_DAPM_DAC 7
Christopher Ferris6a9755d2017-01-13 14:09:31 -080047#define SND_SOC_TPLG_DAPM_SWITCH 8
Christopher Ferris05d08e92016-02-04 13:16:38 -080048#define SND_SOC_TPLG_DAPM_PRE 9
49#define SND_SOC_TPLG_DAPM_POST 10
Christopher Ferris48af7cb2017-02-21 12:35:09 -080050#define SND_SOC_TPLG_DAPM_AIF_IN 11
Christopher Ferris6a9755d2017-01-13 14:09:31 -080051#define SND_SOC_TPLG_DAPM_AIF_OUT 12
Christopher Ferris05d08e92016-02-04 13:16:38 -080052#define SND_SOC_TPLG_DAPM_DAI_IN 13
53#define SND_SOC_TPLG_DAPM_DAI_OUT 14
Christopher Ferris48af7cb2017-02-21 12:35:09 -080054#define SND_SOC_TPLG_DAPM_DAI_LINK 15
Christopher Ferris1308ad32017-11-14 17:32:13 -080055#define SND_SOC_TPLG_DAPM_BUFFER 16
56#define SND_SOC_TPLG_DAPM_SCHEDULER 17
57#define SND_SOC_TPLG_DAPM_EFFECT 18
58#define SND_SOC_TPLG_DAPM_SIGGEN 19
59#define SND_SOC_TPLG_DAPM_SRC 20
60#define SND_SOC_TPLG_DAPM_ASRC 21
61#define SND_SOC_TPLG_DAPM_ENCODER 22
62#define SND_SOC_TPLG_DAPM_DECODER 23
63#define SND_SOC_TPLG_DAPM_LAST SND_SOC_TPLG_DAPM_DECODER
Christopher Ferris05d08e92016-02-04 13:16:38 -080064#define SND_SOC_TPLG_MAGIC 0x41536F43
65#define SND_SOC_TPLG_NUM_TEXTS 16
Christopher Ferris48af7cb2017-02-21 12:35:09 -080066#define SND_SOC_TPLG_ABI_VERSION 0x5
67#define SND_SOC_TPLG_ABI_VERSION_MIN 0x4
Christopher Ferris6a9755d2017-01-13 14:09:31 -080068#define SND_SOC_TPLG_TLV_SIZE 32
Christopher Ferris05d08e92016-02-04 13:16:38 -080069#define SND_SOC_TPLG_TYPE_MIXER 1
70#define SND_SOC_TPLG_TYPE_BYTES 2
71#define SND_SOC_TPLG_TYPE_ENUM 3
Christopher Ferris6a9755d2017-01-13 14:09:31 -080072#define SND_SOC_TPLG_TYPE_DAPM_GRAPH 4
Christopher Ferris05d08e92016-02-04 13:16:38 -080073#define SND_SOC_TPLG_TYPE_DAPM_WIDGET 5
74#define SND_SOC_TPLG_TYPE_DAI_LINK 6
75#define SND_SOC_TPLG_TYPE_PCM 7
Christopher Ferris6a9755d2017-01-13 14:09:31 -080076#define SND_SOC_TPLG_TYPE_MANIFEST 8
Christopher Ferris05d08e92016-02-04 13:16:38 -080077#define SND_SOC_TPLG_TYPE_CODEC_LINK 9
78#define SND_SOC_TPLG_TYPE_BACKEND_LINK 10
79#define SND_SOC_TPLG_TYPE_PDATA 11
Christopher Ferris48af7cb2017-02-21 12:35:09 -080080#define SND_SOC_TPLG_TYPE_DAI 12
81#define SND_SOC_TPLG_TYPE_MAX SND_SOC_TPLG_TYPE_DAI
Christopher Ferris05d08e92016-02-04 13:16:38 -080082#define SND_SOC_TPLG_TYPE_VENDOR_FW 1000
83#define SND_SOC_TPLG_TYPE_VENDOR_CONFIG 1001
84#define SND_SOC_TPLG_TYPE_VENDOR_COEFF 1002
85#define SND_SOC_TPLG_TYPEVENDOR_CODEC 1003
Christopher Ferris05d08e92016-02-04 13:16:38 -080086#define SND_SOC_TPLG_STREAM_PLAYBACK 0
87#define SND_SOC_TPLG_STREAM_CAPTURE 1
Christopher Ferris106b3a82016-08-24 12:15:38 -070088#define SND_SOC_TPLG_TUPLE_TYPE_UUID 0
89#define SND_SOC_TPLG_TUPLE_TYPE_STRING 1
Christopher Ferris106b3a82016-08-24 12:15:38 -070090#define SND_SOC_TPLG_TUPLE_TYPE_BOOL 2
91#define SND_SOC_TPLG_TUPLE_TYPE_BYTE 3
92#define SND_SOC_TPLG_TUPLE_TYPE_WORD 4
93#define SND_SOC_TPLG_TUPLE_TYPE_SHORT 5
Christopher Ferris6a9755d2017-01-13 14:09:31 -080094#define SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_RATES (1 << 0)
95#define SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_CHANNELS (1 << 1)
Christopher Ferris6a9755d2017-01-13 14:09:31 -080096#define SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_SAMPLEBITS (1 << 2)
Christopher Ferris9ce28842018-10-25 12:11:39 -070097#define SND_SOC_TPLG_DAI_CLK_GATE_UNDEFINED 0
98#define SND_SOC_TPLG_DAI_CLK_GATE_GATED 1
99#define SND_SOC_TPLG_DAI_CLK_GATE_CONT 2
100#define SND_SOC_TPLG_MCLK_CO 0
101#define SND_SOC_TPLG_MCLK_CI 1
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800102#define SND_SOC_DAI_FORMAT_I2S 1
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800103#define SND_SOC_DAI_FORMAT_RIGHT_J 2
104#define SND_SOC_DAI_FORMAT_LEFT_J 3
105#define SND_SOC_DAI_FORMAT_DSP_A 4
106#define SND_SOC_DAI_FORMAT_DSP_B 5
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800107#define SND_SOC_DAI_FORMAT_AC97 6
108#define SND_SOC_DAI_FORMAT_PDM 7
109#define SND_SOC_DAI_FORMAT_MSB SND_SOC_DAI_FORMAT_LEFT_J
110#define SND_SOC_DAI_FORMAT_LSB SND_SOC_DAI_FORMAT_RIGHT_J
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800111#define SND_SOC_TPLG_LNK_FLGBIT_SYMMETRIC_RATES (1 << 0)
112#define SND_SOC_TPLG_LNK_FLGBIT_SYMMETRIC_CHANNELS (1 << 1)
113#define SND_SOC_TPLG_LNK_FLGBIT_SYMMETRIC_SAMPLEBITS (1 << 2)
114#define SND_SOC_TPLG_LNK_FLGBIT_VOICE_WAKEUP (1 << 3)
Christopher Ferris9ce28842018-10-25 12:11:39 -0700115#define SND_SOC_TPLG_BCLK_CM 0
116#define SND_SOC_TPLG_BCLK_CS 1
117#define SND_SOC_TPLG_FSYNC_CM 0
118#define SND_SOC_TPLG_FSYNC_CS 1
Christopher Ferris05d08e92016-02-04 13:16:38 -0800119struct snd_soc_tplg_hdr {
120 __le32 magic;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800121 __le32 abi;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800122 __le32 version;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800123 __le32 type;
124 __le32 size;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800125 __le32 vendor_type;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800126 __le32 payload_size;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800127 __le32 index;
128 __le32 count;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700129} __attribute__((packed));
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800130struct snd_soc_tplg_vendor_uuid_elem {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700131 __le32 token;
132 char uuid[16];
133} __attribute__((packed));
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800134struct snd_soc_tplg_vendor_value_elem {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700135 __le32 token;
136 __le32 value;
137} __attribute__((packed));
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800138struct snd_soc_tplg_vendor_string_elem {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700139 __le32 token;
140 char string[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
141} __attribute__((packed));
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800142struct snd_soc_tplg_vendor_array {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700143 __le32 size;
144 __le32 type;
145 __le32 num_elems;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800146 union {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700147 struct snd_soc_tplg_vendor_uuid_elem uuid[0];
148 struct snd_soc_tplg_vendor_value_elem value[0];
149 struct snd_soc_tplg_vendor_string_elem string[0];
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800150 };
Christopher Ferris05d08e92016-02-04 13:16:38 -0800151} __attribute__((packed));
152struct snd_soc_tplg_private {
153 __le32 size;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800154 union {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700155 char data[0];
156 struct snd_soc_tplg_vendor_array array[0];
157 };
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800158} __attribute__((packed));
Christopher Ferris05d08e92016-02-04 13:16:38 -0800159struct snd_soc_tplg_tlv_dbscale {
160 __le32 min;
161 __le32 step;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800162 __le32 mute;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800163} __attribute__((packed));
164struct snd_soc_tplg_ctl_tlv {
165 __le32 size;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800166 __le32 type;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800167 union {
168 __le32 data[SND_SOC_TPLG_TLV_SIZE];
169 struct snd_soc_tplg_tlv_dbscale scale;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800170 };
Christopher Ferris05d08e92016-02-04 13:16:38 -0800171} __attribute__((packed));
172struct snd_soc_tplg_channel {
173 __le32 size;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800174 __le32 reg;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800175 __le32 shift;
176 __le32 id;
177} __attribute__((packed));
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800178struct snd_soc_tplg_io_ops {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800179 __le32 get;
180 __le32 put;
181 __le32 info;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800182} __attribute__((packed));
Christopher Ferris05d08e92016-02-04 13:16:38 -0800183struct snd_soc_tplg_ctl_hdr {
184 __le32 size;
185 __le32 type;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800186 char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
Christopher Ferris05d08e92016-02-04 13:16:38 -0800187 __le32 access;
188 struct snd_soc_tplg_io_ops ops;
189 struct snd_soc_tplg_ctl_tlv tlv;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800190} __attribute__((packed));
Christopher Ferris05d08e92016-02-04 13:16:38 -0800191struct snd_soc_tplg_stream_caps {
192 __le32 size;
193 char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800194 __le64 formats;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800195 __le32 rates;
196 __le32 rate_min;
197 __le32 rate_max;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800198 __le32 channels_min;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800199 __le32 channels_max;
200 __le32 periods_min;
201 __le32 periods_max;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800202 __le32 period_size_min;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800203 __le32 period_size_max;
204 __le32 buffer_size_min;
205 __le32 buffer_size_max;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800206 __le32 sig_bits;
207} __attribute__((packed));
Christopher Ferris05d08e92016-02-04 13:16:38 -0800208struct snd_soc_tplg_stream {
209 __le32 size;
210 char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
Christopher Ferris05d08e92016-02-04 13:16:38 -0800211 __le64 format;
212 __le32 rate;
213 __le32 period_bytes;
214 __le32 buffer_bytes;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800215 __le32 channels;
216} __attribute__((packed));
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800217struct snd_soc_tplg_hw_config {
218 __le32 size;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800219 __le32 id;
220 __le32 fmt;
221 __u8 clock_gated;
222 __u8 invert_bclk;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800223 __u8 invert_fsync;
224 __u8 bclk_master;
225 __u8 fsync_master;
226 __u8 mclk_direction;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800227 __le16 reserved;
228 __le32 mclk_rate;
229 __le32 bclk_rate;
230 __le32 fsync_rate;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800231 __le32 tdm_slots;
232 __le32 tdm_slot_width;
233 __le32 tx_slots;
234 __le32 rx_slots;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800235 __le32 tx_channels;
236 __le32 tx_chanmap[SND_SOC_TPLG_MAX_CHAN];
237 __le32 rx_channels;
238 __le32 rx_chanmap[SND_SOC_TPLG_MAX_CHAN];
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800239} __attribute__((packed));
240struct snd_soc_tplg_manifest {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800241 __le32 size;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800242 __le32 control_elems;
243 __le32 widget_elems;
244 __le32 graph_elems;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700245 __le32 pcm_elems;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800246 __le32 dai_link_elems;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800247 __le32 dai_elems;
248 __le32 reserved[20];
Christopher Ferris05d08e92016-02-04 13:16:38 -0800249 struct snd_soc_tplg_private priv;
250} __attribute__((packed));
251struct snd_soc_tplg_mixer_control {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800252 struct snd_soc_tplg_ctl_hdr hdr;
253 __le32 size;
254 __le32 min;
255 __le32 max;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800256 __le32 platform_max;
257 __le32 invert;
258 __le32 num_channels;
259 struct snd_soc_tplg_channel channel[SND_SOC_TPLG_MAX_CHAN];
Christopher Ferris05d08e92016-02-04 13:16:38 -0800260 struct snd_soc_tplg_private priv;
261} __attribute__((packed));
262struct snd_soc_tplg_enum_control {
263 struct snd_soc_tplg_ctl_hdr hdr;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800264 __le32 size;
265 __le32 num_channels;
266 struct snd_soc_tplg_channel channel[SND_SOC_TPLG_MAX_CHAN];
267 __le32 items;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800268 __le32 mask;
269 __le32 count;
270 char texts[SND_SOC_TPLG_NUM_TEXTS][SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
271 __le32 values[SND_SOC_TPLG_NUM_TEXTS * SNDRV_CTL_ELEM_ID_NAME_MAXLEN / 4];
Christopher Ferris05d08e92016-02-04 13:16:38 -0800272 struct snd_soc_tplg_private priv;
273} __attribute__((packed));
274struct snd_soc_tplg_bytes_control {
275 struct snd_soc_tplg_ctl_hdr hdr;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800276 __le32 size;
277 __le32 max;
278 __le32 mask;
279 __le32 base;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800280 __le32 num_regs;
281 struct snd_soc_tplg_io_ops ext_ops;
282 struct snd_soc_tplg_private priv;
283} __attribute__((packed));
Christopher Ferris05d08e92016-02-04 13:16:38 -0800284struct snd_soc_tplg_dapm_graph_elem {
285 char sink[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
286 char control[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
287 char source[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
Christopher Ferris05d08e92016-02-04 13:16:38 -0800288} __attribute__((packed));
289struct snd_soc_tplg_dapm_widget {
290 __le32 size;
291 __le32 id;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800292 char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
293 char sname[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
294 __le32 reg;
295 __le32 shift;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800296 __le32 mask;
297 __le32 subseq;
298 __le32 invert;
299 __le32 ignore_suspend;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800300 __le16 event_flags;
301 __le16 event_type;
302 __le32 num_kcontrols;
303 struct snd_soc_tplg_private priv;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800304} __attribute__((packed));
305struct snd_soc_tplg_pcm {
306 __le32 size;
307 char pcm_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
Christopher Ferris05d08e92016-02-04 13:16:38 -0800308 char dai_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
309 __le32 pcm_id;
310 __le32 dai_id;
311 __le32 playback;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800312 __le32 capture;
313 __le32 compress;
314 struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX];
315 __le32 num_streams;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800316 struct snd_soc_tplg_stream_caps caps[2];
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800317 __le32 flag_mask;
318 __le32 flags;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800319 struct snd_soc_tplg_private priv;
320} __attribute__((packed));
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800321struct snd_soc_tplg_link_config {
322 __le32 size;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800323 __le32 id;
324 char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
325 char stream_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
326 struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX];
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800327 __le32 num_streams;
328 struct snd_soc_tplg_hw_config hw_config[SND_SOC_TPLG_HW_CONFIG_MAX];
329 __le32 num_hw_configs;
330 __le32 default_hw_config_id;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800331 __le32 flag_mask;
332 __le32 flags;
333 struct snd_soc_tplg_private priv;
334} __attribute__((packed));
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800335struct snd_soc_tplg_dai {
336 __le32 size;
337 char dai_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
338 __le32 dai_id;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800339 __le32 playback;
340 __le32 capture;
341 struct snd_soc_tplg_stream_caps caps[2];
342 __le32 flag_mask;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800343 __le32 flags;
344 struct snd_soc_tplg_private priv;
345} __attribute__((packed));
Christopher Ferris9ce28842018-10-25 12:11:39 -0700346struct snd_soc_tplg_manifest_v4 {
347 __le32 size;
348 __le32 control_elems;
349 __le32 widget_elems;
350 __le32 graph_elems;
351 __le32 pcm_elems;
352 __le32 dai_link_elems;
353 struct snd_soc_tplg_private priv;
354} __packed;
355struct snd_soc_tplg_stream_caps_v4 {
356 __le32 size;
357 char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
358 __le64 formats;
359 __le32 rates;
360 __le32 rate_min;
361 __le32 rate_max;
362 __le32 channels_min;
363 __le32 channels_max;
364 __le32 periods_min;
365 __le32 periods_max;
366 __le32 period_size_min;
367 __le32 period_size_max;
368 __le32 buffer_size_min;
369 __le32 buffer_size_max;
370} __packed;
371struct snd_soc_tplg_pcm_v4 {
372 __le32 size;
373 char pcm_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
374 char dai_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
375 __le32 pcm_id;
376 __le32 dai_id;
377 __le32 playback;
378 __le32 capture;
379 __le32 compress;
380 struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX];
381 __le32 num_streams;
382 struct snd_soc_tplg_stream_caps_v4 caps[2];
383} __packed;
384struct snd_soc_tplg_link_config_v4 {
385 __le32 size;
386 __le32 id;
387 struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX];
388 __le32 num_streams;
389} __packed;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800390#endif