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