1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * soc-acpi-intel-lnl-match.c - tables and support for LNL ACPI enumeration.
4 *
5 * Copyright (c) 2023, Intel Corporation
6 *
7 */
8
9#include <sound/soc-acpi.h>
10#include <sound/soc-acpi-intel-match.h>
11#include "sof-function-topology-lib.h"
12#include "soc-acpi-intel-sdca-quirks.h"
13#include "soc-acpi-intel-sdw-mockup-match.h"
14
15struct snd_soc_acpi_mach snd_soc_acpi_intel_lnl_machines[] = {
16 {},
17};
18EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_lnl_machines);
19
20static const struct snd_soc_acpi_endpoint single_endpoint = {
21 .num = 0,
22 .aggregated = 0,
23 .group_position = 0,
24 .group_id = 0,
25};
26
27static const struct snd_soc_acpi_endpoint spk_l_endpoint = {
28 .num = 0,
29 .aggregated = 1,
30 .group_position = 0,
31 .group_id = 1,
32};
33
34static const struct snd_soc_acpi_endpoint spk_r_endpoint = {
35 .num = 0,
36 .aggregated = 1,
37 .group_position = 1,
38 .group_id = 1,
39};
40
41static const struct snd_soc_acpi_endpoint spk_1_endpoint = {
42 .num = 0,
43 .aggregated = 1,
44 .group_position = 1,
45 .group_id = 1,
46};
47
48static const struct snd_soc_acpi_endpoint spk_2_endpoint = {
49 .num = 0,
50 .aggregated = 1,
51 .group_position = 2,
52 .group_id = 1,
53};
54
55static const struct snd_soc_acpi_endpoint spk_3_endpoint = {
56 .num = 0,
57 .aggregated = 1,
58 .group_position = 3,
59 .group_id = 1,
60};
61
62static const struct snd_soc_acpi_endpoint spk_4_endpoint = {
63 .num = 0,
64 .aggregated = 1,
65 .group_position = 4,
66 .group_id = 1,
67};
68
69static const struct snd_soc_acpi_endpoint spk_5_endpoint = {
70 .num = 0,
71 .aggregated = 1,
72 .group_position = 5,
73 .group_id = 1,
74};
75
76static const struct snd_soc_acpi_endpoint spk_6_endpoint = {
77 .num = 0,
78 .aggregated = 1,
79 .group_position = 6,
80 .group_id = 1,
81};
82
83static const struct snd_soc_acpi_endpoint rt712_endpoints[] = {
84 {
85 .num = 0,
86 .aggregated = 0,
87 .group_position = 0,
88 .group_id = 0,
89 },
90 {
91 .num = 1,
92 .aggregated = 0,
93 .group_position = 0,
94 .group_id = 0,
95 },
96};
97
98/*
99 * RT722 is a multi-function codec, three endpoints are created for
100 * its headset, amp and dmic functions.
101 */
102static const struct snd_soc_acpi_endpoint rt722_endpoints[] = {
103 {
104 .num = 0,
105 .aggregated = 0,
106 .group_position = 0,
107 .group_id = 0,
108 },
109 {
110 .num = 1,
111 .aggregated = 0,
112 .group_position = 0,
113 .group_id = 0,
114 },
115 {
116 .num = 2,
117 .aggregated = 0,
118 .group_position = 0,
119 .group_id = 0,
120 },
121};
122
123static const struct snd_soc_acpi_endpoint jack_dmic_endpoints[] = {
124 /* Jack Endpoint */
125 {
126 .num = 0,
127 .aggregated = 0,
128 .group_position = 0,
129 .group_id = 0,
130 },
131 /* DMIC Endpoint */
132 {
133 .num = 1,
134 .aggregated = 0,
135 .group_position = 0,
136 .group_id = 0,
137 },
138};
139
140static const struct snd_soc_acpi_endpoint jack_amp_g1_dmic_endpoints[] = {
141 /* Jack Endpoint */
142 {
143 .num = 0,
144 .aggregated = 0,
145 .group_position = 0,
146 .group_id = 0,
147 },
148 /* Amp Endpoint, work as spk_l_endpoint */
149 {
150 .num = 1,
151 .aggregated = 1,
152 .group_position = 0,
153 .group_id = 1,
154 },
155 /* DMIC Endpoint */
156 {
157 .num = 2,
158 .aggregated = 0,
159 .group_position = 0,
160 .group_id = 0,
161 },
162};
163
164static const struct snd_soc_acpi_endpoint cs42l43_endpoints[] = {
165 { /* Jack Playback Endpoint */
166 .num = 0,
167 .aggregated = 0,
168 .group_position = 0,
169 .group_id = 0,
170 },
171 { /* DMIC Capture Endpoint */
172 .num = 1,
173 .aggregated = 0,
174 .group_position = 0,
175 .group_id = 0,
176 },
177 { /* Jack Capture Endpoint */
178 .num = 2,
179 .aggregated = 0,
180 .group_position = 0,
181 .group_id = 0,
182 },
183 { /* Speaker Playback Endpoint */
184 .num = 3,
185 .aggregated = 0,
186 .group_position = 0,
187 .group_id = 0,
188 },
189};
190
191static const struct snd_soc_acpi_endpoint cs42l43_amp_spkagg_endpoints[] = {
192 { /* Jack Playback Endpoint */
193 .num = 0,
194 .aggregated = 0,
195 .group_position = 0,
196 .group_id = 0,
197 },
198 { /* DMIC Capture Endpoint */
199 .num = 1,
200 .aggregated = 0,
201 .group_position = 0,
202 .group_id = 0,
203 },
204 { /* Jack Capture Endpoint */
205 .num = 2,
206 .aggregated = 0,
207 .group_position = 0,
208 .group_id = 0,
209 },
210 { /* Speaker Playback Endpoint */
211 .num = 3,
212 .aggregated = 1,
213 .group_position = 0,
214 .group_id = 1,
215 },
216};
217
218static const struct snd_soc_acpi_adr_device cs35l56_2_l_adr[] = {
219 {
220 .adr = 0x00023001FA355601ull,
221 .num_endpoints = 1,
222 .endpoints = &spk_l_endpoint,
223 .name_prefix = "AMP1"
224 },
225 {
226 .adr = 0x00023101FA355601ull,
227 .num_endpoints = 1,
228 .endpoints = &spk_2_endpoint,
229 .name_prefix = "AMP2"
230 }
231};
232
233static const struct snd_soc_acpi_adr_device cs35l56_3_r_adr[] = {
234 {
235 .adr = 0x00033201fa355601ull,
236 .num_endpoints = 1,
237 .endpoints = &spk_r_endpoint,
238 .name_prefix = "AMP3"
239 },
240 {
241 .adr = 0x00033301fa355601ull,
242 .num_endpoints = 1,
243 .endpoints = &spk_3_endpoint,
244 .name_prefix = "AMP4"
245 }
246};
247
248static const struct snd_soc_acpi_adr_device cs35l56_3_lr_adr[] = {
249 {
250 .adr = 0x00033001fa355601ull,
251 .num_endpoints = 1,
252 .endpoints = &spk_l_endpoint,
253 .name_prefix = "AMP1"
254 },
255 {
256 .adr = 0x00033101fa355601ull,
257 .num_endpoints = 1,
258 .endpoints = &spk_r_endpoint,
259 .name_prefix = "AMP2"
260 }
261};
262
263static const struct snd_soc_acpi_adr_device cs35l56_1_3amp_adr[] = {
264 {
265 .adr = 0x00013001fa355601ull,
266 .num_endpoints = 1,
267 .endpoints = &spk_1_endpoint,
268 .name_prefix = "AMP1"
269 },
270 {
271 .adr = 0x00013101fa355601ull,
272 .num_endpoints = 1,
273 .endpoints = &spk_2_endpoint,
274 .name_prefix = "AMP2"
275 },
276 {
277 .adr = 0x00013201fa355601ull,
278 .num_endpoints = 1,
279 .endpoints = &spk_3_endpoint,
280 .name_prefix = "AMP3"
281 }
282};
283
284static const struct snd_soc_acpi_adr_device cs35l56_3_3amp_adr[] = {
285 {
286 .adr = 0x00033301fa355601ull,
287 .num_endpoints = 1,
288 .endpoints = &spk_4_endpoint,
289 .name_prefix = "AMP4"
290 },
291 {
292 .adr = 0x00033401fa355601ull,
293 .num_endpoints = 1,
294 .endpoints = &spk_5_endpoint,
295 .name_prefix = "AMP5"
296 },
297 {
298 .adr = 0x00033501fa355601ull,
299 .num_endpoints = 1,
300 .endpoints = &spk_6_endpoint,
301 .name_prefix = "AMP6"
302 }
303};
304
305static const struct snd_soc_acpi_adr_device cs42l43_0_adr[] = {
306 {
307 .adr = 0x00003001FA424301ull,
308 .num_endpoints = ARRAY_SIZE(cs42l43_endpoints),
309 .endpoints = cs42l43_endpoints,
310 .name_prefix = "cs42l43"
311 }
312};
313
314static const struct snd_soc_acpi_adr_device cs42l43_2_adr[] = {
315 {
316 .adr = 0x00023001fa424301ull,
317 .num_endpoints = ARRAY_SIZE(cs42l43_amp_spkagg_endpoints),
318 .endpoints = cs42l43_amp_spkagg_endpoints,
319 .name_prefix = "cs42l43"
320 }
321};
322
323static const struct snd_soc_acpi_adr_device rt711_sdca_0_adr[] = {
324 {
325 .adr = 0x000030025D071101ull,
326 .num_endpoints = 1,
327 .endpoints = &single_endpoint,
328 .name_prefix = "rt711"
329 }
330};
331
332static const struct snd_soc_acpi_adr_device rt712_2_single_adr[] = {
333 {
334 .adr = 0x000230025D071201ull,
335 .num_endpoints = ARRAY_SIZE(rt712_endpoints),
336 .endpoints = rt712_endpoints,
337 .name_prefix = "rt712"
338 }
339};
340
341static const struct snd_soc_acpi_adr_device rt1712_3_single_adr[] = {
342 {
343 .adr = 0x000330025D171201ull,
344 .num_endpoints = 1,
345 .endpoints = &single_endpoint,
346 .name_prefix = "rt712-dmic"
347 }
348};
349
350static const struct snd_soc_acpi_adr_device rt712_vb_2_group1_adr[] = {
351 {
352 .adr = 0x000230025D071201ull,
353 .num_endpoints = ARRAY_SIZE(jack_amp_g1_dmic_endpoints),
354 .endpoints = jack_amp_g1_dmic_endpoints,
355 .name_prefix = "rt712"
356 }
357};
358
359static const struct snd_soc_acpi_adr_device rt722_0_single_adr[] = {
360 {
361 .adr = 0x000030025d072201ull,
362 .num_endpoints = ARRAY_SIZE(rt722_endpoints),
363 .endpoints = rt722_endpoints,
364 .name_prefix = "rt722"
365 }
366};
367
368static const struct snd_soc_acpi_adr_device rt1316_2_group1_adr[] = {
369 {
370 .adr = 0x000230025D131601ull,
371 .num_endpoints = 1,
372 .endpoints = &spk_l_endpoint,
373 .name_prefix = "rt1316-1"
374 }
375};
376
377static const struct snd_soc_acpi_adr_device rt1316_3_group1_adr[] = {
378 {
379 .adr = 0x000331025D131601ull,
380 .num_endpoints = 1,
381 .endpoints = &spk_r_endpoint,
382 .name_prefix = "rt1316-2"
383 }
384};
385
386static const struct snd_soc_acpi_adr_device rt1318_1_adr[] = {
387 {
388 .adr = 0x000133025D131801ull,
389 .num_endpoints = 1,
390 .endpoints = &single_endpoint,
391 .name_prefix = "rt1318-1"
392 }
393};
394
395static const struct snd_soc_acpi_adr_device rt1318_1_group1_adr[] = {
396 {
397 .adr = 0x000130025D131801ull,
398 .num_endpoints = 1,
399 .endpoints = &spk_l_endpoint,
400 .name_prefix = "rt1318-1"
401 }
402};
403
404static const struct snd_soc_acpi_adr_device rt1318_2_group1_adr[] = {
405 {
406 .adr = 0x000232025D131801ull,
407 .num_endpoints = 1,
408 .endpoints = &spk_r_endpoint,
409 .name_prefix = "rt1318-2"
410 }
411};
412
413static const struct snd_soc_acpi_adr_device rt1320_1_group1_adr[] = {
414 {
415 .adr = 0x000130025D132001ull,
416 .num_endpoints = 1,
417 .endpoints = &spk_r_endpoint,
418 .name_prefix = "rt1320-1"
419 }
420};
421
422static const struct snd_soc_acpi_adr_device rt1320_2_group2_adr[] = {
423 {
424 .adr = 0x000231025D132001ull,
425 .num_endpoints = 1,
426 .endpoints = &spk_r_endpoint,
427 .name_prefix = "rt1320-2"
428 }
429};
430
431static const struct snd_soc_acpi_adr_device rt1320_1_group2_adr[] = {
432 {
433 .adr = 0x000130025D132001ull,
434 .num_endpoints = 1,
435 .endpoints = &spk_l_endpoint,
436 .name_prefix = "rt1320-1"
437 }
438};
439
440static const struct snd_soc_acpi_adr_device rt1320_3_group2_adr[] = {
441 {
442 .adr = 0x000330025D132001ull,
443 .num_endpoints = 1,
444 .endpoints = &spk_r_endpoint,
445 .name_prefix = "rt1320-2"
446 }
447};
448
449static const struct snd_soc_acpi_adr_device rt713_0_adr[] = {
450 {
451 .adr = 0x000031025D071301ull,
452 .num_endpoints = 1,
453 .endpoints = &single_endpoint,
454 .name_prefix = "rt713"
455 }
456};
457
458static const struct snd_soc_acpi_adr_device rt713_vb_2_adr[] = {
459 {
460 .adr = 0x000230025d071301ull,
461 .num_endpoints = ARRAY_SIZE(jack_dmic_endpoints),
462 .endpoints = jack_dmic_endpoints,
463 .name_prefix = "rt713"
464 }
465};
466
467static const struct snd_soc_acpi_adr_device rt714_0_adr[] = {
468 {
469 .adr = 0x000030025D071401ull,
470 .num_endpoints = 1,
471 .endpoints = &single_endpoint,
472 .name_prefix = "rt714"
473 }
474};
475
476static const struct snd_soc_acpi_adr_device rt714_1_adr[] = {
477 {
478 .adr = 0x000130025D071401ull,
479 .num_endpoints = 1,
480 .endpoints = &single_endpoint,
481 .name_prefix = "rt714"
482 }
483};
484
485static const struct snd_soc_acpi_link_adr lnl_cs42l43_l0[] = {
486 {
487 .mask = BIT(0),
488 .num_adr = ARRAY_SIZE(cs42l43_0_adr),
489 .adr_d = cs42l43_0_adr,
490 },
491 {}
492};
493
494static const struct snd_soc_acpi_link_adr lnl_cs42l43_l0_cs35l56_l3[] = {
495 {
496 .mask = BIT(0),
497 .num_adr = ARRAY_SIZE(cs42l43_0_adr),
498 .adr_d = cs42l43_0_adr,
499 },
500 {
501 .mask = BIT(3),
502 .num_adr = ARRAY_SIZE(cs35l56_3_lr_adr),
503 .adr_d = cs35l56_3_lr_adr,
504 },
505 {}
506};
507
508static const struct snd_soc_acpi_link_adr lnl_cs42l43_l0_cs35l56_l23[] = {
509 {
510 .mask = BIT(0),
511 .num_adr = ARRAY_SIZE(cs42l43_0_adr),
512 .adr_d = cs42l43_0_adr,
513 },
514 {
515 .mask = BIT(2),
516 .num_adr = ARRAY_SIZE(cs35l56_2_l_adr),
517 .adr_d = cs35l56_2_l_adr,
518 },
519 {
520 .mask = BIT(3),
521 .num_adr = ARRAY_SIZE(cs35l56_3_r_adr),
522 .adr_d = cs35l56_3_r_adr,
523 },
524 {}
525};
526
527static const struct snd_soc_acpi_link_adr lnl_cs42l43_l2_cs35l56x6_l13[] = {
528 {
529 .mask = BIT(2),
530 .num_adr = ARRAY_SIZE(cs42l43_2_adr),
531 .adr_d = cs42l43_2_adr,
532 },
533 {
534 .mask = BIT(1),
535 .num_adr = ARRAY_SIZE(cs35l56_1_3amp_adr),
536 .adr_d = cs35l56_1_3amp_adr,
537 },
538 {
539 .mask = BIT(3),
540 .num_adr = ARRAY_SIZE(cs35l56_3_3amp_adr),
541 .adr_d = cs35l56_3_3amp_adr,
542 },
543 {}
544};
545
546static const struct snd_soc_acpi_link_adr lnl_rvp[] = {
547 {
548 .mask = BIT(0),
549 .num_adr = ARRAY_SIZE(rt711_sdca_0_adr),
550 .adr_d = rt711_sdca_0_adr,
551 },
552 {}
553};
554
555static const struct snd_soc_acpi_link_adr lnl_712_only[] = {
556 {
557 .mask = BIT(2),
558 .num_adr = ARRAY_SIZE(rt712_2_single_adr),
559 .adr_d = rt712_2_single_adr,
560 },
561 {
562 .mask = BIT(3),
563 .num_adr = ARRAY_SIZE(rt1712_3_single_adr),
564 .adr_d = rt1712_3_single_adr,
565 },
566 {}
567};
568
569static const struct snd_soc_acpi_link_adr lnl_rt722_only[] = {
570 {
571 .mask = BIT(0),
572 .num_adr = ARRAY_SIZE(rt722_0_single_adr),
573 .adr_d = rt722_0_single_adr,
574 },
575 {}
576};
577
578static const struct snd_soc_acpi_link_adr lnl_3_in_1_sdca[] = {
579 {
580 .mask = BIT(0),
581 .num_adr = ARRAY_SIZE(rt711_sdca_0_adr),
582 .adr_d = rt711_sdca_0_adr,
583 },
584 {
585 .mask = BIT(2),
586 .num_adr = ARRAY_SIZE(rt1316_2_group1_adr),
587 .adr_d = rt1316_2_group1_adr,
588 },
589 {
590 .mask = BIT(3),
591 .num_adr = ARRAY_SIZE(rt1316_3_group1_adr),
592 .adr_d = rt1316_3_group1_adr,
593 },
594 {
595 .mask = BIT(1),
596 .num_adr = ARRAY_SIZE(rt714_1_adr),
597 .adr_d = rt714_1_adr,
598 },
599 {}
600};
601
602static const struct snd_soc_acpi_link_adr lnl_sdw_rt1318_l12_rt714_l0[] = {
603 {
604 .mask = BIT(1),
605 .num_adr = ARRAY_SIZE(rt1318_1_group1_adr),
606 .adr_d = rt1318_1_group1_adr,
607 },
608 {
609 .mask = BIT(2),
610 .num_adr = ARRAY_SIZE(rt1318_2_group1_adr),
611 .adr_d = rt1318_2_group1_adr,
612 },
613 {
614 .mask = BIT(0),
615 .num_adr = ARRAY_SIZE(rt714_0_adr),
616 .adr_d = rt714_0_adr,
617 },
618 {}
619};
620
621static const struct snd_soc_acpi_link_adr lnl_sdw_rt1320_l12_rt714_l0[] = {
622 {
623 .mask = BIT(1),
624 .num_adr = ARRAY_SIZE(rt1320_1_group2_adr),
625 .adr_d = rt1320_1_group2_adr,
626 },
627 {
628 .mask = BIT(2),
629 .num_adr = ARRAY_SIZE(rt1320_2_group2_adr),
630 .adr_d = rt1320_2_group2_adr,
631 },
632 {
633 .mask = BIT(0),
634 .num_adr = ARRAY_SIZE(rt714_0_adr),
635 .adr_d = rt714_0_adr,
636 },
637 {}
638};
639
640static const struct snd_soc_acpi_link_adr lnl_sdw_rt713_l0_rt1318_l1[] = {
641 {
642 .mask = BIT(0),
643 .num_adr = ARRAY_SIZE(rt713_0_adr),
644 .adr_d = rt713_0_adr,
645 },
646 {
647 .mask = BIT(1),
648 .num_adr = ARRAY_SIZE(rt1318_1_adr),
649 .adr_d = rt1318_1_adr,
650 },
651 {}
652};
653
654static const struct snd_soc_acpi_link_adr lnl_sdw_rt713_vb_l2_rt1320_l13[] = {
655 {
656 .mask = BIT(2),
657 .num_adr = ARRAY_SIZE(rt713_vb_2_adr),
658 .adr_d = rt713_vb_2_adr,
659 },
660 {
661 .mask = BIT(1),
662 .num_adr = ARRAY_SIZE(rt1320_1_group2_adr),
663 .adr_d = rt1320_1_group2_adr,
664 },
665 {
666 .mask = BIT(3),
667 .num_adr = ARRAY_SIZE(rt1320_3_group2_adr),
668 .adr_d = rt1320_3_group2_adr,
669 },
670 {}
671};
672
673static const struct snd_soc_acpi_link_adr lnl_sdw_rt712_vb_l2_rt1320_l1[] = {
674 {
675 .mask = BIT(2),
676 .num_adr = ARRAY_SIZE(rt712_vb_2_group1_adr),
677 .adr_d = rt712_vb_2_group1_adr,
678 },
679 {
680 .mask = BIT(1),
681 .num_adr = ARRAY_SIZE(rt1320_1_group1_adr),
682 .adr_d = rt1320_1_group1_adr,
683 },
684 {}
685};
686
687/* this table is used when there is no I2S codec present */
688/* this table is used when there is no I2S codec present */
689struct snd_soc_acpi_mach snd_soc_acpi_intel_lnl_sdw_machines[] = {
690 /* mockup tests need to be first */
691 {
692 .link_mask = GENMASK(3, 0),
693 .links = sdw_mockup_headset_2amps_mic,
694 .drv_name = "sof_sdw",
695 .sof_tplg_filename = "sof-lnl-rt711-rt1308-rt715.tplg",
696 },
697 {
698 .link_mask = BIT(0) | BIT(1) | BIT(3),
699 .links = sdw_mockup_headset_1amp_mic,
700 .drv_name = "sof_sdw",
701 .sof_tplg_filename = "sof-lnl-rt711-rt1308-mono-rt715.tplg",
702 },
703 {
704 .link_mask = GENMASK(2, 0),
705 .links = sdw_mockup_mic_headset_1amp,
706 .drv_name = "sof_sdw",
707 .sof_tplg_filename = "sof-lnl-rt715-rt711-rt1308-mono.tplg",
708 },
709 {
710 .link_mask = BIT(0),
711 .links = sdw_mockup_multi_func,
712 .drv_name = "sof_sdw",
713 .sof_tplg_filename = "sof-lnl-rt722-l0.tplg", /* Reuse the existing tplg file */
714 },
715 {
716 .link_mask = GENMASK(3, 0),
717 .links = lnl_3_in_1_sdca,
718 .drv_name = "sof_sdw",
719 .sof_tplg_filename = "sof-lnl-rt711-l0-rt1316-l23-rt714-l1.tplg",
720 },
721 {
722 .link_mask = BIT(0) | BIT(2) | BIT(3),
723 .links = lnl_cs42l43_l0_cs35l56_l23,
724 .drv_name = "sof_sdw",
725 .sof_tplg_filename = "sof-lnl-cs42l43-l0-cs35l56-l23.tplg",
726 },
727 {
728 .link_mask = BIT(1) | BIT(2) | BIT(3),
729 .links = lnl_cs42l43_l2_cs35l56x6_l13,
730 .drv_name = "sof_sdw",
731 .sof_tplg_filename = "sof-lnl-cs42l43-l2-cs35l56x6-l13.tplg",
732 },
733 {
734 .link_mask = BIT(0) | BIT(3),
735 .links = lnl_cs42l43_l0_cs35l56_l3,
736 .drv_name = "sof_sdw",
737 .sof_tplg_filename = "sof-lnl-cs42l43-l0-cs35l56-l3.tplg",
738 },
739 {
740 .link_mask = BIT(0),
741 .links = lnl_cs42l43_l0,
742 .drv_name = "sof_sdw",
743 .sof_tplg_filename = "sof-lnl-cs42l43-l0.tplg",
744 .get_function_tplg_files = sof_sdw_get_tplg_files,
745 },
746 {
747 .link_mask = BIT(0),
748 .links = lnl_rvp,
749 .drv_name = "sof_sdw",
750 .sof_tplg_filename = "sof-lnl-rt711.tplg",
751 },
752 {
753 .link_mask = BIT(2) | BIT(3),
754 .links = lnl_712_only,
755 .drv_name = "sof_sdw",
756 .sof_tplg_filename = "sof-lnl-rt712-l2-rt1712-l3.tplg",
757 },
758 {
759 .link_mask = BIT(0),
760 .links = lnl_rt722_only,
761 .drv_name = "sof_sdw",
762 .sof_tplg_filename = "sof-lnl-rt722-l0.tplg",
763 .get_function_tplg_files = sof_sdw_get_tplg_files,
764 },
765 {
766 .link_mask = GENMASK(2, 0),
767 .links = lnl_sdw_rt1318_l12_rt714_l0,
768 .drv_name = "sof_sdw",
769 .sof_tplg_filename = "sof-lnl-rt1318-l12-rt714-l0.tplg"
770 },
771 {
772 .link_mask = GENMASK(2, 0),
773 .links = lnl_sdw_rt1320_l12_rt714_l0,
774 .drv_name = "sof_sdw",
775 .sof_tplg_filename = "sof-lnl-rt1320-l12-rt714-l0.tplg"
776 },
777 {
778 .link_mask = BIT(0) | BIT(1),
779 .links = lnl_sdw_rt713_l0_rt1318_l1,
780 .drv_name = "sof_sdw",
781 .sof_tplg_filename = "sof-lnl-rt713-l0-rt1318-l1.tplg"
782 },
783 {
784 .link_mask = BIT(1) | BIT(2),
785 .links = lnl_sdw_rt712_vb_l2_rt1320_l1,
786 .drv_name = "sof_sdw",
787 .machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb,
788 .sof_tplg_filename = "sof-lnl-rt712-l2-rt1320-l1.tplg",
789 .get_function_tplg_files = sof_sdw_get_tplg_files,
790 },
791 {
792 .link_mask = BIT(1) | BIT(2) | BIT(3),
793 .links = lnl_sdw_rt713_vb_l2_rt1320_l13,
794 .drv_name = "sof_sdw",
795 .machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb,
796 .sof_tplg_filename = "sof-lnl-rt713-l2-rt1320-l13.tplg",
797 .get_function_tplg_files = sof_sdw_get_tplg_files,
798 },
799 {},
800};
801EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_lnl_sdw_machines);
802

source code of linux/sound/soc/intel/common/soc-acpi-intel-lnl-match.c