1 // SPDX-License-Identifier: GPL-2.0
2 // Copyright (c) 2020, Linaro Limited
6 #include <sound/pcm_params.h>
7 #include <dt-bindings/sound/qcom,q6afe.h>
8 #include "q6dsp-lpass-ports.h"
10 #define Q6AFE_TDM_PB_DAI(pre, num, did) { \
12 .stream_name = pre" TDM"#num" Playback", \
13 .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 |\
14 SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_48000 |\
15 SNDRV_PCM_RATE_176400, \
16 .formats = SNDRV_PCM_FMTBIT_S16_LE | \
17 SNDRV_PCM_FMTBIT_S24_LE | \
18 SNDRV_PCM_FMTBIT_S32_LE, \
28 #define Q6AFE_TDM_CAP_DAI(pre, num, did) { \
30 .stream_name = pre" TDM"#num" Capture", \
31 .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 |\
32 SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_48000 |\
33 SNDRV_PCM_RATE_176400, \
34 .formats = SNDRV_PCM_FMTBIT_S16_LE | \
35 SNDRV_PCM_FMTBIT_S24_LE | \
36 SNDRV_PCM_FMTBIT_S32_LE, \
46 #define Q6AFE_CDC_DMA_RX_DAI(did) { \
48 .stream_name = #did" Playback", \
49 .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 |\
50 SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_48000 |\
51 SNDRV_PCM_RATE_176400, \
52 .formats = SNDRV_PCM_FMTBIT_S16_LE | \
53 SNDRV_PCM_FMTBIT_S24_LE | \
54 SNDRV_PCM_FMTBIT_S32_LE, \
64 #define Q6AFE_CDC_DMA_TX_DAI(did) { \
66 .stream_name = #did" Capture", \
67 .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 |\
68 SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_48000 |\
69 SNDRV_PCM_RATE_176400, \
70 .formats = SNDRV_PCM_FMTBIT_S16_LE | \
71 SNDRV_PCM_FMTBIT_S24_LE | \
72 SNDRV_PCM_FMTBIT_S32_LE, \
82 #define Q6AFE_DP_RX_DAI(did) { \
84 .stream_name = #did" Playback", \
85 .rates = SNDRV_PCM_RATE_48000 | \
86 SNDRV_PCM_RATE_96000 | \
87 SNDRV_PCM_RATE_192000, \
88 .formats = SNDRV_PCM_FMTBIT_S16_LE | \
89 SNDRV_PCM_FMTBIT_S24_LE, \
99 static struct snd_soc_dai_driver q6dsp_audio_fe_dais
[] = {
102 .stream_name
= "HDMI Playback",
103 .rates
= SNDRV_PCM_RATE_48000
|
104 SNDRV_PCM_RATE_96000
|
105 SNDRV_PCM_RATE_192000
,
106 .formats
= SNDRV_PCM_FMTBIT_S16_LE
|
107 SNDRV_PCM_FMTBIT_S24_LE
,
116 .name
= "SLIMBUS_0_RX",
119 .stream_name
= "Slimbus Playback",
120 .rates
= SNDRV_PCM_RATE_48000
| SNDRV_PCM_RATE_8000
|
121 SNDRV_PCM_RATE_16000
| SNDRV_PCM_RATE_96000
|
122 SNDRV_PCM_RATE_192000
,
123 .formats
= SNDRV_PCM_FMTBIT_S16_LE
|
124 SNDRV_PCM_FMTBIT_S24_LE
,
131 .name
= "SLIMBUS_0_TX",
134 .stream_name
= "Slimbus Capture",
135 .rates
= SNDRV_PCM_RATE_48000
| SNDRV_PCM_RATE_8000
|
136 SNDRV_PCM_RATE_16000
| SNDRV_PCM_RATE_96000
|
137 SNDRV_PCM_RATE_192000
,
138 .formats
= SNDRV_PCM_FMTBIT_S16_LE
|
139 SNDRV_PCM_FMTBIT_S24_LE
,
147 .stream_name
= "Slimbus1 Playback",
148 .rates
= SNDRV_PCM_RATE_8000
| SNDRV_PCM_RATE_16000
|
149 SNDRV_PCM_RATE_48000
| SNDRV_PCM_RATE_96000
|
150 SNDRV_PCM_RATE_192000
,
151 .formats
= SNDRV_PCM_FMTBIT_S16_LE
|
152 SNDRV_PCM_FMTBIT_S24_LE
,
158 .name
= "SLIMBUS_1_RX",
161 .name
= "SLIMBUS_1_TX",
164 .stream_name
= "Slimbus1 Capture",
165 .rates
= SNDRV_PCM_RATE_48000
| SNDRV_PCM_RATE_8000
|
166 SNDRV_PCM_RATE_16000
| SNDRV_PCM_RATE_96000
|
167 SNDRV_PCM_RATE_192000
,
168 .formats
= SNDRV_PCM_FMTBIT_S16_LE
|
169 SNDRV_PCM_FMTBIT_S24_LE
,
177 .stream_name
= "Slimbus2 Playback",
178 .rates
= SNDRV_PCM_RATE_48000
| SNDRV_PCM_RATE_8000
|
179 SNDRV_PCM_RATE_16000
| SNDRV_PCM_RATE_96000
|
180 SNDRV_PCM_RATE_192000
,
181 .formats
= SNDRV_PCM_FMTBIT_S16_LE
|
182 SNDRV_PCM_FMTBIT_S24_LE
,
188 .name
= "SLIMBUS_2_RX",
192 .name
= "SLIMBUS_2_TX",
195 .stream_name
= "Slimbus2 Capture",
196 .rates
= SNDRV_PCM_RATE_48000
| SNDRV_PCM_RATE_8000
|
197 SNDRV_PCM_RATE_16000
| SNDRV_PCM_RATE_96000
|
198 SNDRV_PCM_RATE_192000
,
199 .formats
= SNDRV_PCM_FMTBIT_S16_LE
|
200 SNDRV_PCM_FMTBIT_S24_LE
,
208 .stream_name
= "Slimbus3 Playback",
209 .rates
= SNDRV_PCM_RATE_8000
| SNDRV_PCM_RATE_16000
|
210 SNDRV_PCM_RATE_48000
| SNDRV_PCM_RATE_96000
|
211 SNDRV_PCM_RATE_192000
,
212 .formats
= SNDRV_PCM_FMTBIT_S16_LE
|
213 SNDRV_PCM_FMTBIT_S24_LE
,
219 .name
= "SLIMBUS_3_RX",
223 .name
= "SLIMBUS_3_TX",
226 .stream_name
= "Slimbus3 Capture",
227 .rates
= SNDRV_PCM_RATE_48000
| SNDRV_PCM_RATE_8000
|
228 SNDRV_PCM_RATE_16000
| SNDRV_PCM_RATE_96000
|
229 SNDRV_PCM_RATE_192000
,
230 .formats
= SNDRV_PCM_FMTBIT_S16_LE
|
231 SNDRV_PCM_FMTBIT_S24_LE
,
239 .stream_name
= "Slimbus4 Playback",
240 .rates
= SNDRV_PCM_RATE_8000
| SNDRV_PCM_RATE_16000
|
241 SNDRV_PCM_RATE_48000
| SNDRV_PCM_RATE_96000
|
242 SNDRV_PCM_RATE_192000
,
243 .formats
= SNDRV_PCM_FMTBIT_S16_LE
|
244 SNDRV_PCM_FMTBIT_S24_LE
,
250 .name
= "SLIMBUS_4_RX",
254 .name
= "SLIMBUS_4_TX",
257 .stream_name
= "Slimbus4 Capture",
258 .rates
= SNDRV_PCM_RATE_48000
| SNDRV_PCM_RATE_8000
|
259 SNDRV_PCM_RATE_16000
| SNDRV_PCM_RATE_96000
|
260 SNDRV_PCM_RATE_192000
,
261 .formats
= SNDRV_PCM_FMTBIT_S16_LE
|
262 SNDRV_PCM_FMTBIT_S24_LE
,
270 .stream_name
= "Slimbus5 Playback",
271 .rates
= SNDRV_PCM_RATE_8000
| SNDRV_PCM_RATE_16000
|
272 SNDRV_PCM_RATE_48000
| SNDRV_PCM_RATE_96000
|
273 SNDRV_PCM_RATE_192000
,
274 .formats
= SNDRV_PCM_FMTBIT_S16_LE
|
275 SNDRV_PCM_FMTBIT_S24_LE
,
281 .name
= "SLIMBUS_5_RX",
285 .name
= "SLIMBUS_5_TX",
288 .stream_name
= "Slimbus5 Capture",
289 .rates
= SNDRV_PCM_RATE_48000
| SNDRV_PCM_RATE_8000
|
290 SNDRV_PCM_RATE_16000
| SNDRV_PCM_RATE_96000
|
291 SNDRV_PCM_RATE_192000
,
292 .formats
= SNDRV_PCM_FMTBIT_S16_LE
|
293 SNDRV_PCM_FMTBIT_S24_LE
,
301 .stream_name
= "Slimbus6 Playback",
302 .rates
= SNDRV_PCM_RATE_8000
| SNDRV_PCM_RATE_16000
|
303 SNDRV_PCM_RATE_48000
| SNDRV_PCM_RATE_96000
|
304 SNDRV_PCM_RATE_192000
,
305 .formats
= SNDRV_PCM_FMTBIT_S16_LE
|
306 SNDRV_PCM_FMTBIT_S24_LE
,
312 .name
= "SLIMBUS_6_RX",
316 .name
= "SLIMBUS_6_TX",
319 .stream_name
= "Slimbus6 Capture",
320 .rates
= SNDRV_PCM_RATE_48000
| SNDRV_PCM_RATE_8000
|
321 SNDRV_PCM_RATE_16000
| SNDRV_PCM_RATE_96000
|
322 SNDRV_PCM_RATE_192000
,
323 .formats
= SNDRV_PCM_FMTBIT_S16_LE
|
324 SNDRV_PCM_FMTBIT_S24_LE
,
332 .stream_name
= "Primary MI2S Playback",
333 .rates
= SNDRV_PCM_RATE_48000
| SNDRV_PCM_RATE_8000
|
334 SNDRV_PCM_RATE_16000
,
335 .formats
= SNDRV_PCM_FMTBIT_S16_LE
|
336 SNDRV_PCM_FMTBIT_S24_LE
,
342 .id
= PRIMARY_MI2S_RX
,
343 .name
= "PRI_MI2S_RX",
346 .stream_name
= "Primary MI2S Capture",
347 .rates
= SNDRV_PCM_RATE_48000
| SNDRV_PCM_RATE_8000
|
348 SNDRV_PCM_RATE_16000
,
349 .formats
= SNDRV_PCM_FMTBIT_S16_LE
|
350 SNDRV_PCM_FMTBIT_S24_LE
,
356 .id
= PRIMARY_MI2S_TX
,
357 .name
= "PRI_MI2S_TX",
360 .stream_name
= "Secondary MI2S Playback",
361 .rates
= SNDRV_PCM_RATE_48000
| SNDRV_PCM_RATE_8000
|
362 SNDRV_PCM_RATE_16000
,
363 .formats
= SNDRV_PCM_FMTBIT_S16_LE
,
369 .name
= "SEC_MI2S_RX",
370 .id
= SECONDARY_MI2S_RX
,
373 .stream_name
= "Secondary MI2S Capture",
374 .rates
= SNDRV_PCM_RATE_48000
| SNDRV_PCM_RATE_8000
|
375 SNDRV_PCM_RATE_16000
,
376 .formats
= SNDRV_PCM_FMTBIT_S16_LE
|
377 SNDRV_PCM_FMTBIT_S24_LE
,
383 .id
= SECONDARY_MI2S_TX
,
384 .name
= "SEC_MI2S_TX",
387 .stream_name
= "Tertiary MI2S Playback",
388 .rates
= SNDRV_PCM_RATE_48000
| SNDRV_PCM_RATE_8000
|
389 SNDRV_PCM_RATE_16000
,
390 .formats
= SNDRV_PCM_FMTBIT_S16_LE
,
396 .name
= "TERT_MI2S_RX",
397 .id
= TERTIARY_MI2S_RX
,
400 .stream_name
= "Tertiary MI2S Capture",
401 .rates
= SNDRV_PCM_RATE_48000
| SNDRV_PCM_RATE_8000
|
402 SNDRV_PCM_RATE_16000
,
403 .formats
= SNDRV_PCM_FMTBIT_S16_LE
|
404 SNDRV_PCM_FMTBIT_S24_LE
,
410 .id
= TERTIARY_MI2S_TX
,
411 .name
= "TERT_MI2S_TX",
414 .stream_name
= "Quaternary MI2S Playback",
415 .rates
= SNDRV_PCM_RATE_48000
| SNDRV_PCM_RATE_8000
|
416 SNDRV_PCM_RATE_16000
,
417 .formats
= SNDRV_PCM_FMTBIT_S16_LE
,
423 .name
= "QUAT_MI2S_RX",
424 .id
= QUATERNARY_MI2S_RX
,
427 .stream_name
= "Quaternary MI2S Capture",
428 .rates
= SNDRV_PCM_RATE_48000
| SNDRV_PCM_RATE_8000
|
429 SNDRV_PCM_RATE_16000
,
430 .formats
= SNDRV_PCM_FMTBIT_S16_LE
|
431 SNDRV_PCM_FMTBIT_S24_LE
,
437 .id
= QUATERNARY_MI2S_TX
,
438 .name
= "QUAT_MI2S_TX",
441 .stream_name
= "Quinary MI2S Playback",
442 .rates
= SNDRV_PCM_RATE_48000
| SNDRV_PCM_RATE_8000
|
443 SNDRV_PCM_RATE_16000
| SNDRV_PCM_RATE_96000
|
444 SNDRV_PCM_RATE_192000
,
445 .formats
= SNDRV_PCM_FMTBIT_S16_LE
,
451 .id
= QUINARY_MI2S_RX
,
452 .name
= "QUIN_MI2S_RX",
455 .stream_name
= "Quinary MI2S Capture",
456 .rates
= SNDRV_PCM_RATE_48000
| SNDRV_PCM_RATE_8000
|
457 SNDRV_PCM_RATE_16000
,
458 .formats
= SNDRV_PCM_FMTBIT_S16_LE
,
464 .id
= QUINARY_MI2S_TX
,
465 .name
= "QUIN_MI2S_TX",
467 Q6AFE_TDM_PB_DAI("Primary", 0, PRIMARY_TDM_RX_0
),
468 Q6AFE_TDM_PB_DAI("Primary", 1, PRIMARY_TDM_RX_1
),
469 Q6AFE_TDM_PB_DAI("Primary", 2, PRIMARY_TDM_RX_2
),
470 Q6AFE_TDM_PB_DAI("Primary", 3, PRIMARY_TDM_RX_3
),
471 Q6AFE_TDM_PB_DAI("Primary", 4, PRIMARY_TDM_RX_4
),
472 Q6AFE_TDM_PB_DAI("Primary", 5, PRIMARY_TDM_RX_5
),
473 Q6AFE_TDM_PB_DAI("Primary", 6, PRIMARY_TDM_RX_6
),
474 Q6AFE_TDM_PB_DAI("Primary", 7, PRIMARY_TDM_RX_7
),
475 Q6AFE_TDM_CAP_DAI("Primary", 0, PRIMARY_TDM_TX_0
),
476 Q6AFE_TDM_CAP_DAI("Primary", 1, PRIMARY_TDM_TX_1
),
477 Q6AFE_TDM_CAP_DAI("Primary", 2, PRIMARY_TDM_TX_2
),
478 Q6AFE_TDM_CAP_DAI("Primary", 3, PRIMARY_TDM_TX_3
),
479 Q6AFE_TDM_CAP_DAI("Primary", 4, PRIMARY_TDM_TX_4
),
480 Q6AFE_TDM_CAP_DAI("Primary", 5, PRIMARY_TDM_TX_5
),
481 Q6AFE_TDM_CAP_DAI("Primary", 6, PRIMARY_TDM_TX_6
),
482 Q6AFE_TDM_CAP_DAI("Primary", 7, PRIMARY_TDM_TX_7
),
483 Q6AFE_TDM_PB_DAI("Secondary", 0, SECONDARY_TDM_RX_0
),
484 Q6AFE_TDM_PB_DAI("Secondary", 1, SECONDARY_TDM_RX_1
),
485 Q6AFE_TDM_PB_DAI("Secondary", 2, SECONDARY_TDM_RX_2
),
486 Q6AFE_TDM_PB_DAI("Secondary", 3, SECONDARY_TDM_RX_3
),
487 Q6AFE_TDM_PB_DAI("Secondary", 4, SECONDARY_TDM_RX_4
),
488 Q6AFE_TDM_PB_DAI("Secondary", 5, SECONDARY_TDM_RX_5
),
489 Q6AFE_TDM_PB_DAI("Secondary", 6, SECONDARY_TDM_RX_6
),
490 Q6AFE_TDM_PB_DAI("Secondary", 7, SECONDARY_TDM_RX_7
),
491 Q6AFE_TDM_CAP_DAI("Secondary", 0, SECONDARY_TDM_TX_0
),
492 Q6AFE_TDM_CAP_DAI("Secondary", 1, SECONDARY_TDM_TX_1
),
493 Q6AFE_TDM_CAP_DAI("Secondary", 2, SECONDARY_TDM_TX_2
),
494 Q6AFE_TDM_CAP_DAI("Secondary", 3, SECONDARY_TDM_TX_3
),
495 Q6AFE_TDM_CAP_DAI("Secondary", 4, SECONDARY_TDM_TX_4
),
496 Q6AFE_TDM_CAP_DAI("Secondary", 5, SECONDARY_TDM_TX_5
),
497 Q6AFE_TDM_CAP_DAI("Secondary", 6, SECONDARY_TDM_TX_6
),
498 Q6AFE_TDM_CAP_DAI("Secondary", 7, SECONDARY_TDM_TX_7
),
499 Q6AFE_TDM_PB_DAI("Tertiary", 0, TERTIARY_TDM_RX_0
),
500 Q6AFE_TDM_PB_DAI("Tertiary", 1, TERTIARY_TDM_RX_1
),
501 Q6AFE_TDM_PB_DAI("Tertiary", 2, TERTIARY_TDM_RX_2
),
502 Q6AFE_TDM_PB_DAI("Tertiary", 3, TERTIARY_TDM_RX_3
),
503 Q6AFE_TDM_PB_DAI("Tertiary", 4, TERTIARY_TDM_RX_4
),
504 Q6AFE_TDM_PB_DAI("Tertiary", 5, TERTIARY_TDM_RX_5
),
505 Q6AFE_TDM_PB_DAI("Tertiary", 6, TERTIARY_TDM_RX_6
),
506 Q6AFE_TDM_PB_DAI("Tertiary", 7, TERTIARY_TDM_RX_7
),
507 Q6AFE_TDM_CAP_DAI("Tertiary", 0, TERTIARY_TDM_TX_0
),
508 Q6AFE_TDM_CAP_DAI("Tertiary", 1, TERTIARY_TDM_TX_1
),
509 Q6AFE_TDM_CAP_DAI("Tertiary", 2, TERTIARY_TDM_TX_2
),
510 Q6AFE_TDM_CAP_DAI("Tertiary", 3, TERTIARY_TDM_TX_3
),
511 Q6AFE_TDM_CAP_DAI("Tertiary", 4, TERTIARY_TDM_TX_4
),
512 Q6AFE_TDM_CAP_DAI("Tertiary", 5, TERTIARY_TDM_TX_5
),
513 Q6AFE_TDM_CAP_DAI("Tertiary", 6, TERTIARY_TDM_TX_6
),
514 Q6AFE_TDM_CAP_DAI("Tertiary", 7, TERTIARY_TDM_TX_7
),
515 Q6AFE_TDM_PB_DAI("Quaternary", 0, QUATERNARY_TDM_RX_0
),
516 Q6AFE_TDM_PB_DAI("Quaternary", 1, QUATERNARY_TDM_RX_1
),
517 Q6AFE_TDM_PB_DAI("Quaternary", 2, QUATERNARY_TDM_RX_2
),
518 Q6AFE_TDM_PB_DAI("Quaternary", 3, QUATERNARY_TDM_RX_3
),
519 Q6AFE_TDM_PB_DAI("Quaternary", 4, QUATERNARY_TDM_RX_4
),
520 Q6AFE_TDM_PB_DAI("Quaternary", 5, QUATERNARY_TDM_RX_5
),
521 Q6AFE_TDM_PB_DAI("Quaternary", 6, QUATERNARY_TDM_RX_6
),
522 Q6AFE_TDM_PB_DAI("Quaternary", 7, QUATERNARY_TDM_RX_7
),
523 Q6AFE_TDM_CAP_DAI("Quaternary", 0, QUATERNARY_TDM_TX_0
),
524 Q6AFE_TDM_CAP_DAI("Quaternary", 1, QUATERNARY_TDM_TX_1
),
525 Q6AFE_TDM_CAP_DAI("Quaternary", 2, QUATERNARY_TDM_TX_2
),
526 Q6AFE_TDM_CAP_DAI("Quaternary", 3, QUATERNARY_TDM_TX_3
),
527 Q6AFE_TDM_CAP_DAI("Quaternary", 4, QUATERNARY_TDM_TX_4
),
528 Q6AFE_TDM_CAP_DAI("Quaternary", 5, QUATERNARY_TDM_TX_5
),
529 Q6AFE_TDM_CAP_DAI("Quaternary", 6, QUATERNARY_TDM_TX_6
),
530 Q6AFE_TDM_CAP_DAI("Quaternary", 7, QUATERNARY_TDM_TX_7
),
531 Q6AFE_TDM_PB_DAI("Quinary", 0, QUINARY_TDM_RX_0
),
532 Q6AFE_TDM_PB_DAI("Quinary", 1, QUINARY_TDM_RX_1
),
533 Q6AFE_TDM_PB_DAI("Quinary", 2, QUINARY_TDM_RX_2
),
534 Q6AFE_TDM_PB_DAI("Quinary", 3, QUINARY_TDM_RX_3
),
535 Q6AFE_TDM_PB_DAI("Quinary", 4, QUINARY_TDM_RX_4
),
536 Q6AFE_TDM_PB_DAI("Quinary", 5, QUINARY_TDM_RX_5
),
537 Q6AFE_TDM_PB_DAI("Quinary", 6, QUINARY_TDM_RX_6
),
538 Q6AFE_TDM_PB_DAI("Quinary", 7, QUINARY_TDM_RX_7
),
539 Q6AFE_TDM_CAP_DAI("Quinary", 0, QUINARY_TDM_TX_0
),
540 Q6AFE_TDM_CAP_DAI("Quinary", 1, QUINARY_TDM_TX_1
),
541 Q6AFE_TDM_CAP_DAI("Quinary", 2, QUINARY_TDM_TX_2
),
542 Q6AFE_TDM_CAP_DAI("Quinary", 3, QUINARY_TDM_TX_3
),
543 Q6AFE_TDM_CAP_DAI("Quinary", 4, QUINARY_TDM_TX_4
),
544 Q6AFE_TDM_CAP_DAI("Quinary", 5, QUINARY_TDM_TX_5
),
545 Q6AFE_TDM_CAP_DAI("Quinary", 6, QUINARY_TDM_TX_6
),
546 Q6AFE_TDM_CAP_DAI("Quinary", 7, QUINARY_TDM_TX_7
),
547 Q6AFE_DP_RX_DAI(DISPLAY_PORT_RX_0
),
548 Q6AFE_DP_RX_DAI(DISPLAY_PORT_RX_1
),
549 Q6AFE_DP_RX_DAI(DISPLAY_PORT_RX_2
),
550 Q6AFE_DP_RX_DAI(DISPLAY_PORT_RX_3
),
551 Q6AFE_DP_RX_DAI(DISPLAY_PORT_RX_4
),
552 Q6AFE_DP_RX_DAI(DISPLAY_PORT_RX_5
),
553 Q6AFE_DP_RX_DAI(DISPLAY_PORT_RX_6
),
554 Q6AFE_DP_RX_DAI(DISPLAY_PORT_RX_7
),
555 Q6AFE_CDC_DMA_RX_DAI(WSA_CODEC_DMA_RX_0
),
556 Q6AFE_CDC_DMA_TX_DAI(WSA_CODEC_DMA_TX_0
),
557 Q6AFE_CDC_DMA_RX_DAI(WSA_CODEC_DMA_RX_1
),
558 Q6AFE_CDC_DMA_TX_DAI(WSA_CODEC_DMA_TX_1
),
559 Q6AFE_CDC_DMA_TX_DAI(WSA_CODEC_DMA_TX_2
),
560 Q6AFE_CDC_DMA_TX_DAI(VA_CODEC_DMA_TX_0
),
561 Q6AFE_CDC_DMA_TX_DAI(VA_CODEC_DMA_TX_1
),
562 Q6AFE_CDC_DMA_TX_DAI(VA_CODEC_DMA_TX_2
),
563 Q6AFE_CDC_DMA_RX_DAI(RX_CODEC_DMA_RX_0
),
564 Q6AFE_CDC_DMA_TX_DAI(TX_CODEC_DMA_TX_0
),
565 Q6AFE_CDC_DMA_RX_DAI(RX_CODEC_DMA_RX_1
),
566 Q6AFE_CDC_DMA_TX_DAI(TX_CODEC_DMA_TX_1
),
567 Q6AFE_CDC_DMA_RX_DAI(RX_CODEC_DMA_RX_2
),
568 Q6AFE_CDC_DMA_TX_DAI(TX_CODEC_DMA_TX_2
),
569 Q6AFE_CDC_DMA_RX_DAI(RX_CODEC_DMA_RX_3
),
570 Q6AFE_CDC_DMA_TX_DAI(TX_CODEC_DMA_TX_3
),
571 Q6AFE_CDC_DMA_RX_DAI(RX_CODEC_DMA_RX_4
),
572 Q6AFE_CDC_DMA_TX_DAI(TX_CODEC_DMA_TX_4
),
573 Q6AFE_CDC_DMA_RX_DAI(RX_CODEC_DMA_RX_5
),
574 Q6AFE_CDC_DMA_TX_DAI(TX_CODEC_DMA_TX_5
),
575 Q6AFE_CDC_DMA_RX_DAI(RX_CODEC_DMA_RX_6
),
576 Q6AFE_CDC_DMA_RX_DAI(RX_CODEC_DMA_RX_7
),
579 int q6dsp_audio_ports_of_xlate_dai_name(struct snd_soc_component
*component
,
580 const struct of_phandle_args
*args
,
581 const char **dai_name
)
583 int id
= args
->args
[0];
587 for (i
= 0; i
< ARRAY_SIZE(q6dsp_audio_fe_dais
); i
++) {
588 if (q6dsp_audio_fe_dais
[i
].id
== id
) {
589 *dai_name
= q6dsp_audio_fe_dais
[i
].name
;
597 EXPORT_SYMBOL_GPL(q6dsp_audio_ports_of_xlate_dai_name
);
599 struct snd_soc_dai_driver
*q6dsp_audio_ports_set_config(struct device
*dev
,
600 struct q6dsp_audio_port_dai_driver_config
*cfg
,
605 for (i
= 0; i
< ARRAY_SIZE(q6dsp_audio_fe_dais
); i
++) {
606 switch (q6dsp_audio_fe_dais
[i
].id
) {
608 case DISPLAY_PORT_RX
:
609 q6dsp_audio_fe_dais
[i
].ops
= cfg
->q6hdmi_ops
;
611 case DISPLAY_PORT_RX_1
... DISPLAY_PORT_RX_7
:
612 q6dsp_audio_fe_dais
[i
].ops
= cfg
->q6hdmi_ops
;
614 case SLIMBUS_0_RX
... SLIMBUS_6_TX
:
615 q6dsp_audio_fe_dais
[i
].ops
= cfg
->q6slim_ops
;
617 case QUINARY_MI2S_RX
... QUINARY_MI2S_TX
:
618 case PRIMARY_MI2S_RX
... QUATERNARY_MI2S_TX
:
619 q6dsp_audio_fe_dais
[i
].ops
= cfg
->q6i2s_ops
;
621 case PRIMARY_TDM_RX_0
... QUINARY_TDM_TX_7
:
622 q6dsp_audio_fe_dais
[i
].ops
= cfg
->q6tdm_ops
;
624 case WSA_CODEC_DMA_RX_0
... RX_CODEC_DMA_RX_7
:
625 q6dsp_audio_fe_dais
[i
].ops
= cfg
->q6dma_ops
;
632 *num_dais
= ARRAY_SIZE(q6dsp_audio_fe_dais
);
633 return q6dsp_audio_fe_dais
;
635 EXPORT_SYMBOL_GPL(q6dsp_audio_ports_set_config
);