File Index
Files and directories
Sign in
FILE

soc-acpi-intel-ptl-match.c

File preview with syntax highlighting.

linux-6.19.14/sound/soc/intel/common/soc-acpi-intel-ptl-match.c C
  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
 19static const struct snd_soc_acpi_codecs ptl_rt5682_rt5682s_hp = {
 20	.num_codecs = 2,
 21	.codecs = {RT5682_ACPI_HID, RT5682S_ACPI_HID},
 22};
 23
 24static const struct snd_soc_acpi_codecs ptl_essx_83x6 = {
 25	.num_codecs = 3,
 26	.codecs = { "ESSX8316", "ESSX8326", "ESSX8336"},
 27};
 28
 29static const struct snd_soc_acpi_codecs ptl_lt6911_hdmi = {
 30	.num_codecs = 1,
 31	.codecs = {"INTC10B0"}
 32};
 33
 34struct 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};
 72EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_ptl_machines);
 73
 74static const struct snd_soc_acpi_endpoint single_endpoint = {
 75	.num = 0,
 76	.aggregated = 0,
 77	.group_position = 0,
 78	.group_id = 0,
 79};
 80
 81static 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
 88static 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
 95static 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
102static 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
109static 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
116static 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
123static 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
130static 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 */
141static 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
162static 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
179static 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
203static 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
230static 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
239static 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
248static 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
263static 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
284static 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
305static 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
314static 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
323static 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
332static 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
341static 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
350static 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
359static 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
368static 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
377static 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
386static const struct snd_soc_acpi_adr_device rt722_0_agg_adr[] = {
387	{
388		.adr = 0x000030025d072201ull,
389		.num_endpoints = ARRAY_SIZE(jack_amp_g1_dmic_endpoints),
390		.endpoints = jack_amp_g1_dmic_endpoints,
391		.name_prefix = "rt722"
392	}
393};
394
395static const struct snd_soc_acpi_adr_device rt722_0_single_adr[] = {
396	{
397		.adr = 0x000030025d072201ull,
398		.num_endpoints = ARRAY_SIZE(rt_mf_endpoints),
399		.endpoints = rt_mf_endpoints,
400		.name_prefix = "rt722"
401	}
402};
403
404static const struct snd_soc_acpi_adr_device rt722_1_single_adr[] = {
405	{
406		.adr = 0x000130025d072201ull,
407		.num_endpoints = ARRAY_SIZE(rt_mf_endpoints),
408		.endpoints = rt_mf_endpoints,
409		.name_prefix = "rt722"
410	}
411};
412
413static const struct snd_soc_acpi_adr_device rt722_3_single_adr[] = {
414	{
415		.adr = 0x000330025d072201ull,
416		.num_endpoints = ARRAY_SIZE(rt_mf_endpoints),
417		.endpoints = rt_mf_endpoints,
418		.name_prefix = "rt722"
419	}
420};
421
422static const struct snd_soc_acpi_adr_device rt1320_1_group1_adr[] = {
423	{
424		.adr = 0x000130025D132001ull,
425		.num_endpoints = 1,
426		.endpoints = &spk_r_endpoint,
427		.name_prefix = "rt1320-1"
428	}
429};
430
431static const struct snd_soc_acpi_adr_device rt1320_1_group2_adr[] = {
432	{
433		.adr = 0x000130025D132001ull,
434		.num_endpoints = 1,
435		.endpoints = &spk_l_endpoint,
436		.name_prefix = "rt1320-1"
437	}
438};
439
440static const struct snd_soc_acpi_adr_device rt1320_2_group1_adr[] = {
441	{
442		.adr = 0x000230025D132001ull,
443		.num_endpoints = 1,
444		.endpoints = &spk_r_endpoint,
445		.name_prefix = "rt1320-1"
446	}
447};
448
449static const struct snd_soc_acpi_adr_device rt1320_2_group2_adr[] = {
450	{
451		.adr = 0x000230025D132001ull,
452		.num_endpoints = 1,
453		.endpoints = &spk_r_endpoint,
454		.name_prefix = "rt1320-2"
455	}
456};
457
458static const struct snd_soc_acpi_adr_device rt1320_2_group2_l_adr[] = {
459	{
460		.adr = 0x000230025D132001ull,
461		.num_endpoints = 1,
462		.endpoints = &spk_l_endpoint,
463		.name_prefix = "rt1320-1"
464	}
465};
466
467static const struct snd_soc_acpi_adr_device rt1320_3_group2_adr[] = {
468	{
469		.adr = 0x000330025D132001ull,
470		.num_endpoints = 1,
471		.endpoints = &spk_r_endpoint,
472		.name_prefix = "rt1320-2"
473	}
474};
475
476static const struct snd_soc_acpi_link_adr ptl_cs42l43_agg_l3_cs35l56_l2[] = {
477	{
478		.mask = BIT(3),
479		.num_adr = ARRAY_SIZE(cs42l43_3_agg_adr),
480		.adr_d = cs42l43_3_agg_adr,
481	},
482	{
483		.mask = BIT(2),
484		.num_adr = ARRAY_SIZE(cs35l56_2_lr_adr),
485		.adr_d = cs35l56_2_lr_adr,
486	},
487	{}
488};
489
490static const struct snd_soc_acpi_link_adr ptl_cs42l43_l2_cs35l56x6_l13[] = {
491	{
492		.mask = BIT(2),
493		.num_adr = ARRAY_SIZE(cs42l43_2_adr),
494		.adr_d = cs42l43_2_adr,
495	},
496	{
497		.mask = BIT(1),
498		.num_adr = ARRAY_SIZE(cs35l56_1_3amp_adr),
499		.adr_d = cs35l56_1_3amp_adr,
500	},
501	{
502		.mask = BIT(3),
503		.num_adr = ARRAY_SIZE(cs35l56_3_3amp_adr),
504		.adr_d = cs35l56_3_3amp_adr,
505	},
506	{}
507};
508
509static const struct snd_soc_acpi_link_adr ptl_rt721_l0[] = {
510	{
511		.mask = BIT(0),
512		.num_adr = ARRAY_SIZE(rt721_0_single_adr),
513		.adr_d = rt721_0_single_adr,
514	},
515	{}
516};
517
518static const struct snd_soc_acpi_link_adr ptl_rt722_only[] = {
519	{
520		.mask = BIT(0),
521		.num_adr = ARRAY_SIZE(rt722_0_single_adr),
522		.adr_d = rt722_0_single_adr,
523	},
524	{}
525};
526
527static const struct snd_soc_acpi_link_adr ptl_rt722_l1[] = {
528	{
529		.mask = BIT(1),
530		.num_adr = ARRAY_SIZE(rt722_1_single_adr),
531		.adr_d = rt722_1_single_adr,
532	},
533	{}
534};
535
536static const struct snd_soc_acpi_link_adr ptl_rt722_l3[] = {
537	{
538		.mask = BIT(3),
539		.num_adr = ARRAY_SIZE(rt722_3_single_adr),
540		.adr_d = rt722_3_single_adr,
541	},
542	{}
543};
544
545static const struct snd_soc_acpi_link_adr ptl_rt722_l0_rt1320_l23[] = {
546	{
547		.mask = BIT(0),
548		.num_adr = ARRAY_SIZE(rt722_0_agg_adr),
549		.adr_d = rt722_0_agg_adr,
550	},
551	{
552		.mask = BIT(2),
553		.num_adr = ARRAY_SIZE(rt1320_2_group2_l_adr),
554		.adr_d = rt1320_2_group2_l_adr,
555	},
556	{
557		.mask = BIT(3),
558		.num_adr = ARRAY_SIZE(rt1320_3_group2_adr),
559		.adr_d = rt1320_3_group2_adr,
560	},
561	{}
562};
563
564static const struct snd_soc_acpi_link_adr ptl_rvp[] = {
565	{
566		.mask = BIT(0),
567		.num_adr = ARRAY_SIZE(rt711_sdca_0_adr),
568		.adr_d = rt711_sdca_0_adr,
569	},
570	{}
571};
572
573static const struct snd_soc_acpi_link_adr ptl_sdw_rt713_vb_l2_rt1320_l13[] = {
574	{
575		.mask = BIT(2),
576		.num_adr = ARRAY_SIZE(rt713_vb_2_adr),
577		.adr_d = rt713_vb_2_adr,
578	},
579	{
580		.mask = BIT(1),
581		.num_adr = ARRAY_SIZE(rt1320_1_group2_adr),
582		.adr_d = rt1320_1_group2_adr,
583	},
584	{
585		.mask = BIT(3),
586		.num_adr = ARRAY_SIZE(rt1320_3_group2_adr),
587		.adr_d = rt1320_3_group2_adr,
588	},
589	{}
590};
591
592static const struct snd_soc_acpi_link_adr ptl_sdw_rt713_vb_l3_rt1320_l12[] = {
593	{
594		.mask = BIT(3),
595		.num_adr = ARRAY_SIZE(rt713_vb_3_adr),
596		.adr_d = rt713_vb_3_adr,
597	},
598	{
599		.mask = BIT(1),
600		.num_adr = ARRAY_SIZE(rt1320_1_group2_adr),
601		.adr_d = rt1320_1_group2_adr,
602	},
603	{
604		.mask = BIT(2),
605		.num_adr = ARRAY_SIZE(rt1320_2_group2_adr),
606		.adr_d = rt1320_2_group2_adr,
607	},
608	{}
609};
610
611static const struct snd_soc_acpi_link_adr ptl_sdw_rt712_vb_l2_rt1320_l1[] = {
612	{
613		.mask = BIT(2),
614		.num_adr = ARRAY_SIZE(rt712_vb_2_group1_adr),
615		.adr_d = rt712_vb_2_group1_adr,
616	},
617	{
618		.mask = BIT(1),
619		.num_adr = ARRAY_SIZE(rt1320_1_group1_adr),
620		.adr_d = rt1320_1_group1_adr,
621	},
622	{}
623};
624
625static const struct snd_soc_acpi_link_adr ptl_sdw_rt712_vb_l3_rt1320_l2[] = {
626	{
627		.mask = BIT(3),
628		.num_adr = ARRAY_SIZE(rt712_vb_3_group1_adr),
629		.adr_d = rt712_vb_3_group1_adr,
630	},
631	{
632		.mask = BIT(2),
633		.num_adr = ARRAY_SIZE(rt1320_2_group1_adr),
634		.adr_d = rt1320_2_group1_adr,
635	},
636	{}
637};
638
639static const struct snd_soc_acpi_link_adr ptl_sdw_rt712_vb_l3_rt1320_l3[] = {
640	{
641		.mask = BIT(3),
642		.num_adr = ARRAY_SIZE(rt712_vb_3_group1_adr),
643		.adr_d = rt712_vb_3_group1_adr,
644	},
645	{
646		.mask = BIT(3),
647		.num_adr = ARRAY_SIZE(rt1320_3_group1_adr),
648		.adr_d = rt1320_3_group1_adr,
649	},
650	{}
651};
652
653/* this table is used when there is no I2S codec present */
654struct snd_soc_acpi_mach snd_soc_acpi_intel_ptl_sdw_machines[] = {
655/* Order Priority: mockup > most links > most bit link-mask > alphabetical */
656	{
657		.link_mask = GENMASK(3, 0),
658		.links = sdw_mockup_headset_2amps_mic,
659		.drv_name = "sof_sdw",
660		.sof_tplg_filename = "sof-ptl-rt711-rt1308-rt715.tplg",
661	},
662	{
663		.link_mask = BIT(0) | BIT(1) | BIT(3),
664		.links = sdw_mockup_headset_1amp_mic,
665		.drv_name = "sof_sdw",
666		.sof_tplg_filename = "sof-ptl-rt711-rt1308-mono-rt715.tplg",
667	},
668	{
669		.link_mask = GENMASK(2, 0),
670		.links = sdw_mockup_mic_headset_1amp,
671		.drv_name = "sof_sdw",
672		.sof_tplg_filename = "sof-ptl-rt715-rt711-rt1308-mono.tplg",
673	},
674	{
675		.link_mask = BIT(0),
676		.links = sdw_mockup_multi_func,
677		.drv_name = "sof_sdw",
678		.sof_tplg_filename = "sof-ptl-rt722.tplg", /* Reuse the existing tplg file */
679	},
680	{
681		.link_mask = BIT(1) | BIT(2) | BIT(3),
682		.links = ptl_sdw_rt713_vb_l2_rt1320_l13,
683		.drv_name = "sof_sdw",
684		.machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb,
685		.sof_tplg_filename = "sof-ptl-rt713-l2-rt1320-l13.tplg",
686		.get_function_tplg_files = sof_sdw_get_tplg_files,
687	},
688	{
689		.link_mask = BIT(1) | BIT(2) | BIT(3),
690		.links = ptl_sdw_rt713_vb_l3_rt1320_l12,
691		.drv_name = "sof_sdw",
692		.machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb,
693		.sof_tplg_filename = "sof-ptl-rt713-l3-rt1320-l12.tplg",
694		.get_function_tplg_files = sof_sdw_get_tplg_files,
695	},
696	{
697		.link_mask = BIT(1) | BIT(2) | BIT(3),
698		.links = ptl_cs42l43_l2_cs35l56x6_l13,
699		.drv_name = "sof_sdw",
700		.sof_tplg_filename = "sof-ptl-cs42l43-l2-cs35l56x6-l13.tplg",
701	},
702	{
703		.link_mask = BIT(0) | BIT(2) | BIT(3),
704		.links = ptl_rt722_l0_rt1320_l23,
705		.drv_name = "sof_sdw",
706		.sof_tplg_filename = "sof-ptl-rt722-l0-rt1320-l23.tplg",
707		.get_function_tplg_files = sof_sdw_get_tplg_files,
708	},
709	{
710		.link_mask = BIT(1) | BIT(2),
711		.links = ptl_sdw_rt712_vb_l2_rt1320_l1,
712		.drv_name = "sof_sdw",
713		.machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb,
714		.sof_tplg_filename = "sof-ptl-rt712-l2-rt1320-l1.tplg",
715		.get_function_tplg_files = sof_sdw_get_tplg_files,
716	},
717	{
718		.link_mask = BIT(2) | BIT(3),
719		.links = ptl_sdw_rt712_vb_l3_rt1320_l2,
720		.drv_name = "sof_sdw",
721		.machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb,
722		.sof_tplg_filename = "sof-ptl-rt712-l3-rt1320-l2.tplg",
723		.get_function_tplg_files = sof_sdw_get_tplg_files,
724	},
725	{
726		.link_mask = BIT(2) | BIT(3),
727		.links = ptl_cs42l43_agg_l3_cs35l56_l2,
728		.drv_name = "sof_sdw",
729		.sof_tplg_filename = "sof-ptl-cs42l43-agg-l3-cs35l56-l2.tplg",
730	},
731	{
732		.link_mask = BIT(0),
733		.links = ptl_rvp,
734		.drv_name = "sof_sdw",
735		.sof_tplg_filename = "sof-ptl-rt711.tplg",
736	},
737	{
738		.link_mask = BIT(0),
739		.links = ptl_rt721_l0,
740		.drv_name = "sof_sdw",
741		.sof_tplg_filename = "sof-ptl-rt721.tplg",
742		.get_function_tplg_files = sof_sdw_get_tplg_files,
743	},
744	{
745		.link_mask = BIT(0),
746		.links = ptl_rt722_only,
747		.drv_name = "sof_sdw",
748		.sof_tplg_filename = "sof-ptl-rt722.tplg",
749		.get_function_tplg_files = sof_sdw_get_tplg_files,
750	},
751	{
752		.link_mask = BIT(1),
753		.links = ptl_rt722_l1,
754		.drv_name = "sof_sdw",
755		.sof_tplg_filename = "sof-ptl-rt722.tplg",
756		.get_function_tplg_files = sof_sdw_get_tplg_files,
757	},
758	{
759		.link_mask = BIT(3),
760		.links = ptl_sdw_rt712_vb_l3_rt1320_l3,
761		.drv_name = "sof_sdw",
762		.machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb,
763		.sof_tplg_filename = "sof-ptl-rt712-l3-rt1320-l3.tplg",
764		.get_function_tplg_files = sof_sdw_get_tplg_files,
765	},
766	{
767		.link_mask = BIT(3),
768		.links = ptl_rt721_l3,
769		.drv_name = "sof_sdw",
770		.sof_tplg_filename = "sof-ptl-rt721.tplg",
771		.get_function_tplg_files = sof_sdw_get_tplg_files,
772	},
773	{
774		.link_mask = BIT(3),
775		.links = ptl_rt722_l3,
776		.drv_name = "sof_sdw",
777		.sof_tplg_filename = "sof-ptl-rt722.tplg",
778		.get_function_tplg_files = sof_sdw_get_tplg_files,
779	},
780	{},
781};
782EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_ptl_sdw_machines);
~/ Read-only file preview.