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
50enum 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
244struct 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__ */