xref: /linux/sound/soc/intel/common/soc-acpi-intel-adl-match.c (revision 3a39d672e7f48b8d6b91a09afa4b55352773b4b5)
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_1_single_adr[] = {
218 	{
219 		.adr = 0x000130025D131601ull,
220 		.num_endpoints = 1,
221 		.endpoints = &single_endpoint,
222 		.name_prefix = "rt1316-1"
223 	}
224 };
225 
226 static const struct snd_soc_acpi_adr_device rt1316_2_single_adr[] = {
227 	{
228 		.adr = 0x000230025D131601ull,
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_3_single_adr[] = {
236 	{
237 		.adr = 0x000330025D131601ull,
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 rt714_0_adr[] = {
245 	{
246 		.adr = 0x000030025D071401ull,
247 		.num_endpoints = 1,
248 		.endpoints = &single_endpoint,
249 		.name_prefix = "rt714"
250 	}
251 };
252 
253 static const struct snd_soc_acpi_adr_device rt714_2_adr[] = {
254 	{
255 		.adr = 0x000230025D071401ull,
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_3_adr[] = {
263 	{
264 		.adr = 0x000330025D071401ull,
265 		.num_endpoints = 1,
266 		.endpoints = &single_endpoint,
267 		.name_prefix = "rt714"
268 	}
269 };
270 
271 static const struct snd_soc_acpi_link_adr adl_default[] = {
272 	{
273 		.mask = BIT(0),
274 		.num_adr = ARRAY_SIZE(rt711_0_adr),
275 		.adr_d = rt711_0_adr,
276 	},
277 	{
278 		.mask = BIT(1),
279 		.num_adr = ARRAY_SIZE(rt1308_1_group1_adr),
280 		.adr_d = rt1308_1_group1_adr,
281 	},
282 	{
283 		.mask = BIT(2),
284 		.num_adr = ARRAY_SIZE(rt1308_2_group1_adr),
285 		.adr_d = rt1308_2_group1_adr,
286 	},
287 	{
288 		.mask = BIT(3),
289 		.num_adr = ARRAY_SIZE(rt715_3_adr),
290 		.adr_d = rt715_3_adr,
291 	},
292 	{}
293 };
294 
295 static const struct snd_soc_acpi_link_adr adl_sdca_default[] = {
296 	{
297 		.mask = BIT(0),
298 		.num_adr = ARRAY_SIZE(rt711_sdca_0_adr),
299 		.adr_d = rt711_sdca_0_adr,
300 	},
301 	{
302 		.mask = BIT(1),
303 		.num_adr = ARRAY_SIZE(rt1316_1_group1_adr),
304 		.adr_d = rt1316_1_group1_adr,
305 	},
306 	{
307 		.mask = BIT(2),
308 		.num_adr = ARRAY_SIZE(rt1316_2_group1_adr),
309 		.adr_d = rt1316_2_group1_adr,
310 	},
311 	{
312 		.mask = BIT(3),
313 		.num_adr = ARRAY_SIZE(rt714_3_adr),
314 		.adr_d = rt714_3_adr,
315 	},
316 	{}
317 };
318 
319 static const struct snd_soc_acpi_link_adr adl_sdca_3_in_1[] = {
320 	{
321 		.mask = BIT(0),
322 		.num_adr = ARRAY_SIZE(rt711_sdca_0_adr),
323 		.adr_d = rt711_sdca_0_adr,
324 	},
325 	{
326 		.mask = BIT(1),
327 		.num_adr = ARRAY_SIZE(rt1316_1_group1_adr),
328 		.adr_d = rt1316_1_group1_adr,
329 	},
330 	{
331 		.mask = BIT(2),
332 		.num_adr = ARRAY_SIZE(rt714_2_adr),
333 		.adr_d = rt714_2_adr,
334 	},
335 	{
336 		.mask = BIT(3),
337 		.num_adr = ARRAY_SIZE(rt1316_3_group1_adr),
338 		.adr_d = rt1316_3_group1_adr,
339 	},
340 	{}
341 };
342 
343 static const struct snd_soc_acpi_link_adr adl_sdw_rt711_link2_rt1316_link01_rt714_link3[] = {
344 	{
345 		.mask = BIT(2),
346 		.num_adr = ARRAY_SIZE(rt711_sdca_2_adr),
347 		.adr_d = rt711_sdca_2_adr,
348 	},
349 	{
350 		.mask = BIT(0),
351 		.num_adr = ARRAY_SIZE(rt1316_0_group2_adr),
352 		.adr_d = rt1316_0_group2_adr,
353 	},
354 	{
355 		.mask = BIT(1),
356 		.num_adr = ARRAY_SIZE(rt1316_1_group2_adr),
357 		.adr_d = rt1316_1_group2_adr,
358 	},
359 	{
360 		.mask = BIT(3),
361 		.num_adr = ARRAY_SIZE(rt714_3_adr),
362 		.adr_d = rt714_3_adr,
363 	},
364 	{}
365 };
366 
367 static const struct snd_soc_acpi_link_adr adl_sdw_rt711_link2_rt1316_link01[] = {
368 	{
369 		.mask = BIT(2),
370 		.num_adr = ARRAY_SIZE(rt711_sdca_2_adr),
371 		.adr_d = rt711_sdca_2_adr,
372 	},
373 	{
374 		.mask = BIT(0),
375 		.num_adr = ARRAY_SIZE(rt1316_0_group2_adr),
376 		.adr_d = rt1316_0_group2_adr,
377 	},
378 	{
379 		.mask = BIT(1),
380 		.num_adr = ARRAY_SIZE(rt1316_1_group2_adr),
381 		.adr_d = rt1316_1_group2_adr,
382 	},
383 	{}
384 };
385 
386 static const struct snd_soc_acpi_link_adr adl_sdw_rt1316_link12_rt714_link0[] = {
387 	{
388 		.mask = BIT(1),
389 		.num_adr = ARRAY_SIZE(rt1316_1_group1_adr),
390 		.adr_d = rt1316_1_group1_adr,
391 	},
392 	{
393 		.mask = BIT(2),
394 		.num_adr = ARRAY_SIZE(rt1316_2_group1_adr),
395 		.adr_d = rt1316_2_group1_adr,
396 	},
397 	{
398 		.mask = BIT(0),
399 		.num_adr = ARRAY_SIZE(rt714_0_adr),
400 		.adr_d = rt714_0_adr,
401 	},
402 	{}
403 };
404 
405 static const struct snd_soc_acpi_link_adr adl_sdw_rt1316_link1_rt714_link0[] = {
406 	{
407 		.mask = BIT(1),
408 		.num_adr = ARRAY_SIZE(rt1316_1_single_adr),
409 		.adr_d = rt1316_1_single_adr,
410 	},
411 	{
412 		.mask = BIT(0),
413 		.num_adr = ARRAY_SIZE(rt714_0_adr),
414 		.adr_d = rt714_0_adr,
415 	},
416 	{}
417 };
418 
419 static const struct snd_soc_acpi_link_adr adl_sdw_rt1316_link2_rt714_link3[] = {
420 	{
421 		.mask = BIT(2),
422 		.num_adr = ARRAY_SIZE(rt1316_2_single_adr),
423 		.adr_d = rt1316_2_single_adr,
424 	},
425 	{
426 		.mask = BIT(3),
427 		.num_adr = ARRAY_SIZE(rt714_3_adr),
428 		.adr_d = rt714_3_adr,
429 	},
430 	{}
431 };
432 
433 static const struct snd_soc_acpi_link_adr adl_sdw_rt1316_link2_rt714_link0[] = {
434 	{
435 		.mask = BIT(2),
436 		.num_adr = ARRAY_SIZE(rt1316_2_single_adr),
437 		.adr_d = rt1316_2_single_adr,
438 	},
439 	{
440 		.mask = BIT(0),
441 		.num_adr = ARRAY_SIZE(rt714_0_adr),
442 		.adr_d = rt714_0_adr,
443 	},
444 	{}
445 };
446 
447 static const struct snd_soc_acpi_link_adr adl_sdw_rt711_link0_rt1316_link3[] = {
448 	{
449 		.mask = BIT(0),
450 		.num_adr = ARRAY_SIZE(rt711_sdca_0_adr),
451 		.adr_d = rt711_sdca_0_adr,
452 	},
453 	{
454 		.mask = BIT(3),
455 		.num_adr = ARRAY_SIZE(rt1316_3_single_adr),
456 		.adr_d = rt1316_3_single_adr,
457 	},
458 	{}
459 };
460 
461 static const struct snd_soc_acpi_link_adr adl_sdw_rt711_link0_rt1316_link2[] = {
462 	{
463 		.mask = BIT(0),
464 		.num_adr = ARRAY_SIZE(rt711_sdca_0_adr),
465 		.adr_d = rt711_sdca_0_adr,
466 	},
467 	{
468 		.mask = BIT(2),
469 		.num_adr = ARRAY_SIZE(rt1316_2_single_adr),
470 		.adr_d = rt1316_2_single_adr,
471 	},
472 	{}
473 };
474 
475 static const struct snd_soc_acpi_adr_device mx8373_2_adr[] = {
476 	{
477 		.adr = 0x000223019F837300ull,
478 		.num_endpoints = 1,
479 		.endpoints = &spk_l_endpoint,
480 		.name_prefix = "Left"
481 	},
482 	{
483 		.adr = 0x000227019F837300ull,
484 		.num_endpoints = 1,
485 		.endpoints = &spk_r_endpoint,
486 		.name_prefix = "Right"
487 	}
488 };
489 
490 static const struct snd_soc_acpi_adr_device rt5682_0_adr[] = {
491 	{
492 		.adr = 0x000021025D568200ull,
493 		.num_endpoints = 1,
494 		.endpoints = &single_endpoint,
495 		.name_prefix = "rt5682"
496 	}
497 };
498 
499 static const struct snd_soc_acpi_link_adr adl_cs42l43_l0_cs35l56_l23[] = {
500 	{
501 		.mask = BIT(0),
502 		.num_adr = ARRAY_SIZE(cs42l43_0_adr),
503 		.adr_d = cs42l43_0_adr,
504 	},
505 	{
506 		.mask = BIT(2),
507 		.num_adr = ARRAY_SIZE(cs35l56_2_r_adr),
508 		.adr_d = cs35l56_2_r_adr,
509 	},
510 	{
511 		.mask = BIT(3),
512 		.num_adr = ARRAY_SIZE(cs35l56_3_l_adr),
513 		.adr_d = cs35l56_3_l_adr,
514 	},
515 	{}
516 };
517 
518 static const struct snd_soc_acpi_link_adr adl_rvp[] = {
519 	{
520 		.mask = BIT(0),
521 		.num_adr = ARRAY_SIZE(rt711_0_adr),
522 		.adr_d = rt711_0_adr,
523 	},
524 	{}
525 };
526 
527 static const struct snd_soc_acpi_link_adr adlps_rvp[] = {
528 	{
529 		.mask = BIT(0),
530 		.num_adr = ARRAY_SIZE(rt711_sdca_0_adr),
531 		.adr_d = rt711_sdca_0_adr,
532 	},
533 	{}
534 };
535 
536 static const struct snd_soc_acpi_link_adr adl_chromebook_base[] = {
537 	{
538 		.mask = BIT(0),
539 		.num_adr = ARRAY_SIZE(rt5682_0_adr),
540 		.adr_d = rt5682_0_adr,
541 	},
542 	{
543 		.mask = BIT(2),
544 		.num_adr = ARRAY_SIZE(mx8373_2_adr),
545 		.adr_d = mx8373_2_adr,
546 	},
547 	{}
548 };
549 
550 static const struct snd_soc_acpi_codecs adl_max98357a_amp = {
551 	.num_codecs = 1,
552 	.codecs = {"MX98357A"}
553 };
554 
555 static const struct snd_soc_acpi_codecs adl_rt5682_rt5682s_hp = {
556 	.num_codecs = 2,
557 	.codecs = {RT5682_ACPI_HID, RT5682S_ACPI_HID},
558 };
559 
560 static const struct snd_soc_acpi_codecs adl_rt1019p_amp = {
561 	.num_codecs = 1,
562 	.codecs = {"RTL1019"}
563 };
564 
565 static const struct snd_soc_acpi_codecs adl_lt6911_hdmi = {
566 	.num_codecs = 1,
567 	.codecs = {"INTC10B0"}
568 };
569 
570 struct snd_soc_acpi_mach snd_soc_acpi_intel_adl_machines[] = {
571 	{
572 		.comp_ids = &adl_rt5682_rt5682s_hp,
573 		.drv_name = "adl_mx98357_rt5682",
574 		.machine_quirk = snd_soc_acpi_codec_list,
575 		.quirk_data = &adl_max98357a_amp,
576 		.sof_tplg_filename = "sof-adl-max98357a-rt5682.tplg",
577 	},
578 	{
579 		.id = "10508825",
580 		.drv_name = "adl_rt1019p_8825",
581 		.machine_quirk = snd_soc_acpi_codec_list,
582 		.quirk_data = &adl_rt1019p_amp,
583 		.sof_tplg_filename = "sof-adl-rt1019-nau8825.tplg",
584 	},
585 	{
586 		.comp_ids = &adl_rt5682_rt5682s_hp,
587 		.drv_name = "adl_rt5682_c1_h02",
588 		.machine_quirk = snd_soc_acpi_codec_list,
589 		.quirk_data = &adl_lt6911_hdmi,
590 		.sof_tplg_filename = "sof-adl-rt5682-ssp1-hdmi-ssp02.tplg",
591 	},
592 	{
593 		.comp_ids = &essx_83x6,
594 		.drv_name = "adl_es83x6_c1_h02",
595 		.machine_quirk = snd_soc_acpi_codec_list,
596 		.quirk_data = &adl_lt6911_hdmi,
597 		.sof_tplg_filename = "sof-adl-es83x6-ssp1-hdmi-ssp02.tplg",
598 	},
599 	{
600 		.comp_ids = &essx_83x6,
601 		.drv_name = "sof-essx8336",
602 		.sof_tplg_filename = "sof-adl-es8336", /* the tplg suffix is added at run time */
603 		.tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_SSP_NUMBER |
604 					SND_SOC_ACPI_TPLG_INTEL_SSP_MSB |
605 					SND_SOC_ACPI_TPLG_INTEL_DMIC_NUMBER,
606 	},
607 	/* place boards for each headphone codec: sof driver will complete the
608 	 * tplg name and machine driver will detect the amp type
609 	 */
610 	{
611 		.id = CS42L42_ACPI_HID,
612 		.drv_name = "adl_cs42l42_def",
613 		.sof_tplg_filename = "sof-adl", /* the tplg suffix is added at run time */
614 		.tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_AMP_NAME |
615 					SND_SOC_ACPI_TPLG_INTEL_CODEC_NAME,
616 	},
617 	{
618 		.id = DA7219_ACPI_HID,
619 		.drv_name = "adl_da7219_def",
620 		.sof_tplg_filename = "sof-adl", /* the tplg suffix is added at run time */
621 		.tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_AMP_NAME |
622 					SND_SOC_ACPI_TPLG_INTEL_CODEC_NAME,
623 	},
624 	{
625 		.id = NAU8825_ACPI_HID,
626 		.drv_name = "adl_nau8825_def",
627 		.sof_tplg_filename = "sof-adl", /* the tplg suffix is added at run time */
628 		.tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_AMP_NAME |
629 					SND_SOC_ACPI_TPLG_INTEL_CODEC_NAME,
630 	},
631 	{
632 		.id = RT5650_ACPI_HID,
633 		.drv_name = "adl_rt5682_def",
634 		.sof_tplg_filename = "sof-adl", /* the tplg suffix is added at run time */
635 		.tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_AMP_NAME |
636 					SND_SOC_ACPI_TPLG_INTEL_CODEC_NAME,
637 	},
638 	{
639 		.comp_ids = &adl_rt5682_rt5682s_hp,
640 		.drv_name = "adl_rt5682_def",
641 		.sof_tplg_filename = "sof-adl", /* the tplg suffix is added at run time */
642 		.tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_AMP_NAME |
643 					SND_SOC_ACPI_TPLG_INTEL_CODEC_NAME,
644 	},
645 	/* place amp-only boards in the end of table */
646 	{
647 		.id = "CSC3541",
648 		.drv_name = "adl_cs35l41",
649 		.sof_tplg_filename = "sof-adl-cs35l41.tplg",
650 	},
651 	{
652 		.id = "INTC10B0",
653 		.drv_name = "adl_lt6911_hdmi_ssp",
654 		.sof_tplg_filename = "sof-adl-nocodec-hdmi-ssp02.tplg"
655 	},
656 	{},
657 };
658 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_adl_machines);
659 
660 /* this table is used when there is no I2S codec present */
661 struct snd_soc_acpi_mach snd_soc_acpi_intel_adl_sdw_machines[] = {
662 	{
663 		.link_mask = BIT(0) | BIT(2) | BIT(3),
664 		.links = adl_cs42l43_l0_cs35l56_l23,
665 		.drv_name = "sof_sdw",
666 		.sof_tplg_filename = "sof-adl-cs42l43-l0-cs35l56-l23.tplg",
667 	},
668 	{
669 		.link_mask = 0xF, /* 4 active links required */
670 		.links = adl_default,
671 		.drv_name = "sof_sdw",
672 		.sof_tplg_filename = "sof-adl-rt711-l0-rt1308-l12-rt715-l3.tplg",
673 	},
674 	{
675 		.link_mask = 0xF, /* 4 active links required */
676 		.links = adl_sdca_default,
677 		.drv_name = "sof_sdw",
678 		.sof_tplg_filename = "sof-adl-rt711-l0-rt1316-l12-rt714-l3.tplg",
679 	},
680 	{
681 		.link_mask = 0xF, /* 4 active links required */
682 		.links = adl_sdca_3_in_1,
683 		.drv_name = "sof_sdw",
684 		.sof_tplg_filename = "sof-adl-rt711-l0-rt1316-l13-rt714-l2.tplg",
685 	},
686 	{
687 		.link_mask = 0xF, /* 4 active links required */
688 		.links = adl_sdw_rt711_link2_rt1316_link01_rt714_link3,
689 		.drv_name = "sof_sdw",
690 		.sof_tplg_filename = "sof-adl-rt711-l2-rt1316-l01-rt714-l3.tplg",
691 	},
692 	{
693 		.link_mask = 0x7, /* rt1316 on link0 and link1 & rt711 on link2*/
694 		.links = adl_sdw_rt711_link2_rt1316_link01,
695 		.drv_name = "sof_sdw",
696 		.sof_tplg_filename = "sof-adl-rt711-l2-rt1316-l01.tplg",
697 	},
698 	{
699 		.link_mask = 0xC, /* rt1316 on link2 & rt714 on link3 */
700 		.links = adl_sdw_rt1316_link2_rt714_link3,
701 		.drv_name = "sof_sdw",
702 		.sof_tplg_filename = "sof-adl-rt1316-l2-mono-rt714-l3.tplg",
703 	},
704 	{
705 		.link_mask = 0x7, /* rt714 on link0 & two rt1316s on link1 and link2 */
706 		.links = adl_sdw_rt1316_link12_rt714_link0,
707 		.drv_name = "sof_sdw",
708 		.sof_tplg_filename = "sof-adl-rt1316-l12-rt714-l0.tplg",
709 	},
710 	{
711 		.link_mask = 0x3, /* rt1316 on link1 & rt714 on link0 */
712 		.links = adl_sdw_rt1316_link1_rt714_link0,
713 		.drv_name = "sof_sdw",
714 		.sof_tplg_filename = "sof-adl-rt1316-l1-mono-rt714-l0.tplg",
715 	},
716 	{
717 		.link_mask = 0x5, /* 2 active links required */
718 		.links = adl_sdw_rt1316_link2_rt714_link0,
719 		.drv_name = "sof_sdw",
720 		.sof_tplg_filename = "sof-adl-rt1316-l2-mono-rt714-l0.tplg",
721 	},
722 	{
723 		.link_mask = 0x9, /* 2 active links required */
724 		.links = adl_sdw_rt711_link0_rt1316_link3,
725 		.drv_name = "sof_sdw",
726 		.sof_tplg_filename = "sof-adl-rt711-l0-rt1316-l3.tplg",
727 	},
728 	{
729 		.link_mask = 0x5, /* 2 active links required */
730 		.links = adl_sdw_rt711_link0_rt1316_link2,
731 		.drv_name = "sof_sdw",
732 		.sof_tplg_filename = "sof-adl-rt711-l0-rt1316-l2.tplg",
733 	},
734 	{
735 		.link_mask = 0x1, /* link0 required */
736 		.links = adl_rvp,
737 		.drv_name = "sof_sdw",
738 		.sof_tplg_filename = "sof-adl-rt711.tplg",
739 	},
740 	{
741 		.link_mask = 0x1, /* link0 required */
742 		.links = adlps_rvp,
743 		.drv_name = "sof_sdw",
744 		.sof_tplg_filename = "sof-adl-rt711.tplg",
745 	},
746 	{
747 		.link_mask = 0x5, /* rt5682 on link0 & 2xmax98373 on link 2 */
748 		.links = adl_chromebook_base,
749 		.drv_name = "sof_sdw",
750 		.sof_tplg_filename = "sof-adl-sdw-max98373-rt5682.tplg",
751 	},
752 	{},
753 };
754 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_adl_sdw_machines);
755