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 120struct 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)); 131struct snd_soc_tplg_vendor_uuid_elem { 132 __le32 token; 133 char uuid[16]; 134} __attribute__((packed)); 135struct snd_soc_tplg_vendor_value_elem { 136 __le32 token; 137 __le32 value; 138} __attribute__((packed)); 139struct snd_soc_tplg_vendor_string_elem { 140 __le32 token; 141 char string[SNDRV_CTL_ELEM_ID_NAME_MAXLEN]; 142} __attribute__((packed)); 143struct 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)); 153struct 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)); 160struct snd_soc_tplg_tlv_dbscale { 161 __le32 min; 162 __le32 step; 163 __le32 mute; 164} __attribute__((packed)); 165struct 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)); 173struct snd_soc_tplg_channel { 174 __le32 size; 175 __le32 reg; 176 __le32 shift; 177 __le32 id; 178} __attribute__((packed)); 179struct snd_soc_tplg_io_ops { 180 __le32 get; 181 __le32 put; 182 __le32 info; 183} __attribute__((packed)); 184struct 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)); 192struct 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)); 209struct 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)); 218struct 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)); 241struct 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)); 252struct 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)); 263struct 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)); 275struct 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)); 285struct 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)); 290struct 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)); 306struct 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)); 322struct 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)); 336struct 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)); 347struct 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; 356struct 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; 372struct 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; 385struct 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