xref: /linux/sound/soc/intel/common/soc-acpi-intel-mtl-match.c (revision eb01fe7abbe2d0b38824d2a93fdb4cc3eaf2ccc1)
1 // SPDX-License-Identifier: GPL-2.0-only
2 /*
3  * soc-acpi-intel-mtl-match.c - tables and support for MTL ACPI enumeration.
4  *
5  * Copyright (c) 2022, Intel Corporation.
6  *
7  */
8 
9 #include <sound/soc-acpi.h>
10 #include <sound/soc-acpi-intel-match.h>
11 #include "soc-acpi-intel-sdw-mockup-match.h"
12 
13 static const struct snd_soc_acpi_codecs mtl_max98357a_amp = {
14 	.num_codecs = 1,
15 	.codecs = {"MX98357A"}
16 };
17 
18 static const struct snd_soc_acpi_codecs mtl_max98360a_amp = {
19 	.num_codecs = 1,
20 	.codecs = {"MX98360A"}
21 };
22 
23 static const struct snd_soc_acpi_codecs mtl_rt1019p_amp = {
24 	.num_codecs = 1,
25 	.codecs = {"RTL1019"}
26 };
27 
28 static const struct snd_soc_acpi_codecs mtl_rt5682_rt5682s_hp = {
29 	.num_codecs = 2,
30 	.codecs = {"10EC5682", "RTL5682"},
31 };
32 
33 static const struct snd_soc_acpi_codecs mtl_essx_83x6 = {
34 	.num_codecs = 3,
35 	.codecs = { "ESSX8316", "ESSX8326", "ESSX8336"},
36 };
37 
38 static const struct snd_soc_acpi_codecs mtl_lt6911_hdmi = {
39 	.num_codecs = 1,
40 	.codecs = {"INTC10B0"}
41 };
42 
43 static const struct snd_soc_acpi_codecs mtl_rt5650_amp = {
44 	.num_codecs = 1,
45 	.codecs = {"10EC5650"}
46 };
47 
48 struct snd_soc_acpi_mach snd_soc_acpi_intel_mtl_machines[] = {
49 	{
50 		.comp_ids = &mtl_rt5682_rt5682s_hp,
51 		.drv_name = "mtl_mx98357_rt5682",
52 		.machine_quirk = snd_soc_acpi_codec_list,
53 		.quirk_data = &mtl_max98357a_amp,
54 		.sof_tplg_filename = "sof-mtl-max98357a-rt5682.tplg",
55 	},
56 	{
57 		.comp_ids = &mtl_rt5682_rt5682s_hp,
58 		.drv_name = "mtl_mx98360_rt5682",
59 		.machine_quirk = snd_soc_acpi_codec_list,
60 		.quirk_data = &mtl_max98360a_amp,
61 		.sof_tplg_filename = "sof-mtl-max98360a-rt5682.tplg",
62 	},
63 	{
64 		.comp_ids = &mtl_rt5682_rt5682s_hp,
65 		.drv_name = "mtl_rt5682_def",
66 		.machine_quirk = snd_soc_acpi_codec_list,
67 		.quirk_data = &mtl_rt1019p_amp,
68 		.sof_tplg_filename = "sof-mtl-rt1019-rt5682.tplg",
69 	},
70 	{
71 		.comp_ids = &mtl_essx_83x6,
72 		.drv_name = "mtl_es83x6_c1_h02",
73 		.machine_quirk = snd_soc_acpi_codec_list,
74 		.quirk_data = &mtl_lt6911_hdmi,
75 		.sof_tplg_filename = "sof-mtl-es83x6-ssp1-hdmi-ssp02.tplg",
76 	},
77 	{
78 		.comp_ids = &mtl_essx_83x6,
79 		.drv_name = "sof-essx8336",
80 		.sof_tplg_filename = "sof-mtl-es8336", /* the tplg suffix is added at run time */
81 		.tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_SSP_NUMBER |
82 					SND_SOC_ACPI_TPLG_INTEL_SSP_MSB |
83 					SND_SOC_ACPI_TPLG_INTEL_DMIC_NUMBER,
84 	},
85 	{
86 		.id = "10EC5650",
87 		.drv_name = "mtl_rt5682_def",
88 		.machine_quirk = snd_soc_acpi_codec_list,
89 		.quirk_data = &mtl_rt5650_amp,
90 		.sof_tplg_filename = "sof-mtl-rt5650.tplg",
91 	},
92 	/* place amp-only boards in the end of table */
93 	{
94 		.id = "INTC10B0",
95 		.drv_name = "mtl_lt6911_hdmi_ssp",
96 		.sof_tplg_filename = "sof-mtl-hdmi-ssp02.tplg",
97 	},
98 	{},
99 };
100 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_mtl_machines);
101 
102 static const struct snd_soc_acpi_endpoint single_endpoint = {
103 	.num = 0,
104 	.aggregated = 0,
105 	.group_position = 0,
106 	.group_id = 0,
107 };
108 
109 static const struct snd_soc_acpi_endpoint spk_l_endpoint = {
110 	.num = 0,
111 	.aggregated = 1,
112 	.group_position = 0,
113 	.group_id = 1,
114 };
115 
116 static const struct snd_soc_acpi_endpoint spk_r_endpoint = {
117 	.num = 0,
118 	.aggregated = 1,
119 	.group_position = 1,
120 	.group_id = 1,
121 };
122 
123 static const struct snd_soc_acpi_endpoint rt712_endpoints[] = {
124 	{
125 		.num = 0,
126 		.aggregated = 0,
127 		.group_position = 0,
128 		.group_id = 0,
129 	},
130 	{
131 		.num = 1,
132 		.aggregated = 0,
133 		.group_position = 0,
134 		.group_id = 0,
135 	},
136 };
137 
138 /*
139  * RT722 is a multi-function codec, three endpoints are created for
140  * its headset, amp and dmic functions.
141  */
142 static const struct snd_soc_acpi_endpoint rt722_endpoints[] = {
143 	{
144 		.num = 0,
145 		.aggregated = 0,
146 		.group_position = 0,
147 		.group_id = 0,
148 	},
149 	{
150 		.num = 1,
151 		.aggregated = 0,
152 		.group_position = 0,
153 		.group_id = 0,
154 	},
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 spk_2_endpoint = {
164 	.num = 0,
165 	.aggregated = 1,
166 	.group_position = 2,
167 	.group_id = 1,
168 };
169 
170 static const struct snd_soc_acpi_endpoint spk_3_endpoint = {
171 	.num = 0,
172 	.aggregated = 1,
173 	.group_position = 3,
174 	.group_id = 1,
175 };
176 
177 static const struct snd_soc_acpi_adr_device rt711_sdca_0_adr[] = {
178 	{
179 		.adr = 0x000030025D071101ull,
180 		.num_endpoints = 1,
181 		.endpoints = &single_endpoint,
182 		.name_prefix = "rt711"
183 	}
184 };
185 
186 static const struct snd_soc_acpi_adr_device rt712_0_single_adr[] = {
187 	{
188 		.adr = 0x000030025D071201ull,
189 		.num_endpoints = ARRAY_SIZE(rt712_endpoints),
190 		.endpoints = rt712_endpoints,
191 		.name_prefix = "rt712"
192 	}
193 };
194 
195 static const struct snd_soc_acpi_adr_device rt1712_3_single_adr[] = {
196 	{
197 		.adr = 0x000330025D171201ull,
198 		.num_endpoints = 1,
199 		.endpoints = &single_endpoint,
200 		.name_prefix = "rt712-dmic"
201 	}
202 };
203 
204 static const struct snd_soc_acpi_adr_device rt722_0_single_adr[] = {
205 	{
206 		.adr = 0x000030025d072201ull,
207 		.num_endpoints = ARRAY_SIZE(rt722_endpoints),
208 		.endpoints = rt722_endpoints,
209 		.name_prefix = "rt722"
210 	}
211 };
212 
213 static const struct snd_soc_acpi_adr_device rt713_0_single_adr[] = {
214 	{
215 		.adr = 0x000031025D071301ull,
216 		.num_endpoints = 1,
217 		.endpoints = &single_endpoint,
218 		.name_prefix = "rt713"
219 	}
220 };
221 
222 static const struct snd_soc_acpi_adr_device rt1713_3_single_adr[] = {
223 	{
224 		.adr = 0x000331025D171301ull,
225 		.num_endpoints = 1,
226 		.endpoints = &single_endpoint,
227 		.name_prefix = "rt713-dmic"
228 	}
229 };
230 
231 static const struct snd_soc_acpi_adr_device mx8373_0_adr[] = {
232 	{
233 		.adr = 0x000023019F837300ull,
234 		.num_endpoints = 1,
235 		.endpoints = &spk_l_endpoint,
236 		.name_prefix = "Left"
237 	},
238 	{
239 		.adr = 0x000027019F837300ull,
240 		.num_endpoints = 1,
241 		.endpoints = &spk_r_endpoint,
242 		.name_prefix = "Right"
243 	}
244 };
245 
246 static const struct snd_soc_acpi_adr_device rt5682_2_adr[] = {
247 	{
248 		.adr = 0x000221025D568200ull,
249 		.num_endpoints = 1,
250 		.endpoints = &single_endpoint,
251 		.name_prefix = "rt5682"
252 	}
253 };
254 
255 static const struct snd_soc_acpi_adr_device rt1316_2_group1_adr[] = {
256 	{
257 		.adr = 0x000230025D131601ull,
258 		.num_endpoints = 1,
259 		.endpoints = &spk_l_endpoint,
260 		.name_prefix = "rt1316-1"
261 	}
262 };
263 
264 static const struct snd_soc_acpi_adr_device rt1316_3_group1_adr[] = {
265 	{
266 		.adr = 0x000331025D131601ull,
267 		.num_endpoints = 1,
268 		.endpoints = &spk_r_endpoint,
269 		.name_prefix = "rt1316-2"
270 	}
271 };
272 
273 static const struct snd_soc_acpi_adr_device rt1316_1_group2_adr[] = {
274 	{
275 		.adr = 0x000131025D131601ull,
276 		.num_endpoints = 1,
277 		.endpoints = &spk_l_endpoint,
278 		.name_prefix = "rt1316-1"
279 	}
280 };
281 
282 static const struct snd_soc_acpi_adr_device rt1316_2_group2_adr[] = {
283 	{
284 		.adr = 0x000230025D131601ull,
285 		.num_endpoints = 1,
286 		.endpoints = &spk_r_endpoint,
287 		.name_prefix = "rt1316-2"
288 	}
289 };
290 
291 static const struct snd_soc_acpi_adr_device rt1318_1_group1_adr[] = {
292 	{
293 		.adr = 0x000130025D131801ull,
294 		.num_endpoints = 1,
295 		.endpoints = &spk_l_endpoint,
296 		.name_prefix = "rt1318-1"
297 	}
298 };
299 
300 static const struct snd_soc_acpi_adr_device rt1318_2_group1_adr[] = {
301 	{
302 		.adr = 0x000232025D131801ull,
303 		.num_endpoints = 1,
304 		.endpoints = &spk_r_endpoint,
305 		.name_prefix = "rt1318-2"
306 	}
307 };
308 
309 static const struct snd_soc_acpi_adr_device rt714_0_adr[] = {
310 	{
311 		.adr = 0x000030025D071401ull,
312 		.num_endpoints = 1,
313 		.endpoints = &single_endpoint,
314 		.name_prefix = "rt714"
315 	}
316 };
317 
318 static const struct snd_soc_acpi_adr_device rt714_1_adr[] = {
319 	{
320 		.adr = 0x000130025D071401ull,
321 		.num_endpoints = 1,
322 		.endpoints = &single_endpoint,
323 		.name_prefix = "rt714"
324 	}
325 };
326 
327 static const struct snd_soc_acpi_link_adr mtl_712_only[] = {
328 	{
329 		.mask = BIT(0),
330 		.num_adr = ARRAY_SIZE(rt712_0_single_adr),
331 		.adr_d = rt712_0_single_adr,
332 	},
333 	{
334 		.mask = BIT(3),
335 		.num_adr = ARRAY_SIZE(rt1712_3_single_adr),
336 		.adr_d = rt1712_3_single_adr,
337 	},
338 	{}
339 };
340 
341 static const struct snd_soc_acpi_adr_device cs42l43_0_adr[] = {
342 	{
343 		.adr = 0x00003001FA424301ull,
344 		.num_endpoints = 1,
345 		.endpoints = &single_endpoint,
346 		.name_prefix = "cs42l43"
347 	}
348 };
349 
350 static const struct snd_soc_acpi_adr_device cs35l56_1_adr[] = {
351 	{
352 		.adr = 0x00013701FA355601ull,
353 		.num_endpoints = 1,
354 		.endpoints = &spk_r_endpoint,
355 		.name_prefix = "AMP8"
356 	},
357 	{
358 		.adr = 0x00013601FA355601ull,
359 		.num_endpoints = 1,
360 		.endpoints = &spk_3_endpoint,
361 		.name_prefix = "AMP7"
362 	}
363 };
364 
365 static const struct snd_soc_acpi_adr_device cs35l56_2_adr[] = {
366 	{
367 		.adr = 0x00023301FA355601ull,
368 		.num_endpoints = 1,
369 		.endpoints = &spk_l_endpoint,
370 		.name_prefix = "AMP1"
371 	},
372 	{
373 		.adr = 0x00023201FA355601ull,
374 		.num_endpoints = 1,
375 		.endpoints = &spk_2_endpoint,
376 		.name_prefix = "AMP2"
377 	}
378 };
379 
380 static const struct snd_soc_acpi_adr_device cs35l56_2_r_adr[] = {
381 	{
382 		.adr = 0x00023201FA355601ull,
383 		.num_endpoints = 1,
384 		.endpoints = &spk_r_endpoint,
385 		.name_prefix = "AMP3"
386 	},
387 	{
388 		.adr = 0x00023301FA355601ull,
389 		.num_endpoints = 1,
390 		.endpoints = &spk_3_endpoint,
391 		.name_prefix = "AMP4"
392 	}
393 
394 };
395 
396 static const struct snd_soc_acpi_adr_device cs35l56_3_l_adr[] = {
397 	{
398 		.adr = 0x00033001fa355601ull,
399 		.num_endpoints = 1,
400 		.endpoints = &spk_l_endpoint,
401 		.name_prefix = "AMP1"
402 	},
403 	{
404 		.adr = 0x00033101fa355601ull,
405 		.num_endpoints = 1,
406 		.endpoints = &spk_2_endpoint,
407 		.name_prefix = "AMP2"
408 	}
409 };
410 
411 static const struct snd_soc_acpi_link_adr rt5682_link2_max98373_link0[] = {
412 	/* Expected order: jack -> amp */
413 	{
414 		.mask = BIT(2),
415 		.num_adr = ARRAY_SIZE(rt5682_2_adr),
416 		.adr_d = rt5682_2_adr,
417 	},
418 	{
419 		.mask = BIT(0),
420 		.num_adr = ARRAY_SIZE(mx8373_0_adr),
421 		.adr_d = mx8373_0_adr,
422 	},
423 	{}
424 };
425 
426 static const struct snd_soc_acpi_link_adr mtl_rvp[] = {
427 	{
428 		.mask = BIT(0),
429 		.num_adr = ARRAY_SIZE(rt711_sdca_0_adr),
430 		.adr_d = rt711_sdca_0_adr,
431 	},
432 	{}
433 };
434 
435 static const struct snd_soc_acpi_link_adr mtl_rt722_only[] = {
436 	{
437 		.mask = BIT(0),
438 		.num_adr = ARRAY_SIZE(rt722_0_single_adr),
439 		.adr_d = rt722_0_single_adr,
440 	},
441 	{}
442 };
443 
444 static const struct snd_soc_acpi_link_adr mtl_3_in_1_sdca[] = {
445 	{
446 		.mask = BIT(0),
447 		.num_adr = ARRAY_SIZE(rt711_sdca_0_adr),
448 		.adr_d = rt711_sdca_0_adr,
449 	},
450 	{
451 		.mask = BIT(2),
452 		.num_adr = ARRAY_SIZE(rt1316_2_group1_adr),
453 		.adr_d = rt1316_2_group1_adr,
454 	},
455 	{
456 		.mask = BIT(3),
457 		.num_adr = ARRAY_SIZE(rt1316_3_group1_adr),
458 		.adr_d = rt1316_3_group1_adr,
459 	},
460 	{
461 		.mask = BIT(1),
462 		.num_adr = ARRAY_SIZE(rt714_1_adr),
463 		.adr_d = rt714_1_adr,
464 	},
465 	{}
466 };
467 
468 static const struct snd_soc_acpi_link_adr mtl_sdw_rt1318_l12_rt714_l0[] = {
469 	{
470 		.mask = BIT(1),
471 		.num_adr = ARRAY_SIZE(rt1318_1_group1_adr),
472 		.adr_d = rt1318_1_group1_adr,
473 	},
474 	{
475 		.mask = BIT(2),
476 		.num_adr = ARRAY_SIZE(rt1318_2_group1_adr),
477 		.adr_d = rt1318_2_group1_adr,
478 	},
479 	{
480 		.mask = BIT(0),
481 		.num_adr = ARRAY_SIZE(rt714_0_adr),
482 		.adr_d = rt714_0_adr,
483 	},
484 	{}
485 };
486 
487 static const struct snd_soc_acpi_link_adr mtl_rt713_l0_rt1316_l12_rt1713_l3[] = {
488 	{
489 		.mask = BIT(0),
490 		.num_adr = ARRAY_SIZE(rt713_0_single_adr),
491 		.adr_d = rt713_0_single_adr,
492 	},
493 	{
494 		.mask = BIT(1),
495 		.num_adr = ARRAY_SIZE(rt1316_1_group2_adr),
496 		.adr_d = rt1316_1_group2_adr,
497 	},
498 	{
499 		.mask = BIT(2),
500 		.num_adr = ARRAY_SIZE(rt1316_2_group2_adr),
501 		.adr_d = rt1316_2_group2_adr,
502 	},
503 	{
504 		.mask = BIT(3),
505 		.num_adr = ARRAY_SIZE(rt1713_3_single_adr),
506 		.adr_d = rt1713_3_single_adr,
507 	},
508 	{}
509 };
510 
511 static const struct snd_soc_acpi_link_adr mtl_rt713_l0_rt1316_l12[] = {
512 	{
513 		.mask = BIT(0),
514 		.num_adr = ARRAY_SIZE(rt713_0_single_adr),
515 		.adr_d = rt713_0_single_adr,
516 	},
517 	{
518 		.mask = BIT(1),
519 		.num_adr = ARRAY_SIZE(rt1316_1_group2_adr),
520 		.adr_d = rt1316_1_group2_adr,
521 	},
522 	{
523 		.mask = BIT(2),
524 		.num_adr = ARRAY_SIZE(rt1316_2_group2_adr),
525 		.adr_d = rt1316_2_group2_adr,
526 	},
527 	{}
528 };
529 
530 static const struct snd_soc_acpi_adr_device mx8363_2_adr[] = {
531 	{
532 		.adr = 0x000230019F836300ull,
533 		.num_endpoints = 1,
534 		.endpoints = &spk_l_endpoint,
535 		.name_prefix = "Left"
536 	},
537 	{
538 		.adr = 0x000231019F836300ull,
539 		.num_endpoints = 1,
540 		.endpoints = &spk_r_endpoint,
541 		.name_prefix = "Right"
542 	}
543 };
544 
545 static const struct snd_soc_acpi_adr_device cs42l42_0_adr[] = {
546 	{
547 		.adr = 0x00001001FA424200ull,
548 		.num_endpoints = 1,
549 		.endpoints = &single_endpoint,
550 		.name_prefix = "cs42l42"
551 	}
552 };
553 
554 static const struct snd_soc_acpi_link_adr cs42l42_link0_max98363_link2[] = {
555 	/* Expected order: jack -> amp */
556 	{
557 		.mask = BIT(0),
558 		.num_adr = ARRAY_SIZE(cs42l42_0_adr),
559 		.adr_d = cs42l42_0_adr,
560 	},
561 	{
562 		.mask = BIT(2),
563 		.num_adr = ARRAY_SIZE(mx8363_2_adr),
564 		.adr_d = mx8363_2_adr,
565 	},
566 	{}
567 };
568 
569 static const struct snd_soc_acpi_link_adr mtl_cs42l43_cs35l56[] = {
570 	{
571 		.mask = BIT(0),
572 		.num_adr = ARRAY_SIZE(cs42l43_0_adr),
573 		.adr_d = cs42l43_0_adr,
574 	},
575 	{
576 		.mask = BIT(1),
577 		.num_adr = ARRAY_SIZE(cs35l56_1_adr),
578 		.adr_d = cs35l56_1_adr,
579 	},
580 	{
581 		.mask = BIT(2),
582 		.num_adr = ARRAY_SIZE(cs35l56_2_adr),
583 		.adr_d = cs35l56_2_adr,
584 	},
585 	{}
586 };
587 
588 static const struct snd_soc_acpi_link_adr cs42l43_link0_cs35l56_link2_link3[] = {
589 	/* Expected order: jack -> amp */
590 	{
591 		.mask = BIT(0),
592 		.num_adr = ARRAY_SIZE(cs42l43_0_adr),
593 		.adr_d = cs42l43_0_adr,
594 	},
595 	{
596 		.mask = BIT(2),
597 		.num_adr = ARRAY_SIZE(cs35l56_2_r_adr),
598 		.adr_d = cs35l56_2_r_adr,
599 	},
600 	{
601 		.mask = BIT(3),
602 		.num_adr = ARRAY_SIZE(cs35l56_3_l_adr),
603 		.adr_d = cs35l56_3_l_adr,
604 	},
605 	{}
606 };
607 
608 /* this table is used when there is no I2S codec present */
609 struct snd_soc_acpi_mach snd_soc_acpi_intel_mtl_sdw_machines[] = {
610 	/* mockup tests need to be first */
611 	{
612 		.link_mask = GENMASK(3, 0),
613 		.links = sdw_mockup_headset_2amps_mic,
614 		.drv_name = "sof_sdw",
615 		.sof_tplg_filename = "sof-mtl-rt711-rt1308-rt715.tplg",
616 	},
617 	{
618 		.link_mask = BIT(0) | BIT(1) | BIT(3),
619 		.links = sdw_mockup_headset_1amp_mic,
620 		.drv_name = "sof_sdw",
621 		.sof_tplg_filename = "sof-mtl-rt711-rt1308-mono-rt715.tplg",
622 	},
623 	{
624 		.link_mask = GENMASK(2, 0),
625 		.links = sdw_mockup_mic_headset_1amp,
626 		.drv_name = "sof_sdw",
627 		.sof_tplg_filename = "sof-mtl-rt715-rt711-rt1308-mono.tplg",
628 	},
629 	{
630 		.link_mask = GENMASK(3, 0),
631 		.links = mtl_rt713_l0_rt1316_l12_rt1713_l3,
632 		.drv_name = "sof_sdw",
633 		.sof_tplg_filename = "sof-mtl-rt713-l0-rt1316-l12-rt1713-l3.tplg",
634 	},
635 	{
636 		.link_mask = GENMASK(2, 0),
637 		.links = mtl_rt713_l0_rt1316_l12,
638 		.drv_name = "sof_sdw",
639 		.sof_tplg_filename = "sof-mtl-rt713-l0-rt1316-l12.tplg",
640 	},
641 	{
642 		.link_mask = BIT(3) | BIT(0),
643 		.links = mtl_712_only,
644 		.drv_name = "sof_sdw",
645 		.sof_tplg_filename = "sof-mtl-rt712-l0-rt1712-l3.tplg",
646 	},
647 	{
648 		.link_mask = GENMASK(2, 0),
649 		.links = mtl_sdw_rt1318_l12_rt714_l0,
650 		.drv_name = "sof_sdw",
651 		.sof_tplg_filename = "sof-mtl-rt1318-l12-rt714-l0.tplg"
652 	},
653 	{
654 		.link_mask = BIT(0) | BIT(2) | BIT(3),
655 		.links = cs42l43_link0_cs35l56_link2_link3,
656 		.drv_name = "sof_sdw",
657 		.sof_tplg_filename = "sof-mtl-cs42l43-l0-cs35l56-l23.tplg",
658 	},
659 	{
660 		.link_mask = GENMASK(2, 0),
661 		.links = mtl_cs42l43_cs35l56,
662 		.drv_name = "sof_sdw",
663 		.sof_tplg_filename = "sof-mtl-cs42l43-l0-cs35l56-l12.tplg",
664 	},
665 	{
666 		.link_mask = GENMASK(3, 0),
667 		.links = mtl_3_in_1_sdca,
668 		.drv_name = "sof_sdw",
669 		.sof_tplg_filename = "sof-mtl-rt711-l0-rt1316-l23-rt714-l1.tplg",
670 	},
671 	{
672 		.link_mask = BIT(0),
673 		.links = mtl_rt722_only,
674 		.drv_name = "sof_sdw",
675 		.sof_tplg_filename = "sof-mtl-rt722-l0.tplg",
676 	},
677 	{
678 		.link_mask = BIT(0),
679 		.links = mtl_rvp,
680 		.drv_name = "sof_sdw",
681 		.sof_tplg_filename = "sof-mtl-rt711.tplg",
682 	},
683 	{
684 		.link_mask = BIT(0) | BIT(2),
685 		.links = rt5682_link2_max98373_link0,
686 		.drv_name = "sof_sdw",
687 		.sof_tplg_filename = "sof-mtl-sdw-rt5682-l2-max98373-l0.tplg",
688 	},
689 	{
690 		.link_mask = BIT(0) | BIT(2),
691 		.links = cs42l42_link0_max98363_link2,
692 		.drv_name = "sof_sdw",
693 		.sof_tplg_filename = "sof-mtl-sdw-cs42l42-l0-max98363-l2.tplg",
694 	},
695 	{},
696 };
697 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_mtl_sdw_machines);
698