1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
3 * snd_sst_tokens.h - Intel SST tokens definition
5 * Copyright (C) 2016 Intel Corp
6 * Author: Shreyas NC <shreyas.nc@intel.com>
7 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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.
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.
18 #ifndef __SND_SST_TOKENS_H__
19 #define __SND_SST_TOKENS_H__
22 * %SKL_TKN_UUID: Module UUID
24 * %SKL_TKN_U8_BLOCK_TYPE: Type of the private data block.Can be:
25 * tuples, bytes, short and words
27 * %SKL_TKN_U8_IN_PIN_TYPE: Input pin type,
28 * homogenous=0, heterogenous=1
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
35 * %SKL_TKN_U8_DYN_OUT_PIN: Configure Output pin dynamically
38 * %SKL_TKN_U8_IN_QUEUE_COUNT: Store the number of Input pins
40 * %SKL_TKN_U8_OUT_QUEUE_COUNT: Store the number of Output pins
42 * %SKL_TKN_U8_TIME_SLOT: TDM slot number
44 * %SKL_TKN_U8_CORE_ID: Stores module affinity value.Can take
46 * SKL_AFFINITY_CORE_0 = 0,
47 * SKL_AFFINITY_CORE_1,
48 * SKL_AFFINITY_CORE_MAX
50 * %SKL_TKN_U8_MOD_TYPE: Module type value.
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)
58 * %SKL_TKN_U8_DEV_TYPE: Type of device to which the module is
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,
69 * %SKL_TKN_U8_HW_CONN_TYPE: Connection type of the HW to which the
72 * SKL_CONN_SOURCE = 1,
75 * %SKL_TKN_U16_PIN_INST_ID: Stores the pin instance id
77 * %SKL_TKN_U16_MOD_INST_ID: Stores the mdule instance id
79 * %SKL_TKN_U32_MAX_MCPS: Module max mcps value
81 * %SKL_TKN_U32_MEM_PAGES: Module resource pages
83 * %SKL_TKN_U32_OBS: Stores Output Buffer size
85 * %SKL_TKN_U32_IBS: Stores input buffer size
87 * %SKL_TKN_U32_VBUS_ID: Module VBUS_ID. PDM=0, SSP0=0,
90 * SSP5=5, SSP6=6,INVALID
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
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),
102 * %SKL_TKN_U32_PIPE_PRIORITY: Pipe priority value
103 * %SKL_TKN_U32_PIPE_MEM_PGS: Pipe resource pages
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
117 * %SKL_TKN_U32_FMT_CH: Supported channel count
119 * %SKL_TKN_U32_FMT_FREQ: Supported frequency/sample rate
121 * %SKL_TKN_U32_FMT_BIT_DEPTH: Supported container size
123 * %SKL_TKN_U32_FMT_SAMPLE_SIZE:Number of samples in the container
125 * %SKL_TKN_U32_FMT_CH_CONFIG: Supported channel configurations for the
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,
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
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
146 * %SKL_TKN_U32_MOD_PARAM_ID: ID of the module params
148 * %SKL_TKN_U32_CAPS_SET_PARAMS:
151 * %SKL_TKN_U32_CAPS_PARAMS_ID: Params ID
153 * %SKL_TKN_U32_CAPS_SIZE: Caps size
155 * %SKL_TKN_U32_PROC_DOMAIN: Specify processing domain
157 * %SKL_TKN_U32_LIB_COUNT: Specifies the number of libraries
159 * %SKL_TKN_STR_LIB_NAME: Specifies the library name
161 * %SKL_TKN_U32_PMODE: Specifies the power mode for pipe
163 * %SKL_TKL_U32_D0I3_CAPS: Specifies the D0i3 capability for module
165 * %SKL_TKN_U32_DMA_BUF_SIZE: DMA buffer size in millisec
167 * %SKL_TKN_U32_PIPE_DIR: Specifies pipe direction. Can be
170 * %SKL_TKN_U32_NUM_CONFIGS: Number of pipe configs
172 * %SKL_TKN_U32_PATH_MEM_PGS: Size of memory (in pages) required for pipeline
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
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.
186 * %SKL_TKN_CFG_MOD_RES_ID: Module's resource index for each of the
189 * %SKL_TKN_CFG_MOD_FMT_ID: Module's interface index for each of the
192 * %SKL_TKN_U8_NUM_MOD: Number of modules in the manifest
194 * %SKL_TKN_MM_U8_MOD_IDX: Current index of the module in the manifest
196 * %SKL_TKN_MM_U8_NUM_RES: Number of resources for the module
198 * %SKL_TKN_MM_U8_NUM_INTF: Number of interfaces for the module
200 * %SKL_TKN_MM_U32_RES_ID: Resource index for the resource info to
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.
207 * %SKL_TKN_MM_U32_CPS: DSP cycles per second
209 * %SKL_TKN_MM_U32_DMA_SIZE: Allocated buffer size for gateway DMA
211 * %SKL_TKN_MM_U32_CPC: DSP cycles allocated per frame
213 * %SKL_TKN_MM_U32_RES_PIN_ID: Resource pin index in the module
215 * %SKL_TKN_MM_U32_INTF_PIN_ID: Interface index in the module
217 * %SKL_TKN_MM_U32_PIN_BUF: Buffer size of the module pin
219 * %SKL_TKN_MM_U32_FMT_ID: Format index for each of the interface/
220 * format information to be filled into.
222 * %SKL_TKN_MM_U32_NUM_IN_FMT: Number of input formats
223 * %SKL_TKN_MM_U32_NUM_OUT_FMT: Number of output formats
225 * %SKL_TKN_U32_ASTATE_IDX: Table Index for the A-State entry to be filled
226 * with kcps and clock source
228 * %SKL_TKN_U32_ASTATE_COUNT: Number of valid entries in A-State table
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.
234 * %SKL_TKN_U32_ASTATE_CLK_SRC: Clock source for A-State entry
236 * module_id and loadable flags dont have tokens as these values will be
237 * read from the DSP FW manifest
239 * Tokens defined can be used either in the manifest or widget private data.
241 * SKL_TKN_MM is used as a suffix for all tokens that represent
242 * module data in the manifest.
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
,
257 SKL_TKN_U8_CONN_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
,
267 SKL_TKN_U32_PARAMS_FIXUP
,
268 SKL_TKN_U32_CONVERTER
,
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
,
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
,
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
,
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
,
302 SKL_TKN_U32_CFG_FREQ
,
305 SKL_TKN_CFG_MOD_RES_ID
,
306 SKL_TKN_CFG_MOD_FMT_ID
,
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
,
314 SKL_TKN_MM_U32_DMA_SIZE
,
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
,
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
,