xref: /linux/include/uapi/sound/snd_ar_tokens.h (revision 05a54fa773284d1a7923cdfdd8f0c8dabb98bd26)
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