xref: /linux/sound/soc/intel/common/soc-acpi-intel-ptl-match.c (revision 3f1c07fc21c68bd3bd2df9d2c9441f6485e934d9)
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_adr_device cs42l43_2_adr[] = {
231 	{
232 		.adr = 0x00023001fa424301ull,
233 		.num_endpoints = ARRAY_SIZE(cs42l43_amp_spkagg_endpoints),
234 		.endpoints = cs42l43_amp_spkagg_endpoints,
235 		.name_prefix = "cs42l43"
236 	}
237 };
238 
239 static const struct snd_soc_acpi_adr_device cs42l43_3_agg_adr[] = {
240 	{
241 		.adr = 0x00033001FA424301ull,
242 		.num_endpoints = ARRAY_SIZE(cs42l43_amp_spkagg_endpoints),
243 		.endpoints = cs42l43_amp_spkagg_endpoints,
244 		.name_prefix = "cs42l43"
245 	}
246 };
247 
248 static const struct snd_soc_acpi_adr_device cs35l56_2_lr_adr[] = {
249 	{
250 		.adr = 0x00023001fa355601ull,
251 		.num_endpoints = 1,
252 		.endpoints = &spk_l_endpoint,
253 		.name_prefix = "AMP1"
254 	},
255 	{
256 		.adr = 0x00023101fa355601ull,
257 		.num_endpoints = 1,
258 		.endpoints = &spk_r_endpoint,
259 		.name_prefix = "AMP2"
260 	}
261 };
262 
263 static const struct snd_soc_acpi_adr_device cs35l56_1_3amp_adr[] = {
264 	{
265 		.adr = 0x00013001fa355601ull,
266 		.num_endpoints = 1,
267 		.endpoints = &spk_1_endpoint,
268 		.name_prefix = "AMP1"
269 	},
270 	{
271 		.adr = 0x00013101fa355601ull,
272 		.num_endpoints = 1,
273 		.endpoints = &spk_2_endpoint,
274 		.name_prefix = "AMP2"
275 	},
276 	{
277 		.adr = 0x00013201fa355601ull,
278 		.num_endpoints = 1,
279 		.endpoints = &spk_3_endpoint,
280 		.name_prefix = "AMP3"
281 	}
282 };
283 
284 static const struct snd_soc_acpi_adr_device cs35l56_3_3amp_adr[] = {
285 	{
286 		.adr = 0x00033301fa355601ull,
287 		.num_endpoints = 1,
288 		.endpoints = &spk_4_endpoint,
289 		.name_prefix = "AMP4"
290 	},
291 	{
292 		.adr = 0x00033401fa355601ull,
293 		.num_endpoints = 1,
294 		.endpoints = &spk_5_endpoint,
295 		.name_prefix = "AMP5"
296 	},
297 	{
298 		.adr = 0x00033501fa355601ull,
299 		.num_endpoints = 1,
300 		.endpoints = &spk_6_endpoint,
301 		.name_prefix = "AMP6"
302 	}
303 };
304 
305 static const struct snd_soc_acpi_adr_device rt711_sdca_0_adr[] = {
306 	{
307 		.adr = 0x000030025D071101ull,
308 		.num_endpoints = 1,
309 		.endpoints = &single_endpoint,
310 		.name_prefix = "rt711"
311 	}
312 };
313 
314 static const struct snd_soc_acpi_adr_device rt712_vb_2_group1_adr[] = {
315 	{
316 		.adr = 0x000230025D071201ull,
317 		.num_endpoints = ARRAY_SIZE(jack_amp_g1_dmic_endpoints),
318 		.endpoints = jack_amp_g1_dmic_endpoints,
319 		.name_prefix = "rt712"
320 	}
321 };
322 
323 static const struct snd_soc_acpi_adr_device rt712_vb_3_group1_adr[] = {
324 	{
325 		.adr = 0x000330025D071201ull,
326 		.num_endpoints = ARRAY_SIZE(jack_amp_g1_dmic_endpoints),
327 		.endpoints = jack_amp_g1_dmic_endpoints,
328 		.name_prefix = "rt712"
329 	}
330 };
331 
332 static const struct snd_soc_acpi_adr_device rt713_vb_2_adr[] = {
333 	{
334 		.adr = 0x000230025d071301ull,
335 		.num_endpoints = ARRAY_SIZE(jack_dmic_endpoints),
336 		.endpoints = jack_dmic_endpoints,
337 		.name_prefix = "rt713"
338 	}
339 };
340 
341 static const struct snd_soc_acpi_adr_device rt713_vb_3_adr[] = {
342 	{
343 		.adr = 0x000330025D071301ull,
344 		.num_endpoints = ARRAY_SIZE(jack_dmic_endpoints),
345 		.endpoints = jack_dmic_endpoints,
346 		.name_prefix = "rt713"
347 	}
348 };
349 
350 static const struct snd_soc_acpi_adr_device rt1320_3_group1_adr[] = {
351 	{
352 		.adr = 0x000330025D132001ull,
353 		.num_endpoints = 1,
354 		.endpoints = &spk_r_endpoint,
355 		.name_prefix = "rt1320-1"
356 	}
357 };
358 
359 static const struct snd_soc_acpi_adr_device rt721_0_single_adr[] = {
360 	{
361 		.adr = 0x000030025d072101ull,
362 		.num_endpoints = ARRAY_SIZE(rt_mf_endpoints),
363 		.endpoints = rt_mf_endpoints,
364 		.name_prefix = "rt721"
365 	}
366 };
367 
368 static const struct snd_soc_acpi_adr_device rt721_3_single_adr[] = {
369 	{
370 		.adr = 0x000330025d072101ull,
371 		.num_endpoints = ARRAY_SIZE(rt_mf_endpoints),
372 		.endpoints = rt_mf_endpoints,
373 		.name_prefix = "rt721"
374 	}
375 };
376 
377 static const struct snd_soc_acpi_link_adr ptl_rt721_l3[] = {
378 	{
379 		.mask = BIT(3),
380 		.num_adr = ARRAY_SIZE(rt721_3_single_adr),
381 		.adr_d = rt721_3_single_adr,
382 	},
383 	{},
384 };
385 
386 static const struct snd_soc_acpi_adr_device rt722_0_single_adr[] = {
387 	{
388 		.adr = 0x000030025d072201ull,
389 		.num_endpoints = ARRAY_SIZE(rt_mf_endpoints),
390 		.endpoints = rt_mf_endpoints,
391 		.name_prefix = "rt722"
392 	}
393 };
394 
395 static const struct snd_soc_acpi_adr_device rt722_1_single_adr[] = {
396 	{
397 		.adr = 0x000130025d072201ull,
398 		.num_endpoints = ARRAY_SIZE(rt_mf_endpoints),
399 		.endpoints = rt_mf_endpoints,
400 		.name_prefix = "rt722"
401 	}
402 };
403 
404 static const struct snd_soc_acpi_adr_device rt722_3_single_adr[] = {
405 	{
406 		.adr = 0x000330025d072201ull,
407 		.num_endpoints = ARRAY_SIZE(rt_mf_endpoints),
408 		.endpoints = rt_mf_endpoints,
409 		.name_prefix = "rt722"
410 	}
411 };
412 
413 static const struct snd_soc_acpi_adr_device rt1320_1_group1_adr[] = {
414 	{
415 		.adr = 0x000130025D132001ull,
416 		.num_endpoints = 1,
417 		.endpoints = &spk_r_endpoint,
418 		.name_prefix = "rt1320-1"
419 	}
420 };
421 
422 static const struct snd_soc_acpi_adr_device rt1320_1_group2_adr[] = {
423 	{
424 		.adr = 0x000130025D132001ull,
425 		.num_endpoints = 1,
426 		.endpoints = &spk_l_endpoint,
427 		.name_prefix = "rt1320-1"
428 	}
429 };
430 
431 static const struct snd_soc_acpi_adr_device rt1320_2_group1_adr[] = {
432 	{
433 		.adr = 0x000230025D132001ull,
434 		.num_endpoints = 1,
435 		.endpoints = &spk_r_endpoint,
436 		.name_prefix = "rt1320-1"
437 	}
438 };
439 
440 static const struct snd_soc_acpi_adr_device rt1320_2_group2_adr[] = {
441 	{
442 		.adr = 0x000230025D132001ull,
443 		.num_endpoints = 1,
444 		.endpoints = &spk_r_endpoint,
445 		.name_prefix = "rt1320-1"
446 	}
447 };
448 
449 static const struct snd_soc_acpi_adr_device rt1320_2_group2_l_adr[] = {
450 	{
451 		.adr = 0x000230025D132001ull,
452 		.num_endpoints = 1,
453 		.endpoints = &spk_l_endpoint,
454 		.name_prefix = "rt1320-1"
455 	}
456 };
457 
458 static const struct snd_soc_acpi_adr_device rt1320_3_group2_adr[] = {
459 	{
460 		.adr = 0x000330025D132001ull,
461 		.num_endpoints = 1,
462 		.endpoints = &spk_r_endpoint,
463 		.name_prefix = "rt1320-2"
464 	}
465 };
466 
467 static const struct snd_soc_acpi_link_adr ptl_cs42l43_agg_l3_cs35l56_l2[] = {
468 	{
469 		.mask = BIT(3),
470 		.num_adr = ARRAY_SIZE(cs42l43_3_agg_adr),
471 		.adr_d = cs42l43_3_agg_adr,
472 	},
473 	{
474 		.mask = BIT(2),
475 		.num_adr = ARRAY_SIZE(cs35l56_2_lr_adr),
476 		.adr_d = cs35l56_2_lr_adr,
477 	},
478 	{}
479 };
480 
481 static const struct snd_soc_acpi_link_adr ptl_cs42l43_l2_cs35l56x6_l13[] = {
482 	{
483 		.mask = BIT(2),
484 		.num_adr = ARRAY_SIZE(cs42l43_2_adr),
485 		.adr_d = cs42l43_2_adr,
486 	},
487 	{
488 		.mask = BIT(1),
489 		.num_adr = ARRAY_SIZE(cs35l56_1_3amp_adr),
490 		.adr_d = cs35l56_1_3amp_adr,
491 	},
492 	{
493 		.mask = BIT(3),
494 		.num_adr = ARRAY_SIZE(cs35l56_3_3amp_adr),
495 		.adr_d = cs35l56_3_3amp_adr,
496 	},
497 	{}
498 };
499 
500 static const struct snd_soc_acpi_link_adr ptl_rt721_l0[] = {
501 	{
502 		.mask = BIT(0),
503 		.num_adr = ARRAY_SIZE(rt721_0_single_adr),
504 		.adr_d = rt721_0_single_adr,
505 	},
506 	{}
507 };
508 
509 static const struct snd_soc_acpi_link_adr ptl_rt722_only[] = {
510 	{
511 		.mask = BIT(0),
512 		.num_adr = ARRAY_SIZE(rt722_0_single_adr),
513 		.adr_d = rt722_0_single_adr,
514 	},
515 	{}
516 };
517 
518 static const struct snd_soc_acpi_link_adr ptl_rt722_l1[] = {
519 	{
520 		.mask = BIT(1),
521 		.num_adr = ARRAY_SIZE(rt722_1_single_adr),
522 		.adr_d = rt722_1_single_adr,
523 	},
524 	{}
525 };
526 
527 static const struct snd_soc_acpi_link_adr ptl_rt722_l3[] = {
528 	{
529 		.mask = BIT(3),
530 		.num_adr = ARRAY_SIZE(rt722_3_single_adr),
531 		.adr_d = rt722_3_single_adr,
532 	},
533 	{}
534 };
535 
536 static const struct snd_soc_acpi_link_adr ptl_rt722_l0_rt1320_l23[] = {
537 	{
538 		.mask = BIT(0),
539 		.num_adr = ARRAY_SIZE(rt722_0_single_adr),
540 		.adr_d = rt722_0_single_adr,
541 	},
542 	{
543 		.mask = BIT(2),
544 		.num_adr = ARRAY_SIZE(rt1320_2_group2_l_adr),
545 		.adr_d = rt1320_2_group2_l_adr,
546 	},
547 	{
548 		.mask = BIT(3),
549 		.num_adr = ARRAY_SIZE(rt1320_3_group2_adr),
550 		.adr_d = rt1320_3_group2_adr,
551 	},
552 	{}
553 };
554 
555 static const struct snd_soc_acpi_link_adr ptl_rvp[] = {
556 	{
557 		.mask = BIT(0),
558 		.num_adr = ARRAY_SIZE(rt711_sdca_0_adr),
559 		.adr_d = rt711_sdca_0_adr,
560 	},
561 	{}
562 };
563 
564 static const struct snd_soc_acpi_link_adr ptl_sdw_rt713_vb_l2_rt1320_l13[] = {
565 	{
566 		.mask = BIT(2),
567 		.num_adr = ARRAY_SIZE(rt713_vb_2_adr),
568 		.adr_d = rt713_vb_2_adr,
569 	},
570 	{
571 		.mask = BIT(1),
572 		.num_adr = ARRAY_SIZE(rt1320_1_group2_adr),
573 		.adr_d = rt1320_1_group2_adr,
574 	},
575 	{
576 		.mask = BIT(3),
577 		.num_adr = ARRAY_SIZE(rt1320_3_group2_adr),
578 		.adr_d = rt1320_3_group2_adr,
579 	},
580 	{}
581 };
582 
583 static const struct snd_soc_acpi_link_adr ptl_sdw_rt713_vb_l3_rt1320_l12[] = {
584 	{
585 		.mask = BIT(3),
586 		.num_adr = ARRAY_SIZE(rt713_vb_3_adr),
587 		.adr_d = rt713_vb_3_adr,
588 	},
589 	{
590 		.mask = BIT(1),
591 		.num_adr = ARRAY_SIZE(rt1320_1_group2_adr),
592 		.adr_d = rt1320_1_group2_adr,
593 	},
594 	{
595 		.mask = BIT(2),
596 		.num_adr = ARRAY_SIZE(rt1320_2_group2_adr),
597 		.adr_d = rt1320_2_group2_adr,
598 	},
599 	{}
600 };
601 
602 static const struct snd_soc_acpi_link_adr ptl_sdw_rt712_vb_l2_rt1320_l1[] = {
603 	{
604 		.mask = BIT(2),
605 		.num_adr = ARRAY_SIZE(rt712_vb_2_group1_adr),
606 		.adr_d = rt712_vb_2_group1_adr,
607 	},
608 	{
609 		.mask = BIT(1),
610 		.num_adr = ARRAY_SIZE(rt1320_1_group1_adr),
611 		.adr_d = rt1320_1_group1_adr,
612 	},
613 	{}
614 };
615 
616 static const struct snd_soc_acpi_link_adr ptl_sdw_rt712_vb_l3_rt1320_l2[] = {
617 	{
618 		.mask = BIT(3),
619 		.num_adr = ARRAY_SIZE(rt712_vb_3_group1_adr),
620 		.adr_d = rt712_vb_3_group1_adr,
621 	},
622 	{
623 		.mask = BIT(2),
624 		.num_adr = ARRAY_SIZE(rt1320_2_group1_adr),
625 		.adr_d = rt1320_2_group1_adr,
626 	},
627 	{}
628 };
629 
630 static const struct snd_soc_acpi_link_adr ptl_sdw_rt712_vb_l3_rt1320_l3[] = {
631 	{
632 		.mask = BIT(3),
633 		.num_adr = ARRAY_SIZE(rt712_vb_3_group1_adr),
634 		.adr_d = rt712_vb_3_group1_adr,
635 	},
636 	{
637 		.mask = BIT(3),
638 		.num_adr = ARRAY_SIZE(rt1320_3_group1_adr),
639 		.adr_d = rt1320_3_group1_adr,
640 	},
641 	{}
642 };
643 
644 /* this table is used when there is no I2S codec present */
645 struct snd_soc_acpi_mach snd_soc_acpi_intel_ptl_sdw_machines[] = {
646 /* Order Priority: mockup > most links > most bit link-mask > alphabetical */
647 	{
648 		.link_mask = GENMASK(3, 0),
649 		.links = sdw_mockup_headset_2amps_mic,
650 		.drv_name = "sof_sdw",
651 		.sof_tplg_filename = "sof-ptl-rt711-rt1308-rt715.tplg",
652 	},
653 	{
654 		.link_mask = BIT(0) | BIT(1) | BIT(3),
655 		.links = sdw_mockup_headset_1amp_mic,
656 		.drv_name = "sof_sdw",
657 		.sof_tplg_filename = "sof-ptl-rt711-rt1308-mono-rt715.tplg",
658 	},
659 	{
660 		.link_mask = GENMASK(2, 0),
661 		.links = sdw_mockup_mic_headset_1amp,
662 		.drv_name = "sof_sdw",
663 		.sof_tplg_filename = "sof-ptl-rt715-rt711-rt1308-mono.tplg",
664 	},
665 	{
666 		.link_mask = BIT(0),
667 		.links = sdw_mockup_multi_func,
668 		.drv_name = "sof_sdw",
669 		.sof_tplg_filename = "sof-ptl-rt722.tplg", /* Reuse the existing tplg file */
670 	},
671 	{
672 		.link_mask = BIT(1) | BIT(2) | BIT(3),
673 		.links = ptl_sdw_rt713_vb_l2_rt1320_l13,
674 		.drv_name = "sof_sdw",
675 		.machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb,
676 		.sof_tplg_filename = "sof-ptl-rt713-l2-rt1320-l13.tplg",
677 		.get_function_tplg_files = sof_sdw_get_tplg_files,
678 	},
679 	{
680 		.link_mask = BIT(1) | BIT(2) | BIT(3),
681 		.links = ptl_sdw_rt713_vb_l3_rt1320_l12,
682 		.drv_name = "sof_sdw",
683 		.machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb,
684 		.sof_tplg_filename = "sof-ptl-rt713-l3-rt1320-l12.tplg",
685 		.get_function_tplg_files = sof_sdw_get_tplg_files,
686 	},
687 	{
688 		.link_mask = BIT(1) | BIT(2) | BIT(3),
689 		.links = ptl_cs42l43_l2_cs35l56x6_l13,
690 		.drv_name = "sof_sdw",
691 		.sof_tplg_filename = "sof-ptl-cs42l43-l2-cs35l56x6-l13.tplg",
692 	},
693 	{
694 		.link_mask = BIT(0) | BIT(2) | BIT(3),
695 		.links = ptl_rt722_l0_rt1320_l23,
696 		.drv_name = "sof_sdw",
697 		.sof_tplg_filename = "sof-ptl-rt722-l0-rt1320-l23.tplg",
698 		.get_function_tplg_files = sof_sdw_get_tplg_files,
699 	},
700 	{
701 		.link_mask = BIT(1) | BIT(2),
702 		.links = ptl_sdw_rt712_vb_l2_rt1320_l1,
703 		.drv_name = "sof_sdw",
704 		.machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb,
705 		.sof_tplg_filename = "sof-ptl-rt712-l2-rt1320-l1.tplg",
706 		.get_function_tplg_files = sof_sdw_get_tplg_files,
707 	},
708 	{
709 		.link_mask = BIT(2) | BIT(3),
710 		.links = ptl_sdw_rt712_vb_l3_rt1320_l2,
711 		.drv_name = "sof_sdw",
712 		.machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb,
713 		.sof_tplg_filename = "sof-ptl-rt712-l3-rt1320-l2.tplg",
714 		.get_function_tplg_files = sof_sdw_get_tplg_files,
715 	},
716 	{
717 		.link_mask = BIT(2) | BIT(3),
718 		.links = ptl_cs42l43_agg_l3_cs35l56_l2,
719 		.drv_name = "sof_sdw",
720 		.sof_tplg_filename = "sof-ptl-cs42l43-agg-l3-cs35l56-l2.tplg",
721 	},
722 	{
723 		.link_mask = BIT(0),
724 		.links = ptl_rvp,
725 		.drv_name = "sof_sdw",
726 		.sof_tplg_filename = "sof-ptl-rt711.tplg",
727 	},
728 	{
729 		.link_mask = BIT(0),
730 		.links = ptl_rt721_l0,
731 		.drv_name = "sof_sdw",
732 		.sof_tplg_filename = "sof-ptl-rt721.tplg",
733 		.get_function_tplg_files = sof_sdw_get_tplg_files,
734 	},
735 	{
736 		.link_mask = BIT(0),
737 		.links = ptl_rt722_only,
738 		.drv_name = "sof_sdw",
739 		.sof_tplg_filename = "sof-ptl-rt722.tplg",
740 		.get_function_tplg_files = sof_sdw_get_tplg_files,
741 	},
742 	{
743 		.link_mask = BIT(1),
744 		.links = ptl_rt722_l1,
745 		.drv_name = "sof_sdw",
746 		.sof_tplg_filename = "sof-ptl-rt722.tplg",
747 		.get_function_tplg_files = sof_sdw_get_tplg_files,
748 	},
749 	{
750 		.link_mask = BIT(3),
751 		.links = ptl_sdw_rt712_vb_l3_rt1320_l3,
752 		.drv_name = "sof_sdw",
753 		.machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb,
754 		.sof_tplg_filename = "sof-ptl-rt712-l3-rt1320-l3.tplg",
755 		.get_function_tplg_files = sof_sdw_get_tplg_files,
756 	},
757 	{
758 		.link_mask = BIT(3),
759 		.links = ptl_rt721_l3,
760 		.drv_name = "sof_sdw",
761 		.sof_tplg_filename = "sof-ptl-rt721.tplg",
762 		.get_function_tplg_files = sof_sdw_get_tplg_files,
763 	},
764 	{
765 		.link_mask = BIT(3),
766 		.links = ptl_rt722_l3,
767 		.drv_name = "sof_sdw",
768 		.sof_tplg_filename = "sof-ptl-rt722.tplg",
769 		.get_function_tplg_files = sof_sdw_get_tplg_files,
770 	},
771 	{},
772 };
773 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_ptl_sdw_machines);
774