1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2 /* 3 * snd_sst_tokens.h - Intel SST tokens definition 4 * 5 * Copyright (C) 2016 Intel Corp 6 * Author: Shreyas NC <shreyas.nc@intel.com> 7 */ 8 #ifndef __SND_SST_TOKENS_H__ 9 #define __SND_SST_TOKENS_H__ 10 11 /** 12 * %SKL_TKN_UUID: Module UUID 13 * 14 * %SKL_TKN_U8_BLOCK_TYPE: Type of the private data block.Can be: 15 * tuples, bytes, short and words 16 * 17 * %SKL_TKN_U8_IN_PIN_TYPE: Input pin type, 18 * homogenous=0, heterogenous=1 19 * 20 * %SKL_TKN_U8_OUT_PIN_TYPE: Output pin type, 21 * homogenous=0, heterogenous=1 22 * %SKL_TKN_U8_DYN_IN_PIN: Configure Input pin dynamically 23 * if true 24 * 25 * %SKL_TKN_U8_DYN_OUT_PIN: Configure Output pin dynamically 26 * if true 27 * 28 * %SKL_TKN_U8_IN_QUEUE_COUNT: Store the number of Input pins 29 * 30 * %SKL_TKN_U8_OUT_QUEUE_COUNT: Store the number of Output pins 31 * 32 * %SKL_TKN_U8_TIME_SLOT: TDM slot number 33 * 34 * %SKL_TKN_U8_CORE_ID: Stores module affinity value.Can take 35 * the values: 36 * SKL_AFFINITY_CORE_0 = 0, 37 * SKL_AFFINITY_CORE_1, 38 * SKL_AFFINITY_CORE_MAX 39 * 40 * %SKL_TKN_U8_MOD_TYPE: Module type value. 41 * 42 * %SKL_TKN_U8_CONN_TYPE: Module connection type can be a FE, 43 * BE or NONE as defined : 44 * SKL_PIPE_CONN_TYPE_NONE = 0, 45 * SKL_PIPE_CONN_TYPE_FE = 1 (HOST_DMA) 46 * SKL_PIPE_CONN_TYPE_BE = 2 (LINK_DMA) 47 * 48 * %SKL_TKN_U8_DEV_TYPE: Type of device to which the module is 49 * connected 50 * Can take the values: 51 * SKL_DEVICE_BT = 0x0, 52 * SKL_DEVICE_DMIC = 0x1, 53 * SKL_DEVICE_I2S = 0x2, 54 * SKL_DEVICE_SLIMBUS = 0x3, 55 * SKL_DEVICE_HDALINK = 0x4, 56 * SKL_DEVICE_HDAHOST = 0x5, 57 * SKL_DEVICE_NONE 58 * 59 * %SKL_TKN_U8_HW_CONN_TYPE: Connection type of the HW to which the 60 * module is connected 61 * SKL_CONN_NONE = 0, 62 * SKL_CONN_SOURCE = 1, 63 * SKL_CONN_SINK = 2 64 * 65 * %SKL_TKN_U16_PIN_INST_ID: Stores the pin instance id 66 * 67 * %SKL_TKN_U16_MOD_INST_ID: Stores the mdule instance id 68 * 69 * %SKL_TKN_U32_MAX_MCPS: Module max mcps value 70 * 71 * %SKL_TKN_U32_MEM_PAGES: Module resource pages 72 * 73 * %SKL_TKN_U32_OBS: Stores Output Buffer size 74 * 75 * %SKL_TKN_U32_IBS: Stores input buffer size 76 * 77 * %SKL_TKN_U32_VBUS_ID: Module VBUS_ID. PDM=0, SSP0=0, 78 * SSP1=1,SSP2=2, 79 * SSP3=3, SSP4=4, 80 * SSP5=5, SSP6=6,INVALID 81 * 82 * %SKL_TKN_U32_PARAMS_FIXUP: Module Params fixup mask 83 * %SKL_TKN_U32_CONVERTER: Module params converter mask 84 * %SKL_TKN_U32_PIPE_ID: Stores the pipe id 85 * 86 * %SKL_TKN_U32_PIPE_CONN_TYPE: Type of the token to which the pipe is 87 * connected to. It can be 88 * SKL_PIPE_CONN_TYPE_NONE = 0, 89 * SKL_PIPE_CONN_TYPE_FE = 1 (HOST_DMA), 90 * SKL_PIPE_CONN_TYPE_BE = 2 (LINK_DMA), 91 * 92 * %SKL_TKN_U32_PIPE_PRIORITY: Pipe priority value 93 * %SKL_TKN_U32_PIPE_MEM_PGS: Pipe resource pages 94 * 95 * %SKL_TKN_U32_DIR_PIN_COUNT: Value for the direction to set input/output 96 * formats and the pin count. 97 * The first 4 bits have the direction 98 * value and the next 4 have 99 * the pin count value. 100 * SKL_DIR_IN = 0, SKL_DIR_OUT = 1. 101 * The input and output formats 102 * share the same set of tokens 103 * with the distinction between input 104 * and output made by reading direction 105 * token. 106 * 107 * %SKL_TKN_U32_FMT_CH: Supported channel count 108 * 109 * %SKL_TKN_U32_FMT_FREQ: Supported frequency/sample rate 110 * 111 * %SKL_TKN_U32_FMT_BIT_DEPTH: Supported container size 112 * 113 * %SKL_TKN_U32_FMT_SAMPLE_SIZE:Number of samples in the container 114 * 115 * %SKL_TKN_U32_FMT_CH_CONFIG: Supported channel configurations for the 116 * input/output. 117 * 118 * %SKL_TKN_U32_FMT_INTERLEAVE: Interleaving style which can be per 119 * channel or per sample. The values can be : 120 * SKL_INTERLEAVING_PER_CHANNEL = 0, 121 * SKL_INTERLEAVING_PER_SAMPLE = 1, 122 * 123 * %SKL_TKN_U32_FMT_SAMPLE_TYPE: 124 * Specifies the sample type. Can take the 125 * values: SKL_SAMPLE_TYPE_INT_MSB = 0, 126 * SKL_SAMPLE_TYPE_INT_LSB = 1, 127 * SKL_SAMPLE_TYPE_INT_SIGNED = 2, 128 * SKL_SAMPLE_TYPE_INT_UNSIGNED = 3, 129 * SKL_SAMPLE_TYPE_FLOAT = 4 130 * 131 * %SKL_TKN_U32_CH_MAP: Channel map values 132 * %SKL_TKN_U32_MOD_SET_PARAMS: It can take these values: 133 * SKL_PARAM_DEFAULT, SKL_PARAM_INIT, 134 * SKL_PARAM_SET, SKL_PARAM_BIND 135 * 136 * %SKL_TKN_U32_MOD_PARAM_ID: ID of the module params 137 * 138 * %SKL_TKN_U32_CAPS_SET_PARAMS: 139 * Set params value 140 * 141 * %SKL_TKN_U32_CAPS_PARAMS_ID: Params ID 142 * 143 * %SKL_TKN_U32_CAPS_SIZE: Caps size 144 * 145 * %SKL_TKN_U32_PROC_DOMAIN: Specify processing domain 146 * 147 * %SKL_TKN_U32_LIB_COUNT: Specifies the number of libraries 148 * 149 * %SKL_TKN_STR_LIB_NAME: Specifies the library name 150 * 151 * %SKL_TKN_U32_PMODE: Specifies the power mode for pipe 152 * 153 * %SKL_TKL_U32_D0I3_CAPS: Specifies the D0i3 capability for module 154 * 155 * %SKL_TKN_U32_DMA_BUF_SIZE: DMA buffer size in millisec 156 * 157 * %SKL_TKN_U32_PIPE_DIR: Specifies pipe direction. Can be 158 * playback/capture. 159 * 160 * %SKL_TKN_U32_NUM_CONFIGS: Number of pipe configs 161 * 162 * %SKL_TKN_U32_PATH_MEM_PGS: Size of memory (in pages) required for pipeline 163 * and its data 164 * 165 * %SKL_TKN_U32_PIPE_CONFIG_ID: Config id for the modules in the pipe 166 * and PCM params supported by that pipe 167 * config. This is used as index to fill 168 * up the pipe config and module config 169 * structure. 170 * 171 * %SKL_TKN_U32_CFG_FREQ: 172 * %SKL_TKN_U8_CFG_CHAN: 173 * %SKL_TKN_U8_CFG_BPS: PCM params (freq, channels, bits per sample) 174 * supported for each of the pipe configs. 175 * 176 * %SKL_TKN_CFG_MOD_RES_ID: Module's resource index for each of the 177 * pipe config 178 * 179 * %SKL_TKN_CFG_MOD_FMT_ID: Module's interface index for each of the 180 * pipe config 181 * 182 * %SKL_TKN_U8_NUM_MOD: Number of modules in the manifest 183 * 184 * %SKL_TKN_MM_U8_MOD_IDX: Current index of the module in the manifest 185 * 186 * %SKL_TKN_MM_U8_NUM_RES: Number of resources for the module 187 * 188 * %SKL_TKN_MM_U8_NUM_INTF: Number of interfaces for the module 189 * 190 * %SKL_TKN_MM_U32_RES_ID: Resource index for the resource info to 191 * be filled into. 192 * A module can support multiple resource 193 * configuration and is represnted as a 194 * resource table. This index is used to 195 * fill information into appropriate index. 196 * 197 * %SKL_TKN_MM_U32_CPS: DSP cycles per second 198 * 199 * %SKL_TKN_MM_U32_DMA_SIZE: Allocated buffer size for gateway DMA 200 * 201 * %SKL_TKN_MM_U32_CPC: DSP cycles allocated per frame 202 * 203 * %SKL_TKN_MM_U32_RES_PIN_ID: Resource pin index in the module 204 * 205 * %SKL_TKN_MM_U32_INTF_PIN_ID: Interface index in the module 206 * 207 * %SKL_TKN_MM_U32_PIN_BUF: Buffer size of the module pin 208 * 209 * %SKL_TKN_MM_U32_FMT_ID: Format index for each of the interface/ 210 * format information to be filled into. 211 * 212 * %SKL_TKN_MM_U32_NUM_IN_FMT: Number of input formats 213 * %SKL_TKN_MM_U32_NUM_OUT_FMT: Number of output formats 214 * 215 * %SKL_TKN_U32_ASTATE_IDX: Table Index for the A-State entry to be filled 216 * with kcps and clock source 217 * 218 * %SKL_TKN_U32_ASTATE_COUNT: Number of valid entries in A-State table 219 * 220 * %SKL_TKN_U32_ASTATE_KCPS: Specifies the core load threshold (in kilo 221 * cycles per second) below which DSP is clocked 222 * from source specified by clock source. 223 * 224 * %SKL_TKN_U32_ASTATE_CLK_SRC: Clock source for A-State entry 225 * 226 * %SKL_TKN_U32_FMT_CFG_IDX: Format config index 227 * 228 * module_id and loadable flags dont have tokens as these values will be 229 * read from the DSP FW manifest 230 * 231 * Tokens defined can be used either in the manifest or widget private data. 232 * 233 * SKL_TKN_MM is used as a suffix for all tokens that represent 234 * module data in the manifest. 235 */ 236 enum SKL_TKNS { 237 SKL_TKN_UUID = 1, 238 SKL_TKN_U8_NUM_BLOCKS, 239 SKL_TKN_U8_BLOCK_TYPE, 240 SKL_TKN_U8_IN_PIN_TYPE, 241 SKL_TKN_U8_OUT_PIN_TYPE, 242 SKL_TKN_U8_DYN_IN_PIN, 243 SKL_TKN_U8_DYN_OUT_PIN, 244 SKL_TKN_U8_IN_QUEUE_COUNT, 245 SKL_TKN_U8_OUT_QUEUE_COUNT, 246 SKL_TKN_U8_TIME_SLOT, 247 SKL_TKN_U8_CORE_ID, 248 SKL_TKN_U8_MOD_TYPE, 249 SKL_TKN_U8_CONN_TYPE, 250 SKL_TKN_U8_DEV_TYPE, 251 SKL_TKN_U8_HW_CONN_TYPE, 252 SKL_TKN_U16_MOD_INST_ID, 253 SKL_TKN_U16_BLOCK_SIZE, 254 SKL_TKN_U32_MAX_MCPS, 255 SKL_TKN_U32_MEM_PAGES, 256 SKL_TKN_U32_OBS, 257 SKL_TKN_U32_IBS, 258 SKL_TKN_U32_VBUS_ID, 259 SKL_TKN_U32_PARAMS_FIXUP, 260 SKL_TKN_U32_CONVERTER, 261 SKL_TKN_U32_PIPE_ID, 262 SKL_TKN_U32_PIPE_CONN_TYPE, 263 SKL_TKN_U32_PIPE_PRIORITY, 264 SKL_TKN_U32_PIPE_MEM_PGS, 265 SKL_TKN_U32_DIR_PIN_COUNT, 266 SKL_TKN_U32_FMT_CH, 267 SKL_TKN_U32_FMT_FREQ, 268 SKL_TKN_U32_FMT_BIT_DEPTH, 269 SKL_TKN_U32_FMT_SAMPLE_SIZE, 270 SKL_TKN_U32_FMT_CH_CONFIG, 271 SKL_TKN_U32_FMT_INTERLEAVE, 272 SKL_TKN_U32_FMT_SAMPLE_TYPE, 273 SKL_TKN_U32_FMT_CH_MAP, 274 SKL_TKN_U32_PIN_MOD_ID, 275 SKL_TKN_U32_PIN_INST_ID, 276 SKL_TKN_U32_MOD_SET_PARAMS, 277 SKL_TKN_U32_MOD_PARAM_ID, 278 SKL_TKN_U32_CAPS_SET_PARAMS, 279 SKL_TKN_U32_CAPS_PARAMS_ID, 280 SKL_TKN_U32_CAPS_SIZE, 281 SKL_TKN_U32_PROC_DOMAIN, 282 SKL_TKN_U32_LIB_COUNT, 283 SKL_TKN_STR_LIB_NAME, 284 SKL_TKN_U32_PMODE, 285 SKL_TKL_U32_D0I3_CAPS, /* Typo added at v4.10 */ 286 SKL_TKN_U32_D0I3_CAPS = SKL_TKL_U32_D0I3_CAPS, 287 SKL_TKN_U32_DMA_BUF_SIZE, 288 289 SKL_TKN_U32_PIPE_DIRECTION, 290 SKL_TKN_U32_PIPE_CONFIG_ID, 291 SKL_TKN_U32_NUM_CONFIGS, 292 SKL_TKN_U32_PATH_MEM_PGS, 293 294 SKL_TKN_U32_CFG_FREQ, 295 SKL_TKN_U8_CFG_CHAN, 296 SKL_TKN_U8_CFG_BPS, 297 SKL_TKN_CFG_MOD_RES_ID, 298 SKL_TKN_CFG_MOD_FMT_ID, 299 SKL_TKN_U8_NUM_MOD, 300 301 SKL_TKN_MM_U8_MOD_IDX, 302 SKL_TKN_MM_U8_NUM_RES, 303 SKL_TKN_MM_U8_NUM_INTF, 304 SKL_TKN_MM_U32_RES_ID, 305 SKL_TKN_MM_U32_CPS, 306 SKL_TKN_MM_U32_DMA_SIZE, 307 SKL_TKN_MM_U32_CPC, 308 SKL_TKN_MM_U32_RES_PIN_ID, 309 SKL_TKN_MM_U32_INTF_PIN_ID, 310 SKL_TKN_MM_U32_PIN_BUF, 311 SKL_TKN_MM_U32_FMT_ID, 312 SKL_TKN_MM_U32_NUM_IN_FMT, 313 SKL_TKN_MM_U32_NUM_OUT_FMT, 314 315 SKL_TKN_U32_ASTATE_IDX, 316 SKL_TKN_U32_ASTATE_COUNT, 317 SKL_TKN_U32_ASTATE_KCPS, 318 SKL_TKN_U32_ASTATE_CLK_SRC, 319 320 SKL_TKN_U32_FMT_CFG_IDX = 96, 321 SKL_TKN_MAX = SKL_TKN_U32_FMT_CFG_IDX, 322 }; 323 324 #endif 325