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 struct snd_soc_acpi_mach snd_soc_acpi_intel_adl_machines[] = {
496 	{
497 		.comp_ids = &adl_rt5682_rt5682s_hp,
498 		.drv_name = "adl_mx98373_rt5682",
499 		.machine_quirk = snd_soc_acpi_codec_list,
500 		.quirk_data = &adl_max98373_amp,
501 		.sof_tplg_filename = "sof-adl-max98373-rt5682.tplg",
502 	},
503 	{
504 		.comp_ids = &adl_rt5682_rt5682s_hp,
505 		.drv_name = "adl_mx98357_rt5682",
506 		.machine_quirk = snd_soc_acpi_codec_list,
507 		.quirk_data = &adl_max98357a_amp,
508 		.sof_tplg_filename = "sof-adl-max98357a-rt5682.tplg",
509 	},
510 	{
511 		.comp_ids = &adl_rt5682_rt5682s_hp,
512 		.drv_name = "adl_mx98360_rt5682",
513 		.machine_quirk = snd_soc_acpi_codec_list,
514 		.quirk_data = &adl_max98360a_amp,
515 		.sof_tplg_filename = "sof-adl-max98360a-rt5682.tplg",
516 	},
517 	{
518 		.id = "10508825",
519 		.drv_name = "adl_rt1019p_8825",
520 		.machine_quirk = snd_soc_acpi_codec_list,
521 		.quirk_data = &adl_rt1019p_amp,
522 		.sof_tplg_filename = "sof-adl-rt1019-nau8825.tplg",
523 	},
524 	{
525 		.id = "10508825",
526 		.drv_name = "adl_max98373_8825",
527 		.machine_quirk = snd_soc_acpi_codec_list,
528 		.quirk_data = &adl_max98373_amp,
529 		.sof_tplg_filename = "sof-adl-max98373-nau8825.tplg",
530 	},
531 	{
532 		.id = "10508825",
533 		.drv_name = "adl_mx98360a_8825",
534 		.machine_quirk = snd_soc_acpi_codec_list,
535 		.quirk_data = &adl_max98360a_amp,
536 		.sof_tplg_filename = "sof-adl-max98360a-nau8825.tplg",
537 	},
538 	{
539 		.comp_ids = &adl_rt5682_rt5682s_hp,
540 		.drv_name = "adl_rt1019_rt5682",
541 		.machine_quirk = snd_soc_acpi_codec_list,
542 		.quirk_data = &adl_rt1019p_amp,
543 		.sof_tplg_filename = "sof-adl-rt1019-rt5682.tplg",
544 	},
545 	{
546 		.id = "10508825",
547 		.drv_name = "adl_rt1015p_8825",
548 		.machine_quirk = snd_soc_acpi_codec_list,
549 		.quirk_data = &adl_rt1015p_amp,
550 		.sof_tplg_filename = "sof-adl-rt1015-nau8825.tplg",
551 	},
552 	{
553 		.id = "10508825",
554 		.drv_name = "adl_nau8318_8825",
555 		.machine_quirk = snd_soc_acpi_codec_list,
556 		.quirk_data = &adl_nau8318_amp,
557 		.sof_tplg_filename = "sof-adl-nau8318-nau8825.tplg",
558 	},
559 	{
560 		.id = "10508825",
561 		.drv_name = "sof_nau8825",
562 		.sof_tplg_filename = "sof-adl-nau8825.tplg",
563 	},
564 	{
565 		.comp_ids = &adl_rt5682_rt5682s_hp,
566 		.drv_name = "adl_max98390_rt5682",
567 		.machine_quirk = snd_soc_acpi_codec_list,
568 		.quirk_data = &adl_max98390_amp,
569 		.sof_tplg_filename = "sof-adl-max98390-rt5682.tplg",
570 	},
571 	{
572 		.comp_ids = &adl_rt5682_rt5682s_hp,
573 		.drv_name = "adl_rt5682_c1_h02",
574 		.machine_quirk = snd_soc_acpi_codec_list,
575 		.quirk_data = &adl_lt6911_hdmi,
576 		.sof_tplg_filename = "sof-adl-rt5682-ssp1-hdmi-ssp02.tplg",
577 	},
578 	{
579 		.comp_ids = &adl_rt5682_rt5682s_hp,
580 		.drv_name = "adl_rt5682",
581 		.sof_tplg_filename = "sof-adl-rt5682.tplg",
582 	},
583 	{
584 		.id = "10134242",
585 		.drv_name = "adl_mx98360a_cs4242",
586 		.machine_quirk = snd_soc_acpi_codec_list,
587 		.quirk_data = &adl_max98360a_amp,
588 		.sof_tplg_filename = "sof-adl-max98360a-cs42l42.tplg",
589 	},
590 	{
591 		.comp_ids = &essx_83x6,
592 		.drv_name = "adl_es83x6_c1_h02",
593 		.machine_quirk = snd_soc_acpi_codec_list,
594 		.quirk_data = &adl_lt6911_hdmi,
595 		.sof_tplg_filename = "sof-adl-es83x6-ssp1-hdmi-ssp02.tplg",
596 	},
597 	{
598 		.comp_ids = &essx_83x6,
599 		.drv_name = "sof-essx8336",
600 		.sof_tplg_filename = "sof-adl-es8336", /* the tplg suffix is added at run time */
601 		.tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_SSP_NUMBER |
602 					SND_SOC_ACPI_TPLG_INTEL_SSP_MSB |
603 					SND_SOC_ACPI_TPLG_INTEL_DMIC_NUMBER,
604 	},
605 	/* place amp-only boards in the end of table */
606 	{
607 		.id = "CSC3541",
608 		.drv_name = "adl_cs35l41",
609 		.sof_tplg_filename = "sof-adl-cs35l41.tplg",
610 	},
611 	{
612 		.id = "INTC10B0",
613 		.drv_name = "adl_lt6911_hdmi_ssp",
614 		.sof_tplg_filename = "sof-adl-nocodec-hdmi-ssp02.tplg"
615 	},
616 	{},
617 };
618 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_adl_machines);
619 
620 /* this table is used when there is no I2S codec present */
621 struct snd_soc_acpi_mach snd_soc_acpi_intel_adl_sdw_machines[] = {
622 	{
623 		.link_mask = 0xF, /* 4 active links required */
624 		.links = adl_default,
625 		.drv_name = "sof_sdw",
626 		.sof_tplg_filename = "sof-adl-rt711-l0-rt1308-l12-rt715-l3.tplg",
627 	},
628 	{
629 		.link_mask = 0xF, /* 4 active links required */
630 		.links = adl_sdca_default,
631 		.drv_name = "sof_sdw",
632 		.sof_tplg_filename = "sof-adl-rt711-l0-rt1316-l12-rt714-l3.tplg",
633 	},
634 	{
635 		.link_mask = 0xF, /* 4 active links required */
636 		.links = adl_sdca_3_in_1,
637 		.drv_name = "sof_sdw",
638 		.sof_tplg_filename = "sof-adl-rt711-l0-rt1316-l13-rt714-l2.tplg",
639 	},
640 	{
641 		.link_mask = 0xF, /* 4 active links required */
642 		.links = adl_sdw_rt711_link2_rt1316_link01_rt714_link3,
643 		.drv_name = "sof_sdw",
644 		.sof_tplg_filename = "sof-adl-rt711-l2-rt1316-l01-rt714-l3.tplg",
645 	},
646 	{
647 		.link_mask = 0x7, /* rt1316 on link0 and link1 & rt711 on link2*/
648 		.links = adl_sdw_rt711_link2_rt1316_link01,
649 		.drv_name = "sof_sdw",
650 		.sof_tplg_filename = "sof-adl-rt711-l2-rt1316-l01.tplg",
651 	},
652 	{
653 		.link_mask = 0xC, /* rt1316 on link2 & rt714 on link3 */
654 		.links = adl_sdw_rt1316_link2_rt714_link3,
655 		.drv_name = "sof_sdw",
656 		.sof_tplg_filename = "sof-adl-rt1316-l2-mono-rt714-l3.tplg",
657 	},
658 	{
659 		.link_mask = 0x7, /* rt714 on link0 & two rt1316s on link1 and link2 */
660 		.links = adl_sdw_rt1316_link12_rt714_link0,
661 		.drv_name = "sof_sdw",
662 		.sof_tplg_filename = "sof-adl-rt1316-l12-rt714-l0.tplg",
663 	},
664 	{
665 		.link_mask = 0x3, /* rt1316 on link1 & rt714 on link0 */
666 		.links = adl_sdw_rt1316_link1_rt714_link0,
667 		.drv_name = "sof_sdw",
668 		.sof_tplg_filename = "sof-adl-rt1316-l1-mono-rt714-l0.tplg",
669 	},
670 	{
671 		.link_mask = 0x5, /* 2 active links required */
672 		.links = adl_sdw_rt1316_link2_rt714_link0,
673 		.drv_name = "sof_sdw",
674 		.sof_tplg_filename = "sof-adl-rt1316-l2-mono-rt714-l0.tplg",
675 	},
676 	{
677 		.link_mask = 0x9, /* 2 active links required */
678 		.links = adl_sdw_rt711_link0_rt1316_link3,
679 		.drv_name = "sof_sdw",
680 		.sof_tplg_filename = "sof-adl-rt711-l0-rt1316-l3.tplg",
681 	},
682 	{
683 		.link_mask = 0x5, /* 2 active links required */
684 		.links = adl_sdw_rt711_link0_rt1316_link2,
685 		.drv_name = "sof_sdw",
686 		.sof_tplg_filename = "sof-adl-rt711-l0-rt1316-l2.tplg",
687 	},
688 	{
689 		.link_mask = 0x1, /* link0 required */
690 		.links = adl_rvp,
691 		.drv_name = "sof_sdw",
692 		.sof_tplg_filename = "sof-adl-rt711.tplg",
693 	},
694 	{
695 		.link_mask = 0x1, /* link0 required */
696 		.links = adlps_rvp,
697 		.drv_name = "sof_sdw",
698 		.sof_tplg_filename = "sof-adl-rt711.tplg",
699 	},
700 	{
701 		.link_mask = 0x5, /* rt5682 on link0 & 2xmax98373 on link 2 */
702 		.links = adl_chromebook_base,
703 		.drv_name = "sof_sdw",
704 		.sof_tplg_filename = "sof-adl-sdw-max98373-rt5682.tplg",
705 	},
706 	{},
707 };
708 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_adl_sdw_machines);
709