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);