122851890Sopenharmony_ci/****************************************************************************
222851890Sopenharmony_ci ****************************************************************************
322851890Sopenharmony_ci ***
422851890Sopenharmony_ci ***   This header was automatically generated from a Linux kernel header
522851890Sopenharmony_ci ***   of the same name, to make information necessary for userspace to
622851890Sopenharmony_ci ***   call into the kernel available to libc.  It contains only constants,
722851890Sopenharmony_ci ***   structures, and macros generated from the original header, and thus,
822851890Sopenharmony_ci ***   contains no copyrightable information.
922851890Sopenharmony_ci ***
1022851890Sopenharmony_ci ***   To edit the content of this header, modify the corresponding
1122851890Sopenharmony_ci ***   source file (e.g. under external/kernel-headers/original/) then
1222851890Sopenharmony_ci ***   run bionic/libc/kernel/tools/update_all.py
1322851890Sopenharmony_ci ***
1422851890Sopenharmony_ci ***   Any manual change here will be lost the next time this script will
1522851890Sopenharmony_ci ***   be run. You've been warned!
1622851890Sopenharmony_ci ***
1722851890Sopenharmony_ci ****************************************************************************
1822851890Sopenharmony_ci ****************************************************************************/
1922851890Sopenharmony_ci#ifndef __HDA_TPLG_INTERFACE_H__
2022851890Sopenharmony_ci#define __HDA_TPLG_INTERFACE_H__
2122851890Sopenharmony_ci#include <linux/types.h>
2222851890Sopenharmony_ci#define SKL_CONTROL_TYPE_BYTE_TLV 0x100
2322851890Sopenharmony_ci#define SKL_CONTROL_TYPE_MIC_SELECT 0x102
2422851890Sopenharmony_ci#define SKL_CONTROL_TYPE_MULTI_IO_SELECT 0x103
2522851890Sopenharmony_ci#define SKL_CONTROL_TYPE_MULTI_IO_SELECT_DMIC 0x104
2622851890Sopenharmony_ci#define HDA_SST_CFG_MAX 900
2722851890Sopenharmony_ci#define MAX_IN_QUEUE 8
2822851890Sopenharmony_ci#define MAX_OUT_QUEUE 8
2922851890Sopenharmony_ci#define SKL_UUID_STR_SZ 40
3022851890Sopenharmony_cienum skl_event_types {
3122851890Sopenharmony_ci  SKL_EVENT_NONE = 0,
3222851890Sopenharmony_ci  SKL_MIXER_EVENT,
3322851890Sopenharmony_ci  SKL_MUX_EVENT,
3422851890Sopenharmony_ci  SKL_VMIXER_EVENT,
3522851890Sopenharmony_ci  SKL_PGA_EVENT
3622851890Sopenharmony_ci};
3722851890Sopenharmony_cienum skl_ch_cfg {
3822851890Sopenharmony_ci  SKL_CH_CFG_MONO = 0,
3922851890Sopenharmony_ci  SKL_CH_CFG_STEREO = 1,
4022851890Sopenharmony_ci  SKL_CH_CFG_2_1 = 2,
4122851890Sopenharmony_ci  SKL_CH_CFG_3_0 = 3,
4222851890Sopenharmony_ci  SKL_CH_CFG_3_1 = 4,
4322851890Sopenharmony_ci  SKL_CH_CFG_QUATRO = 5,
4422851890Sopenharmony_ci  SKL_CH_CFG_4_0 = 6,
4522851890Sopenharmony_ci  SKL_CH_CFG_5_0 = 7,
4622851890Sopenharmony_ci  SKL_CH_CFG_5_1 = 8,
4722851890Sopenharmony_ci  SKL_CH_CFG_DUAL_MONO = 9,
4822851890Sopenharmony_ci  SKL_CH_CFG_I2S_DUAL_STEREO_0 = 10,
4922851890Sopenharmony_ci  SKL_CH_CFG_I2S_DUAL_STEREO_1 = 11,
5022851890Sopenharmony_ci  SKL_CH_CFG_4_CHANNEL = 12,
5122851890Sopenharmony_ci  SKL_CH_CFG_INVALID
5222851890Sopenharmony_ci};
5322851890Sopenharmony_cienum skl_module_type {
5422851890Sopenharmony_ci  SKL_MODULE_TYPE_MIXER = 0,
5522851890Sopenharmony_ci  SKL_MODULE_TYPE_COPIER,
5622851890Sopenharmony_ci  SKL_MODULE_TYPE_UPDWMIX,
5722851890Sopenharmony_ci  SKL_MODULE_TYPE_SRCINT,
5822851890Sopenharmony_ci  SKL_MODULE_TYPE_ALGO,
5922851890Sopenharmony_ci  SKL_MODULE_TYPE_BASE_OUTFMT,
6022851890Sopenharmony_ci  SKL_MODULE_TYPE_KPB,
6122851890Sopenharmony_ci  SKL_MODULE_TYPE_MIC_SELECT,
6222851890Sopenharmony_ci};
6322851890Sopenharmony_cienum skl_core_affinity {
6422851890Sopenharmony_ci  SKL_AFFINITY_CORE_0 = 0,
6522851890Sopenharmony_ci  SKL_AFFINITY_CORE_1,
6622851890Sopenharmony_ci  SKL_AFFINITY_CORE_MAX
6722851890Sopenharmony_ci};
6822851890Sopenharmony_cienum skl_pipe_conn_type {
6922851890Sopenharmony_ci  SKL_PIPE_CONN_TYPE_NONE = 0,
7022851890Sopenharmony_ci  SKL_PIPE_CONN_TYPE_FE,
7122851890Sopenharmony_ci  SKL_PIPE_CONN_TYPE_BE
7222851890Sopenharmony_ci};
7322851890Sopenharmony_cienum skl_hw_conn_type {
7422851890Sopenharmony_ci  SKL_CONN_NONE = 0,
7522851890Sopenharmony_ci  SKL_CONN_SOURCE = 1,
7622851890Sopenharmony_ci  SKL_CONN_SINK = 2
7722851890Sopenharmony_ci};
7822851890Sopenharmony_cienum skl_dev_type {
7922851890Sopenharmony_ci  SKL_DEVICE_BT = 0x0,
8022851890Sopenharmony_ci  SKL_DEVICE_DMIC = 0x1,
8122851890Sopenharmony_ci  SKL_DEVICE_I2S = 0x2,
8222851890Sopenharmony_ci  SKL_DEVICE_SLIMBUS = 0x3,
8322851890Sopenharmony_ci  SKL_DEVICE_HDALINK = 0x4,
8422851890Sopenharmony_ci  SKL_DEVICE_HDAHOST = 0x5,
8522851890Sopenharmony_ci  SKL_DEVICE_NONE
8622851890Sopenharmony_ci};
8722851890Sopenharmony_cienum skl_interleaving {
8822851890Sopenharmony_ci  SKL_INTERLEAVING_PER_CHANNEL = 0,
8922851890Sopenharmony_ci  SKL_INTERLEAVING_PER_SAMPLE = 1,
9022851890Sopenharmony_ci};
9122851890Sopenharmony_cienum skl_sample_type {
9222851890Sopenharmony_ci  SKL_SAMPLE_TYPE_INT_MSB = 0,
9322851890Sopenharmony_ci  SKL_SAMPLE_TYPE_INT_LSB = 1,
9422851890Sopenharmony_ci  SKL_SAMPLE_TYPE_INT_SIGNED = 2,
9522851890Sopenharmony_ci  SKL_SAMPLE_TYPE_INT_UNSIGNED = 3,
9622851890Sopenharmony_ci  SKL_SAMPLE_TYPE_FLOAT = 4
9722851890Sopenharmony_ci};
9822851890Sopenharmony_cienum module_pin_type {
9922851890Sopenharmony_ci  SKL_PIN_TYPE_HOMOGENEOUS,
10022851890Sopenharmony_ci  SKL_PIN_TYPE_HETEROGENEOUS,
10122851890Sopenharmony_ci};
10222851890Sopenharmony_cienum skl_module_param_type {
10322851890Sopenharmony_ci  SKL_PARAM_DEFAULT = 0,
10422851890Sopenharmony_ci  SKL_PARAM_INIT,
10522851890Sopenharmony_ci  SKL_PARAM_SET,
10622851890Sopenharmony_ci  SKL_PARAM_BIND
10722851890Sopenharmony_ci};
10822851890Sopenharmony_cistruct skl_dfw_algo_data {
10922851890Sopenharmony_ci  __u32 set_params : 2;
11022851890Sopenharmony_ci  __u32 rsvd : 30;
11122851890Sopenharmony_ci  __u32 param_id;
11222851890Sopenharmony_ci  __u32 max;
11322851890Sopenharmony_ci  char params[0];
11422851890Sopenharmony_ci} __packed;
11522851890Sopenharmony_cienum skl_tkn_dir {
11622851890Sopenharmony_ci  SKL_DIR_IN,
11722851890Sopenharmony_ci  SKL_DIR_OUT
11822851890Sopenharmony_ci};
11922851890Sopenharmony_cienum skl_tuple_type {
12022851890Sopenharmony_ci  SKL_TYPE_TUPLE,
12122851890Sopenharmony_ci  SKL_TYPE_DATA
12222851890Sopenharmony_ci};
12322851890Sopenharmony_cistruct skl_dfw_v4_module_pin {
12422851890Sopenharmony_ci  __u16 module_id;
12522851890Sopenharmony_ci  __u16 instance_id;
12622851890Sopenharmony_ci} __packed;
12722851890Sopenharmony_cistruct skl_dfw_v4_module_fmt {
12822851890Sopenharmony_ci  __u32 channels;
12922851890Sopenharmony_ci  __u32 freq;
13022851890Sopenharmony_ci  __u32 bit_depth;
13122851890Sopenharmony_ci  __u32 valid_bit_depth;
13222851890Sopenharmony_ci  __u32 ch_cfg;
13322851890Sopenharmony_ci  __u32 interleaving_style;
13422851890Sopenharmony_ci  __u32 sample_type;
13522851890Sopenharmony_ci  __u32 ch_map;
13622851890Sopenharmony_ci} __packed;
13722851890Sopenharmony_cistruct skl_dfw_v4_module_caps {
13822851890Sopenharmony_ci  __u32 set_params : 2;
13922851890Sopenharmony_ci  __u32 rsvd : 30;
14022851890Sopenharmony_ci  __u32 param_id;
14122851890Sopenharmony_ci  __u32 caps_size;
14222851890Sopenharmony_ci  __u32 caps[HDA_SST_CFG_MAX];
14322851890Sopenharmony_ci} __packed;
14422851890Sopenharmony_cistruct skl_dfw_v4_pipe {
14522851890Sopenharmony_ci  __u8 pipe_id;
14622851890Sopenharmony_ci  __u8 pipe_priority;
14722851890Sopenharmony_ci  __u16 conn_type : 4;
14822851890Sopenharmony_ci  __u16 rsvd : 4;
14922851890Sopenharmony_ci  __u16 memory_pages : 8;
15022851890Sopenharmony_ci} __packed;
15122851890Sopenharmony_cistruct skl_dfw_v4_module {
15222851890Sopenharmony_ci  char uuid[SKL_UUID_STR_SZ];
15322851890Sopenharmony_ci  __u16 module_id;
15422851890Sopenharmony_ci  __u16 instance_id;
15522851890Sopenharmony_ci  __u32 max_mcps;
15622851890Sopenharmony_ci  __u32 mem_pages;
15722851890Sopenharmony_ci  __u32 obs;
15822851890Sopenharmony_ci  __u32 ibs;
15922851890Sopenharmony_ci  __u32 vbus_id;
16022851890Sopenharmony_ci  __u32 max_in_queue : 8;
16122851890Sopenharmony_ci  __u32 max_out_queue : 8;
16222851890Sopenharmony_ci  __u32 time_slot : 8;
16322851890Sopenharmony_ci  __u32 core_id : 4;
16422851890Sopenharmony_ci  __u32 rsvd1 : 4;
16522851890Sopenharmony_ci  __u32 module_type : 8;
16622851890Sopenharmony_ci  __u32 conn_type : 4;
16722851890Sopenharmony_ci  __u32 dev_type : 4;
16822851890Sopenharmony_ci  __u32 hw_conn_type : 4;
16922851890Sopenharmony_ci  __u32 rsvd2 : 12;
17022851890Sopenharmony_ci  __u32 params_fixup : 8;
17122851890Sopenharmony_ci  __u32 converter : 8;
17222851890Sopenharmony_ci  __u32 input_pin_type : 1;
17322851890Sopenharmony_ci  __u32 output_pin_type : 1;
17422851890Sopenharmony_ci  __u32 is_dynamic_in_pin : 1;
17522851890Sopenharmony_ci  __u32 is_dynamic_out_pin : 1;
17622851890Sopenharmony_ci  __u32 is_loadable : 1;
17722851890Sopenharmony_ci  __u32 rsvd3 : 11;
17822851890Sopenharmony_ci  struct skl_dfw_v4_pipe pipe;
17922851890Sopenharmony_ci  struct skl_dfw_v4_module_fmt in_fmt[MAX_IN_QUEUE];
18022851890Sopenharmony_ci  struct skl_dfw_v4_module_fmt out_fmt[MAX_OUT_QUEUE];
18122851890Sopenharmony_ci  struct skl_dfw_v4_module_pin in_pin[MAX_IN_QUEUE];
18222851890Sopenharmony_ci  struct skl_dfw_v4_module_pin out_pin[MAX_OUT_QUEUE];
18322851890Sopenharmony_ci  struct skl_dfw_v4_module_caps caps;
18422851890Sopenharmony_ci} __packed;
18522851890Sopenharmony_ci#endif
186