root/include/uapi/sound/snd_sst_tokens.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   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

/* [<][>][^][v][top][bottom][index][help] */