master
  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 */
236enum 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