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