blob: 6e31c366c798416c0e924c0466e062c8861c4855 [file] [log] [blame]
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301/* Copyright (c) 2012-2017, The Linux Foundation. All rights reserved.
2 *
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2 and
5 * only version 2 as published by the Free Software Foundation.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 */
12
13#include <linux/slab.h>
14#include <linux/wait.h>
15#include <linux/sched.h>
16#include <linux/jiffies.h>
17#include <linux/uaccess.h>
18#include <linux/atomic.h>
Laxminath Kasam605b42f2017-08-01 22:02:15 +053019#include <dsp/q6afe-v2.h>
20#include <dsp/q6audio-v2.h>
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053021
22int q6audio_get_port_index(u16 port_id)
23{
24 switch (port_id) {
25 case PRIMARY_I2S_RX: return IDX_PRIMARY_I2S_RX;
26 case PRIMARY_I2S_TX: return IDX_PRIMARY_I2S_TX;
27 case AFE_PORT_ID_PRIMARY_PCM_RX:
28 return IDX_AFE_PORT_ID_PRIMARY_PCM_RX;
29 case AFE_PORT_ID_PRIMARY_PCM_TX:
30 return IDX_AFE_PORT_ID_PRIMARY_PCM_TX;
31 case AFE_PORT_ID_SECONDARY_PCM_RX:
32 return IDX_AFE_PORT_ID_SECONDARY_PCM_RX;
33 case AFE_PORT_ID_SECONDARY_PCM_TX:
34 return IDX_AFE_PORT_ID_SECONDARY_PCM_TX;
35 case AFE_PORT_ID_TERTIARY_PCM_RX:
36 return IDX_AFE_PORT_ID_TERTIARY_PCM_RX;
37 case AFE_PORT_ID_TERTIARY_PCM_TX:
38 return IDX_AFE_PORT_ID_TERTIARY_PCM_TX;
39 case AFE_PORT_ID_QUATERNARY_PCM_RX:
40 return IDX_AFE_PORT_ID_QUATERNARY_PCM_RX;
41 case AFE_PORT_ID_QUATERNARY_PCM_TX:
42 return IDX_AFE_PORT_ID_QUATERNARY_PCM_TX;
43 case SECONDARY_I2S_RX: return IDX_SECONDARY_I2S_RX;
44 case SECONDARY_I2S_TX: return IDX_SECONDARY_I2S_TX;
45 case MI2S_RX: return IDX_MI2S_RX;
46 case MI2S_TX: return IDX_MI2S_TX;
47 case HDMI_RX: return IDX_HDMI_RX;
48 case DISPLAY_PORT_RX: return IDX_DISPLAY_PORT_RX;
49 case AFE_PORT_ID_SPDIF_RX: return IDX_SPDIF_RX;
50 case RSVD_2: return IDX_RSVD_2;
51 case RSVD_3: return IDX_RSVD_3;
52 case DIGI_MIC_TX: return IDX_DIGI_MIC_TX;
53 case VOICE_RECORD_RX: return IDX_VOICE_RECORD_RX;
54 case VOICE_RECORD_TX: return IDX_VOICE_RECORD_TX;
55 case VOICE_PLAYBACK_TX: return IDX_VOICE_PLAYBACK_TX;
56 case VOICE2_PLAYBACK_TX: return IDX_VOICE2_PLAYBACK_TX;
57 case SLIMBUS_0_RX: return IDX_SLIMBUS_0_RX;
58 case SLIMBUS_0_TX: return IDX_SLIMBUS_0_TX;
59 case SLIMBUS_1_RX: return IDX_SLIMBUS_1_RX;
60 case SLIMBUS_1_TX: return IDX_SLIMBUS_1_TX;
61 case SLIMBUS_2_RX: return IDX_SLIMBUS_2_RX;
62 case SLIMBUS_2_TX: return IDX_SLIMBUS_2_TX;
63 case SLIMBUS_3_RX: return IDX_SLIMBUS_3_RX;
64 case SLIMBUS_3_TX: return IDX_SLIMBUS_3_TX;
65 case SLIMBUS_4_RX: return IDX_SLIMBUS_4_RX;
66 case SLIMBUS_4_TX: return IDX_SLIMBUS_4_TX;
67 case SLIMBUS_5_RX: return IDX_SLIMBUS_5_RX;
68 case SLIMBUS_5_TX: return IDX_SLIMBUS_5_TX;
69 case SLIMBUS_6_RX: return IDX_SLIMBUS_6_RX;
70 case SLIMBUS_6_TX: return IDX_SLIMBUS_6_TX;
71 case SLIMBUS_7_RX: return IDX_SLIMBUS_7_RX;
72 case SLIMBUS_7_TX: return IDX_SLIMBUS_7_TX;
73 case SLIMBUS_8_RX: return IDX_SLIMBUS_8_RX;
74 case SLIMBUS_8_TX: return IDX_SLIMBUS_8_TX;
75 case INT_BT_SCO_RX: return IDX_INT_BT_SCO_RX;
76 case INT_BT_SCO_TX: return IDX_INT_BT_SCO_TX;
77 case INT_BT_A2DP_RX: return IDX_INT_BT_A2DP_RX;
78 case INT_FM_RX: return IDX_INT_FM_RX;
79 case INT_FM_TX: return IDX_INT_FM_TX;
80 case RT_PROXY_PORT_001_RX: return IDX_RT_PROXY_PORT_001_RX;
81 case RT_PROXY_PORT_001_TX: return IDX_RT_PROXY_PORT_001_TX;
82 case AFE_PORT_ID_PRIMARY_MI2S_RX:
83 return IDX_AFE_PORT_ID_PRIMARY_MI2S_RX;
84 case AFE_PORT_ID_PRIMARY_MI2S_TX:
85 return IDX_AFE_PORT_ID_PRIMARY_MI2S_TX;
86 case AFE_PORT_ID_QUATERNARY_MI2S_RX:
87 return IDX_AFE_PORT_ID_QUATERNARY_MI2S_RX;
88 case AFE_PORT_ID_QUATERNARY_MI2S_TX:
89 return IDX_AFE_PORT_ID_QUATERNARY_MI2S_TX;
90 case AFE_PORT_ID_SECONDARY_MI2S_RX:
91 return IDX_AFE_PORT_ID_SECONDARY_MI2S_RX;
92 case AFE_PORT_ID_SECONDARY_MI2S_TX:
93 return IDX_AFE_PORT_ID_SECONDARY_MI2S_TX;
94 case AFE_PORT_ID_TERTIARY_MI2S_RX:
95 return IDX_AFE_PORT_ID_TERTIARY_MI2S_RX;
96 case AFE_PORT_ID_TERTIARY_MI2S_TX:
97 return IDX_AFE_PORT_ID_TERTIARY_MI2S_TX;
98 case AUDIO_PORT_ID_I2S_RX:
99 return IDX_AUDIO_PORT_ID_I2S_RX;
100 case AFE_PORT_ID_SECONDARY_MI2S_RX_SD1:
101 return IDX_AFE_PORT_ID_SECONDARY_MI2S_RX_SD1;
102 case AFE_PORT_ID_PRIMARY_TDM_RX:
103 return IDX_AFE_PORT_ID_PRIMARY_TDM_RX_0;
104 case AFE_PORT_ID_PRIMARY_TDM_TX:
105 return IDX_AFE_PORT_ID_PRIMARY_TDM_TX_0;
106 case AFE_PORT_ID_PRIMARY_TDM_RX_1:
107 return IDX_AFE_PORT_ID_PRIMARY_TDM_RX_1;
108 case AFE_PORT_ID_PRIMARY_TDM_TX_1:
109 return IDX_AFE_PORT_ID_PRIMARY_TDM_TX_1;
110 case AFE_PORT_ID_PRIMARY_TDM_RX_2:
111 return IDX_AFE_PORT_ID_PRIMARY_TDM_RX_2;
112 case AFE_PORT_ID_PRIMARY_TDM_TX_2:
113 return IDX_AFE_PORT_ID_PRIMARY_TDM_TX_2;
114 case AFE_PORT_ID_PRIMARY_TDM_RX_3:
115 return IDX_AFE_PORT_ID_PRIMARY_TDM_RX_3;
116 case AFE_PORT_ID_PRIMARY_TDM_TX_3:
117 return IDX_AFE_PORT_ID_PRIMARY_TDM_TX_3;
118 case AFE_PORT_ID_PRIMARY_TDM_RX_4:
119 return IDX_AFE_PORT_ID_PRIMARY_TDM_RX_4;
120 case AFE_PORT_ID_PRIMARY_TDM_TX_4:
121 return IDX_AFE_PORT_ID_PRIMARY_TDM_TX_4;
122 case AFE_PORT_ID_PRIMARY_TDM_RX_5:
123 return IDX_AFE_PORT_ID_PRIMARY_TDM_RX_5;
124 case AFE_PORT_ID_PRIMARY_TDM_TX_5:
125 return IDX_AFE_PORT_ID_PRIMARY_TDM_TX_5;
126 case AFE_PORT_ID_PRIMARY_TDM_RX_6:
127 return IDX_AFE_PORT_ID_PRIMARY_TDM_RX_6;
128 case AFE_PORT_ID_PRIMARY_TDM_TX_6:
129 return IDX_AFE_PORT_ID_PRIMARY_TDM_TX_6;
130 case AFE_PORT_ID_PRIMARY_TDM_RX_7:
131 return IDX_AFE_PORT_ID_PRIMARY_TDM_RX_7;
132 case AFE_PORT_ID_PRIMARY_TDM_TX_7:
133 return IDX_AFE_PORT_ID_PRIMARY_TDM_TX_7;
134 case AFE_PORT_ID_SECONDARY_TDM_RX:
135 return IDX_AFE_PORT_ID_SECONDARY_TDM_RX_0;
136 case AFE_PORT_ID_SECONDARY_TDM_TX:
137 return IDX_AFE_PORT_ID_SECONDARY_TDM_TX_0;
138 case AFE_PORT_ID_SECONDARY_TDM_RX_1:
139 return IDX_AFE_PORT_ID_SECONDARY_TDM_RX_1;
140 case AFE_PORT_ID_SECONDARY_TDM_TX_1:
141 return IDX_AFE_PORT_ID_SECONDARY_TDM_TX_1;
142 case AFE_PORT_ID_SECONDARY_TDM_RX_2:
143 return IDX_AFE_PORT_ID_SECONDARY_TDM_RX_2;
144 case AFE_PORT_ID_SECONDARY_TDM_TX_2:
145 return IDX_AFE_PORT_ID_SECONDARY_TDM_TX_2;
146 case AFE_PORT_ID_SECONDARY_TDM_RX_3:
147 return IDX_AFE_PORT_ID_SECONDARY_TDM_RX_3;
148 case AFE_PORT_ID_SECONDARY_TDM_TX_3:
149 return IDX_AFE_PORT_ID_SECONDARY_TDM_TX_3;
150 case AFE_PORT_ID_SECONDARY_TDM_RX_4:
151 return IDX_AFE_PORT_ID_SECONDARY_TDM_RX_4;
152 case AFE_PORT_ID_SECONDARY_TDM_TX_4:
153 return IDX_AFE_PORT_ID_SECONDARY_TDM_TX_4;
154 case AFE_PORT_ID_SECONDARY_TDM_RX_5:
155 return IDX_AFE_PORT_ID_SECONDARY_TDM_RX_5;
156 case AFE_PORT_ID_SECONDARY_TDM_TX_5:
157 return IDX_AFE_PORT_ID_SECONDARY_TDM_TX_5;
158 case AFE_PORT_ID_SECONDARY_TDM_RX_6:
159 return IDX_AFE_PORT_ID_SECONDARY_TDM_RX_6;
160 case AFE_PORT_ID_SECONDARY_TDM_TX_6:
161 return IDX_AFE_PORT_ID_SECONDARY_TDM_TX_6;
162 case AFE_PORT_ID_SECONDARY_TDM_RX_7:
163 return IDX_AFE_PORT_ID_SECONDARY_TDM_RX_7;
164 case AFE_PORT_ID_SECONDARY_TDM_TX_7:
165 return IDX_AFE_PORT_ID_SECONDARY_TDM_TX_7;
166 case AFE_PORT_ID_TERTIARY_TDM_RX:
167 return IDX_AFE_PORT_ID_TERTIARY_TDM_RX_0;
168 case AFE_PORT_ID_TERTIARY_TDM_TX:
169 return IDX_AFE_PORT_ID_TERTIARY_TDM_TX_0;
170 case AFE_PORT_ID_TERTIARY_TDM_RX_1:
171 return IDX_AFE_PORT_ID_TERTIARY_TDM_RX_1;
172 case AFE_PORT_ID_TERTIARY_TDM_TX_1:
173 return IDX_AFE_PORT_ID_TERTIARY_TDM_TX_1;
174 case AFE_PORT_ID_TERTIARY_TDM_RX_2:
175 return IDX_AFE_PORT_ID_TERTIARY_TDM_RX_2;
176 case AFE_PORT_ID_TERTIARY_TDM_TX_2:
177 return IDX_AFE_PORT_ID_TERTIARY_TDM_TX_2;
178 case AFE_PORT_ID_TERTIARY_TDM_RX_3:
179 return IDX_AFE_PORT_ID_TERTIARY_TDM_RX_3;
180 case AFE_PORT_ID_TERTIARY_TDM_TX_3:
181 return IDX_AFE_PORT_ID_TERTIARY_TDM_TX_3;
182 case AFE_PORT_ID_TERTIARY_TDM_RX_4:
183 return IDX_AFE_PORT_ID_TERTIARY_TDM_RX_4;
184 case AFE_PORT_ID_TERTIARY_TDM_TX_4:
185 return IDX_AFE_PORT_ID_TERTIARY_TDM_TX_4;
186 case AFE_PORT_ID_TERTIARY_TDM_RX_5:
187 return IDX_AFE_PORT_ID_TERTIARY_TDM_RX_5;
188 case AFE_PORT_ID_TERTIARY_TDM_TX_5:
189 return IDX_AFE_PORT_ID_TERTIARY_TDM_TX_5;
190 case AFE_PORT_ID_TERTIARY_TDM_RX_6:
191 return IDX_AFE_PORT_ID_TERTIARY_TDM_RX_6;
192 case AFE_PORT_ID_TERTIARY_TDM_TX_6:
193 return IDX_AFE_PORT_ID_TERTIARY_TDM_TX_6;
194 case AFE_PORT_ID_TERTIARY_TDM_RX_7:
195 return IDX_AFE_PORT_ID_TERTIARY_TDM_RX_7;
196 case AFE_PORT_ID_TERTIARY_TDM_TX_7:
197 return IDX_AFE_PORT_ID_TERTIARY_TDM_TX_7;
198 case AFE_PORT_ID_QUATERNARY_TDM_RX:
199 return IDX_AFE_PORT_ID_QUATERNARY_TDM_RX_0;
200 case AFE_PORT_ID_QUATERNARY_TDM_TX:
201 return IDX_AFE_PORT_ID_QUATERNARY_TDM_TX_0;
202 case AFE_PORT_ID_QUATERNARY_TDM_RX_1:
203 return IDX_AFE_PORT_ID_QUATERNARY_TDM_RX_1;
204 case AFE_PORT_ID_QUATERNARY_TDM_TX_1:
205 return IDX_AFE_PORT_ID_QUATERNARY_TDM_TX_1;
206 case AFE_PORT_ID_QUATERNARY_TDM_RX_2:
207 return IDX_AFE_PORT_ID_QUATERNARY_TDM_RX_2;
208 case AFE_PORT_ID_QUATERNARY_TDM_TX_2:
209 return IDX_AFE_PORT_ID_QUATERNARY_TDM_TX_2;
210 case AFE_PORT_ID_QUATERNARY_TDM_RX_3:
211 return IDX_AFE_PORT_ID_QUATERNARY_TDM_RX_3;
212 case AFE_PORT_ID_QUATERNARY_TDM_TX_3:
213 return IDX_AFE_PORT_ID_QUATERNARY_TDM_TX_3;
214 case AFE_PORT_ID_QUATERNARY_TDM_RX_4:
215 return IDX_AFE_PORT_ID_QUATERNARY_TDM_RX_4;
216 case AFE_PORT_ID_QUATERNARY_TDM_TX_4:
217 return IDX_AFE_PORT_ID_QUATERNARY_TDM_TX_4;
218 case AFE_PORT_ID_QUATERNARY_TDM_RX_5:
219 return IDX_AFE_PORT_ID_QUATERNARY_TDM_RX_5;
220 case AFE_PORT_ID_QUATERNARY_TDM_TX_5:
221 return IDX_AFE_PORT_ID_QUATERNARY_TDM_TX_5;
222 case AFE_PORT_ID_QUATERNARY_TDM_RX_6:
223 return IDX_AFE_PORT_ID_QUATERNARY_TDM_RX_6;
224 case AFE_PORT_ID_QUATERNARY_TDM_TX_6:
225 return IDX_AFE_PORT_ID_QUATERNARY_TDM_TX_6;
226 case AFE_PORT_ID_QUATERNARY_TDM_RX_7:
227 return IDX_AFE_PORT_ID_QUATERNARY_TDM_RX_7;
228 case AFE_PORT_ID_QUATERNARY_TDM_TX_7:
229 return IDX_AFE_PORT_ID_QUATERNARY_TDM_TX_7;
230 case AFE_PORT_ID_SENARY_MI2S_TX:
231 return IDX_AFE_PORT_ID_SENARY_MI2S_TX;
232 case AFE_PORT_ID_USB_RX:
233 return IDX_AFE_PORT_ID_USB_RX;
234 case AFE_PORT_ID_USB_TX:
235 return IDX_AFE_PORT_ID_USB_TX;
236 case AFE_PORT_ID_INT0_MI2S_RX:
237 return IDX_AFE_PORT_ID_INT0_MI2S_RX;
238 case AFE_PORT_ID_INT0_MI2S_TX:
239 return IDX_AFE_PORT_ID_INT0_MI2S_TX;
240 case AFE_PORT_ID_INT1_MI2S_RX:
241 return IDX_AFE_PORT_ID_INT1_MI2S_RX;
242 case AFE_PORT_ID_INT1_MI2S_TX:
243 return IDX_AFE_PORT_ID_INT1_MI2S_TX;
244 case AFE_PORT_ID_INT2_MI2S_RX:
245 return IDX_AFE_PORT_ID_INT2_MI2S_RX;
246 case AFE_PORT_ID_INT2_MI2S_TX:
247 return IDX_AFE_PORT_ID_INT2_MI2S_TX;
248 case AFE_PORT_ID_INT3_MI2S_RX:
249 return IDX_AFE_PORT_ID_INT3_MI2S_RX;
250 case AFE_PORT_ID_INT3_MI2S_TX:
251 return IDX_AFE_PORT_ID_INT3_MI2S_TX;
252 case AFE_PORT_ID_INT4_MI2S_RX:
253 return IDX_AFE_PORT_ID_INT4_MI2S_RX;
254 case AFE_PORT_ID_INT4_MI2S_TX:
255 return IDX_AFE_PORT_ID_INT4_MI2S_TX;
256 case AFE_PORT_ID_INT5_MI2S_RX:
257 return IDX_AFE_PORT_ID_INT5_MI2S_RX;
258 case AFE_PORT_ID_INT5_MI2S_TX:
259 return IDX_AFE_PORT_ID_INT5_MI2S_TX;
260 case AFE_PORT_ID_INT6_MI2S_RX:
261 return IDX_AFE_PORT_ID_INT6_MI2S_RX;
262 case AFE_PORT_ID_INT6_MI2S_TX:
263 return IDX_AFE_PORT_ID_INT6_MI2S_TX;
264 default: return -EINVAL;
265 }
266}
267
268int q6audio_get_port_id(u16 port_id)
269{
270 switch (port_id) {
271 case PRIMARY_I2S_RX: return PRIMARY_I2S_RX;
272 case PRIMARY_I2S_TX: return PRIMARY_I2S_TX;
273 case AFE_PORT_ID_PRIMARY_PCM_RX:
274 return AFE_PORT_ID_PRIMARY_PCM_RX;
275 case AFE_PORT_ID_PRIMARY_PCM_TX:
276 return AFE_PORT_ID_PRIMARY_PCM_TX;
277 case AFE_PORT_ID_SECONDARY_PCM_RX:
278 return AFE_PORT_ID_SECONDARY_PCM_RX;
279 case AFE_PORT_ID_SECONDARY_PCM_TX:
280 return AFE_PORT_ID_SECONDARY_PCM_TX;
281 case AFE_PORT_ID_TERTIARY_PCM_RX:
282 return AFE_PORT_ID_TERTIARY_PCM_RX;
283 case AFE_PORT_ID_TERTIARY_PCM_TX:
284 return AFE_PORT_ID_TERTIARY_PCM_TX;
285 case AFE_PORT_ID_QUATERNARY_PCM_RX:
286 return AFE_PORT_ID_QUATERNARY_PCM_RX;
287 case AFE_PORT_ID_QUATERNARY_PCM_TX:
288 return AFE_PORT_ID_QUATERNARY_PCM_TX;
289 case SECONDARY_I2S_RX: return AFE_PORT_ID_SECONDARY_MI2S_RX;
290 case SECONDARY_I2S_TX: return AFE_PORT_ID_SECONDARY_MI2S_TX;
291 case MI2S_RX: return AFE_PORT_ID_PRIMARY_MI2S_RX;
292 case MI2S_TX: return AFE_PORT_ID_PRIMARY_MI2S_TX;
293 case HDMI_RX: return AFE_PORT_ID_MULTICHAN_HDMI_RX;
294 case DISPLAY_PORT_RX:
295 return AFE_PORT_ID_HDMI_OVER_DP_RX;
296 case AFE_PORT_ID_SPDIF_RX: return AFE_PORT_ID_SPDIF_RX;
297 case RSVD_2: return IDX_RSVD_2;
298 case RSVD_3: return IDX_RSVD_3;
299 case DIGI_MIC_TX: return AFE_PORT_ID_DIGITAL_MIC_TX;
300 case VOICE_RECORD_RX: return AFE_PORT_ID_VOICE_RECORD_RX;
301 case VOICE_RECORD_TX: return AFE_PORT_ID_VOICE_RECORD_TX;
302 case VOICE_PLAYBACK_TX: return AFE_PORT_ID_VOICE_PLAYBACK_TX;
303 case VOICE2_PLAYBACK_TX: return AFE_PORT_ID_VOICE2_PLAYBACK_TX;
304 case SLIMBUS_0_RX: return AFE_PORT_ID_SLIMBUS_MULTI_CHAN_0_RX;
305 case SLIMBUS_0_TX: return AFE_PORT_ID_SLIMBUS_MULTI_CHAN_0_TX;
306 case SLIMBUS_1_RX: return AFE_PORT_ID_SLIMBUS_MULTI_CHAN_1_RX;
307 case SLIMBUS_1_TX: return AFE_PORT_ID_SLIMBUS_MULTI_CHAN_1_TX;
308 case SLIMBUS_2_RX: return AFE_PORT_ID_SLIMBUS_MULTI_CHAN_2_RX;
309 case SLIMBUS_2_TX: return AFE_PORT_ID_SLIMBUS_MULTI_CHAN_2_TX;
310 case SLIMBUS_3_RX: return AFE_PORT_ID_SLIMBUS_MULTI_CHAN_3_RX;
311 case SLIMBUS_3_TX: return AFE_PORT_ID_SLIMBUS_MULTI_CHAN_3_TX;
312 case SLIMBUS_4_RX: return AFE_PORT_ID_SLIMBUS_MULTI_CHAN_4_RX;
313 case SLIMBUS_4_TX: return AFE_PORT_ID_SLIMBUS_MULTI_CHAN_4_TX;
314 case SLIMBUS_5_RX: return AFE_PORT_ID_SLIMBUS_MULTI_CHAN_5_RX;
315 case SLIMBUS_5_TX: return AFE_PORT_ID_SLIMBUS_MULTI_CHAN_5_TX;
316 case SLIMBUS_6_RX: return AFE_PORT_ID_SLIMBUS_MULTI_CHAN_6_RX;
317 case SLIMBUS_6_TX: return AFE_PORT_ID_SLIMBUS_MULTI_CHAN_6_TX;
318 case SLIMBUS_7_RX: return AFE_PORT_ID_SLIMBUS_MULTI_CHAN_7_RX;
319 case SLIMBUS_7_TX: return AFE_PORT_ID_SLIMBUS_MULTI_CHAN_7_TX;
320 case SLIMBUS_8_RX: return AFE_PORT_ID_SLIMBUS_MULTI_CHAN_8_RX;
321 case SLIMBUS_8_TX: return AFE_PORT_ID_SLIMBUS_MULTI_CHAN_8_TX;
322 case INT_BT_SCO_RX: return AFE_PORT_ID_INTERNAL_BT_SCO_RX;
323 case INT_BT_SCO_TX: return AFE_PORT_ID_INTERNAL_BT_SCO_TX;
324 case INT_BT_A2DP_RX: return AFE_PORT_ID_INTERNAL_BT_A2DP_RX;
325 case INT_FM_RX: return AFE_PORT_ID_INTERNAL_FM_RX;
326 case INT_FM_TX: return AFE_PORT_ID_INTERNAL_FM_TX;
327 case RT_PROXY_PORT_001_RX: return AFE_PORT_ID_RT_PROXY_PORT_001_RX;
328 case RT_PROXY_PORT_001_TX: return AFE_PORT_ID_RT_PROXY_PORT_001_TX;
329 case AFE_PORT_ID_PRIMARY_MI2S_RX:
330 return AFE_PORT_ID_PRIMARY_MI2S_RX;
331 case AFE_PORT_ID_PRIMARY_MI2S_TX:
332 return AFE_PORT_ID_PRIMARY_MI2S_TX;
333 case AFE_PORT_ID_QUATERNARY_MI2S_RX:
334 return AFE_PORT_ID_QUATERNARY_MI2S_RX;
335 case AFE_PORT_ID_QUATERNARY_MI2S_TX:
336 return AFE_PORT_ID_QUATERNARY_MI2S_TX;
337 case AFE_PORT_ID_SECONDARY_MI2S_RX:
338 return AFE_PORT_ID_SECONDARY_MI2S_RX;
339 case AFE_PORT_ID_SECONDARY_MI2S_TX:
340 return AFE_PORT_ID_SECONDARY_MI2S_TX;
341 case AFE_PORT_ID_TERTIARY_MI2S_RX:
342 return AFE_PORT_ID_TERTIARY_MI2S_RX;
343 case AFE_PORT_ID_TERTIARY_MI2S_TX:
344 return AFE_PORT_ID_TERTIARY_MI2S_TX;
345 case AUDIO_PORT_ID_I2S_RX:
346 return AUDIO_PORT_ID_I2S_RX;
347 case AFE_PORT_ID_SECONDARY_MI2S_RX_SD1:
348 return AFE_PORT_ID_SECONDARY_MI2S_RX_SD1;
349 case AFE_PORT_ID_PRIMARY_TDM_RX:
350 return AFE_PORT_ID_PRIMARY_TDM_RX;
351 case AFE_PORT_ID_PRIMARY_TDM_TX:
352 return AFE_PORT_ID_PRIMARY_TDM_TX;
353 case AFE_PORT_ID_PRIMARY_TDM_RX_1:
354 return AFE_PORT_ID_PRIMARY_TDM_RX_1;
355 case AFE_PORT_ID_PRIMARY_TDM_TX_1:
356 return AFE_PORT_ID_PRIMARY_TDM_TX_1;
357 case AFE_PORT_ID_PRIMARY_TDM_RX_2:
358 return AFE_PORT_ID_PRIMARY_TDM_RX_2;
359 case AFE_PORT_ID_PRIMARY_TDM_TX_2:
360 return AFE_PORT_ID_PRIMARY_TDM_TX_2;
361 case AFE_PORT_ID_PRIMARY_TDM_RX_3:
362 return AFE_PORT_ID_PRIMARY_TDM_RX_3;
363 case AFE_PORT_ID_PRIMARY_TDM_TX_3:
364 return AFE_PORT_ID_PRIMARY_TDM_TX_3;
365 case AFE_PORT_ID_PRIMARY_TDM_RX_4:
366 return AFE_PORT_ID_PRIMARY_TDM_RX_4;
367 case AFE_PORT_ID_PRIMARY_TDM_TX_4:
368 return AFE_PORT_ID_PRIMARY_TDM_TX_4;
369 case AFE_PORT_ID_PRIMARY_TDM_RX_5:
370 return AFE_PORT_ID_PRIMARY_TDM_RX_5;
371 case AFE_PORT_ID_PRIMARY_TDM_TX_5:
372 return AFE_PORT_ID_PRIMARY_TDM_TX_5;
373 case AFE_PORT_ID_PRIMARY_TDM_RX_6:
374 return AFE_PORT_ID_PRIMARY_TDM_RX_6;
375 case AFE_PORT_ID_PRIMARY_TDM_TX_6:
376 return AFE_PORT_ID_PRIMARY_TDM_TX_6;
377 case AFE_PORT_ID_PRIMARY_TDM_RX_7:
378 return AFE_PORT_ID_PRIMARY_TDM_RX_7;
379 case AFE_PORT_ID_PRIMARY_TDM_TX_7:
380 return AFE_PORT_ID_PRIMARY_TDM_TX_7;
381 case AFE_PORT_ID_SECONDARY_TDM_RX:
382 return AFE_PORT_ID_SECONDARY_TDM_RX;
383 case AFE_PORT_ID_SECONDARY_TDM_TX:
384 return AFE_PORT_ID_SECONDARY_TDM_TX;
385 case AFE_PORT_ID_SECONDARY_TDM_RX_1:
386 return AFE_PORT_ID_SECONDARY_TDM_RX_1;
387 case AFE_PORT_ID_SECONDARY_TDM_TX_1:
388 return AFE_PORT_ID_SECONDARY_TDM_TX_1;
389 case AFE_PORT_ID_SECONDARY_TDM_RX_2:
390 return AFE_PORT_ID_SECONDARY_TDM_RX_2;
391 case AFE_PORT_ID_SECONDARY_TDM_TX_2:
392 return AFE_PORT_ID_SECONDARY_TDM_TX_2;
393 case AFE_PORT_ID_SECONDARY_TDM_RX_3:
394 return AFE_PORT_ID_SECONDARY_TDM_RX_3;
395 case AFE_PORT_ID_SECONDARY_TDM_TX_3:
396 return AFE_PORT_ID_SECONDARY_TDM_TX_3;
397 case AFE_PORT_ID_SECONDARY_TDM_RX_4:
398 return AFE_PORT_ID_SECONDARY_TDM_RX_4;
399 case AFE_PORT_ID_SECONDARY_TDM_TX_4:
400 return AFE_PORT_ID_SECONDARY_TDM_TX_4;
401 case AFE_PORT_ID_SECONDARY_TDM_RX_5:
402 return AFE_PORT_ID_SECONDARY_TDM_RX_5;
403 case AFE_PORT_ID_SECONDARY_TDM_TX_5:
404 return AFE_PORT_ID_SECONDARY_TDM_TX_5;
405 case AFE_PORT_ID_SECONDARY_TDM_RX_6:
406 return AFE_PORT_ID_SECONDARY_TDM_RX_6;
407 case AFE_PORT_ID_SECONDARY_TDM_TX_6:
408 return AFE_PORT_ID_SECONDARY_TDM_TX_6;
409 case AFE_PORT_ID_SECONDARY_TDM_RX_7:
410 return AFE_PORT_ID_SECONDARY_TDM_RX_7;
411 case AFE_PORT_ID_SECONDARY_TDM_TX_7:
412 return AFE_PORT_ID_SECONDARY_TDM_TX_7;
413 case AFE_PORT_ID_TERTIARY_TDM_RX:
414 return AFE_PORT_ID_TERTIARY_TDM_RX;
415 case AFE_PORT_ID_TERTIARY_TDM_TX:
416 return AFE_PORT_ID_TERTIARY_TDM_TX;
417 case AFE_PORT_ID_TERTIARY_TDM_RX_1:
418 return AFE_PORT_ID_TERTIARY_TDM_RX_1;
419 case AFE_PORT_ID_TERTIARY_TDM_TX_1:
420 return AFE_PORT_ID_TERTIARY_TDM_TX_1;
421 case AFE_PORT_ID_TERTIARY_TDM_RX_2:
422 return AFE_PORT_ID_TERTIARY_TDM_RX_2;
423 case AFE_PORT_ID_TERTIARY_TDM_TX_2:
424 return AFE_PORT_ID_TERTIARY_TDM_TX_2;
425 case AFE_PORT_ID_TERTIARY_TDM_RX_3:
426 return AFE_PORT_ID_TERTIARY_TDM_RX_3;
427 case AFE_PORT_ID_TERTIARY_TDM_TX_3:
428 return AFE_PORT_ID_TERTIARY_TDM_TX_3;
429 case AFE_PORT_ID_TERTIARY_TDM_RX_4:
430 return AFE_PORT_ID_TERTIARY_TDM_RX_4;
431 case AFE_PORT_ID_TERTIARY_TDM_TX_4:
432 return AFE_PORT_ID_TERTIARY_TDM_TX_4;
433 case AFE_PORT_ID_TERTIARY_TDM_RX_5:
434 return AFE_PORT_ID_TERTIARY_TDM_RX_5;
435 case AFE_PORT_ID_TERTIARY_TDM_TX_5:
436 return AFE_PORT_ID_TERTIARY_TDM_TX_5;
437 case AFE_PORT_ID_TERTIARY_TDM_RX_6:
438 return AFE_PORT_ID_TERTIARY_TDM_RX_6;
439 case AFE_PORT_ID_TERTIARY_TDM_TX_6:
440 return AFE_PORT_ID_TERTIARY_TDM_TX_6;
441 case AFE_PORT_ID_TERTIARY_TDM_RX_7:
442 return AFE_PORT_ID_TERTIARY_TDM_RX_7;
443 case AFE_PORT_ID_TERTIARY_TDM_TX_7:
444 return AFE_PORT_ID_TERTIARY_TDM_TX_7;
445 case AFE_PORT_ID_QUATERNARY_TDM_RX:
446 return AFE_PORT_ID_QUATERNARY_TDM_RX;
447 case AFE_PORT_ID_QUATERNARY_TDM_TX:
448 return AFE_PORT_ID_QUATERNARY_TDM_TX;
449 case AFE_PORT_ID_QUATERNARY_TDM_RX_1:
450 return AFE_PORT_ID_QUATERNARY_TDM_RX_1;
451 case AFE_PORT_ID_QUATERNARY_TDM_TX_1:
452 return AFE_PORT_ID_QUATERNARY_TDM_TX_1;
453 case AFE_PORT_ID_QUATERNARY_TDM_RX_2:
454 return AFE_PORT_ID_QUATERNARY_TDM_RX_2;
455 case AFE_PORT_ID_QUATERNARY_TDM_TX_2:
456 return AFE_PORT_ID_QUATERNARY_TDM_TX_2;
457 case AFE_PORT_ID_QUATERNARY_TDM_RX_3:
458 return AFE_PORT_ID_QUATERNARY_TDM_RX_3;
459 case AFE_PORT_ID_QUATERNARY_TDM_TX_3:
460 return AFE_PORT_ID_QUATERNARY_TDM_TX_3;
461 case AFE_PORT_ID_QUATERNARY_TDM_RX_4:
462 return AFE_PORT_ID_QUATERNARY_TDM_RX_4;
463 case AFE_PORT_ID_QUATERNARY_TDM_TX_4:
464 return AFE_PORT_ID_QUATERNARY_TDM_TX_4;
465 case AFE_PORT_ID_QUATERNARY_TDM_RX_5:
466 return AFE_PORT_ID_QUATERNARY_TDM_RX_5;
467 case AFE_PORT_ID_QUATERNARY_TDM_TX_5:
468 return AFE_PORT_ID_QUATERNARY_TDM_TX_5;
469 case AFE_PORT_ID_QUATERNARY_TDM_RX_6:
470 return AFE_PORT_ID_QUATERNARY_TDM_RX_6;
471 case AFE_PORT_ID_QUATERNARY_TDM_TX_6:
472 return AFE_PORT_ID_QUATERNARY_TDM_TX_6;
473 case AFE_PORT_ID_QUATERNARY_TDM_RX_7:
474 return AFE_PORT_ID_QUATERNARY_TDM_RX_7;
475 case AFE_PORT_ID_QUATERNARY_TDM_TX_7:
476 return AFE_PORT_ID_QUATERNARY_TDM_TX_7;
477 case AFE_PORT_ID_SENARY_MI2S_TX:
478 return AFE_PORT_ID_SENARY_MI2S_TX;
479 case AFE_PORT_ID_USB_RX:
480 return AFE_PORT_ID_USB_RX;
481 case AFE_PORT_ID_USB_TX:
482 return AFE_PORT_ID_USB_TX;
483 case AFE_PORT_ID_INT0_MI2S_RX:
484 return AFE_PORT_ID_INT0_MI2S_RX;
485 case AFE_PORT_ID_INT0_MI2S_TX:
486 return AFE_PORT_ID_INT0_MI2S_TX;
487 case AFE_PORT_ID_INT1_MI2S_RX:
488 return AFE_PORT_ID_INT1_MI2S_RX;
489 case AFE_PORT_ID_INT1_MI2S_TX:
490 return AFE_PORT_ID_INT1_MI2S_TX;
491 case AFE_PORT_ID_INT2_MI2S_RX:
492 return AFE_PORT_ID_INT2_MI2S_RX;
493 case AFE_PORT_ID_INT2_MI2S_TX:
494 return AFE_PORT_ID_INT2_MI2S_TX;
495 case AFE_PORT_ID_INT3_MI2S_RX:
496 return AFE_PORT_ID_INT3_MI2S_RX;
497 case AFE_PORT_ID_INT3_MI2S_TX:
498 return AFE_PORT_ID_INT3_MI2S_TX;
499 case AFE_PORT_ID_INT4_MI2S_RX:
500 return AFE_PORT_ID_INT4_MI2S_RX;
501 case AFE_PORT_ID_INT4_MI2S_TX:
502 return AFE_PORT_ID_INT4_MI2S_TX;
503 case AFE_PORT_ID_INT5_MI2S_RX:
504 return AFE_PORT_ID_INT5_MI2S_RX;
505 case AFE_PORT_ID_INT5_MI2S_TX:
506 return AFE_PORT_ID_INT5_MI2S_TX;
507 case AFE_PORT_ID_INT6_MI2S_RX:
508 return AFE_PORT_ID_INT6_MI2S_RX;
509 case AFE_PORT_ID_INT6_MI2S_TX:
510 return AFE_PORT_ID_INT6_MI2S_TX;
511 default:
512 pr_warn("%s: Invalid port_id %d\n", __func__, port_id);
513 return -EINVAL;
514 }
515}
516int q6audio_convert_virtual_to_portid(u16 port_id)
517{
518 int ret;
519
520 /* if port_id is virtual, convert to physical..
521 * if port_id is already physical, return physical
522 */
523 if (q6audio_validate_port(port_id) < 0) {
524 if (port_id == RT_PROXY_DAI_001_RX ||
525 port_id == RT_PROXY_DAI_001_TX ||
526 port_id == RT_PROXY_DAI_002_RX ||
527 port_id == RT_PROXY_DAI_002_TX)
528 ret = VIRTUAL_ID_TO_PORTID(port_id);
529 else
530 ret = -EINVAL;
531 } else
532 ret = port_id;
533
534 return ret;
535}
536
537int q6audio_is_digital_pcm_interface(u16 port_id)
538{
539 int ret = 0;
540
541 switch (port_id) {
542 case PRIMARY_I2S_RX:
543 case PRIMARY_I2S_TX:
544 case AFE_PORT_ID_PRIMARY_PCM_RX:
545 case AFE_PORT_ID_PRIMARY_PCM_TX:
546 case AFE_PORT_ID_SECONDARY_PCM_RX:
547 case AFE_PORT_ID_SECONDARY_PCM_TX:
548 case AFE_PORT_ID_TERTIARY_PCM_RX:
549 case AFE_PORT_ID_TERTIARY_PCM_TX:
550 case AFE_PORT_ID_QUATERNARY_PCM_RX:
551 case AFE_PORT_ID_QUATERNARY_PCM_TX:
552 case SECONDARY_I2S_RX:
553 case SECONDARY_I2S_TX:
554 case MI2S_RX:
555 case MI2S_TX:
556 case AFE_PORT_ID_TERTIARY_MI2S_TX:
557 case AFE_PORT_ID_TERTIARY_MI2S_RX:
558 case AFE_PORT_ID_QUATERNARY_MI2S_RX:
559 case AFE_PORT_ID_QUATERNARY_MI2S_TX:
560 case AFE_PORT_ID_PRIMARY_MI2S_RX:
561 case AFE_PORT_ID_PRIMARY_MI2S_TX:
562 case AFE_PORT_ID_SECONDARY_MI2S_RX:
563 case AFE_PORT_ID_SECONDARY_MI2S_TX:
564 case AUDIO_PORT_ID_I2S_RX:
565 case AFE_PORT_ID_SECONDARY_MI2S_RX_SD1:
566 case AFE_PORT_ID_PRIMARY_TDM_RX:
567 case AFE_PORT_ID_PRIMARY_TDM_TX:
568 case AFE_PORT_ID_PRIMARY_TDM_RX_1:
569 case AFE_PORT_ID_PRIMARY_TDM_TX_1:
570 case AFE_PORT_ID_PRIMARY_TDM_RX_2:
571 case AFE_PORT_ID_PRIMARY_TDM_TX_2:
572 case AFE_PORT_ID_PRIMARY_TDM_RX_3:
573 case AFE_PORT_ID_PRIMARY_TDM_TX_3:
574 case AFE_PORT_ID_PRIMARY_TDM_RX_4:
575 case AFE_PORT_ID_PRIMARY_TDM_TX_4:
576 case AFE_PORT_ID_PRIMARY_TDM_RX_5:
577 case AFE_PORT_ID_PRIMARY_TDM_TX_5:
578 case AFE_PORT_ID_PRIMARY_TDM_RX_6:
579 case AFE_PORT_ID_PRIMARY_TDM_TX_6:
580 case AFE_PORT_ID_PRIMARY_TDM_RX_7:
581 case AFE_PORT_ID_PRIMARY_TDM_TX_7:
582 case AFE_PORT_ID_SECONDARY_TDM_RX:
583 case AFE_PORT_ID_SECONDARY_TDM_TX:
584 case AFE_PORT_ID_SECONDARY_TDM_RX_1:
585 case AFE_PORT_ID_SECONDARY_TDM_TX_1:
586 case AFE_PORT_ID_SECONDARY_TDM_RX_2:
587 case AFE_PORT_ID_SECONDARY_TDM_TX_2:
588 case AFE_PORT_ID_SECONDARY_TDM_RX_3:
589 case AFE_PORT_ID_SECONDARY_TDM_TX_3:
590 case AFE_PORT_ID_SECONDARY_TDM_RX_4:
591 case AFE_PORT_ID_SECONDARY_TDM_TX_4:
592 case AFE_PORT_ID_SECONDARY_TDM_RX_5:
593 case AFE_PORT_ID_SECONDARY_TDM_TX_5:
594 case AFE_PORT_ID_SECONDARY_TDM_RX_6:
595 case AFE_PORT_ID_SECONDARY_TDM_TX_6:
596 case AFE_PORT_ID_SECONDARY_TDM_RX_7:
597 case AFE_PORT_ID_SECONDARY_TDM_TX_7:
598 case AFE_PORT_ID_TERTIARY_TDM_RX:
599 case AFE_PORT_ID_TERTIARY_TDM_TX:
600 case AFE_PORT_ID_TERTIARY_TDM_RX_1:
601 case AFE_PORT_ID_TERTIARY_TDM_TX_1:
602 case AFE_PORT_ID_TERTIARY_TDM_RX_2:
603 case AFE_PORT_ID_TERTIARY_TDM_TX_2:
604 case AFE_PORT_ID_TERTIARY_TDM_RX_3:
605 case AFE_PORT_ID_TERTIARY_TDM_TX_3:
606 case AFE_PORT_ID_TERTIARY_TDM_RX_4:
607 case AFE_PORT_ID_TERTIARY_TDM_TX_4:
608 case AFE_PORT_ID_TERTIARY_TDM_RX_5:
609 case AFE_PORT_ID_TERTIARY_TDM_TX_5:
610 case AFE_PORT_ID_TERTIARY_TDM_RX_6:
611 case AFE_PORT_ID_TERTIARY_TDM_TX_6:
612 case AFE_PORT_ID_TERTIARY_TDM_RX_7:
613 case AFE_PORT_ID_TERTIARY_TDM_TX_7:
614 case AFE_PORT_ID_QUATERNARY_TDM_RX:
615 case AFE_PORT_ID_QUATERNARY_TDM_TX:
616 case AFE_PORT_ID_QUATERNARY_TDM_RX_1:
617 case AFE_PORT_ID_QUATERNARY_TDM_TX_1:
618 case AFE_PORT_ID_QUATERNARY_TDM_RX_2:
619 case AFE_PORT_ID_QUATERNARY_TDM_TX_2:
620 case AFE_PORT_ID_QUATERNARY_TDM_RX_3:
621 case AFE_PORT_ID_QUATERNARY_TDM_TX_3:
622 case AFE_PORT_ID_QUATERNARY_TDM_RX_4:
623 case AFE_PORT_ID_QUATERNARY_TDM_TX_4:
624 case AFE_PORT_ID_QUATERNARY_TDM_RX_5:
625 case AFE_PORT_ID_QUATERNARY_TDM_TX_5:
626 case AFE_PORT_ID_QUATERNARY_TDM_RX_6:
627 case AFE_PORT_ID_QUATERNARY_TDM_TX_6:
628 case AFE_PORT_ID_QUATERNARY_TDM_RX_7:
629 case AFE_PORT_ID_QUATERNARY_TDM_TX_7:
630 case AFE_PORT_ID_SENARY_MI2S_TX:
631 case AFE_PORT_ID_INT0_MI2S_RX:
632 case AFE_PORT_ID_INT0_MI2S_TX:
633 case AFE_PORT_ID_INT1_MI2S_RX:
634 case AFE_PORT_ID_INT1_MI2S_TX:
635 case AFE_PORT_ID_INT2_MI2S_RX:
636 case AFE_PORT_ID_INT2_MI2S_TX:
637 case AFE_PORT_ID_INT3_MI2S_RX:
638 case AFE_PORT_ID_INT3_MI2S_TX:
639 case AFE_PORT_ID_INT4_MI2S_RX:
640 case AFE_PORT_ID_INT4_MI2S_TX:
641 case AFE_PORT_ID_INT5_MI2S_RX:
642 case AFE_PORT_ID_INT5_MI2S_TX:
643 case AFE_PORT_ID_INT6_MI2S_RX:
644 case AFE_PORT_ID_INT6_MI2S_TX:
645 break;
646 default:
647 ret = -EINVAL;
648 }
649
650 return ret;
651}
652
653int q6audio_validate_port(u16 port_id)
654{
655 int ret;
656
657 switch (port_id) {
658 case PRIMARY_I2S_RX:
659 case PRIMARY_I2S_TX:
660 case AFE_PORT_ID_PRIMARY_PCM_RX:
661 case AFE_PORT_ID_PRIMARY_PCM_TX:
662 case AFE_PORT_ID_SECONDARY_PCM_RX:
663 case AFE_PORT_ID_SECONDARY_PCM_TX:
664 case AFE_PORT_ID_TERTIARY_PCM_RX:
665 case AFE_PORT_ID_TERTIARY_PCM_TX:
666 case AFE_PORT_ID_QUATERNARY_PCM_RX:
667 case AFE_PORT_ID_QUATERNARY_PCM_TX:
668 case SECONDARY_I2S_RX:
669 case SECONDARY_I2S_TX:
670 case MI2S_RX:
671 case MI2S_TX:
672 case HDMI_RX:
673 case DISPLAY_PORT_RX:
674 case RSVD_2:
675 case RSVD_3:
676 case DIGI_MIC_TX:
677 case VOICE_RECORD_RX:
678 case VOICE_RECORD_TX:
679 case VOICE_PLAYBACK_TX:
680 case VOICE2_PLAYBACK_TX:
681 case SLIMBUS_0_RX:
682 case SLIMBUS_0_TX:
683 case SLIMBUS_1_RX:
684 case SLIMBUS_1_TX:
685 case SLIMBUS_2_RX:
686 case SLIMBUS_2_TX:
687 case SLIMBUS_3_RX:
688 case SLIMBUS_3_TX:
689 case SLIMBUS_4_RX:
690 case SLIMBUS_4_TX:
691 case SLIMBUS_5_RX:
692 case SLIMBUS_5_TX:
693 case SLIMBUS_6_RX:
694 case SLIMBUS_6_TX:
695 case SLIMBUS_7_RX:
696 case SLIMBUS_7_TX:
697 case SLIMBUS_8_RX:
698 case SLIMBUS_8_TX:
699 case INT_BT_SCO_RX:
700 case INT_BT_SCO_TX:
701 case INT_BT_A2DP_RX:
702 case INT_FM_RX:
703 case INT_FM_TX:
704 case RT_PROXY_PORT_001_RX:
705 case RT_PROXY_PORT_001_TX:
706 case AFE_PORT_ID_PRIMARY_MI2S_RX:
707 case AFE_PORT_ID_PRIMARY_MI2S_TX:
708 case AFE_PORT_ID_QUATERNARY_MI2S_RX:
709 case AFE_PORT_ID_QUATERNARY_MI2S_TX:
710 case AFE_PORT_ID_SECONDARY_MI2S_RX:
711 case AFE_PORT_ID_SECONDARY_MI2S_TX:
712 case AFE_PORT_ID_SPDIF_RX:
713 case AFE_PORT_ID_TERTIARY_MI2S_RX:
714 case AFE_PORT_ID_TERTIARY_MI2S_TX:
715 case AFE_PORT_ID_SECONDARY_MI2S_RX_SD1:
716 case AFE_PORT_ID_PRIMARY_TDM_RX:
717 case AFE_PORT_ID_PRIMARY_TDM_TX:
718 case AFE_PORT_ID_PRIMARY_TDM_RX_1:
719 case AFE_PORT_ID_PRIMARY_TDM_TX_1:
720 case AFE_PORT_ID_PRIMARY_TDM_RX_2:
721 case AFE_PORT_ID_PRIMARY_TDM_TX_2:
722 case AFE_PORT_ID_PRIMARY_TDM_RX_3:
723 case AFE_PORT_ID_PRIMARY_TDM_TX_3:
724 case AFE_PORT_ID_PRIMARY_TDM_RX_4:
725 case AFE_PORT_ID_PRIMARY_TDM_TX_4:
726 case AFE_PORT_ID_PRIMARY_TDM_RX_5:
727 case AFE_PORT_ID_PRIMARY_TDM_TX_5:
728 case AFE_PORT_ID_PRIMARY_TDM_RX_6:
729 case AFE_PORT_ID_PRIMARY_TDM_TX_6:
730 case AFE_PORT_ID_PRIMARY_TDM_RX_7:
731 case AFE_PORT_ID_PRIMARY_TDM_TX_7:
732 case AFE_PORT_ID_SECONDARY_TDM_RX:
733 case AFE_PORT_ID_SECONDARY_TDM_TX:
734 case AFE_PORT_ID_SECONDARY_TDM_RX_1:
735 case AFE_PORT_ID_SECONDARY_TDM_TX_1:
736 case AFE_PORT_ID_SECONDARY_TDM_RX_2:
737 case AFE_PORT_ID_SECONDARY_TDM_TX_2:
738 case AFE_PORT_ID_SECONDARY_TDM_RX_3:
739 case AFE_PORT_ID_SECONDARY_TDM_TX_3:
740 case AFE_PORT_ID_SECONDARY_TDM_RX_4:
741 case AFE_PORT_ID_SECONDARY_TDM_TX_4:
742 case AFE_PORT_ID_SECONDARY_TDM_RX_5:
743 case AFE_PORT_ID_SECONDARY_TDM_TX_5:
744 case AFE_PORT_ID_SECONDARY_TDM_RX_6:
745 case AFE_PORT_ID_SECONDARY_TDM_TX_6:
746 case AFE_PORT_ID_SECONDARY_TDM_RX_7:
747 case AFE_PORT_ID_SECONDARY_TDM_TX_7:
748 case AFE_PORT_ID_TERTIARY_TDM_RX:
749 case AFE_PORT_ID_TERTIARY_TDM_TX:
750 case AFE_PORT_ID_TERTIARY_TDM_RX_1:
751 case AFE_PORT_ID_TERTIARY_TDM_TX_1:
752 case AFE_PORT_ID_TERTIARY_TDM_RX_2:
753 case AFE_PORT_ID_TERTIARY_TDM_TX_2:
754 case AFE_PORT_ID_TERTIARY_TDM_RX_3:
755 case AFE_PORT_ID_TERTIARY_TDM_TX_3:
756 case AFE_PORT_ID_TERTIARY_TDM_RX_4:
757 case AFE_PORT_ID_TERTIARY_TDM_TX_4:
758 case AFE_PORT_ID_TERTIARY_TDM_RX_5:
759 case AFE_PORT_ID_TERTIARY_TDM_TX_5:
760 case AFE_PORT_ID_TERTIARY_TDM_RX_6:
761 case AFE_PORT_ID_TERTIARY_TDM_TX_6:
762 case AFE_PORT_ID_TERTIARY_TDM_RX_7:
763 case AFE_PORT_ID_TERTIARY_TDM_TX_7:
764 case AFE_PORT_ID_QUATERNARY_TDM_RX:
765 case AFE_PORT_ID_QUATERNARY_TDM_TX:
766 case AFE_PORT_ID_QUATERNARY_TDM_RX_1:
767 case AFE_PORT_ID_QUATERNARY_TDM_TX_1:
768 case AFE_PORT_ID_QUATERNARY_TDM_RX_2:
769 case AFE_PORT_ID_QUATERNARY_TDM_TX_2:
770 case AFE_PORT_ID_QUATERNARY_TDM_RX_3:
771 case AFE_PORT_ID_QUATERNARY_TDM_TX_3:
772 case AFE_PORT_ID_QUATERNARY_TDM_RX_4:
773 case AFE_PORT_ID_QUATERNARY_TDM_TX_4:
774 case AFE_PORT_ID_QUATERNARY_TDM_RX_5:
775 case AFE_PORT_ID_QUATERNARY_TDM_TX_5:
776 case AFE_PORT_ID_QUATERNARY_TDM_RX_6:
777 case AFE_PORT_ID_QUATERNARY_TDM_TX_6:
778 case AFE_PORT_ID_QUATERNARY_TDM_RX_7:
779 case AFE_PORT_ID_QUATERNARY_TDM_TX_7:
780 case AFE_PORT_ID_SENARY_MI2S_TX:
781 case AFE_PORT_ID_USB_RX:
782 case AFE_PORT_ID_USB_TX:
783 case AFE_PORT_ID_INT0_MI2S_RX:
784 case AFE_PORT_ID_INT0_MI2S_TX:
785 case AFE_PORT_ID_INT1_MI2S_RX:
786 case AFE_PORT_ID_INT1_MI2S_TX:
787 case AFE_PORT_ID_INT2_MI2S_RX:
788 case AFE_PORT_ID_INT2_MI2S_TX:
789 case AFE_PORT_ID_INT3_MI2S_RX:
790 case AFE_PORT_ID_INT3_MI2S_TX:
791 case AFE_PORT_ID_INT4_MI2S_RX:
792 case AFE_PORT_ID_INT4_MI2S_TX:
793 case AFE_PORT_ID_INT5_MI2S_RX:
794 case AFE_PORT_ID_INT5_MI2S_TX:
795 case AFE_PORT_ID_INT6_MI2S_RX:
796 case AFE_PORT_ID_INT6_MI2S_TX:
797 {
798 ret = 0;
799 break;
800 }
801
802 default:
803 ret = -EINVAL;
804 }
805
806 return ret;
807}