xref: /linux/sound/soc/intel/common/soc-acpi-intel-ptl-match.c (revision 329bdcbbd229731dc5a8b6753aa2409f00869331)
1 // SPDX-License-Identifier: GPL-2.0-only
2 /*
3  * soc-acpi-intel-ptl-match.c - tables and support for PTL ACPI enumeration.
4  *
5  * Copyright (c) 2024, Intel Corporation.
6  *
7  * Order of entries in snd_soc_acpi_intel_ptl_sdw_machines[] matters.
8  * Check subset of link mask when matching the machine driver, rule is
9  * superset match should be ordered before subset matches.
10  */
11 
12 #include <sound/soc-acpi.h>
13 #include <sound/soc-acpi-intel-match.h>
14 #include "sof-function-topology-lib.h"
15 #include "soc-acpi-intel-sdca-quirks.h"
16 #include "soc-acpi-intel-sdw-mockup-match.h"
17 #include <sound/soc-acpi-intel-ssp-common.h>
18 
19 static const struct snd_soc_acpi_codecs ptl_rt5682_rt5682s_hp = {
20 	.num_codecs = 2,
21 	.codecs = {RT5682_ACPI_HID, RT5682S_ACPI_HID},
22 };
23 
24 static const struct snd_soc_acpi_codecs ptl_essx_83x6 = {
25 	.num_codecs = 3,
26 	.codecs = { "ESSX8316", "ESSX8326", "ESSX8336"},
27 };
28 
29 static const struct snd_soc_acpi_codecs ptl_lt6911_hdmi = {
30 	.num_codecs = 1,
31 	.codecs = {"INTC10B0"}
32 };
33 
34 struct snd_soc_acpi_mach snd_soc_acpi_intel_ptl_machines[] = {
35 	{
36 		.comp_ids = &ptl_rt5682_rt5682s_hp,
37 		.drv_name = "ptl_rt5682_c1_h02",
38 		.machine_quirk = snd_soc_acpi_codec_list,
39 		.quirk_data = &ptl_lt6911_hdmi,
40 		.sof_tplg_filename = "sof-ptl-rt5682-ssp1-hdmi-ssp02.tplg",
41 	},
42 	{
43 		.comp_ids = &ptl_rt5682_rt5682s_hp,
44 		.drv_name = "ptl_rt5682_def",
45 		.sof_tplg_filename = "sof-ptl", /* the tplg suffix is added at run time */
46 		.tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_AMP_NAME |
47 					SND_SOC_ACPI_TPLG_INTEL_CODEC_NAME,
48 	},
49 	{
50 		.comp_ids = &ptl_essx_83x6,
51 		.drv_name = "ptl_es83x6_c1_h02",
52 		.machine_quirk = snd_soc_acpi_codec_list,
53 		.quirk_data = &ptl_lt6911_hdmi,
54 		.sof_tplg_filename = "sof-ptl-es83x6-ssp1-hdmi-ssp02.tplg",
55 	},
56 	{
57 		.comp_ids = &ptl_essx_83x6,
58 		.drv_name = "sof-essx8336",
59 		.sof_tplg_filename = "sof-ptl-es8336", /* the tplg suffix is added at run time */
60 		.tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_SSP_NUMBER |
61 					SND_SOC_ACPI_TPLG_INTEL_SSP_MSB |
62 					SND_SOC_ACPI_TPLG_INTEL_DMIC_NUMBER,
63 	},
64 	/* place amp-only boards in the end of table */
65 	{
66 		.id = "INTC10B0",
67 		.drv_name = "ptl_lt6911_hdmi_ssp",
68 		.sof_tplg_filename = "sof-ptl-hdmi-ssp02.tplg",
69 	},
70 	{},
71 };
72 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_ptl_machines);
73 
74 static const struct snd_soc_acpi_endpoint single_endpoint = {
75 	.num = 0,
76 	.aggregated = 0,
77 	.group_position = 0,
78 	.group_id = 0,
79 };
80 
81 static const struct snd_soc_acpi_endpoint spk_l_endpoint = {
82 	.num = 0,
83 	.aggregated = 1,
84 	.group_position = 0,
85 	.group_id = 1,
86 };
87 
88 static const struct snd_soc_acpi_endpoint spk_r_endpoint = {
89 	.num = 0,
90 	.aggregated = 1,
91 	.group_position = 1,
92 	.group_id = 1,
93 };
94 
95 static const struct snd_soc_acpi_endpoint spk_1_endpoint = {
96 	.num = 0,
97 	.aggregated = 1,
98 	.group_position = 1,
99 	.group_id = 1,
100 };
101 
102 static const struct snd_soc_acpi_endpoint spk_2_endpoint = {
103 	.num = 0,
104 	.aggregated = 1,
105 	.group_position = 2,
106 	.group_id = 1,
107 };
108 
109 static const struct snd_soc_acpi_endpoint spk_3_endpoint = {
110 	.num = 0,
111 	.aggregated = 1,
112 	.group_position = 3,
113 	.group_id = 1,
114 };
115 
116 static const struct snd_soc_acpi_endpoint spk_4_endpoint = {
117 	.num = 0,
118 	.aggregated = 1,
119 	.group_position = 4,
120 	.group_id = 1,
121 };
122 
123 static const struct snd_soc_acpi_endpoint spk_5_endpoint = {
124 	.num = 0,
125 	.aggregated = 1,
126 	.group_position = 5,
127 	.group_id = 1,
128 };
129 
130 static const struct snd_soc_acpi_endpoint spk_6_endpoint = {
131 	.num = 0,
132 	.aggregated = 1,
133 	.group_position = 6,
134 	.group_id = 1,
135 };
136 
137 /*
138  * Multi-function codecs with three endpoints created for
139  * headset, amp and dmic functions.
140  */
141 static const struct snd_soc_acpi_endpoint rt_mf_endpoints[] = {
142 	{
143 		.num = 0,
144 		.aggregated = 0,
145 		.group_position = 0,
146 		.group_id = 0,
147 	},
148 	{
149 		.num = 1,
150 		.aggregated = 0,
151 		.group_position = 0,
152 		.group_id = 0,
153 	},
154 	{
155 		.num = 2,
156 		.aggregated = 0,
157 		.group_position = 0,
158 		.group_id = 0,
159 	},
160 };
161 
162 static const struct snd_soc_acpi_endpoint jack_dmic_endpoints[] = {
163 	/* Jack Endpoint */
164 	{
165 		.num = 0,
166 		.aggregated = 0,
167 		.group_position = 0,
168 		.group_id = 0,
169 	},
170 	/* DMIC Endpoint */
171 	{
172 		.num = 1,
173 		.aggregated = 0,
174 		.group_position = 0,
175 		.group_id = 0,
176 	},
177 };
178 
179 static const struct snd_soc_acpi_endpoint jack_amp_g1_dmic_endpoints[] = {
180 	/* Jack Endpoint */
181 	{
182 		.num = 0,
183 		.aggregated = 0,
184 		.group_position = 0,
185 		.group_id = 0,
186 	},
187 	/* Amp Endpoint, work as spk_l_endpoint */
188 	{
189 		.num = 1,
190 		.aggregated = 1,
191 		.group_position = 0,
192 		.group_id = 1,
193 	},
194 	/* DMIC Endpoint */
195 	{
196 		.num = 2,
197 		.aggregated = 0,
198 		.group_position = 0,
199 		.group_id = 0,
200 	},
201 };
202 
203 static const struct snd_soc_acpi_endpoint cs42l43_amp_spkagg_endpoints[] = {
204 	{ /* Jack Playback Endpoint */
205 		.num = 0,
206 		.aggregated = 0,
207 		.group_position = 0,
208 		.group_id = 0,
209 	},
210 	{ /* DMIC Capture Endpoint */
211 		.num = 1,
212 		.aggregated = 0,
213 		.group_position = 0,
214 		.group_id = 0,
215 	},
216 	{ /* Jack Capture Endpoint */
217 		.num = 2,
218 		.aggregated = 0,
219 		.group_position = 0,
220 		.group_id = 0,
221 	},
222 	{ /* Speaker Playback Endpoint */
223 		.num = 3,
224 		.aggregated = 1,
225 		.group_position = 0,
226 		.group_id = 1,
227 	},
228 };
229 
230 static const struct snd_soc_acpi_endpoint cs42l43_endpoints[] = {
231 	{ /* Jack Playback Endpoint */
232 		.num = 0,
233 		.aggregated = 0,
234 		.group_position = 0,
235 		.group_id = 0,
236 	},
237 	{ /* DMIC Capture Endpoint */
238 		.num = 1,
239 		.aggregated = 0,
240 		.group_position = 0,
241 		.group_id = 0,
242 	},
243 	{ /* Jack Capture Endpoint */
244 		.num = 2,
245 		.aggregated = 0,
246 		.group_position = 0,
247 		.group_id = 0,
248 	},
249 	{ /* Speaker Playback Endpoint */
250 		.num = 3,
251 		.aggregated = 0,
252 		.group_position = 0,
253 		.group_id = 0,
254 	},
255 };
256 
257 static const struct snd_soc_acpi_adr_device cs42l43_2_adr[] = {
258 	{
259 		.adr = 0x00023001fa424301ull,
260 		.num_endpoints = ARRAY_SIZE(cs42l43_amp_spkagg_endpoints),
261 		.endpoints = cs42l43_amp_spkagg_endpoints,
262 		.name_prefix = "cs42l43"
263 	}
264 };
265 
266 static const struct snd_soc_acpi_adr_device cs35l56_1_3amp_adr[] = {
267 	{
268 		.adr = 0x00013001fa355601ull,
269 		.num_endpoints = 1,
270 		.endpoints = &spk_1_endpoint,
271 		.name_prefix = "AMP1"
272 	},
273 	{
274 		.adr = 0x00013101fa355601ull,
275 		.num_endpoints = 1,
276 		.endpoints = &spk_2_endpoint,
277 		.name_prefix = "AMP2"
278 	},
279 	{
280 		.adr = 0x00013201fa355601ull,
281 		.num_endpoints = 1,
282 		.endpoints = &spk_3_endpoint,
283 		.name_prefix = "AMP3"
284 	}
285 };
286 
287 static const struct snd_soc_acpi_adr_device cs35l56_3_3amp_adr[] = {
288 	{
289 		.adr = 0x00033301fa355601ull,
290 		.num_endpoints = 1,
291 		.endpoints = &spk_4_endpoint,
292 		.name_prefix = "AMP4"
293 	},
294 	{
295 		.adr = 0x00033401fa355601ull,
296 		.num_endpoints = 1,
297 		.endpoints = &spk_5_endpoint,
298 		.name_prefix = "AMP5"
299 	},
300 	{
301 		.adr = 0x00033501fa355601ull,
302 		.num_endpoints = 1,
303 		.endpoints = &spk_6_endpoint,
304 		.name_prefix = "AMP6"
305 	}
306 };
307 
308 static const struct snd_soc_acpi_adr_device cs42l43_3_adr[] = {
309 	{
310 		.adr = 0x00033001FA424301ull,
311 		.num_endpoints = ARRAY_SIZE(cs42l43_endpoints),
312 		.endpoints = cs42l43_endpoints,
313 		.name_prefix = "cs42l43"
314 	}
315 };
316 
317 static const struct snd_soc_acpi_adr_device rt711_sdca_0_adr[] = {
318 	{
319 		.adr = 0x000030025D071101ull,
320 		.num_endpoints = 1,
321 		.endpoints = &single_endpoint,
322 		.name_prefix = "rt711"
323 	}
324 };
325 
326 static const struct snd_soc_acpi_adr_device rt712_vb_2_group1_adr[] = {
327 	{
328 		.adr = 0x000230025D071201ull,
329 		.num_endpoints = ARRAY_SIZE(jack_amp_g1_dmic_endpoints),
330 		.endpoints = jack_amp_g1_dmic_endpoints,
331 		.name_prefix = "rt712"
332 	}
333 };
334 
335 static const struct snd_soc_acpi_adr_device rt712_vb_3_group1_adr[] = {
336 	{
337 		.adr = 0x000330025D071201ull,
338 		.num_endpoints = ARRAY_SIZE(jack_amp_g1_dmic_endpoints),
339 		.endpoints = jack_amp_g1_dmic_endpoints,
340 		.name_prefix = "rt712"
341 	}
342 };
343 
344 static const struct snd_soc_acpi_adr_device rt713_vb_2_adr[] = {
345 	{
346 		.adr = 0x000230025d071301ull,
347 		.num_endpoints = ARRAY_SIZE(jack_dmic_endpoints),
348 		.endpoints = jack_dmic_endpoints,
349 		.name_prefix = "rt713"
350 	}
351 };
352 
353 static const struct snd_soc_acpi_adr_device rt713_vb_3_adr[] = {
354 	{
355 		.adr = 0x000330025D071301ull,
356 		.num_endpoints = ARRAY_SIZE(jack_dmic_endpoints),
357 		.endpoints = jack_dmic_endpoints,
358 		.name_prefix = "rt713"
359 	}
360 };
361 
362 static const struct snd_soc_acpi_adr_device rt1320_3_group1_adr[] = {
363 	{
364 		.adr = 0x000330025D132001ull,
365 		.num_endpoints = 1,
366 		.endpoints = &spk_r_endpoint,
367 		.name_prefix = "rt1320-1"
368 	}
369 };
370 
371 static const struct snd_soc_acpi_adr_device rt721_0_single_adr[] = {
372 	{
373 		.adr = 0x000030025d072101ull,
374 		.num_endpoints = ARRAY_SIZE(rt_mf_endpoints),
375 		.endpoints = rt_mf_endpoints,
376 		.name_prefix = "rt721"
377 	}
378 };
379 
380 static const struct snd_soc_acpi_adr_device rt721_3_single_adr[] = {
381 	{
382 		.adr = 0x000330025d072101ull,
383 		.num_endpoints = ARRAY_SIZE(rt_mf_endpoints),
384 		.endpoints = rt_mf_endpoints,
385 		.name_prefix = "rt721"
386 	}
387 };
388 
389 static const struct snd_soc_acpi_link_adr ptl_rt721_l3[] = {
390 	{
391 		.mask = BIT(3),
392 		.num_adr = ARRAY_SIZE(rt721_3_single_adr),
393 		.adr_d = rt721_3_single_adr,
394 	},
395 	{},
396 };
397 
398 static const struct snd_soc_acpi_adr_device rt722_0_single_adr[] = {
399 	{
400 		.adr = 0x000030025d072201ull,
401 		.num_endpoints = ARRAY_SIZE(rt_mf_endpoints),
402 		.endpoints = rt_mf_endpoints,
403 		.name_prefix = "rt722"
404 	}
405 };
406 
407 static const struct snd_soc_acpi_adr_device rt722_1_single_adr[] = {
408 	{
409 		.adr = 0x000130025d072201ull,
410 		.num_endpoints = ARRAY_SIZE(rt_mf_endpoints),
411 		.endpoints = rt_mf_endpoints,
412 		.name_prefix = "rt722"
413 	}
414 };
415 
416 static const struct snd_soc_acpi_adr_device rt722_3_single_adr[] = {
417 	{
418 		.adr = 0x000330025d072201ull,
419 		.num_endpoints = ARRAY_SIZE(rt_mf_endpoints),
420 		.endpoints = rt_mf_endpoints,
421 		.name_prefix = "rt722"
422 	}
423 };
424 
425 static const struct snd_soc_acpi_adr_device rt1320_1_group1_adr[] = {
426 	{
427 		.adr = 0x000130025D132001ull,
428 		.num_endpoints = 1,
429 		.endpoints = &spk_r_endpoint,
430 		.name_prefix = "rt1320-1"
431 	}
432 };
433 
434 static const struct snd_soc_acpi_adr_device rt1320_1_group2_adr[] = {
435 	{
436 		.adr = 0x000130025D132001ull,
437 		.num_endpoints = 1,
438 		.endpoints = &spk_l_endpoint,
439 		.name_prefix = "rt1320-1"
440 	}
441 };
442 
443 static const struct snd_soc_acpi_adr_device rt1320_2_group1_adr[] = {
444 	{
445 		.adr = 0x000230025D132001ull,
446 		.num_endpoints = 1,
447 		.endpoints = &spk_r_endpoint,
448 		.name_prefix = "rt1320-1"
449 	}
450 };
451 
452 static const struct snd_soc_acpi_adr_device rt1320_2_group2_adr[] = {
453 	{
454 		.adr = 0x000230025D132001ull,
455 		.num_endpoints = 1,
456 		.endpoints = &spk_r_endpoint,
457 		.name_prefix = "rt1320-1"
458 	}
459 };
460 
461 static const struct snd_soc_acpi_adr_device rt1320_3_group2_adr[] = {
462 	{
463 		.adr = 0x000330025D132001ull,
464 		.num_endpoints = 1,
465 		.endpoints = &spk_r_endpoint,
466 		.name_prefix = "rt1320-2"
467 	}
468 };
469 
470 static const struct snd_soc_acpi_link_adr ptl_cs42l43_l2_cs35l56x6_l13[] = {
471 	{
472 		.mask = BIT(2),
473 		.num_adr = ARRAY_SIZE(cs42l43_2_adr),
474 		.adr_d = cs42l43_2_adr,
475 	},
476 	{
477 		.mask = BIT(1),
478 		.num_adr = ARRAY_SIZE(cs35l56_1_3amp_adr),
479 		.adr_d = cs35l56_1_3amp_adr,
480 	},
481 	{
482 		.mask = BIT(3),
483 		.num_adr = ARRAY_SIZE(cs35l56_3_3amp_adr),
484 		.adr_d = cs35l56_3_3amp_adr,
485 	},
486 	{}
487 };
488 
489 static const struct snd_soc_acpi_link_adr ptl_cs42l43_l3[] = {
490 	{
491 		.mask = BIT(3),
492 		.num_adr = ARRAY_SIZE(cs42l43_3_adr),
493 		.adr_d = cs42l43_3_adr,
494 	},
495 	{}
496 };
497 
498 static const struct snd_soc_acpi_link_adr ptl_rt721_l0[] = {
499 	{
500 		.mask = BIT(0),
501 		.num_adr = ARRAY_SIZE(rt721_0_single_adr),
502 		.adr_d = rt721_0_single_adr,
503 	},
504 	{}
505 };
506 
507 static const struct snd_soc_acpi_link_adr ptl_rt722_only[] = {
508 	{
509 		.mask = BIT(0),
510 		.num_adr = ARRAY_SIZE(rt722_0_single_adr),
511 		.adr_d = rt722_0_single_adr,
512 	},
513 	{}
514 };
515 
516 static const struct snd_soc_acpi_link_adr ptl_rt722_l1[] = {
517 	{
518 		.mask = BIT(1),
519 		.num_adr = ARRAY_SIZE(rt722_1_single_adr),
520 		.adr_d = rt722_1_single_adr,
521 	},
522 	{}
523 };
524 
525 static const struct snd_soc_acpi_link_adr ptl_rt722_l3[] = {
526 	{
527 		.mask = BIT(3),
528 		.num_adr = ARRAY_SIZE(rt722_3_single_adr),
529 		.adr_d = rt722_3_single_adr,
530 	},
531 	{}
532 };
533 
534 static const struct snd_soc_acpi_link_adr ptl_rvp[] = {
535 	{
536 		.mask = BIT(0),
537 		.num_adr = ARRAY_SIZE(rt711_sdca_0_adr),
538 		.adr_d = rt711_sdca_0_adr,
539 	},
540 	{}
541 };
542 
543 static const struct snd_soc_acpi_link_adr ptl_sdw_rt713_vb_l2_rt1320_l13[] = {
544 	{
545 		.mask = BIT(2),
546 		.num_adr = ARRAY_SIZE(rt713_vb_2_adr),
547 		.adr_d = rt713_vb_2_adr,
548 	},
549 	{
550 		.mask = BIT(1),
551 		.num_adr = ARRAY_SIZE(rt1320_1_group2_adr),
552 		.adr_d = rt1320_1_group2_adr,
553 	},
554 	{
555 		.mask = BIT(3),
556 		.num_adr = ARRAY_SIZE(rt1320_3_group2_adr),
557 		.adr_d = rt1320_3_group2_adr,
558 	},
559 	{}
560 };
561 
562 static const struct snd_soc_acpi_link_adr ptl_sdw_rt713_vb_l3_rt1320_l12[] = {
563 	{
564 		.mask = BIT(3),
565 		.num_adr = ARRAY_SIZE(rt713_vb_3_adr),
566 		.adr_d = rt713_vb_3_adr,
567 	},
568 	{
569 		.mask = BIT(1),
570 		.num_adr = ARRAY_SIZE(rt1320_1_group2_adr),
571 		.adr_d = rt1320_1_group2_adr,
572 	},
573 	{
574 		.mask = BIT(2),
575 		.num_adr = ARRAY_SIZE(rt1320_2_group2_adr),
576 		.adr_d = rt1320_2_group2_adr,
577 	},
578 	{}
579 };
580 
581 static const struct snd_soc_acpi_link_adr ptl_sdw_rt712_vb_l2_rt1320_l1[] = {
582 	{
583 		.mask = BIT(2),
584 		.num_adr = ARRAY_SIZE(rt712_vb_2_group1_adr),
585 		.adr_d = rt712_vb_2_group1_adr,
586 	},
587 	{
588 		.mask = BIT(1),
589 		.num_adr = ARRAY_SIZE(rt1320_1_group1_adr),
590 		.adr_d = rt1320_1_group1_adr,
591 	},
592 	{}
593 };
594 
595 static const struct snd_soc_acpi_link_adr ptl_sdw_rt712_vb_l3_rt1320_l2[] = {
596 	{
597 		.mask = BIT(3),
598 		.num_adr = ARRAY_SIZE(rt712_vb_3_group1_adr),
599 		.adr_d = rt712_vb_3_group1_adr,
600 	},
601 	{
602 		.mask = BIT(2),
603 		.num_adr = ARRAY_SIZE(rt1320_2_group1_adr),
604 		.adr_d = rt1320_2_group1_adr,
605 	},
606 	{}
607 };
608 
609 static const struct snd_soc_acpi_link_adr ptl_sdw_rt712_vb_l3_rt1320_l3[] = {
610 	{
611 		.mask = BIT(3),
612 		.num_adr = ARRAY_SIZE(rt712_vb_3_group1_adr),
613 		.adr_d = rt712_vb_3_group1_adr,
614 	},
615 	{
616 		.mask = BIT(3),
617 		.num_adr = ARRAY_SIZE(rt1320_3_group1_adr),
618 		.adr_d = rt1320_3_group1_adr,
619 	},
620 	{}
621 };
622 
623 /* this table is used when there is no I2S codec present */
624 struct snd_soc_acpi_mach snd_soc_acpi_intel_ptl_sdw_machines[] = {
625 /* Order Priority: mockup > most links > most bit link-mask > alphabetical */
626 	{
627 		.link_mask = GENMASK(3, 0),
628 		.links = sdw_mockup_headset_2amps_mic,
629 		.drv_name = "sof_sdw",
630 		.sof_tplg_filename = "sof-ptl-rt711-rt1308-rt715.tplg",
631 	},
632 	{
633 		.link_mask = BIT(0) | BIT(1) | BIT(3),
634 		.links = sdw_mockup_headset_1amp_mic,
635 		.drv_name = "sof_sdw",
636 		.sof_tplg_filename = "sof-ptl-rt711-rt1308-mono-rt715.tplg",
637 	},
638 	{
639 		.link_mask = GENMASK(2, 0),
640 		.links = sdw_mockup_mic_headset_1amp,
641 		.drv_name = "sof_sdw",
642 		.sof_tplg_filename = "sof-ptl-rt715-rt711-rt1308-mono.tplg",
643 	},
644 	{
645 		.link_mask = BIT(0),
646 		.links = sdw_mockup_multi_func,
647 		.drv_name = "sof_sdw",
648 		.sof_tplg_filename = "sof-ptl-rt722.tplg", /* Reuse the existing tplg file */
649 	},
650 	{
651 		.link_mask = BIT(1) | BIT(2) | BIT(3),
652 		.links = ptl_sdw_rt713_vb_l2_rt1320_l13,
653 		.drv_name = "sof_sdw",
654 		.machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb,
655 		.sof_tplg_filename = "sof-ptl-rt713-l2-rt1320-l13.tplg",
656 		.get_function_tplg_files = sof_sdw_get_tplg_files,
657 	},
658 	{
659 		.link_mask = BIT(1) | BIT(2) | BIT(3),
660 		.links = ptl_sdw_rt713_vb_l3_rt1320_l12,
661 		.drv_name = "sof_sdw",
662 		.machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb,
663 		.sof_tplg_filename = "sof-ptl-rt713-l3-rt1320-l12.tplg",
664 		.get_function_tplg_files = sof_sdw_get_tplg_files,
665 	},
666 	{
667 		.link_mask = BIT(1) | BIT(2) | BIT(3),
668 		.links = ptl_cs42l43_l2_cs35l56x6_l13,
669 		.drv_name = "sof_sdw",
670 		.sof_tplg_filename = "sof-ptl-cs42l43-l2-cs35l56x6-l13.tplg",
671 	},
672 	{
673 		.link_mask = BIT(1) | BIT(2),
674 		.links = ptl_sdw_rt712_vb_l2_rt1320_l1,
675 		.drv_name = "sof_sdw",
676 		.machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb,
677 		.sof_tplg_filename = "sof-ptl-rt712-l2-rt1320-l1.tplg",
678 		.get_function_tplg_files = sof_sdw_get_tplg_files,
679 	},
680 	{
681 		.link_mask = BIT(2) | BIT(3),
682 		.links = ptl_sdw_rt712_vb_l3_rt1320_l2,
683 		.drv_name = "sof_sdw",
684 		.machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb,
685 		.sof_tplg_filename = "sof-ptl-rt712-l3-rt1320-l2.tplg",
686 		.get_function_tplg_files = sof_sdw_get_tplg_files,
687 	},
688 	{
689 		.link_mask = BIT(0),
690 		.links = ptl_rvp,
691 		.drv_name = "sof_sdw",
692 		.sof_tplg_filename = "sof-ptl-rt711.tplg",
693 	},
694 	{
695 		.link_mask = BIT(0),
696 		.links = ptl_rt721_l0,
697 		.drv_name = "sof_sdw",
698 		.sof_tplg_filename = "sof-ptl-rt721.tplg",
699 		.get_function_tplg_files = sof_sdw_get_tplg_files,
700 	},
701 	{
702 		.link_mask = BIT(0),
703 		.links = ptl_rt722_only,
704 		.drv_name = "sof_sdw",
705 		.sof_tplg_filename = "sof-ptl-rt722.tplg",
706 		.get_function_tplg_files = sof_sdw_get_tplg_files,
707 	},
708 	{
709 		.link_mask = BIT(1),
710 		.links = ptl_rt722_l1,
711 		.drv_name = "sof_sdw",
712 		.sof_tplg_filename = "sof-ptl-rt722.tplg",
713 		.get_function_tplg_files = sof_sdw_get_tplg_files,
714 	},
715 	{
716 		.link_mask = BIT(3),
717 		.links = ptl_cs42l43_l3,
718 		.drv_name = "sof_sdw",
719 		.sof_tplg_filename = "sof-ptl-cs42l43-l3.tplg",
720 		.get_function_tplg_files = sof_sdw_get_tplg_files,
721 	},
722 	{
723 		.link_mask = BIT(3),
724 		.links = ptl_sdw_rt712_vb_l3_rt1320_l3,
725 		.drv_name = "sof_sdw",
726 		.machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb,
727 		.sof_tplg_filename = "sof-ptl-rt712-l3-rt1320-l3.tplg",
728 		.get_function_tplg_files = sof_sdw_get_tplg_files,
729 	},
730 	{
731 		.link_mask = BIT(3),
732 		.links = ptl_rt721_l3,
733 		.drv_name = "sof_sdw",
734 		.sof_tplg_filename = "sof-ptl-rt721.tplg",
735 		.get_function_tplg_files = sof_sdw_get_tplg_files,
736 	},
737 	{
738 		.link_mask = BIT(3),
739 		.links = ptl_rt722_l3,
740 		.drv_name = "sof_sdw",
741 		.sof_tplg_filename = "sof-ptl-rt722.tplg",
742 		.get_function_tplg_files = sof_sdw_get_tplg_files,
743 	},
744 	{},
745 };
746 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_ptl_sdw_machines);
747