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