brintos

brintos / linux-shallow public Read only

0
0
Text · 18.2 KiB · d4435a3 Raw
839 lines · c
1// SPDX-License-Identifier: GPL-2.0-only2/*3 * soc-acpi-intel-mtl-match.c - tables and support for MTL ACPI enumeration.4 *5 * Copyright (c) 2022, Intel Corporation.6 *7 */8 9#include <sound/soc-acpi.h>10#include <sound/soc-acpi-intel-match.h>11#include <sound/soc-acpi-intel-ssp-common.h>12#include "soc-acpi-intel-sdw-mockup-match.h"13 14static const struct snd_soc_acpi_codecs mtl_rt5682_rt5682s_hp = {15	.num_codecs = 2,16	.codecs = {RT5682_ACPI_HID, RT5682S_ACPI_HID},17};18 19static const struct snd_soc_acpi_codecs mtl_essx_83x6 = {20	.num_codecs = 3,21	.codecs = { "ESSX8316", "ESSX8326", "ESSX8336"},22};23 24static const struct snd_soc_acpi_codecs mtl_lt6911_hdmi = {25	.num_codecs = 1,26	.codecs = {"INTC10B0"}27};28 29struct snd_soc_acpi_mach snd_soc_acpi_intel_mtl_machines[] = {30	{31		.comp_ids = &mtl_essx_83x6,32		.drv_name = "mtl_es83x6_c1_h02",33		.machine_quirk = snd_soc_acpi_codec_list,34		.quirk_data = &mtl_lt6911_hdmi,35		.sof_tplg_filename = "sof-mtl-es83x6-ssp1-hdmi-ssp02.tplg",36	},37	{38		.comp_ids = &mtl_essx_83x6,39		.drv_name = "sof-essx8336",40		.sof_tplg_filename = "sof-mtl-es8336", /* the tplg suffix is added at run time */41		.tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_SSP_NUMBER |42					SND_SOC_ACPI_TPLG_INTEL_SSP_MSB |43					SND_SOC_ACPI_TPLG_INTEL_DMIC_NUMBER,44	},45	/* place boards for each headphone codec: sof driver will complete the46	 * tplg name and machine driver will detect the amp type47	 */48	{49		.id = CS42L42_ACPI_HID,50		.drv_name = "mtl_cs42l42_def",51		.sof_tplg_filename = "sof-mtl", /* the tplg suffix is added at run time */52		.tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_AMP_NAME |53					SND_SOC_ACPI_TPLG_INTEL_CODEC_NAME,54	},55	{56		.id = DA7219_ACPI_HID,57		.drv_name = "mtl_da7219_def",58		.sof_tplg_filename = "sof-mtl", /* the tplg suffix is added at run time */59		.tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_AMP_NAME |60					SND_SOC_ACPI_TPLG_INTEL_CODEC_NAME,61	},62	{63		.id = NAU8825_ACPI_HID,64		.drv_name = "mtl_nau8825_def",65		.sof_tplg_filename = "sof-mtl", /* the tplg suffix is added at run time */66		.tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_AMP_NAME |67					SND_SOC_ACPI_TPLG_INTEL_CODEC_NAME,68	},69	{70		.id = RT5650_ACPI_HID,71		.drv_name = "mtl_rt5682_def",72		.sof_tplg_filename = "sof-mtl", /* the tplg suffix is added at run time */73		.tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_AMP_NAME |74					SND_SOC_ACPI_TPLG_INTEL_CODEC_NAME,75	},76	{77		.comp_ids = &mtl_rt5682_rt5682s_hp,78		.drv_name = "mtl_rt5682_def",79		.sof_tplg_filename = "sof-mtl", /* the tplg suffix is added at run time */80		.tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_AMP_NAME |81					SND_SOC_ACPI_TPLG_INTEL_CODEC_NAME,82	},83	/* place amp-only boards in the end of table */84	{85		.id = "INTC10B0",86		.drv_name = "mtl_lt6911_hdmi_ssp",87		.sof_tplg_filename = "sof-mtl-hdmi-ssp02.tplg",88	},89	{},90};91EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_mtl_machines);92 93static const struct snd_soc_acpi_endpoint single_endpoint = {94	.num = 0,95	.aggregated = 0,96	.group_position = 0,97	.group_id = 0,98};99 100static const struct snd_soc_acpi_endpoint spk_l_endpoint = {101	.num = 0,102	.aggregated = 1,103	.group_position = 0,104	.group_id = 1,105};106 107static const struct snd_soc_acpi_endpoint spk_r_endpoint = {108	.num = 0,109	.aggregated = 1,110	.group_position = 1,111	.group_id = 1,112};113 114static const struct snd_soc_acpi_endpoint rt712_endpoints[] = {115	{116		.num = 0,117		.aggregated = 0,118		.group_position = 0,119		.group_id = 0,120	},121	{122		.num = 1,123		.aggregated = 0,124		.group_position = 0,125		.group_id = 0,126	},127};128 129/*130 * RT722 is a multi-function codec, three endpoints are created for131 * its headset, amp and dmic functions.132 */133static const struct snd_soc_acpi_endpoint rt722_endpoints[] = {134	{135		.num = 0,136		.aggregated = 0,137		.group_position = 0,138		.group_id = 0,139	},140	{141		.num = 1,142		.aggregated = 0,143		.group_position = 0,144		.group_id = 0,145	},146	{147		.num = 2,148		.aggregated = 0,149		.group_position = 0,150		.group_id = 0,151	},152};153 154static const struct snd_soc_acpi_endpoint spk_2_endpoint = {155	.num = 0,156	.aggregated = 1,157	.group_position = 2,158	.group_id = 1,159};160 161static const struct snd_soc_acpi_endpoint spk_3_endpoint = {162	.num = 0,163	.aggregated = 1,164	.group_position = 3,165	.group_id = 1,166};167 168static const struct snd_soc_acpi_adr_device rt711_sdca_0_adr[] = {169	{170		.adr = 0x000030025D071101ull,171		.num_endpoints = 1,172		.endpoints = &single_endpoint,173		.name_prefix = "rt711"174	}175};176 177static const struct snd_soc_acpi_adr_device rt712_0_single_adr[] = {178	{179		.adr = 0x000030025D071201ull,180		.num_endpoints = ARRAY_SIZE(rt712_endpoints),181		.endpoints = rt712_endpoints,182		.name_prefix = "rt712"183	}184};185 186static const struct snd_soc_acpi_adr_device rt1712_3_single_adr[] = {187	{188		.adr = 0x000330025D171201ull,189		.num_endpoints = 1,190		.endpoints = &single_endpoint,191		.name_prefix = "rt712-dmic"192	}193};194 195static const struct snd_soc_acpi_adr_device rt722_0_single_adr[] = {196	{197		.adr = 0x000030025d072201ull,198		.num_endpoints = ARRAY_SIZE(rt722_endpoints),199		.endpoints = rt722_endpoints,200		.name_prefix = "rt722"201	}202};203 204static const struct snd_soc_acpi_adr_device rt713_0_single_adr[] = {205	{206		.adr = 0x000031025D071301ull,207		.num_endpoints = 1,208		.endpoints = &single_endpoint,209		.name_prefix = "rt713"210	}211};212 213static const struct snd_soc_acpi_adr_device rt1713_3_single_adr[] = {214	{215		.adr = 0x000331025D171301ull,216		.num_endpoints = 1,217		.endpoints = &single_endpoint,218		.name_prefix = "rt713-dmic"219	}220};221 222static const struct snd_soc_acpi_adr_device mx8373_0_adr[] = {223	{224		.adr = 0x000023019F837300ull,225		.num_endpoints = 1,226		.endpoints = &spk_l_endpoint,227		.name_prefix = "Left"228	},229	{230		.adr = 0x000027019F837300ull,231		.num_endpoints = 1,232		.endpoints = &spk_r_endpoint,233		.name_prefix = "Right"234	}235};236 237static const struct snd_soc_acpi_adr_device rt5682_2_adr[] = {238	{239		.adr = 0x000221025D568200ull,240		.num_endpoints = 1,241		.endpoints = &single_endpoint,242		.name_prefix = "rt5682"243	}244};245 246static const struct snd_soc_acpi_adr_device rt1316_2_group1_adr[] = {247	{248		.adr = 0x000230025D131601ull,249		.num_endpoints = 1,250		.endpoints = &spk_l_endpoint,251		.name_prefix = "rt1316-1"252	}253};254 255static const struct snd_soc_acpi_adr_device rt1316_3_group1_adr[] = {256	{257		.adr = 0x000331025D131601ull,258		.num_endpoints = 1,259		.endpoints = &spk_r_endpoint,260		.name_prefix = "rt1316-2"261	}262};263 264static const struct snd_soc_acpi_adr_device rt1316_1_group2_adr[] = {265	{266		.adr = 0x000131025D131601ull,267		.num_endpoints = 1,268		.endpoints = &spk_l_endpoint,269		.name_prefix = "rt1316-1"270	}271};272 273static const struct snd_soc_acpi_adr_device rt1316_2_group2_adr[] = {274	{275		.adr = 0x000230025D131601ull,276		.num_endpoints = 1,277		.endpoints = &spk_r_endpoint,278		.name_prefix = "rt1316-2"279	}280};281 282static const struct snd_soc_acpi_adr_device rt1316_3_single_adr[] = {283	{284		.adr = 0x000330025D131601ull,285		.num_endpoints = 1,286		.endpoints = &single_endpoint,287		.name_prefix = "rt1316-1"288	}289};290 291static const struct snd_soc_acpi_adr_device rt1318_1_single_adr[] = {292	{293		.adr = 0x000130025D131801,294		.num_endpoints = 1,295		.endpoints = &single_endpoint,296		.name_prefix = "rt1318-1"297	}298};299 300static const struct snd_soc_acpi_adr_device rt1318_1_group1_adr[] = {301	{302		.adr = 0x000130025D131801ull,303		.num_endpoints = 1,304		.endpoints = &spk_l_endpoint,305		.name_prefix = "rt1318-1"306	}307};308 309static const struct snd_soc_acpi_adr_device rt1318_2_group1_adr[] = {310	{311		.adr = 0x000232025D131801ull,312		.num_endpoints = 1,313		.endpoints = &spk_r_endpoint,314		.name_prefix = "rt1318-2"315	}316};317 318static const struct snd_soc_acpi_adr_device rt714_0_adr[] = {319	{320		.adr = 0x000030025D071401ull,321		.num_endpoints = 1,322		.endpoints = &single_endpoint,323		.name_prefix = "rt714"324	}325};326 327static const struct snd_soc_acpi_adr_device rt714_1_adr[] = {328	{329		.adr = 0x000130025D071401ull,330		.num_endpoints = 1,331		.endpoints = &single_endpoint,332		.name_prefix = "rt714"333	}334};335 336static const struct snd_soc_acpi_link_adr mtl_712_l0_1712_l3[] = {337	{338		.mask = BIT(0),339		.num_adr = ARRAY_SIZE(rt712_0_single_adr),340		.adr_d = rt712_0_single_adr,341	},342	{343		.mask = BIT(3),344		.num_adr = ARRAY_SIZE(rt1712_3_single_adr),345		.adr_d = rt1712_3_single_adr,346	},347	{}348};349 350static const struct snd_soc_acpi_link_adr mtl_712_l0[] = {351	{352		.mask = BIT(0),353		.num_adr = ARRAY_SIZE(rt712_0_single_adr),354		.adr_d = rt712_0_single_adr,355	},356	{}357};358 359static const struct snd_soc_acpi_endpoint cs42l43_endpoints[] = {360	{ /* Jack Playback Endpoint */361		.num = 0,362		.aggregated = 0,363		.group_position = 0,364		.group_id = 0,365	},366	{ /* DMIC Capture Endpoint */367		.num = 1,368		.aggregated = 0,369		.group_position = 0,370		.group_id = 0,371	},372	{ /* Jack Capture Endpoint */373		.num = 2,374		.aggregated = 0,375		.group_position = 0,376		.group_id = 0,377	},378	{ /* Speaker Playback Endpoint */379		.num = 3,380		.aggregated = 0,381		.group_position = 0,382		.group_id = 0,383	},384};385 386static const struct snd_soc_acpi_adr_device cs42l43_0_adr[] = {387	{388		.adr = 0x00003001FA424301ull,389		.num_endpoints = ARRAY_SIZE(cs42l43_endpoints),390		.endpoints = cs42l43_endpoints,391		.name_prefix = "cs42l43"392	}393};394 395static const struct snd_soc_acpi_adr_device cs35l56_1_adr[] = {396	{397		.adr = 0x00013701FA355601ull,398		.num_endpoints = 1,399		.endpoints = &spk_r_endpoint,400		.name_prefix = "AMP3"401	},402	{403		.adr = 0x00013601FA355601ull,404		.num_endpoints = 1,405		.endpoints = &spk_3_endpoint,406		.name_prefix = "AMP4"407	}408};409 410static const struct snd_soc_acpi_adr_device cs35l56_2_adr[] = {411	{412		.adr = 0x00023301FA355601ull,413		.num_endpoints = 1,414		.endpoints = &spk_l_endpoint,415		.name_prefix = "AMP1"416	},417	{418		.adr = 0x00023201FA355601ull,419		.num_endpoints = 1,420		.endpoints = &spk_2_endpoint,421		.name_prefix = "AMP2"422	}423};424 425static const struct snd_soc_acpi_adr_device cs35l56_2_r_adr[] = {426	{427		.adr = 0x00023201FA355601ull,428		.num_endpoints = 1,429		.endpoints = &spk_r_endpoint,430		.name_prefix = "AMP3"431	},432	{433		.adr = 0x00023301FA355601ull,434		.num_endpoints = 1,435		.endpoints = &spk_3_endpoint,436		.name_prefix = "AMP4"437	}438 439};440 441static const struct snd_soc_acpi_adr_device cs35l56_3_l_adr[] = {442	{443		.adr = 0x00033001fa355601ull,444		.num_endpoints = 1,445		.endpoints = &spk_l_endpoint,446		.name_prefix = "AMP1"447	},448	{449		.adr = 0x00033101fa355601ull,450		.num_endpoints = 1,451		.endpoints = &spk_2_endpoint,452		.name_prefix = "AMP2"453	}454};455 456static const struct snd_soc_acpi_link_adr rt5682_link2_max98373_link0[] = {457	/* Expected order: jack -> amp */458	{459		.mask = BIT(2),460		.num_adr = ARRAY_SIZE(rt5682_2_adr),461		.adr_d = rt5682_2_adr,462	},463	{464		.mask = BIT(0),465		.num_adr = ARRAY_SIZE(mx8373_0_adr),466		.adr_d = mx8373_0_adr,467	},468	{}469};470 471static const struct snd_soc_acpi_link_adr mtl_rvp[] = {472	{473		.mask = BIT(0),474		.num_adr = ARRAY_SIZE(rt711_sdca_0_adr),475		.adr_d = rt711_sdca_0_adr,476	},477	{}478};479 480static const struct snd_soc_acpi_link_adr mtl_rt722_only[] = {481	{482		.mask = BIT(0),483		.num_adr = ARRAY_SIZE(rt722_0_single_adr),484		.adr_d = rt722_0_single_adr,485	},486	{}487};488 489static const struct snd_soc_acpi_link_adr mtl_3_in_1_sdca[] = {490	{491		.mask = BIT(0),492		.num_adr = ARRAY_SIZE(rt711_sdca_0_adr),493		.adr_d = rt711_sdca_0_adr,494	},495	{496		.mask = BIT(2),497		.num_adr = ARRAY_SIZE(rt1316_2_group1_adr),498		.adr_d = rt1316_2_group1_adr,499	},500	{501		.mask = BIT(3),502		.num_adr = ARRAY_SIZE(rt1316_3_group1_adr),503		.adr_d = rt1316_3_group1_adr,504	},505	{506		.mask = BIT(1),507		.num_adr = ARRAY_SIZE(rt714_1_adr),508		.adr_d = rt714_1_adr,509	},510	{}511};512 513static const struct snd_soc_acpi_link_adr mtl_sdw_rt1318_l12_rt714_l0[] = {514	{515		.mask = BIT(1),516		.num_adr = ARRAY_SIZE(rt1318_1_group1_adr),517		.adr_d = rt1318_1_group1_adr,518	},519	{520		.mask = BIT(2),521		.num_adr = ARRAY_SIZE(rt1318_2_group1_adr),522		.adr_d = rt1318_2_group1_adr,523	},524	{525		.mask = BIT(0),526		.num_adr = ARRAY_SIZE(rt714_0_adr),527		.adr_d = rt714_0_adr,528	},529	{}530};531 532static const struct snd_soc_acpi_link_adr mtl_rt713_l0_rt1316_l12_rt1713_l3[] = {533	{534		.mask = BIT(0),535		.num_adr = ARRAY_SIZE(rt713_0_single_adr),536		.adr_d = rt713_0_single_adr,537	},538	{539		.mask = BIT(1),540		.num_adr = ARRAY_SIZE(rt1316_1_group2_adr),541		.adr_d = rt1316_1_group2_adr,542	},543	{544		.mask = BIT(2),545		.num_adr = ARRAY_SIZE(rt1316_2_group2_adr),546		.adr_d = rt1316_2_group2_adr,547	},548	{549		.mask = BIT(3),550		.num_adr = ARRAY_SIZE(rt1713_3_single_adr),551		.adr_d = rt1713_3_single_adr,552	},553	{}554};555 556static const struct snd_soc_acpi_link_adr mtl_rt713_l0_rt1318_l1_rt1713_l3[] = {557	{558		.mask = BIT(0),559		.num_adr = ARRAY_SIZE(rt713_0_single_adr),560		.adr_d = rt713_0_single_adr,561	},562	{563		.mask = BIT(1),564		.num_adr = ARRAY_SIZE(rt1318_1_single_adr),565		.adr_d = rt1318_1_single_adr,566	},567	{568		.mask = BIT(3),569		.num_adr = ARRAY_SIZE(rt1713_3_single_adr),570		.adr_d = rt1713_3_single_adr,571	},572	{}573};574 575static const struct snd_soc_acpi_link_adr mtl_rt713_l0_rt1318_l12_rt1713_l3[] = {576	{577		.mask = BIT(0),578		.num_adr = ARRAY_SIZE(rt713_0_single_adr),579		.adr_d = rt713_0_single_adr,580	},581	{582		.mask = BIT(1),583		.num_adr = ARRAY_SIZE(rt1318_1_group1_adr),584		.adr_d = rt1318_1_group1_adr,585	},586	{587		.mask = BIT(2),588		.num_adr = ARRAY_SIZE(rt1318_2_group1_adr),589		.adr_d = rt1318_2_group1_adr,590	},591	{592		.mask = BIT(3),593		.num_adr = ARRAY_SIZE(rt1713_3_single_adr),594		.adr_d = rt1713_3_single_adr,595	},596	{}597};598 599static const struct snd_soc_acpi_link_adr mtl_rt713_l0_rt1316_l12[] = {600	{601		.mask = BIT(0),602		.num_adr = ARRAY_SIZE(rt713_0_single_adr),603		.adr_d = rt713_0_single_adr,604	},605	{606		.mask = BIT(1),607		.num_adr = ARRAY_SIZE(rt1316_1_group2_adr),608		.adr_d = rt1316_1_group2_adr,609	},610	{611		.mask = BIT(2),612		.num_adr = ARRAY_SIZE(rt1316_2_group2_adr),613		.adr_d = rt1316_2_group2_adr,614	},615	{}616};617 618static const struct snd_soc_acpi_link_adr mtl_rt711_l0_rt1316_l3[] = {619	{620		.mask = BIT(0),621		.num_adr = ARRAY_SIZE(rt711_sdca_0_adr),622		.adr_d = rt711_sdca_0_adr,623	},624	{625		.mask = BIT(3),626		.num_adr = ARRAY_SIZE(rt1316_3_single_adr),627		.adr_d = rt1316_3_single_adr,628	},629	{}630};631 632static const struct snd_soc_acpi_adr_device mx8363_2_adr[] = {633	{634		.adr = 0x000230019F836300ull,635		.num_endpoints = 1,636		.endpoints = &spk_l_endpoint,637		.name_prefix = "Left"638	},639	{640		.adr = 0x000231019F836300ull,641		.num_endpoints = 1,642		.endpoints = &spk_r_endpoint,643		.name_prefix = "Right"644	}645};646 647static const struct snd_soc_acpi_adr_device cs42l42_0_adr[] = {648	{649		.adr = 0x00001001FA424200ull,650		.num_endpoints = 1,651		.endpoints = &single_endpoint,652		.name_prefix = "cs42l42"653	}654};655 656static const struct snd_soc_acpi_link_adr cs42l42_link0_max98363_link2[] = {657	/* Expected order: jack -> amp */658	{659		.mask = BIT(0),660		.num_adr = ARRAY_SIZE(cs42l42_0_adr),661		.adr_d = cs42l42_0_adr,662	},663	{664		.mask = BIT(2),665		.num_adr = ARRAY_SIZE(mx8363_2_adr),666		.adr_d = mx8363_2_adr,667	},668	{}669};670 671static const struct snd_soc_acpi_link_adr mtl_cs42l43_l0[] = {672	{673		.mask = BIT(0),674		.num_adr = ARRAY_SIZE(cs42l43_0_adr),675		.adr_d = cs42l43_0_adr,676	},677	{}678};679 680static const struct snd_soc_acpi_link_adr mtl_cs42l43_cs35l56[] = {681	{682		.mask = BIT(0),683		.num_adr = ARRAY_SIZE(cs42l43_0_adr),684		.adr_d = cs42l43_0_adr,685	},686	{687		.mask = BIT(1),688		.num_adr = ARRAY_SIZE(cs35l56_1_adr),689		.adr_d = cs35l56_1_adr,690	},691	{692		.mask = BIT(2),693		.num_adr = ARRAY_SIZE(cs35l56_2_adr),694		.adr_d = cs35l56_2_adr,695	},696	{}697};698 699static const struct snd_soc_acpi_link_adr cs42l43_link0_cs35l56_link2_link3[] = {700	/* Expected order: jack -> amp */701	{702		.mask = BIT(0),703		.num_adr = ARRAY_SIZE(cs42l43_0_adr),704		.adr_d = cs42l43_0_adr,705	},706	{707		.mask = BIT(2),708		.num_adr = ARRAY_SIZE(cs35l56_2_r_adr),709		.adr_d = cs35l56_2_r_adr,710	},711	{712		.mask = BIT(3),713		.num_adr = ARRAY_SIZE(cs35l56_3_l_adr),714		.adr_d = cs35l56_3_l_adr,715	},716	{}717};718 719/* this table is used when there is no I2S codec present */720struct snd_soc_acpi_mach snd_soc_acpi_intel_mtl_sdw_machines[] = {721	/* mockup tests need to be first */722	{723		.link_mask = GENMASK(3, 0),724		.links = sdw_mockup_headset_2amps_mic,725		.drv_name = "sof_sdw",726		.sof_tplg_filename = "sof-mtl-rt711-rt1308-rt715.tplg",727	},728	{729		.link_mask = BIT(0) | BIT(1) | BIT(3),730		.links = sdw_mockup_headset_1amp_mic,731		.drv_name = "sof_sdw",732		.sof_tplg_filename = "sof-mtl-rt711-rt1308-mono-rt715.tplg",733	},734	{735		.link_mask = GENMASK(2, 0),736		.links = sdw_mockup_mic_headset_1amp,737		.drv_name = "sof_sdw",738		.sof_tplg_filename = "sof-mtl-rt715-rt711-rt1308-mono.tplg",739	},740	{741		.link_mask = GENMASK(3, 0),742		.links = mtl_rt713_l0_rt1316_l12_rt1713_l3,743		.drv_name = "sof_sdw",744		.sof_tplg_filename = "sof-mtl-rt713-l0-rt1316-l12-rt1713-l3.tplg",745	},746	{747		.link_mask = GENMASK(3, 0),748		.links = mtl_rt713_l0_rt1318_l12_rt1713_l3,749		.drv_name = "sof_sdw",750		.sof_tplg_filename = "sof-mtl-rt713-l0-rt1318-l12-rt1713-l3.tplg",751	},752	{753		.link_mask = BIT(0) | BIT(1) | BIT(3),754		.links = mtl_rt713_l0_rt1318_l1_rt1713_l3,755		.drv_name = "sof_sdw",756		.sof_tplg_filename = "sof-mtl-rt713-l0-rt1318-l1-rt1713-l3.tplg",757	},758	{759		.link_mask = GENMASK(2, 0),760		.links = mtl_rt713_l0_rt1316_l12,761		.drv_name = "sof_sdw",762		.sof_tplg_filename = "sof-mtl-rt713-l0-rt1316-l12.tplg",763	},764	{765		.link_mask = BIT(3) | BIT(0),766		.links = mtl_712_l0_1712_l3,767		.drv_name = "sof_sdw",768		.sof_tplg_filename = "sof-mtl-rt712-l0-rt1712-l3.tplg",769	},770	{771		.link_mask = BIT(0),772		.links = mtl_712_l0,773		.drv_name = "sof_sdw",774		.sof_tplg_filename = "sof-mtl-rt712-l0.tplg",775	},776	{777		.link_mask = GENMASK(2, 0),778		.links = mtl_sdw_rt1318_l12_rt714_l0,779		.drv_name = "sof_sdw",780		.sof_tplg_filename = "sof-mtl-rt1318-l12-rt714-l0.tplg"781	},782	{783		.link_mask = BIT(0) | BIT(2) | BIT(3),784		.links = cs42l43_link0_cs35l56_link2_link3,785		.drv_name = "sof_sdw",786		.sof_tplg_filename = "sof-mtl-cs42l43-l0-cs35l56-l23.tplg",787	},788	{789		.link_mask = GENMASK(2, 0),790		.links = mtl_cs42l43_cs35l56,791		.drv_name = "sof_sdw",792		.sof_tplg_filename = "sof-mtl-cs42l43-l0-cs35l56-l12.tplg",793	},794	{795		.link_mask = BIT(0),796		.links = mtl_cs42l43_l0,797		.drv_name = "sof_sdw",798		.sof_tplg_filename = "sof-mtl-cs42l43-l0.tplg",799	},800	{801		.link_mask = GENMASK(3, 0),802		.links = mtl_3_in_1_sdca,803		.drv_name = "sof_sdw",804		.sof_tplg_filename = "sof-mtl-rt711-l0-rt1316-l23-rt714-l1.tplg",805	},806	{807		.link_mask = 0x9, /* 2 active links required */808		.links = mtl_rt711_l0_rt1316_l3,809		.drv_name = "sof_sdw",810		.sof_tplg_filename = "sof-mtl-rt711-l0-rt1316-l3.tplg",811	},812	{813		.link_mask = BIT(0),814		.links = mtl_rt722_only,815		.drv_name = "sof_sdw",816		.sof_tplg_filename = "sof-mtl-rt722-l0.tplg",817	},818	{819		.link_mask = BIT(0),820		.links = mtl_rvp,821		.drv_name = "sof_sdw",822		.sof_tplg_filename = "sof-mtl-rt711.tplg",823	},824	{825		.link_mask = BIT(0) | BIT(2),826		.links = rt5682_link2_max98373_link0,827		.drv_name = "sof_sdw",828		.sof_tplg_filename = "sof-mtl-sdw-rt5682-l2-max98373-l0.tplg",829	},830	{831		.link_mask = BIT(0) | BIT(2),832		.links = cs42l42_link0_max98363_link2,833		.drv_name = "sof_sdw",834		.sof_tplg_filename = "sof-mtl-sdw-cs42l42-l0-max98363-l2.tplg",835	},836	{},837};838EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_mtl_sdw_machines);839