xref: /linux/sound/soc/intel/common/soc-acpi-intel-lnl-match.c (revision 22c55fb9eb92395d999b8404d73e58540d11bdd8)
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 
15 struct snd_soc_acpi_mach snd_soc_acpi_intel_lnl_machines[] = {
16 	{},
17 };
18 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_lnl_machines);
19 
20 static const struct snd_soc_acpi_endpoint single_endpoint = {
21 	.num = 0,
22 	.aggregated = 0,
23 	.group_position = 0,
24 	.group_id = 0,
25 };
26 
27 static 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 
34 static 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 
41 static 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 
48 static 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 
55 static 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 
62 static 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 
69 static 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 
76 static 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 
83 static 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  */
102 static 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 
123 static 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 
140 static 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 
164 static 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 
191 static 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 
218 static 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 
233 static 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 
248 static 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 
263 static 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 
284 static 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 
305 static 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 
314 static 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 
323 static 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 
332 static 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 
341 static 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 
350 static 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 
359 static 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 
368 static 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 
377 static 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 
386 static 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 
395 static 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 
404 static 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 
413 static 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 
422 static 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 
431 static 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 
440 static 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 
449 static 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 
458 static 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 
467 static 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 
476 static 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 
485 static 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 
494 static 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 
508 static 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 
527 static 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 
546 static 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 
555 static 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 
569 static 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 
578 static 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 
602 static 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 
621 static 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 
640 static 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 
654 static 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 
673 static 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 */
689 struct 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 };
801 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_lnl_sdw_machines);
802