0001
0002
0003
0004
0005
0006
0007
0008
0009
0010 #ifndef __HDA_TPLG_INTERFACE_H__
0011 #define __HDA_TPLG_INTERFACE_H__
0012
0013 #include <linux/types.h>
0014
0015
0016
0017
0018
0019 #define SKL_CONTROL_TYPE_BYTE_TLV 0x100
0020 #define SKL_CONTROL_TYPE_MIC_SELECT 0x102
0021 #define SKL_CONTROL_TYPE_MULTI_IO_SELECT 0x103
0022 #define SKL_CONTROL_TYPE_MULTI_IO_SELECT_DMIC 0x104
0023
0024 #define HDA_SST_CFG_MAX 900
0025 #define MAX_IN_QUEUE 8
0026 #define MAX_OUT_QUEUE 8
0027
0028 #define SKL_UUID_STR_SZ 40
0029
0030
0031 enum skl_event_types {
0032 SKL_EVENT_NONE = 0,
0033 SKL_MIXER_EVENT,
0034 SKL_MUX_EVENT,
0035 SKL_VMIXER_EVENT,
0036 SKL_PGA_EVENT
0037 };
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056 enum skl_ch_cfg {
0057 SKL_CH_CFG_MONO = 0,
0058 SKL_CH_CFG_STEREO = 1,
0059 SKL_CH_CFG_2_1 = 2,
0060 SKL_CH_CFG_3_0 = 3,
0061 SKL_CH_CFG_3_1 = 4,
0062 SKL_CH_CFG_QUATRO = 5,
0063 SKL_CH_CFG_4_0 = 6,
0064 SKL_CH_CFG_5_0 = 7,
0065 SKL_CH_CFG_5_1 = 8,
0066 SKL_CH_CFG_DUAL_MONO = 9,
0067 SKL_CH_CFG_I2S_DUAL_STEREO_0 = 10,
0068 SKL_CH_CFG_I2S_DUAL_STEREO_1 = 11,
0069 SKL_CH_CFG_4_CHANNEL = 12,
0070 SKL_CH_CFG_INVALID
0071 };
0072
0073 enum skl_module_type {
0074 SKL_MODULE_TYPE_MIXER = 0,
0075 SKL_MODULE_TYPE_COPIER,
0076 SKL_MODULE_TYPE_UPDWMIX,
0077 SKL_MODULE_TYPE_SRCINT,
0078 SKL_MODULE_TYPE_ALGO,
0079 SKL_MODULE_TYPE_BASE_OUTFMT,
0080 SKL_MODULE_TYPE_KPB,
0081 SKL_MODULE_TYPE_MIC_SELECT,
0082 };
0083
0084 enum skl_core_affinity {
0085 SKL_AFFINITY_CORE_0 = 0,
0086 SKL_AFFINITY_CORE_1,
0087 SKL_AFFINITY_CORE_MAX
0088 };
0089
0090 enum skl_pipe_conn_type {
0091 SKL_PIPE_CONN_TYPE_NONE = 0,
0092 SKL_PIPE_CONN_TYPE_FE,
0093 SKL_PIPE_CONN_TYPE_BE
0094 };
0095
0096 enum skl_hw_conn_type {
0097 SKL_CONN_NONE = 0,
0098 SKL_CONN_SOURCE = 1,
0099 SKL_CONN_SINK = 2
0100 };
0101
0102 enum skl_dev_type {
0103 SKL_DEVICE_BT = 0x0,
0104 SKL_DEVICE_DMIC = 0x1,
0105 SKL_DEVICE_I2S = 0x2,
0106 SKL_DEVICE_SLIMBUS = 0x3,
0107 SKL_DEVICE_HDALINK = 0x4,
0108 SKL_DEVICE_HDAHOST = 0x5,
0109 SKL_DEVICE_NONE
0110 };
0111
0112
0113
0114
0115
0116
0117
0118 enum skl_interleaving {
0119 SKL_INTERLEAVING_PER_CHANNEL = 0,
0120 SKL_INTERLEAVING_PER_SAMPLE = 1,
0121 };
0122
0123 enum skl_sample_type {
0124 SKL_SAMPLE_TYPE_INT_MSB = 0,
0125 SKL_SAMPLE_TYPE_INT_LSB = 1,
0126 SKL_SAMPLE_TYPE_INT_SIGNED = 2,
0127 SKL_SAMPLE_TYPE_INT_UNSIGNED = 3,
0128 SKL_SAMPLE_TYPE_FLOAT = 4
0129 };
0130
0131 enum module_pin_type {
0132
0133
0134
0135 SKL_PIN_TYPE_HOMOGENEOUS,
0136
0137
0138
0139 SKL_PIN_TYPE_HETEROGENEOUS,
0140 };
0141
0142 enum skl_module_param_type {
0143 SKL_PARAM_DEFAULT = 0,
0144 SKL_PARAM_INIT,
0145 SKL_PARAM_SET,
0146 SKL_PARAM_BIND
0147 };
0148
0149 struct skl_dfw_algo_data {
0150 __u32 set_params:2;
0151 __u32 rsvd:30;
0152 __u32 param_id;
0153 __u32 max;
0154 char params[];
0155 } __packed;
0156
0157 enum skl_tkn_dir {
0158 SKL_DIR_IN,
0159 SKL_DIR_OUT
0160 };
0161
0162 enum skl_tuple_type {
0163 SKL_TYPE_TUPLE,
0164 SKL_TYPE_DATA
0165 };
0166
0167
0168
0169 struct skl_dfw_v4_module_pin {
0170 __u16 module_id;
0171 __u16 instance_id;
0172 } __packed;
0173
0174 struct skl_dfw_v4_module_fmt {
0175 __u32 channels;
0176 __u32 freq;
0177 __u32 bit_depth;
0178 __u32 valid_bit_depth;
0179 __u32 ch_cfg;
0180 __u32 interleaving_style;
0181 __u32 sample_type;
0182 __u32 ch_map;
0183 } __packed;
0184
0185 struct skl_dfw_v4_module_caps {
0186 __u32 set_params:2;
0187 __u32 rsvd:30;
0188 __u32 param_id;
0189 __u32 caps_size;
0190 __u32 caps[HDA_SST_CFG_MAX];
0191 } __packed;
0192
0193 struct skl_dfw_v4_pipe {
0194 __u8 pipe_id;
0195 __u8 pipe_priority;
0196 __u16 conn_type:4;
0197 __u16 rsvd:4;
0198 __u16 memory_pages:8;
0199 } __packed;
0200
0201 struct skl_dfw_v4_module {
0202 char uuid[SKL_UUID_STR_SZ];
0203
0204 __u16 module_id;
0205 __u16 instance_id;
0206 __u32 max_mcps;
0207 __u32 mem_pages;
0208 __u32 obs;
0209 __u32 ibs;
0210 __u32 vbus_id;
0211
0212 __u32 max_in_queue:8;
0213 __u32 max_out_queue:8;
0214 __u32 time_slot:8;
0215 __u32 core_id:4;
0216 __u32 rsvd1:4;
0217
0218 __u32 module_type:8;
0219 __u32 conn_type:4;
0220 __u32 dev_type:4;
0221 __u32 hw_conn_type:4;
0222 __u32 rsvd2:12;
0223
0224 __u32 params_fixup:8;
0225 __u32 converter:8;
0226 __u32 input_pin_type:1;
0227 __u32 output_pin_type:1;
0228 __u32 is_dynamic_in_pin:1;
0229 __u32 is_dynamic_out_pin:1;
0230 __u32 is_loadable:1;
0231 __u32 rsvd3:11;
0232
0233 struct skl_dfw_v4_pipe pipe;
0234 struct skl_dfw_v4_module_fmt in_fmt[MAX_IN_QUEUE];
0235 struct skl_dfw_v4_module_fmt out_fmt[MAX_OUT_QUEUE];
0236 struct skl_dfw_v4_module_pin in_pin[MAX_IN_QUEUE];
0237 struct skl_dfw_v4_module_pin out_pin[MAX_OUT_QUEUE];
0238 struct skl_dfw_v4_module_caps caps;
0239 } __packed;
0240
0241 #endif