1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2 3 #ifndef __SND_AR_TOKENS_H__ 4 #define __SND_AR_TOKENS_H__ 5 6 #include <linux/types.h> 7 8 #define APM_SUB_GRAPH_PERF_MODE_LOW_POWER 0x1 9 #define APM_SUB_GRAPH_PERF_MODE_LOW_LATENCY 0x2 10 11 #define APM_SUB_GRAPH_DIRECTION_TX 0x1 12 #define APM_SUB_GRAPH_DIRECTION_RX 0x2 13 14 /** Scenario ID Audio Playback */ 15 #define APM_SUB_GRAPH_SID_AUDIO_PLAYBACK 0x1 16 /* Scenario ID Audio Record */ 17 #define APM_SUB_GRAPH_SID_AUDIO_RECORD 0x2 18 /* Scenario ID Voice call. */ 19 #define APM_SUB_GRAPH_SID_VOICE_CALL 0x3 20 21 /* container capability ID Pre/Post Processing (PP) */ 22 #define APM_CONTAINER_CAP_ID_PP 0x1 23 /* container capability ID Compression/Decompression (CD) */ 24 #define APM_CONTAINER_CAP_ID_CD 0x2 25 /* container capability ID End Point(EP) */ 26 #define APM_CONTAINER_CAP_ID_EP 0x3 27 /* container capability ID Offload (OLC) */ 28 #define APM_CONTAINER_CAP_ID_OLC 0x4 29 30 /* container graph position Stream */ 31 #define APM_CONT_GRAPH_POS_STREAM 0x1 32 /* container graph position Per Stream Per Device*/ 33 #define APM_CONT_GRAPH_POS_PER_STR_PER_DEV 0x2 34 /* container graph position Stream-Device */ 35 #define APM_CONT_GRAPH_POS_STR_DEV 0x3 36 /* container graph position Global Device */ 37 #define APM_CONT_GRAPH_POS_GLOBAL_DEV 0x4 38 39 #define APM_PROC_DOMAIN_ID_MDSP 0x1 40 #define APM_PROC_DOMAIN_ID_ADSP 0x2 41 #define APM_PROC_DOMAIN_ID_SDSP 0x4 42 #define APM_PROC_DOMAIN_ID_CDSP 0x5 43 44 #define PCM_INTERLEAVED 1 45 #define PCM_DEINTERLEAVED_PACKED 2 46 #define PCM_DEINTERLEAVED_UNPACKED 3 47 #define AR_I2S_WS_SRC_EXTERNAL 0 48 #define AR_I2S_WS_SRC_INTERNAL 1 49 50 enum ar_event_types { 51 AR_EVENT_NONE = 0, 52 AR_PGA_DAPM_EVENT 53 }; 54 55 /* 56 * Kcontrol IDs 57 */ 58 #define SND_SOC_AR_TPLG_FE_BE_GRAPH_CTL_MIX 256 59 #define SND_SOC_AR_TPLG_VOL_CTL 257 60 61 /** 62 * %AR_TKN_U32_SUB_GRAPH_INSTANCE_ID: Sub Graph Instance Id 63 * 64 * %AR_TKN_U32_SUB_GRAPH_PERF_MODE: Performance mode of subgraph 65 * APM_SUB_GRAPH_PERF_MODE_LOW_POWER = 1, 66 * APM_SUB_GRAPH_PERF_MODE_LOW_LATENCY = 2 67 * 68 * %AR_TKN_U32_SUB_GRAPH_DIRECTION: Direction of subgraph 69 * APM_SUB_GRAPH_DIRECTION_TX = 1, 70 * APM_SUB_GRAPH_DIRECTION_RX = 2 71 * 72 * %AR_TKN_U32_SUB_GRAPH_SCENARIO_ID: Scenario ID for subgraph 73 * APM_SUB_GRAPH_SID_AUDIO_PLAYBACK = 1, 74 * APM_SUB_GRAPH_SID_AUDIO_RECORD = 2, 75 * APM_SUB_GRAPH_SID_VOICE_CALL = 3 76 * 77 * %AR_TKN_U32_CONTAINER_INSTANCE_ID: Container Instance ID 78 * 79 * %AR_TKN_U32_CONTAINER_CAPABILITY_ID: Container capability ID 80 * APM_CONTAINER_CAP_ID_PP = 1, 81 * APM_CONTAINER_CAP_ID_CD = 2, 82 * APM_CONTAINER_CAP_ID_EP = 3, 83 * APM_CONTAINER_CAP_ID_OLC = 4 84 * 85 * %AR_TKN_U32_CONTAINER_STACK_SIZE: Stack size in the container. 86 * 87 * %AR_TKN_U32_CONTAINER_GRAPH_POS: Graph Position 88 * APM_CONT_GRAPH_POS_STREAM = 1, 89 * APM_CONT_GRAPH_POS_PER_STR_PER_DEV = 2, 90 * APM_CONT_GRAPH_POS_STR_DEV = 3, 91 * APM_CONT_GRAPH_POS_GLOBAL_DEV = 4 92 * 93 * %AR_TKN_U32_CONTAINER_PROC_DOMAIN: Processor domain of container 94 * APM_PROC_DOMAIN_ID_MDSP = 1, 95 * APM_PROC_DOMAIN_ID_ADSP = 2, 96 * APM_PROC_DOMAIN_ID_SDSP = 4, 97 * APM_PROC_DOMAIN_ID_CDSP = 5 98 * 99 * %AR_TKN_U32_MODULE_ID: Module ID 100 * 101 * %AR_TKN_U32_MODULE_INSTANCE_ID: Module Instance ID. 102 * 103 * %AR_TKN_U32_MODULE_MAX_IP_PORTS: Module maximum input ports 104 * 105 * %AR_TKN_U32_MODULE_MAX_OP_PORTS: Module maximum output ports. 106 * 107 * %AR_TKN_U32_MODULE_IN_PORTS: Number of in ports 108 * 109 * %AR_TKN_U32_MODULE_OUT_PORTS: Number of out ports. 110 * 111 * %AR_TKN_U32_MODULE_SRC_OP_PORT_ID: Source module output port ID 112 * 113 * %AR_TKN_U32_MODULE_DST_IN_PORT_ID: Destination module input port ID 114 * 115 * %AR_TKN_U32_MODULE_HW_IF_IDX: Interface index types for I2S/LPAIF 116 * 117 * %AR_TKN_U32_MODULE_HW_IF_TYPE: Interface type 118 * LPAIF = 0, 119 * LPAIF_RXTX = 1, 120 * LPAIF_WSA = 2, 121 * LPAIF_VA = 3, 122 * LPAIF_AXI = 4 123 * Possible values for MI2S 124 * I2S_INTF_TYPE_PRIMARY = 0, 125 * I2S_INTF_TYPE_SECONDARY = 1, 126 * I2S_INTF_TYPE_TERTIARY = 2, 127 * I2S_INTF_TYPE_QUATERNARY = 3, 128 * I2S_INTF_TYPE_QUINARY = 4, 129 * 130 * %AR_TKN_U32_MODULE_FMT_INTERLEAVE: PCM Interleaving 131 * PCM_INTERLEAVED = 1, 132 * PCM_DEINTERLEAVED_PACKED = 2, 133 * PCM_DEINTERLEAVED_UNPACKED = 3 134 * 135 * %AR_TKN_U32_MODULE_FMT_DATA: data format 136 * FIXED POINT = 1, 137 * IEC60958 PACKETIZED = 3, 138 * IEC60958 PACKETIZED NON LINEAR = 8, 139 * COMPR OVER PCM PACKETIZED = 7, 140 * IEC61937 PACKETIZED = 2, 141 * GENERIC COMPRESSED = 5 142 * 143 * %AR_TKN_U32_MODULE_FMT_SAMPLE_RATE: sample rate 144 * 145 * %AR_TKN_U32_MODULE_FMT_BIT_DEPTH: bit depth 146 * 147 * %AR_TKN_U32_MODULE_SD_LINE_IDX: I2S serial data line idx 148 * I2S_SD0 = 1, 149 * I2S_SD1 = 2, 150 * I2S_SD2 = 3, 151 * I2S_SD3 = 4, 152 * I2S_QUAD01 = 5, 153 * I2S_QUAD23 = 6, 154 * I2S_6CHS = 7, 155 * I2S_8CHS = 8 156 * 157 * %AR_TKN_U32_MODULE_WS_SRC: Word Select Source 158 * AR_I2S_WS_SRC_EXTERNAL = 0, 159 * AR_I2S_WS_SRC_INTERNAL = 1, 160 * 161 * %AR_TKN_U32_MODULE_FRAME_SZ_FACTOR: Frame size factor 162 * 163 * %AR_TKN_U32_MODULE_LOG_CODE: Log Module Code 164 * 165 * %AR_TKN_U32_MODULE_LOG_TAP_POINT_ID: logging tap point of this module 166 * 167 * %AR_TKN_U32_MODULE_LOG_MODE: logging mode 168 * LOG_WAIT = 0, 169 * LOG_IMMEDIATELY = 1 170 * 171 * %AR_TKN_DAI_INDEX: dai index 172 * 173 */ 174 175 /* DAI Tokens */ 176 #define AR_TKN_DAI_INDEX 1 177 /* SUB GRAPH Tokens */ 178 #define AR_TKN_U32_SUB_GRAPH_INSTANCE_ID 2 179 #define AR_TKN_U32_SUB_GRAPH_PERF_MODE 3 180 #define AR_TKN_U32_SUB_GRAPH_DIRECTION 4 181 #define AR_TKN_U32_SUB_GRAPH_SCENARIO_ID 5 182 183 /* Container Tokens */ 184 #define AR_TKN_U32_CONTAINER_INSTANCE_ID 100 185 #define AR_TKN_U32_CONTAINER_CAPABILITY_ID 101 186 #define AR_TKN_U32_CONTAINER_STACK_SIZE 102 187 #define AR_TKN_U32_CONTAINER_GRAPH_POS 103 188 #define AR_TKN_U32_CONTAINER_PROC_DOMAIN 104 189 190 /* Module Tokens */ 191 #define AR_TKN_U32_MODULE_ID 200 192 #define AR_TKN_U32_MODULE_INSTANCE_ID 201 193 #define AR_TKN_U32_MODULE_MAX_IP_PORTS 202 194 #define AR_TKN_U32_MODULE_MAX_OP_PORTS 203 195 #define AR_TKN_U32_MODULE_IN_PORTS 204 /* deprecated */ 196 #define AR_TKN_U32_MODULE_OUT_PORTS 205 /* deprecated */ 197 #define AR_TKN_U32_MODULE_SRC_OP_PORT_ID 206 198 #define AR_TKN_U32_MODULE_DST_IN_PORT_ID 207 199 #define AR_TKN_U32_MODULE_SRC_INSTANCE_ID 208 200 #define AR_TKN_U32_MODULE_DST_INSTANCE_ID 209 201 202 #define AR_TKN_U32_MODULE_SRC_OP_PORT_ID1 210 203 #define AR_TKN_U32_MODULE_DST_IN_PORT_ID1 211 204 #define AR_TKN_U32_MODULE_DST_INSTANCE_ID1 212 205 206 #define AR_TKN_U32_MODULE_SRC_OP_PORT_ID2 213 207 #define AR_TKN_U32_MODULE_DST_IN_PORT_ID2 214 208 #define AR_TKN_U32_MODULE_DST_INSTANCE_ID2 215 209 210 #define AR_TKN_U32_MODULE_SRC_OP_PORT_ID3 216 211 #define AR_TKN_U32_MODULE_DST_IN_PORT_ID3 217 212 #define AR_TKN_U32_MODULE_DST_INSTANCE_ID3 218 213 214 #define AR_TKN_U32_MODULE_SRC_OP_PORT_ID4 219 215 #define AR_TKN_U32_MODULE_DST_IN_PORT_ID4 220 216 #define AR_TKN_U32_MODULE_DST_INSTANCE_ID4 221 217 218 #define AR_TKN_U32_MODULE_SRC_OP_PORT_ID5 222 219 #define AR_TKN_U32_MODULE_DST_IN_PORT_ID5 223 220 #define AR_TKN_U32_MODULE_DST_INSTANCE_ID5 224 221 222 #define AR_TKN_U32_MODULE_SRC_OP_PORT_ID6 225 223 #define AR_TKN_U32_MODULE_DST_IN_PORT_ID6 226 224 #define AR_TKN_U32_MODULE_DST_INSTANCE_ID6 227 225 226 #define AR_TKN_U32_MODULE_SRC_OP_PORT_ID7 228 227 #define AR_TKN_U32_MODULE_DST_IN_PORT_ID7 229 228 #define AR_TKN_U32_MODULE_DST_INSTANCE_ID7 230 229 230 #define AR_TKN_U32_MODULE_HW_IF_IDX 250 231 #define AR_TKN_U32_MODULE_HW_IF_TYPE 251 232 #define AR_TKN_U32_MODULE_FMT_INTERLEAVE 252 233 #define AR_TKN_U32_MODULE_FMT_DATA 253 234 #define AR_TKN_U32_MODULE_FMT_SAMPLE_RATE 254 235 #define AR_TKN_U32_MODULE_FMT_BIT_DEPTH 255 236 #define AR_TKN_U32_MODULE_SD_LINE_IDX 256 237 #define AR_TKN_U32_MODULE_WS_SRC 257 238 #define AR_TKN_U32_MODULE_FRAME_SZ_FACTOR 258 239 #define AR_TKN_U32_MODULE_LOG_CODE 259 240 #define AR_TKN_U32_MODULE_LOG_TAP_POINT_ID 260 241 #define AR_TKN_U32_MODULE_LOG_MODE 261 242 243 #define SND_SOC_AR_TPLG_MODULE_CFG_TYPE 0x01001006 244 struct audioreach_module_priv_data { 245 __le32 size; /* size in bytes of the array, including all elements */ 246 __le32 type; /* SND_SOC_AR_TPLG_MODULE_CFG_TYPE */ 247 __le32 priv[2]; /* Private data for future expansion */ 248 __le32 data[0]; /* config data */ 249 }; 250 251 #endif /* __SND_AR_TOKENS_H__ */ 252