xref: /linux/sound/soc/intel/common/soc-acpi-intel-adl-match.c (revision 3df692169e8486fc3dd91fcd5ea81c27a0bac033)
1 // SPDX-License-Identifier: GPL-2.0-only
2 /*
3  * soc-apci-intel-adl-match.c - tables and support for ADL ACPI enumeration.
4  *
5  * Copyright (c) 2020, Intel Corporation.
6  */
7 
8 #include <sound/soc-acpi.h>
9 #include <sound/soc-acpi-intel-match.h>
10 
11 static const struct snd_soc_acpi_codecs essx_83x6 = {
12 	.num_codecs = 3,
13 	.codecs = { "ESSX8316", "ESSX8326", "ESSX8336"},
14 };
15 
16 static const struct snd_soc_acpi_endpoint single_endpoint = {
17 	.num = 0,
18 	.aggregated = 0,
19 	.group_position = 0,
20 	.group_id = 0,
21 };
22 
23 static const struct snd_soc_acpi_endpoint spk_l_endpoint = {
24 	.num = 0,
25 	.aggregated = 1,
26 	.group_position = 0,
27 	.group_id = 1,
28 };
29 
30 static const struct snd_soc_acpi_endpoint spk_r_endpoint = {
31 	.num = 0,
32 	.aggregated = 1,
33 	.group_position = 1,
34 	.group_id = 1,
35 };
36 
37 static const struct snd_soc_acpi_adr_device rt711_0_adr[] = {
38 	{
39 		.adr = 0x000020025D071100ull,
40 		.num_endpoints = 1,
41 		.endpoints = &single_endpoint,
42 		.name_prefix = "rt711"
43 	}
44 };
45 
46 static const struct snd_soc_acpi_adr_device rt1308_1_group1_adr[] = {
47 	{
48 		.adr = 0x000120025D130800ull,
49 		.num_endpoints = 1,
50 		.endpoints = &spk_l_endpoint,
51 		.name_prefix = "rt1308-1"
52 	}
53 };
54 
55 static const struct snd_soc_acpi_adr_device rt1308_2_group1_adr[] = {
56 	{
57 		.adr = 0x000220025D130800ull,
58 		.num_endpoints = 1,
59 		.endpoints = &spk_r_endpoint,
60 		.name_prefix = "rt1308-2"
61 	}
62 };
63 
64 static const struct snd_soc_acpi_adr_device rt715_3_adr[] = {
65 	{
66 		.adr = 0x000320025D071500ull,
67 		.num_endpoints = 1,
68 		.endpoints = &single_endpoint,
69 		.name_prefix = "rt715"
70 	}
71 };
72 
73 static const struct snd_soc_acpi_adr_device rt711_sdca_0_adr[] = {
74 	{
75 		.adr = 0x000030025D071101ull,
76 		.num_endpoints = 1,
77 		.endpoints = &single_endpoint,
78 		.name_prefix = "rt711"
79 	}
80 };
81 
82 static const struct snd_soc_acpi_adr_device rt711_sdca_2_adr[] = {
83 	{
84 		.adr = 0x000230025D071101ull,
85 		.num_endpoints = 1,
86 		.endpoints = &single_endpoint,
87 		.name_prefix = "rt711"
88 	}
89 };
90 
91 static const struct snd_soc_acpi_adr_device rt1316_1_group1_adr[] = {
92 	{
93 		.adr = 0x000131025D131601ull, /* unique ID is set for some reason */
94 		.num_endpoints = 1,
95 		.endpoints = &spk_l_endpoint,
96 		.name_prefix = "rt1316-1"
97 	}
98 };
99 
100 static const struct snd_soc_acpi_adr_device rt1316_2_group1_adr[] = {
101 	{
102 		.adr = 0x000230025D131601ull,
103 		.num_endpoints = 1,
104 		.endpoints = &spk_r_endpoint,
105 		.name_prefix = "rt1316-2"
106 	}
107 };
108 
109 static const struct snd_soc_acpi_adr_device rt1316_3_group1_adr[] = {
110 	{
111 		.adr = 0x000330025D131601ull,
112 		.num_endpoints = 1,
113 		.endpoints = &spk_r_endpoint,
114 		.name_prefix = "rt1316-2"
115 	}
116 };
117 
118 static const struct snd_soc_acpi_adr_device rt1316_0_group2_adr[] = {
119 	{
120 		.adr = 0x000031025D131601ull,
121 		.num_endpoints = 1,
122 		.endpoints = &spk_l_endpoint,
123 		.name_prefix = "rt1316-1"
124 	}
125 };
126 
127 static const struct snd_soc_acpi_adr_device rt1316_1_group2_adr[] = {
128 	{
129 		.adr = 0x000130025D131601ull,
130 		.num_endpoints = 1,
131 		.endpoints = &spk_r_endpoint,
132 		.name_prefix = "rt1316-2"
133 	}
134 };
135 
136 static const struct snd_soc_acpi_adr_device rt1316_1_single_adr[] = {
137 	{
138 		.adr = 0x000130025D131601ull,
139 		.num_endpoints = 1,
140 		.endpoints = &single_endpoint,
141 		.name_prefix = "rt1316-1"
142 	}
143 };
144 
145 static const struct snd_soc_acpi_adr_device rt1316_2_single_adr[] = {
146 	{
147 		.adr = 0x000230025D131601ull,
148 		.num_endpoints = 1,
149 		.endpoints = &single_endpoint,
150 		.name_prefix = "rt1316-1"
151 	}
152 };
153 
154 static const struct snd_soc_acpi_adr_device rt1316_3_single_adr[] = {
155 	{
156 		.adr = 0x000330025D131601ull,
157 		.num_endpoints = 1,
158 		.endpoints = &single_endpoint,
159 		.name_prefix = "rt1316-1"
160 	}
161 };
162 
163 static const struct snd_soc_acpi_adr_device rt714_0_adr[] = {
164 	{
165 		.adr = 0x000030025D071401ull,
166 		.num_endpoints = 1,
167 		.endpoints = &single_endpoint,
168 		.name_prefix = "rt714"
169 	}
170 };
171 
172 static const struct snd_soc_acpi_adr_device rt714_2_adr[] = {
173 	{
174 		.adr = 0x000230025D071401ull,
175 		.num_endpoints = 1,
176 		.endpoints = &single_endpoint,
177 		.name_prefix = "rt714"
178 	}
179 };
180 
181 static const struct snd_soc_acpi_adr_device rt714_3_adr[] = {
182 	{
183 		.adr = 0x000330025D071401ull,
184 		.num_endpoints = 1,
185 		.endpoints = &single_endpoint,
186 		.name_prefix = "rt714"
187 	}
188 };
189 
190 static const struct snd_soc_acpi_link_adr adl_default[] = {
191 	{
192 		.mask = BIT(0),
193 		.num_adr = ARRAY_SIZE(rt711_0_adr),
194 		.adr_d = rt711_0_adr,
195 	},
196 	{
197 		.mask = BIT(1),
198 		.num_adr = ARRAY_SIZE(rt1308_1_group1_adr),
199 		.adr_d = rt1308_1_group1_adr,
200 	},
201 	{
202 		.mask = BIT(2),
203 		.num_adr = ARRAY_SIZE(rt1308_2_group1_adr),
204 		.adr_d = rt1308_2_group1_adr,
205 	},
206 	{
207 		.mask = BIT(3),
208 		.num_adr = ARRAY_SIZE(rt715_3_adr),
209 		.adr_d = rt715_3_adr,
210 	},
211 	{}
212 };
213 
214 static const struct snd_soc_acpi_link_adr adl_sdca_default[] = {
215 	{
216 		.mask = BIT(0),
217 		.num_adr = ARRAY_SIZE(rt711_sdca_0_adr),
218 		.adr_d = rt711_sdca_0_adr,
219 	},
220 	{
221 		.mask = BIT(1),
222 		.num_adr = ARRAY_SIZE(rt1316_1_group1_adr),
223 		.adr_d = rt1316_1_group1_adr,
224 	},
225 	{
226 		.mask = BIT(2),
227 		.num_adr = ARRAY_SIZE(rt1316_2_group1_adr),
228 		.adr_d = rt1316_2_group1_adr,
229 	},
230 	{
231 		.mask = BIT(3),
232 		.num_adr = ARRAY_SIZE(rt714_3_adr),
233 		.adr_d = rt714_3_adr,
234 	},
235 	{}
236 };
237 
238 static const struct snd_soc_acpi_link_adr adl_sdca_3_in_1[] = {
239 	{
240 		.mask = BIT(0),
241 		.num_adr = ARRAY_SIZE(rt711_sdca_0_adr),
242 		.adr_d = rt711_sdca_0_adr,
243 	},
244 	{
245 		.mask = BIT(1),
246 		.num_adr = ARRAY_SIZE(rt1316_1_group1_adr),
247 		.adr_d = rt1316_1_group1_adr,
248 	},
249 	{
250 		.mask = BIT(2),
251 		.num_adr = ARRAY_SIZE(rt714_2_adr),
252 		.adr_d = rt714_2_adr,
253 	},
254 	{
255 		.mask = BIT(3),
256 		.num_adr = ARRAY_SIZE(rt1316_3_group1_adr),
257 		.adr_d = rt1316_3_group1_adr,
258 	},
259 	{}
260 };
261 
262 static const struct snd_soc_acpi_link_adr adl_sdw_rt711_link2_rt1316_link01_rt714_link3[] = {
263 	{
264 		.mask = BIT(2),
265 		.num_adr = ARRAY_SIZE(rt711_sdca_2_adr),
266 		.adr_d = rt711_sdca_2_adr,
267 	},
268 	{
269 		.mask = BIT(0),
270 		.num_adr = ARRAY_SIZE(rt1316_0_group2_adr),
271 		.adr_d = rt1316_0_group2_adr,
272 	},
273 	{
274 		.mask = BIT(1),
275 		.num_adr = ARRAY_SIZE(rt1316_1_group2_adr),
276 		.adr_d = rt1316_1_group2_adr,
277 	},
278 	{
279 		.mask = BIT(3),
280 		.num_adr = ARRAY_SIZE(rt714_3_adr),
281 		.adr_d = rt714_3_adr,
282 	},
283 	{}
284 };
285 
286 static const struct snd_soc_acpi_link_adr adl_sdw_rt711_link2_rt1316_link01[] = {
287 	{
288 		.mask = BIT(2),
289 		.num_adr = ARRAY_SIZE(rt711_sdca_2_adr),
290 		.adr_d = rt711_sdca_2_adr,
291 	},
292 	{
293 		.mask = BIT(0),
294 		.num_adr = ARRAY_SIZE(rt1316_0_group2_adr),
295 		.adr_d = rt1316_0_group2_adr,
296 	},
297 	{
298 		.mask = BIT(1),
299 		.num_adr = ARRAY_SIZE(rt1316_1_group2_adr),
300 		.adr_d = rt1316_1_group2_adr,
301 	},
302 	{}
303 };
304 
305 static const struct snd_soc_acpi_link_adr adl_sdw_rt1316_link12_rt714_link0[] = {
306 	{
307 		.mask = BIT(1),
308 		.num_adr = ARRAY_SIZE(rt1316_1_group1_adr),
309 		.adr_d = rt1316_1_group1_adr,
310 	},
311 	{
312 		.mask = BIT(2),
313 		.num_adr = ARRAY_SIZE(rt1316_2_group1_adr),
314 		.adr_d = rt1316_2_group1_adr,
315 	},
316 	{
317 		.mask = BIT(0),
318 		.num_adr = ARRAY_SIZE(rt714_0_adr),
319 		.adr_d = rt714_0_adr,
320 	},
321 	{}
322 };
323 
324 static const struct snd_soc_acpi_link_adr adl_sdw_rt1316_link1_rt714_link0[] = {
325 	{
326 		.mask = BIT(1),
327 		.num_adr = ARRAY_SIZE(rt1316_1_single_adr),
328 		.adr_d = rt1316_1_single_adr,
329 	},
330 	{
331 		.mask = BIT(0),
332 		.num_adr = ARRAY_SIZE(rt714_0_adr),
333 		.adr_d = rt714_0_adr,
334 	},
335 	{}
336 };
337 
338 static const struct snd_soc_acpi_link_adr adl_sdw_rt1316_link2_rt714_link3[] = {
339 	{
340 		.mask = BIT(2),
341 		.num_adr = ARRAY_SIZE(rt1316_2_single_adr),
342 		.adr_d = rt1316_2_single_adr,
343 	},
344 	{
345 		.mask = BIT(3),
346 		.num_adr = ARRAY_SIZE(rt714_3_adr),
347 		.adr_d = rt714_3_adr,
348 	},
349 	{}
350 };
351 
352 static const struct snd_soc_acpi_link_adr adl_sdw_rt1316_link2_rt714_link0[] = {
353 	{
354 		.mask = BIT(2),
355 		.num_adr = ARRAY_SIZE(rt1316_2_single_adr),
356 		.adr_d = rt1316_2_single_adr,
357 	},
358 	{
359 		.mask = BIT(0),
360 		.num_adr = ARRAY_SIZE(rt714_0_adr),
361 		.adr_d = rt714_0_adr,
362 	},
363 	{}
364 };
365 
366 static const struct snd_soc_acpi_link_adr adl_sdw_rt711_link0_rt1316_link3[] = {
367 	{
368 		.mask = BIT(0),
369 		.num_adr = ARRAY_SIZE(rt711_sdca_0_adr),
370 		.adr_d = rt711_sdca_0_adr,
371 	},
372 	{
373 		.mask = BIT(3),
374 		.num_adr = ARRAY_SIZE(rt1316_3_single_adr),
375 		.adr_d = rt1316_3_single_adr,
376 	},
377 	{}
378 };
379 
380 static const struct snd_soc_acpi_link_adr adl_sdw_rt711_link0_rt1316_link2[] = {
381 	{
382 		.mask = BIT(0),
383 		.num_adr = ARRAY_SIZE(rt711_sdca_0_adr),
384 		.adr_d = rt711_sdca_0_adr,
385 	},
386 	{
387 		.mask = BIT(2),
388 		.num_adr = ARRAY_SIZE(rt1316_2_single_adr),
389 		.adr_d = rt1316_2_single_adr,
390 	},
391 	{}
392 };
393 
394 static const struct snd_soc_acpi_adr_device mx8373_2_adr[] = {
395 	{
396 		.adr = 0x000223019F837300ull,
397 		.num_endpoints = 1,
398 		.endpoints = &spk_l_endpoint,
399 		.name_prefix = "Left"
400 	},
401 	{
402 		.adr = 0x000227019F837300ull,
403 		.num_endpoints = 1,
404 		.endpoints = &spk_r_endpoint,
405 		.name_prefix = "Right"
406 	}
407 };
408 
409 static const struct snd_soc_acpi_adr_device rt5682_0_adr[] = {
410 	{
411 		.adr = 0x000021025D568200ull,
412 		.num_endpoints = 1,
413 		.endpoints = &single_endpoint,
414 		.name_prefix = "rt5682"
415 	}
416 };
417 
418 static const struct snd_soc_acpi_link_adr adl_rvp[] = {
419 	{
420 		.mask = BIT(0),
421 		.num_adr = ARRAY_SIZE(rt711_0_adr),
422 		.adr_d = rt711_0_adr,
423 	},
424 	{}
425 };
426 
427 static const struct snd_soc_acpi_link_adr adlps_rvp[] = {
428 	{
429 		.mask = BIT(0),
430 		.num_adr = ARRAY_SIZE(rt711_sdca_0_adr),
431 		.adr_d = rt711_sdca_0_adr,
432 	},
433 	{}
434 };
435 
436 static const struct snd_soc_acpi_link_adr adl_chromebook_base[] = {
437 	{
438 		.mask = BIT(0),
439 		.num_adr = ARRAY_SIZE(rt5682_0_adr),
440 		.adr_d = rt5682_0_adr,
441 	},
442 	{
443 		.mask = BIT(2),
444 		.num_adr = ARRAY_SIZE(mx8373_2_adr),
445 		.adr_d = mx8373_2_adr,
446 	},
447 	{}
448 };
449 
450 static const struct snd_soc_acpi_codecs adl_max98373_amp = {
451 	.num_codecs = 1,
452 	.codecs = {"MX98373"}
453 };
454 
455 static const struct snd_soc_acpi_codecs adl_max98357a_amp = {
456 	.num_codecs = 1,
457 	.codecs = {"MX98357A"}
458 };
459 
460 static const struct snd_soc_acpi_codecs adl_max98360a_amp = {
461 	.num_codecs = 1,
462 	.codecs = {"MX98360A"}
463 };
464 
465 static const struct snd_soc_acpi_codecs adl_rt5682_rt5682s_hp = {
466 	.num_codecs = 2,
467 	.codecs = {"10EC5682", "RTL5682"},
468 };
469 
470 static const struct snd_soc_acpi_codecs adl_rt1015p_amp = {
471 	.num_codecs = 1,
472 	.codecs = {"RTL1015"}
473 };
474 
475 static const struct snd_soc_acpi_codecs adl_rt1019p_amp = {
476 	.num_codecs = 1,
477 	.codecs = {"RTL1019"}
478 };
479 
480 static const struct snd_soc_acpi_codecs adl_max98390_amp = {
481 	.num_codecs = 1,
482 	.codecs = {"MX98390"}
483 };
484 
485 static const struct snd_soc_acpi_codecs adl_lt6911_hdmi = {
486 	.num_codecs = 1,
487 	.codecs = {"INTC10B0"}
488 };
489 
490 static const struct snd_soc_acpi_codecs adl_nau8318_amp = {
491 	.num_codecs = 1,
492 	.codecs = {"NVTN2012"}
493 };
494 
495 static struct snd_soc_acpi_codecs adl_rt5650_amp = {
496 	.num_codecs = 1,
497 	.codecs = {"10EC5650"}
498 };
499 
500 struct snd_soc_acpi_mach snd_soc_acpi_intel_adl_machines[] = {
501 	{
502 		.comp_ids = &adl_rt5682_rt5682s_hp,
503 		.drv_name = "adl_mx98373_rt5682",
504 		.machine_quirk = snd_soc_acpi_codec_list,
505 		.quirk_data = &adl_max98373_amp,
506 		.sof_tplg_filename = "sof-adl-max98373-rt5682.tplg",
507 	},
508 	{
509 		.comp_ids = &adl_rt5682_rt5682s_hp,
510 		.drv_name = "adl_mx98357_rt5682",
511 		.machine_quirk = snd_soc_acpi_codec_list,
512 		.quirk_data = &adl_max98357a_amp,
513 		.sof_tplg_filename = "sof-adl-max98357a-rt5682.tplg",
514 	},
515 	{
516 		.comp_ids = &adl_rt5682_rt5682s_hp,
517 		.drv_name = "adl_mx98360_rt5682",
518 		.machine_quirk = snd_soc_acpi_codec_list,
519 		.quirk_data = &adl_max98360a_amp,
520 		.sof_tplg_filename = "sof-adl-max98360a-rt5682.tplg",
521 	},
522 	{
523 		.id = "10508825",
524 		.drv_name = "adl_rt1019p_8825",
525 		.machine_quirk = snd_soc_acpi_codec_list,
526 		.quirk_data = &adl_rt1019p_amp,
527 		.sof_tplg_filename = "sof-adl-rt1019-nau8825.tplg",
528 	},
529 	{
530 		.id = "10508825",
531 		.drv_name = "adl_max98373_8825",
532 		.machine_quirk = snd_soc_acpi_codec_list,
533 		.quirk_data = &adl_max98373_amp,
534 		.sof_tplg_filename = "sof-adl-max98373-nau8825.tplg",
535 	},
536 	{
537 		.id = "10508825",
538 		.drv_name = "adl_mx98360a_8825",
539 		.machine_quirk = snd_soc_acpi_codec_list,
540 		.quirk_data = &adl_max98360a_amp,
541 		.sof_tplg_filename = "sof-adl-max98360a-nau8825.tplg",
542 	},
543 	{
544 		.comp_ids = &adl_rt5682_rt5682s_hp,
545 		.drv_name = "adl_rt1019_rt5682",
546 		.machine_quirk = snd_soc_acpi_codec_list,
547 		.quirk_data = &adl_rt1019p_amp,
548 		.sof_tplg_filename = "sof-adl-rt1019-rt5682.tplg",
549 	},
550 	{
551 		.id = "10508825",
552 		.drv_name = "adl_rt1015p_8825",
553 		.machine_quirk = snd_soc_acpi_codec_list,
554 		.quirk_data = &adl_rt1015p_amp,
555 		.sof_tplg_filename = "sof-adl-rt1015-nau8825.tplg",
556 	},
557 	{
558 		.id = "10508825",
559 		.drv_name = "adl_nau8318_8825",
560 		.machine_quirk = snd_soc_acpi_codec_list,
561 		.quirk_data = &adl_nau8318_amp,
562 		.sof_tplg_filename = "sof-adl-nau8318-nau8825.tplg",
563 	},
564 	{
565 		.id = "10508825",
566 		.drv_name = "sof_nau8825",
567 		.sof_tplg_filename = "sof-adl-nau8825.tplg",
568 	},
569 	{
570 		.comp_ids = &adl_rt5682_rt5682s_hp,
571 		.drv_name = "adl_max98390_rt5682",
572 		.machine_quirk = snd_soc_acpi_codec_list,
573 		.quirk_data = &adl_max98390_amp,
574 		.sof_tplg_filename = "sof-adl-max98390-rt5682.tplg",
575 	},
576 	{
577 		.comp_ids = &adl_rt5682_rt5682s_hp,
578 		.drv_name = "adl_rt5682_c1_h02",
579 		.machine_quirk = snd_soc_acpi_codec_list,
580 		.quirk_data = &adl_lt6911_hdmi,
581 		.sof_tplg_filename = "sof-adl-rt5682-ssp1-hdmi-ssp02.tplg",
582 	},
583 	{
584 		.comp_ids = &adl_rt5682_rt5682s_hp,
585 		.drv_name = "adl_rt5682",
586 		.sof_tplg_filename = "sof-adl-rt5682.tplg",
587 	},
588 	{
589 		.id = "10134242",
590 		.drv_name = "adl_mx98360a_cs4242",
591 		.machine_quirk = snd_soc_acpi_codec_list,
592 		.quirk_data = &adl_max98360a_amp,
593 		.sof_tplg_filename = "sof-adl-max98360a-cs42l42.tplg",
594 	},
595 	{
596 		.comp_ids = &essx_83x6,
597 		.drv_name = "adl_es83x6_c1_h02",
598 		.machine_quirk = snd_soc_acpi_codec_list,
599 		.quirk_data = &adl_lt6911_hdmi,
600 		.sof_tplg_filename = "sof-adl-es83x6-ssp1-hdmi-ssp02.tplg",
601 	},
602 	{
603 		.comp_ids = &essx_83x6,
604 		.drv_name = "sof-essx8336",
605 		.sof_tplg_filename = "sof-adl-es8336", /* the tplg suffix is added at run time */
606 		.tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_SSP_NUMBER |
607 					SND_SOC_ACPI_TPLG_INTEL_SSP_MSB |
608 					SND_SOC_ACPI_TPLG_INTEL_DMIC_NUMBER,
609 	},
610 	{
611 		.id = "10EC5650",
612 		.drv_name = "adl_rt5650",
613 		.machine_quirk = snd_soc_acpi_codec_list,
614 		.quirk_data = &adl_rt5650_amp,
615 		.sof_tplg_filename = "sof-adl-rt5650.tplg",
616 	},
617 	{
618 		.id = "DLGS7219",
619 		.drv_name = "adl_mx98360_da7219",
620 		.machine_quirk = snd_soc_acpi_codec_list,
621 		.quirk_data = &adl_max98360a_amp,
622 		.sof_tplg_filename = "sof-adl-max98360a-da7219.tplg",
623 	},
624 	/* place amp-only boards in the end of table */
625 	{
626 		.id = "CSC3541",
627 		.drv_name = "adl_cs35l41",
628 		.sof_tplg_filename = "sof-adl-cs35l41.tplg",
629 	},
630 	{
631 		.id = "INTC10B0",
632 		.drv_name = "adl_lt6911_hdmi_ssp",
633 		.sof_tplg_filename = "sof-adl-nocodec-hdmi-ssp02.tplg"
634 	},
635 	{},
636 };
637 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_adl_machines);
638 
639 /* this table is used when there is no I2S codec present */
640 struct snd_soc_acpi_mach snd_soc_acpi_intel_adl_sdw_machines[] = {
641 	{
642 		.link_mask = 0xF, /* 4 active links required */
643 		.links = adl_default,
644 		.drv_name = "sof_sdw",
645 		.sof_tplg_filename = "sof-adl-rt711-l0-rt1308-l12-rt715-l3.tplg",
646 	},
647 	{
648 		.link_mask = 0xF, /* 4 active links required */
649 		.links = adl_sdca_default,
650 		.drv_name = "sof_sdw",
651 		.sof_tplg_filename = "sof-adl-rt711-l0-rt1316-l12-rt714-l3.tplg",
652 	},
653 	{
654 		.link_mask = 0xF, /* 4 active links required */
655 		.links = adl_sdca_3_in_1,
656 		.drv_name = "sof_sdw",
657 		.sof_tplg_filename = "sof-adl-rt711-l0-rt1316-l13-rt714-l2.tplg",
658 	},
659 	{
660 		.link_mask = 0xF, /* 4 active links required */
661 		.links = adl_sdw_rt711_link2_rt1316_link01_rt714_link3,
662 		.drv_name = "sof_sdw",
663 		.sof_tplg_filename = "sof-adl-rt711-l2-rt1316-l01-rt714-l3.tplg",
664 	},
665 	{
666 		.link_mask = 0x7, /* rt1316 on link0 and link1 & rt711 on link2*/
667 		.links = adl_sdw_rt711_link2_rt1316_link01,
668 		.drv_name = "sof_sdw",
669 		.sof_tplg_filename = "sof-adl-rt711-l2-rt1316-l01.tplg",
670 	},
671 	{
672 		.link_mask = 0xC, /* rt1316 on link2 & rt714 on link3 */
673 		.links = adl_sdw_rt1316_link2_rt714_link3,
674 		.drv_name = "sof_sdw",
675 		.sof_tplg_filename = "sof-adl-rt1316-l2-mono-rt714-l3.tplg",
676 	},
677 	{
678 		.link_mask = 0x7, /* rt714 on link0 & two rt1316s on link1 and link2 */
679 		.links = adl_sdw_rt1316_link12_rt714_link0,
680 		.drv_name = "sof_sdw",
681 		.sof_tplg_filename = "sof-adl-rt1316-l12-rt714-l0.tplg",
682 	},
683 	{
684 		.link_mask = 0x3, /* rt1316 on link1 & rt714 on link0 */
685 		.links = adl_sdw_rt1316_link1_rt714_link0,
686 		.drv_name = "sof_sdw",
687 		.sof_tplg_filename = "sof-adl-rt1316-l1-mono-rt714-l0.tplg",
688 	},
689 	{
690 		.link_mask = 0x5, /* 2 active links required */
691 		.links = adl_sdw_rt1316_link2_rt714_link0,
692 		.drv_name = "sof_sdw",
693 		.sof_tplg_filename = "sof-adl-rt1316-l2-mono-rt714-l0.tplg",
694 	},
695 	{
696 		.link_mask = 0x9, /* 2 active links required */
697 		.links = adl_sdw_rt711_link0_rt1316_link3,
698 		.drv_name = "sof_sdw",
699 		.sof_tplg_filename = "sof-adl-rt711-l0-rt1316-l3.tplg",
700 	},
701 	{
702 		.link_mask = 0x5, /* 2 active links required */
703 		.links = adl_sdw_rt711_link0_rt1316_link2,
704 		.drv_name = "sof_sdw",
705 		.sof_tplg_filename = "sof-adl-rt711-l0-rt1316-l2.tplg",
706 	},
707 	{
708 		.link_mask = 0x1, /* link0 required */
709 		.links = adl_rvp,
710 		.drv_name = "sof_sdw",
711 		.sof_tplg_filename = "sof-adl-rt711.tplg",
712 	},
713 	{
714 		.link_mask = 0x1, /* link0 required */
715 		.links = adlps_rvp,
716 		.drv_name = "sof_sdw",
717 		.sof_tplg_filename = "sof-adl-rt711.tplg",
718 	},
719 	{
720 		.link_mask = 0x5, /* rt5682 on link0 & 2xmax98373 on link 2 */
721 		.links = adl_chromebook_base,
722 		.drv_name = "sof_sdw",
723 		.sof_tplg_filename = "sof-adl-sdw-max98373-rt5682.tplg",
724 	},
725 	{},
726 };
727 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_adl_sdw_machines);
728