/**************************************************************************** **************************************************************************** *** *** This header was automatically generated from a Linux kernel header *** of the same name, to make information necessary for userspace to *** call into the kernel available to libc. It contains only constants, *** structures, and macros generated from the original header, and thus, *** contains no copyrightable information. *** *** To edit the content of this header, modify the corresponding *** source file (e.g. under external/kernel-headers/original/) then *** run bionic/libc/kernel/tools/update_all.py *** *** Any manual change here will be lost the next time this script will *** be run. You've been warned! *** **************************************************************************** ****************************************************************************/ #ifndef __LINUX_UAPI_SND_ASOC_H #define __LINUX_UAPI_SND_ASOC_H #include #include #define SND_SOC_TPLG_MAX_CHAN 8 #define SND_SOC_TPLG_MAX_FORMATS 16 #define SND_SOC_TPLG_STREAM_CONFIG_MAX 8 #define SND_SOC_TPLG_HW_CONFIG_MAX 8 #define SND_SOC_TPLG_CTL_VOLSW 1 #define SND_SOC_TPLG_CTL_VOLSW_SX 2 #define SND_SOC_TPLG_CTL_VOLSW_XR_SX 3 #define SND_SOC_TPLG_CTL_ENUM 4 #define SND_SOC_TPLG_CTL_BYTES 5 #define SND_SOC_TPLG_CTL_ENUM_VALUE 6 #define SND_SOC_TPLG_CTL_RANGE 7 #define SND_SOC_TPLG_CTL_STROBE 8 #define SND_SOC_TPLG_DAPM_CTL_VOLSW 64 #define SND_SOC_TPLG_DAPM_CTL_ENUM_DOUBLE 65 #define SND_SOC_TPLG_DAPM_CTL_ENUM_VIRT 66 #define SND_SOC_TPLG_DAPM_CTL_ENUM_VALUE 67 #define SND_SOC_TPLG_DAPM_CTL_PIN 68 #define SND_SOC_TPLG_DAPM_INPUT 0 #define SND_SOC_TPLG_DAPM_OUTPUT 1 #define SND_SOC_TPLG_DAPM_MUX 2 #define SND_SOC_TPLG_DAPM_MIXER 3 #define SND_SOC_TPLG_DAPM_PGA 4 #define SND_SOC_TPLG_DAPM_OUT_DRV 5 #define SND_SOC_TPLG_DAPM_ADC 6 #define SND_SOC_TPLG_DAPM_DAC 7 #define SND_SOC_TPLG_DAPM_SWITCH 8 #define SND_SOC_TPLG_DAPM_PRE 9 #define SND_SOC_TPLG_DAPM_POST 10 #define SND_SOC_TPLG_DAPM_AIF_IN 11 #define SND_SOC_TPLG_DAPM_AIF_OUT 12 #define SND_SOC_TPLG_DAPM_DAI_IN 13 #define SND_SOC_TPLG_DAPM_DAI_OUT 14 #define SND_SOC_TPLG_DAPM_DAI_LINK 15 #define SND_SOC_TPLG_DAPM_BUFFER 16 #define SND_SOC_TPLG_DAPM_SCHEDULER 17 #define SND_SOC_TPLG_DAPM_EFFECT 18 #define SND_SOC_TPLG_DAPM_SIGGEN 19 #define SND_SOC_TPLG_DAPM_SRC 20 #define SND_SOC_TPLG_DAPM_ASRC 21 #define SND_SOC_TPLG_DAPM_ENCODER 22 #define SND_SOC_TPLG_DAPM_DECODER 23 #define SND_SOC_TPLG_DAPM_LAST SND_SOC_TPLG_DAPM_DECODER #define SND_SOC_TPLG_MAGIC 0x41536F43 #define SND_SOC_TPLG_NUM_TEXTS 16 #define SND_SOC_TPLG_ABI_VERSION 0x5 #define SND_SOC_TPLG_ABI_VERSION_MIN 0x4 #define SND_SOC_TPLG_TLV_SIZE 32 #define SND_SOC_TPLG_TYPE_MIXER 1 #define SND_SOC_TPLG_TYPE_BYTES 2 #define SND_SOC_TPLG_TYPE_ENUM 3 #define SND_SOC_TPLG_TYPE_DAPM_GRAPH 4 #define SND_SOC_TPLG_TYPE_DAPM_WIDGET 5 #define SND_SOC_TPLG_TYPE_DAI_LINK 6 #define SND_SOC_TPLG_TYPE_PCM 7 #define SND_SOC_TPLG_TYPE_MANIFEST 8 #define SND_SOC_TPLG_TYPE_CODEC_LINK 9 #define SND_SOC_TPLG_TYPE_BACKEND_LINK 10 #define SND_SOC_TPLG_TYPE_PDATA 11 #define SND_SOC_TPLG_TYPE_DAI 12 #define SND_SOC_TPLG_TYPE_MAX SND_SOC_TPLG_TYPE_DAI #define SND_SOC_TPLG_TYPE_VENDOR_FW 1000 #define SND_SOC_TPLG_TYPE_VENDOR_CONFIG 1001 #define SND_SOC_TPLG_TYPE_VENDOR_COEFF 1002 #define SND_SOC_TPLG_TYPEVENDOR_CODEC 1003 #define SND_SOC_TPLG_STREAM_PLAYBACK 0 #define SND_SOC_TPLG_STREAM_CAPTURE 1 #define SND_SOC_TPLG_TUPLE_TYPE_UUID 0 #define SND_SOC_TPLG_TUPLE_TYPE_STRING 1 #define SND_SOC_TPLG_TUPLE_TYPE_BOOL 2 #define SND_SOC_TPLG_TUPLE_TYPE_BYTE 3 #define SND_SOC_TPLG_TUPLE_TYPE_WORD 4 #define SND_SOC_TPLG_TUPLE_TYPE_SHORT 5 #define SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_RATES (1 << 0) #define SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_CHANNELS (1 << 1) #define SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_SAMPLEBITS (1 << 2) #define SND_SOC_TPLG_DAI_CLK_GATE_UNDEFINED 0 #define SND_SOC_TPLG_DAI_CLK_GATE_GATED 1 #define SND_SOC_TPLG_DAI_CLK_GATE_CONT 2 #define SND_SOC_TPLG_MCLK_CO 0 #define SND_SOC_TPLG_MCLK_CI 1 #define SND_SOC_DAI_FORMAT_I2S 1 #define SND_SOC_DAI_FORMAT_RIGHT_J 2 #define SND_SOC_DAI_FORMAT_LEFT_J 3 #define SND_SOC_DAI_FORMAT_DSP_A 4 #define SND_SOC_DAI_FORMAT_DSP_B 5 #define SND_SOC_DAI_FORMAT_AC97 6 #define SND_SOC_DAI_FORMAT_PDM 7 #define SND_SOC_DAI_FORMAT_MSB SND_SOC_DAI_FORMAT_LEFT_J #define SND_SOC_DAI_FORMAT_LSB SND_SOC_DAI_FORMAT_RIGHT_J #define SND_SOC_TPLG_LNK_FLGBIT_SYMMETRIC_RATES (1 << 0) #define SND_SOC_TPLG_LNK_FLGBIT_SYMMETRIC_CHANNELS (1 << 1) #define SND_SOC_TPLG_LNK_FLGBIT_SYMMETRIC_SAMPLEBITS (1 << 2) #define SND_SOC_TPLG_LNK_FLGBIT_VOICE_WAKEUP (1 << 3) #define SND_SOC_TPLG_BCLK_CP 0 #define SND_SOC_TPLG_BCLK_CC 1 #define SND_SOC_TPLG_BCLK_CM SND_SOC_TPLG_BCLK_CP #define SND_SOC_TPLG_BCLK_CS SND_SOC_TPLG_BCLK_CC #define SND_SOC_TPLG_FSYNC_CP 0 #define SND_SOC_TPLG_FSYNC_CC 1 #define SND_SOC_TPLG_FSYNC_CM SND_SOC_TPLG_FSYNC_CP #define SND_SOC_TPLG_FSYNC_CS SND_SOC_TPLG_FSYNC_CC struct snd_soc_tplg_hdr { __le32 magic; __le32 abi; __le32 version; __le32 type; __le32 size; __le32 vendor_type; __le32 payload_size; __le32 index; __le32 count; } __attribute__((packed)); struct snd_soc_tplg_vendor_uuid_elem { __le32 token; char uuid[16]; } __attribute__((packed)); struct snd_soc_tplg_vendor_value_elem { __le32 token; __le32 value; } __attribute__((packed)); struct snd_soc_tplg_vendor_string_elem { __le32 token; char string[SNDRV_CTL_ELEM_ID_NAME_MAXLEN]; } __attribute__((packed)); struct snd_soc_tplg_vendor_array { __le32 size; __le32 type; __le32 num_elems; union { struct snd_soc_tplg_vendor_uuid_elem uuid[0]; struct snd_soc_tplg_vendor_value_elem value[0]; struct snd_soc_tplg_vendor_string_elem string[0]; }; } __attribute__((packed)); struct snd_soc_tplg_private { __le32 size; union { char data[0]; struct snd_soc_tplg_vendor_array array[0]; }; } __attribute__((packed)); struct snd_soc_tplg_tlv_dbscale { __le32 min; __le32 step; __le32 mute; } __attribute__((packed)); struct snd_soc_tplg_ctl_tlv { __le32 size; __le32 type; union { __le32 data[SND_SOC_TPLG_TLV_SIZE]; struct snd_soc_tplg_tlv_dbscale scale; }; } __attribute__((packed)); struct snd_soc_tplg_channel { __le32 size; __le32 reg; __le32 shift; __le32 id; } __attribute__((packed)); struct snd_soc_tplg_io_ops { __le32 get; __le32 put; __le32 info; } __attribute__((packed)); struct snd_soc_tplg_ctl_hdr { __le32 size; __le32 type; char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN]; __le32 access; struct snd_soc_tplg_io_ops ops; struct snd_soc_tplg_ctl_tlv tlv; } __attribute__((packed)); struct snd_soc_tplg_stream_caps { __le32 size; char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN]; __le64 formats; __le32 rates; __le32 rate_min; __le32 rate_max; __le32 channels_min; __le32 channels_max; __le32 periods_min; __le32 periods_max; __le32 period_size_min; __le32 period_size_max; __le32 buffer_size_min; __le32 buffer_size_max; __le32 sig_bits; } __attribute__((packed)); struct snd_soc_tplg_stream { __le32 size; char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN]; __le64 format; __le32 rate; __le32 period_bytes; __le32 buffer_bytes; __le32 channels; } __attribute__((packed)); struct snd_soc_tplg_hw_config { __le32 size; __le32 id; __le32 fmt; __u8 clock_gated; __u8 invert_bclk; __u8 invert_fsync; __u8 bclk_provider; __u8 fsync_provider; __u8 mclk_direction; __le16 reserved; __le32 mclk_rate; __le32 bclk_rate; __le32 fsync_rate; __le32 tdm_slots; __le32 tdm_slot_width; __le32 tx_slots; __le32 rx_slots; __le32 tx_channels; __le32 tx_chanmap[SND_SOC_TPLG_MAX_CHAN]; __le32 rx_channels; __le32 rx_chanmap[SND_SOC_TPLG_MAX_CHAN]; } __attribute__((packed)); struct snd_soc_tplg_manifest { __le32 size; __le32 control_elems; __le32 widget_elems; __le32 graph_elems; __le32 pcm_elems; __le32 dai_link_elems; __le32 dai_elems; __le32 reserved[20]; struct snd_soc_tplg_private priv; } __attribute__((packed)); struct snd_soc_tplg_mixer_control { struct snd_soc_tplg_ctl_hdr hdr; __le32 size; __le32 min; __le32 max; __le32 platform_max; __le32 invert; __le32 num_channels; struct snd_soc_tplg_channel channel[SND_SOC_TPLG_MAX_CHAN]; struct snd_soc_tplg_private priv; } __attribute__((packed)); struct snd_soc_tplg_enum_control { struct snd_soc_tplg_ctl_hdr hdr; __le32 size; __le32 num_channels; struct snd_soc_tplg_channel channel[SND_SOC_TPLG_MAX_CHAN]; __le32 items; __le32 mask; __le32 count; char texts[SND_SOC_TPLG_NUM_TEXTS][SNDRV_CTL_ELEM_ID_NAME_MAXLEN]; __le32 values[SND_SOC_TPLG_NUM_TEXTS * SNDRV_CTL_ELEM_ID_NAME_MAXLEN / 4]; struct snd_soc_tplg_private priv; } __attribute__((packed)); struct snd_soc_tplg_bytes_control { struct snd_soc_tplg_ctl_hdr hdr; __le32 size; __le32 max; __le32 mask; __le32 base; __le32 num_regs; struct snd_soc_tplg_io_ops ext_ops; struct snd_soc_tplg_private priv; } __attribute__((packed)); struct snd_soc_tplg_dapm_graph_elem { char sink[SNDRV_CTL_ELEM_ID_NAME_MAXLEN]; char control[SNDRV_CTL_ELEM_ID_NAME_MAXLEN]; char source[SNDRV_CTL_ELEM_ID_NAME_MAXLEN]; } __attribute__((packed)); struct snd_soc_tplg_dapm_widget { __le32 size; __le32 id; char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN]; char sname[SNDRV_CTL_ELEM_ID_NAME_MAXLEN]; __le32 reg; __le32 shift; __le32 mask; __le32 subseq; __le32 invert; __le32 ignore_suspend; __le16 event_flags; __le16 event_type; __le32 num_kcontrols; struct snd_soc_tplg_private priv; } __attribute__((packed)); struct snd_soc_tplg_pcm { __le32 size; char pcm_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN]; char dai_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN]; __le32 pcm_id; __le32 dai_id; __le32 playback; __le32 capture; __le32 compress; struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX]; __le32 num_streams; struct snd_soc_tplg_stream_caps caps[2]; __le32 flag_mask; __le32 flags; struct snd_soc_tplg_private priv; } __attribute__((packed)); struct snd_soc_tplg_link_config { __le32 size; __le32 id; char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN]; char stream_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN]; struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX]; __le32 num_streams; struct snd_soc_tplg_hw_config hw_config[SND_SOC_TPLG_HW_CONFIG_MAX]; __le32 num_hw_configs; __le32 default_hw_config_id; __le32 flag_mask; __le32 flags; struct snd_soc_tplg_private priv; } __attribute__((packed)); struct snd_soc_tplg_dai { __le32 size; char dai_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN]; __le32 dai_id; __le32 playback; __le32 capture; struct snd_soc_tplg_stream_caps caps[2]; __le32 flag_mask; __le32 flags; struct snd_soc_tplg_private priv; } __attribute__((packed)); struct snd_soc_tplg_manifest_v4 { __le32 size; __le32 control_elems; __le32 widget_elems; __le32 graph_elems; __le32 pcm_elems; __le32 dai_link_elems; struct snd_soc_tplg_private priv; } __packed; struct snd_soc_tplg_stream_caps_v4 { __le32 size; char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN]; __le64 formats; __le32 rates; __le32 rate_min; __le32 rate_max; __le32 channels_min; __le32 channels_max; __le32 periods_min; __le32 periods_max; __le32 period_size_min; __le32 period_size_max; __le32 buffer_size_min; __le32 buffer_size_max; } __packed; struct snd_soc_tplg_pcm_v4 { __le32 size; char pcm_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN]; char dai_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN]; __le32 pcm_id; __le32 dai_id; __le32 playback; __le32 capture; __le32 compress; struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX]; __le32 num_streams; struct snd_soc_tplg_stream_caps_v4 caps[2]; } __packed; struct snd_soc_tplg_link_config_v4 { __le32 size; __le32 id; struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX]; __le32 num_streams; } __packed; #endif