File Index
Files and directories
Sign in
FILE

soc-acpi-intel-mtl-match.c

File preview with syntax highlighting.

linux-6.19.14/sound/soc/intel/common/soc-acpi-intel-mtl-match.c C
   1// SPDX-License-Identifier: GPL-2.0-only
   2/*
   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 <linux/soundwire/sdw_intel.h>
  10#include <sound/sdca.h>
  11#include <sound/soc-acpi.h>
  12#include <sound/soc-acpi-intel-match.h>
  13#include <sound/soc-acpi-intel-ssp-common.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
  18static const struct snd_soc_acpi_codecs mtl_rt5682_rt5682s_hp = {
  19	.num_codecs = 2,
  20	.codecs = {RT5682_ACPI_HID, RT5682S_ACPI_HID},
  21};
  22
  23static const struct snd_soc_acpi_codecs mtl_essx_83x6 = {
  24	.num_codecs = 3,
  25	.codecs = { "ESSX8316", "ESSX8326", "ESSX8336"},
  26};
  27
  28static const struct snd_soc_acpi_codecs mtl_lt6911_hdmi = {
  29	.num_codecs = 1,
  30	.codecs = {"INTC10B0"}
  31};
  32
  33struct snd_soc_acpi_mach snd_soc_acpi_intel_mtl_machines[] = {
  34	{
  35		.comp_ids = &mtl_essx_83x6,
  36		.drv_name = "mtl_es83x6_c1_h02",
  37		.machine_quirk = snd_soc_acpi_codec_list,
  38		.quirk_data = &mtl_lt6911_hdmi,
  39		.sof_tplg_filename = "sof-mtl-es83x6-ssp1-hdmi-ssp02.tplg",
  40	},
  41	{
  42		.comp_ids = &mtl_essx_83x6,
  43		.drv_name = "sof-essx8336",
  44		.sof_tplg_filename = "sof-mtl-es8336", /* the tplg suffix is added at run time */
  45		.tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_SSP_NUMBER |
  46					SND_SOC_ACPI_TPLG_INTEL_SSP_MSB |
  47					SND_SOC_ACPI_TPLG_INTEL_DMIC_NUMBER,
  48	},
  49	{
  50		.comp_ids = &mtl_rt5682_rt5682s_hp,
  51		.drv_name = "mtl_rt5682_c1_h02",
  52		.machine_quirk = snd_soc_acpi_codec_list,
  53		.quirk_data = &mtl_lt6911_hdmi,
  54		.sof_tplg_filename = "sof-mtl-rt5682-ssp1-hdmi-ssp02.tplg",
  55	},
  56	/* place boards for each headphone codec: sof driver will complete the
  57	 * tplg name and machine driver will detect the amp type
  58	 */
  59	{
  60		.id = CS42L42_ACPI_HID,
  61		.drv_name = "mtl_cs42l42_def",
  62		.sof_tplg_filename = "sof-mtl", /* the tplg suffix is added at run time */
  63		.tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_AMP_NAME |
  64					SND_SOC_ACPI_TPLG_INTEL_CODEC_NAME,
  65	},
  66	{
  67		.id = DA7219_ACPI_HID,
  68		.drv_name = "mtl_da7219_def",
  69		.sof_tplg_filename = "sof-mtl", /* the tplg suffix is added at run time */
  70		.tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_AMP_NAME |
  71					SND_SOC_ACPI_TPLG_INTEL_CODEC_NAME,
  72	},
  73	{
  74		.id = NAU8825_ACPI_HID,
  75		.drv_name = "mtl_nau8825_def",
  76		.sof_tplg_filename = "sof-mtl", /* the tplg suffix is added at run time */
  77		.tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_AMP_NAME |
  78					SND_SOC_ACPI_TPLG_INTEL_CODEC_NAME,
  79	},
  80	{
  81		.id = RT5650_ACPI_HID,
  82		.drv_name = "mtl_rt5682_def",
  83		.sof_tplg_filename = "sof-mtl", /* the tplg suffix is added at run time */
  84		.tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_AMP_NAME |
  85					SND_SOC_ACPI_TPLG_INTEL_CODEC_NAME,
  86	},
  87	{
  88		.comp_ids = &mtl_rt5682_rt5682s_hp,
  89		.drv_name = "mtl_rt5682_def",
  90		.sof_tplg_filename = "sof-mtl", /* the tplg suffix is added at run time */
  91		.tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_AMP_NAME |
  92					SND_SOC_ACPI_TPLG_INTEL_CODEC_NAME,
  93	},
  94	/* place amp-only boards in the end of table */
  95	{
  96		.id = "INTC10B0",
  97		.drv_name = "mtl_lt6911_hdmi_ssp",
  98		.sof_tplg_filename = "sof-mtl-hdmi-ssp02.tplg",
  99	},
 100	{},
 101};
 102EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_mtl_machines);
 103
 104static const struct snd_soc_acpi_endpoint single_endpoint = {
 105	.num = 0,
 106	.aggregated = 0,
 107	.group_position = 0,
 108	.group_id = 0,
 109};
 110
 111static const struct snd_soc_acpi_endpoint spk_l_endpoint = {
 112	.num = 0,
 113	.aggregated = 1,
 114	.group_position = 0,
 115	.group_id = 1,
 116};
 117
 118static const struct snd_soc_acpi_endpoint spk_r_endpoint = {
 119	.num = 0,
 120	.aggregated = 1,
 121	.group_position = 1,
 122	.group_id = 1,
 123};
 124
 125static const struct snd_soc_acpi_endpoint rt712_endpoints[] = {
 126	{
 127		.num = 0,
 128		.aggregated = 0,
 129		.group_position = 0,
 130		.group_id = 0,
 131	},
 132	{
 133		.num = 1,
 134		.aggregated = 0,
 135		.group_position = 0,
 136		.group_id = 0,
 137	},
 138};
 139
 140static const struct snd_soc_acpi_endpoint rt712_vb_endpoints[] = {
 141	{
 142		.num = 0,
 143		.aggregated = 0,
 144		.group_position = 0,
 145		.group_id = 0,
 146	},
 147	{
 148		.num = 1,
 149		.aggregated = 0,
 150		.group_position = 0,
 151		.group_id = 0,
 152	},
 153	{
 154		.num = 2,
 155		.aggregated = 0,
 156		.group_position = 0,
 157		.group_id = 0,
 158	},
 159};
 160
 161/*
 162 * RT722 is a multi-function codec, three endpoints are created for
 163 * its headset, amp and dmic functions.
 164 */
 165static const struct snd_soc_acpi_endpoint rt722_endpoints[] = {
 166	{
 167		.num = 0,
 168		.aggregated = 0,
 169		.group_position = 0,
 170		.group_id = 0,
 171	},
 172	{
 173		.num = 1,
 174		.aggregated = 0,
 175		.group_position = 0,
 176		.group_id = 0,
 177	},
 178	{
 179		.num = 2,
 180		.aggregated = 0,
 181		.group_position = 0,
 182		.group_id = 0,
 183	},
 184};
 185
 186static const struct snd_soc_acpi_endpoint spk_2_endpoint = {
 187	.num = 0,
 188	.aggregated = 1,
 189	.group_position = 2,
 190	.group_id = 1,
 191};
 192
 193static const struct snd_soc_acpi_endpoint spk_3_endpoint = {
 194	.num = 0,
 195	.aggregated = 1,
 196	.group_position = 3,
 197	.group_id = 1,
 198};
 199
 200static const struct snd_soc_acpi_adr_device rt711_sdca_0_adr[] = {
 201	{
 202		.adr = 0x000030025D071101ull,
 203		.num_endpoints = 1,
 204		.endpoints = &single_endpoint,
 205		.name_prefix = "rt711"
 206	}
 207};
 208
 209static const struct snd_soc_acpi_adr_device rt712_0_single_adr[] = {
 210	{
 211		.adr = 0x000030025D071201ull,
 212		.num_endpoints = ARRAY_SIZE(rt712_endpoints),
 213		.endpoints = rt712_endpoints,
 214		.name_prefix = "rt712"
 215	}
 216};
 217
 218static const struct snd_soc_acpi_adr_device rt712_vb_0_single_adr[] = {
 219	{
 220		.adr = 0x000030025D071201ull,
 221		.num_endpoints = ARRAY_SIZE(rt712_vb_endpoints),
 222		.endpoints = rt712_vb_endpoints,
 223		.name_prefix = "rt712"
 224	}
 225};
 226
 227static const struct snd_soc_acpi_adr_device rt1712_3_single_adr[] = {
 228	{
 229		.adr = 0x000330025D171201ull,
 230		.num_endpoints = 1,
 231		.endpoints = &single_endpoint,
 232		.name_prefix = "rt712-dmic"
 233	}
 234};
 235
 236static const struct snd_soc_acpi_adr_device rt722_0_single_adr[] = {
 237	{
 238		.adr = 0x000030025d072201ull,
 239		.num_endpoints = ARRAY_SIZE(rt722_endpoints),
 240		.endpoints = rt722_endpoints,
 241		.name_prefix = "rt722"
 242	}
 243};
 244
 245static const struct snd_soc_acpi_adr_device rt713_0_single_adr[] = {
 246	{
 247		.adr = 0x000031025D071301ull,
 248		.num_endpoints = 1,
 249		.endpoints = &single_endpoint,
 250		.name_prefix = "rt713"
 251	}
 252};
 253
 254static const struct snd_soc_acpi_adr_device rt1713_3_single_adr[] = {
 255	{
 256		.adr = 0x000331025D171301ull,
 257		.num_endpoints = 1,
 258		.endpoints = &single_endpoint,
 259		.name_prefix = "rt713-dmic"
 260	}
 261};
 262
 263static const struct snd_soc_acpi_adr_device mx8373_0_adr[] = {
 264	{
 265		.adr = 0x000023019F837300ull,
 266		.num_endpoints = 1,
 267		.endpoints = &spk_l_endpoint,
 268		.name_prefix = "Left"
 269	},
 270	{
 271		.adr = 0x000027019F837300ull,
 272		.num_endpoints = 1,
 273		.endpoints = &spk_r_endpoint,
 274		.name_prefix = "Right"
 275	}
 276};
 277
 278static const struct snd_soc_acpi_adr_device rt5682_2_adr[] = {
 279	{
 280		.adr = 0x000221025D568200ull,
 281		.num_endpoints = 1,
 282		.endpoints = &single_endpoint,
 283		.name_prefix = "rt5682"
 284	}
 285};
 286
 287static const struct snd_soc_acpi_adr_device rt1316_2_group1_adr[] = {
 288	{
 289		.adr = 0x000230025D131601ull,
 290		.num_endpoints = 1,
 291		.endpoints = &spk_l_endpoint,
 292		.name_prefix = "rt1316-1"
 293	}
 294};
 295
 296static const struct snd_soc_acpi_adr_device rt1316_3_group1_adr[] = {
 297	{
 298		.adr = 0x000331025D131601ull,
 299		.num_endpoints = 1,
 300		.endpoints = &spk_r_endpoint,
 301		.name_prefix = "rt1316-2"
 302	}
 303};
 304
 305static const struct snd_soc_acpi_adr_device rt1316_1_group2_adr[] = {
 306	{
 307		.adr = 0x000131025D131601ull,
 308		.num_endpoints = 1,
 309		.endpoints = &spk_l_endpoint,
 310		.name_prefix = "rt1316-1"
 311	}
 312};
 313
 314static const struct snd_soc_acpi_adr_device rt1316_2_group2_adr[] = {
 315	{
 316		.adr = 0x000230025D131601ull,
 317		.num_endpoints = 1,
 318		.endpoints = &spk_r_endpoint,
 319		.name_prefix = "rt1316-2"
 320	}
 321};
 322
 323static const struct snd_soc_acpi_adr_device rt1316_3_single_adr[] = {
 324	{
 325		.adr = 0x000330025D131601ull,
 326		.num_endpoints = 1,
 327		.endpoints = &single_endpoint,
 328		.name_prefix = "rt1316-1"
 329	}
 330};
 331
 332static const struct snd_soc_acpi_adr_device rt1318_1_single_adr[] = {
 333	{
 334		.adr = 0x000130025D131801ull,
 335		.num_endpoints = 1,
 336		.endpoints = &single_endpoint,
 337		.name_prefix = "rt1318-1"
 338	}
 339};
 340
 341static const struct snd_soc_acpi_adr_device rt1318_1_group1_adr[] = {
 342	{
 343		.adr = 0x000130025D131801ull,
 344		.num_endpoints = 1,
 345		.endpoints = &spk_l_endpoint,
 346		.name_prefix = "rt1318-1"
 347	}
 348};
 349
 350static const struct snd_soc_acpi_adr_device rt1318_2_group1_adr[] = {
 351	{
 352		.adr = 0x000232025D131801ull,
 353		.num_endpoints = 1,
 354		.endpoints = &spk_r_endpoint,
 355		.name_prefix = "rt1318-2"
 356	}
 357};
 358
 359static const struct snd_soc_acpi_adr_device rt714_0_adr[] = {
 360	{
 361		.adr = 0x000030025D071401ull,
 362		.num_endpoints = 1,
 363		.endpoints = &single_endpoint,
 364		.name_prefix = "rt714"
 365	}
 366};
 367
 368static const struct snd_soc_acpi_adr_device rt714_1_adr[] = {
 369	{
 370		.adr = 0x000130025D071401ull,
 371		.num_endpoints = 1,
 372		.endpoints = &single_endpoint,
 373		.name_prefix = "rt714"
 374	}
 375};
 376
 377static const struct snd_soc_acpi_link_adr mtl_712_l0_1712_l3[] = {
 378	{
 379		.mask = BIT(0),
 380		.num_adr = ARRAY_SIZE(rt712_0_single_adr),
 381		.adr_d = rt712_0_single_adr,
 382	},
 383	{
 384		.mask = BIT(3),
 385		.num_adr = ARRAY_SIZE(rt1712_3_single_adr),
 386		.adr_d = rt1712_3_single_adr,
 387	},
 388	{}
 389};
 390
 391static const struct snd_soc_acpi_link_adr mtl_712_l0[] = {
 392	{
 393		.mask = BIT(0),
 394		.num_adr = ARRAY_SIZE(rt712_0_single_adr),
 395		.adr_d = rt712_0_single_adr,
 396	},
 397	{}
 398};
 399
 400static const struct snd_soc_acpi_link_adr mtl_712_vb_l0[] = {
 401	{
 402		.mask = BIT(0),
 403		.num_adr = ARRAY_SIZE(rt712_vb_0_single_adr),
 404		.adr_d = rt712_vb_0_single_adr,
 405	},
 406	{}
 407};
 408
 409static const struct snd_soc_acpi_endpoint cs42l43_endpoints[] = {
 410	{ /* Jack Playback Endpoint */
 411		.num = 0,
 412		.aggregated = 0,
 413		.group_position = 0,
 414		.group_id = 0,
 415	},
 416	{ /* DMIC Capture Endpoint */
 417		.num = 1,
 418		.aggregated = 0,
 419		.group_position = 0,
 420		.group_id = 0,
 421	},
 422	{ /* Jack Capture Endpoint */
 423		.num = 2,
 424		.aggregated = 0,
 425		.group_position = 0,
 426		.group_id = 0,
 427	},
 428	{ /* Speaker Playback Endpoint */
 429		.num = 3,
 430		.aggregated = 0,
 431		.group_position = 0,
 432		.group_id = 0,
 433	},
 434};
 435
 436static const struct snd_soc_acpi_adr_device cs42l43_0_adr[] = {
 437	{
 438		.adr = 0x00003001FA424301ull,
 439		.num_endpoints = ARRAY_SIZE(cs42l43_endpoints),
 440		.endpoints = cs42l43_endpoints,
 441		.name_prefix = "cs42l43"
 442	}
 443};
 444
 445/* CS42L43 - speaker DAI aggregated with 4 amps */
 446static const struct snd_soc_acpi_endpoint cs42l43_4amp_spkagg_endpoints[] = {
 447	{ /* Jack Playback Endpoint */
 448		.num = 0,
 449		.aggregated = 0,
 450		.group_position = 0,
 451		.group_id = 0,
 452	},
 453	{ /* DMIC Capture Endpoint */
 454		.num = 1,
 455		.aggregated = 0,
 456		.group_position = 0,
 457		.group_id = 0,
 458	},
 459	{ /* Jack Capture Endpoint */
 460		.num = 2,
 461		.aggregated = 0,
 462		.group_position = 0,
 463		.group_id = 0,
 464	},
 465	{ /* Speaker Playback Endpoint */
 466		.num = 3,
 467		.aggregated = 1,
 468		.group_position = 4,
 469		.group_id = 1,
 470	},
 471};
 472
 473/* CS42L43 on link3 aggregated with 4 amps */
 474static const struct snd_soc_acpi_adr_device cs42l43_l3_4amp_spkagg_adr[] = {
 475	{
 476		.adr = 0x00033001FA424301ull,
 477		.num_endpoints = ARRAY_SIZE(cs42l43_4amp_spkagg_endpoints),
 478		.endpoints = cs42l43_4amp_spkagg_endpoints,
 479		.name_prefix = "cs42l43"
 480	}
 481};
 482
 483static const struct snd_soc_acpi_endpoint cs35l56_l_fb_endpoints[] = {
 484	{ /* Speaker Playback Endpoint */
 485		.num = 0,
 486		.aggregated = 1,
 487		.group_position = 0,
 488		.group_id = 1,
 489	},
 490	{ /* Feedback Capture Endpoint */
 491		.num = 1,
 492		.aggregated = 1,
 493		.group_position = 0,
 494		.group_id = 2,
 495	},
 496};
 497
 498static const struct snd_soc_acpi_endpoint cs35l56_r_fb_endpoints[] = {
 499	{ /* Speaker Playback Endpoint */
 500		.num = 0,
 501		.aggregated = 1,
 502		.group_position = 1,
 503		.group_id = 1,
 504	},
 505	{ /* Feedback Capture Endpoint */
 506		.num = 1,
 507		.aggregated = 1,
 508		.group_position = 1,
 509		.group_id = 2,
 510	},
 511};
 512
 513static const struct snd_soc_acpi_endpoint cs35l56_2_fb_endpoints[] = {
 514	{ /* Speaker Playback Endpoint */
 515		.num = 0,
 516		.aggregated = 1,
 517		.group_position = 2,
 518		.group_id = 1,
 519	},
 520	{ /* Feedback Capture Endpoint */
 521		.num = 1,
 522		.aggregated = 1,
 523		.group_position = 2,
 524		.group_id = 2,
 525	},
 526};
 527
 528static const struct snd_soc_acpi_endpoint cs35l56_3_fb_endpoints[] = {
 529	{ /* Speaker Playback Endpoint */
 530		.num = 0,
 531		.aggregated = 1,
 532		.group_position = 3,
 533		.group_id = 1,
 534	},
 535	{ /* Feedback Capture Endpoint */
 536		.num = 1,
 537		.aggregated = 1,
 538		.group_position = 3,
 539		.group_id = 2,
 540	},
 541};
 542
 543static const struct snd_soc_acpi_endpoint cs35l56_4_fb_endpoints[] = {
 544	{ /* Speaker Playback Endpoint */
 545		.num = 0,
 546		.aggregated = 1,
 547		.group_position = 4,
 548		.group_id = 1,
 549	},
 550	{ /* Feedback Capture Endpoint */
 551		.num = 1,
 552		.aggregated = 1,
 553		.group_position = 4,
 554		.group_id = 2,
 555	},
 556};
 557
 558static const struct snd_soc_acpi_endpoint cs35l56_5_fb_endpoints[] = {
 559	{ /* Speaker Playback Endpoint */
 560		.num = 0,
 561		.aggregated = 1,
 562		.group_position = 5,
 563		.group_id = 1,
 564	},
 565	{ /* Feedback Capture Endpoint */
 566		.num = 1,
 567		.aggregated = 1,
 568		.group_position = 5,
 569		.group_id = 2,
 570	},
 571};
 572
 573static const struct snd_soc_acpi_endpoint cs35l56_6_fb_endpoints[] = {
 574	{ /* Speaker Playback Endpoint */
 575		.num = 0,
 576		.aggregated = 1,
 577		.group_position = 6,
 578		.group_id = 1,
 579	},
 580	{ /* Feedback Capture Endpoint */
 581		.num = 1,
 582		.aggregated = 1,
 583		.group_position = 6,
 584		.group_id = 2,
 585	},
 586};
 587
 588static const struct snd_soc_acpi_endpoint cs35l56_7_fb_endpoints[] = {
 589	{ /* Speaker Playback Endpoint */
 590		.num = 0,
 591		.aggregated = 1,
 592		.group_position = 7,
 593		.group_id = 1,
 594	},
 595	{ /* Feedback Capture Endpoint */
 596		.num = 1,
 597		.aggregated = 1,
 598		.group_position = 7,
 599		.group_id = 2,
 600	},
 601};
 602
 603static const struct snd_soc_acpi_adr_device cs35l56_0_adr[] = {
 604	{
 605		.adr = 0x00003301FA355601ull,
 606		.num_endpoints = 1,
 607		.endpoints = &spk_l_endpoint,
 608		.name_prefix = "AMP1"
 609	},
 610	{
 611		.adr = 0x00003201FA355601ull,
 612		.num_endpoints = 1,
 613		.endpoints = &spk_2_endpoint,
 614		.name_prefix = "AMP2"
 615	}
 616};
 617
 618static const struct snd_soc_acpi_adr_device cs35l56_1_adr[] = {
 619	{
 620		.adr = 0x00013701FA355601ull,
 621		.num_endpoints = 1,
 622		.endpoints = &spk_r_endpoint,
 623		.name_prefix = "AMP3"
 624	},
 625	{
 626		.adr = 0x00013601FA355601ull,
 627		.num_endpoints = 1,
 628		.endpoints = &spk_3_endpoint,
 629		.name_prefix = "AMP4"
 630	}
 631};
 632
 633static const struct snd_soc_acpi_adr_device cs35l56_2_adr[] = {
 634	{
 635		.adr = 0x00023301FA355601ull,
 636		.num_endpoints = 1,
 637		.endpoints = &spk_l_endpoint,
 638		.name_prefix = "AMP1"
 639	},
 640	{
 641		.adr = 0x00023201FA355601ull,
 642		.num_endpoints = 1,
 643		.endpoints = &spk_2_endpoint,
 644		.name_prefix = "AMP2"
 645	}
 646};
 647
 648static const struct snd_soc_acpi_adr_device cs35l56_0_fb_adr[] = {
 649	{
 650		.adr = 0x00003301FA355601ull,
 651		.num_endpoints = ARRAY_SIZE(cs35l56_l_fb_endpoints),
 652		.endpoints = cs35l56_l_fb_endpoints,
 653		.name_prefix = "AMP1"
 654	},
 655	{
 656		.adr = 0x00003201FA355601ull,
 657		.num_endpoints = ARRAY_SIZE(cs35l56_2_fb_endpoints),
 658		.endpoints = cs35l56_2_fb_endpoints,
 659		.name_prefix = "AMP2"
 660	},
 661	{
 662		.adr = 0x00003101FA355601ull,
 663		.num_endpoints = ARRAY_SIZE(cs35l56_4_fb_endpoints),
 664		.endpoints = cs35l56_4_fb_endpoints,
 665		.name_prefix = "AMP3"
 666	},
 667	{
 668		.adr = 0x00003001FA355601ull,
 669		.num_endpoints = ARRAY_SIZE(cs35l56_6_fb_endpoints),
 670		.endpoints = cs35l56_6_fb_endpoints,
 671		.name_prefix = "AMP4"
 672	},
 673};
 674
 675static const struct snd_soc_acpi_adr_device cs35l56_1_fb_adr[] = {
 676	{
 677		.adr = 0x00013701FA355601ull,
 678		.num_endpoints = ARRAY_SIZE(cs35l56_r_fb_endpoints),
 679		.endpoints = cs35l56_r_fb_endpoints,
 680		.name_prefix = "AMP8"
 681	},
 682	{
 683		.adr = 0x00013601FA355601ull,
 684		.num_endpoints = ARRAY_SIZE(cs35l56_3_fb_endpoints),
 685		.endpoints = cs35l56_3_fb_endpoints,
 686		.name_prefix = "AMP7"
 687	},
 688	{
 689		.adr = 0x00013501FA355601ull,
 690		.num_endpoints = ARRAY_SIZE(cs35l56_5_fb_endpoints),
 691		.endpoints = cs35l56_5_fb_endpoints,
 692		.name_prefix = "AMP6"
 693	},
 694	{
 695		.adr = 0x00013401FA355601ull,
 696		.num_endpoints = ARRAY_SIZE(cs35l56_7_fb_endpoints),
 697		.endpoints = cs35l56_7_fb_endpoints,
 698		.name_prefix = "AMP5"
 699	},
 700};
 701
 702static const struct snd_soc_acpi_adr_device cs35l56_6amp_1_fb_adr[] = {
 703	{
 704		.adr = 0x00013701FA355601ull,
 705		.num_endpoints = ARRAY_SIZE(cs35l56_r_fb_endpoints),
 706		.endpoints = cs35l56_r_fb_endpoints,
 707		.name_prefix = "AMP6"
 708	},
 709	{
 710		.adr = 0x00013601FA355601ull,
 711		.num_endpoints = ARRAY_SIZE(cs35l56_3_fb_endpoints),
 712		.endpoints = cs35l56_3_fb_endpoints,
 713		.name_prefix = "AMP5"
 714	},
 715	{
 716		.adr = 0x00013501FA355601ull,
 717		.num_endpoints = ARRAY_SIZE(cs35l56_5_fb_endpoints),
 718		.endpoints = cs35l56_5_fb_endpoints,
 719		.name_prefix = "AMP4"
 720	},
 721};
 722
 723static const struct snd_soc_acpi_adr_device cs35l63_6amp_3_fb_adr[] = {
 724	{
 725		.adr = 0x00033001FA356301ull,
 726		.num_endpoints = ARRAY_SIZE(cs35l56_l_fb_endpoints),
 727		.endpoints = cs35l56_l_fb_endpoints,
 728		.name_prefix = "AMP1"
 729	},
 730	{
 731		.adr = 0x00033201FA356301ull,
 732		.num_endpoints = ARRAY_SIZE(cs35l56_2_fb_endpoints),
 733		.endpoints = cs35l56_2_fb_endpoints,
 734		.name_prefix = "AMP3"
 735	},
 736	{
 737		.adr = 0x00033401FA356301ull,
 738		.num_endpoints = ARRAY_SIZE(cs35l56_4_fb_endpoints),
 739		.endpoints = cs35l56_4_fb_endpoints,
 740		.name_prefix = "AMP5"
 741	},
 742};
 743
 744static const struct snd_soc_acpi_adr_device cs35l63_6amp_2_fb_adr[] = {
 745	{
 746		.adr = 0x00023101FA356301ull,
 747		.num_endpoints = ARRAY_SIZE(cs35l56_r_fb_endpoints),
 748		.endpoints = cs35l56_r_fb_endpoints,
 749		.name_prefix = "AMP2"
 750	},
 751	{
 752		.adr = 0x00023301FA356301ull,
 753		.num_endpoints = ARRAY_SIZE(cs35l56_3_fb_endpoints),
 754		.endpoints = cs35l56_3_fb_endpoints,
 755		.name_prefix = "AMP4"
 756	},
 757	{
 758		.adr = 0x00023501FA356301ull,
 759		.num_endpoints = ARRAY_SIZE(cs35l56_5_fb_endpoints),
 760		.endpoints = cs35l56_5_fb_endpoints,
 761		.name_prefix = "AMP6"
 762	},
 763};
 764
 765static const struct snd_soc_acpi_adr_device cs35l56_2_r_adr[] = {
 766	{
 767		.adr = 0x00023201FA355601ull,
 768		.num_endpoints = ARRAY_SIZE(cs35l56_r_fb_endpoints),
 769		.endpoints = cs35l56_r_fb_endpoints,
 770		.name_prefix = "AMP3"
 771	},
 772	{
 773		.adr = 0x00023301FA355601ull,
 774		.num_endpoints = ARRAY_SIZE(cs35l56_3_fb_endpoints),
 775		.endpoints = cs35l56_3_fb_endpoints,
 776		.name_prefix = "AMP4"
 777	}
 778
 779};
 780
 781static const struct snd_soc_acpi_adr_device cs35l56_3_l_adr[] = {
 782	{
 783		.adr = 0x00033001fa355601ull,
 784		.num_endpoints = ARRAY_SIZE(cs35l56_l_fb_endpoints),
 785		.endpoints = cs35l56_l_fb_endpoints,
 786		.name_prefix = "AMP1"
 787	},
 788	{
 789		.adr = 0x00033101fa355601ull,
 790		.num_endpoints = ARRAY_SIZE(cs35l56_2_fb_endpoints),
 791		.endpoints = cs35l56_2_fb_endpoints,
 792		.name_prefix = "AMP2"
 793	}
 794};
 795
 796static const struct snd_soc_acpi_adr_device cs35l63_1_fb_adr[] = {
 797	{
 798		.adr = 0x00013001FA356301ull,
 799		.num_endpoints = ARRAY_SIZE(cs35l56_l_fb_endpoints),
 800		.endpoints = cs35l56_l_fb_endpoints,
 801		.name_prefix = "AMP1"
 802	},
 803};
 804
 805static const struct snd_soc_acpi_adr_device cs35l63_3_fb_adr[] = {
 806	{
 807		.adr = 0x00033101FA356301ull,
 808		.num_endpoints = ARRAY_SIZE(cs35l56_r_fb_endpoints),
 809		.endpoints = cs35l56_r_fb_endpoints,
 810		.name_prefix = "AMP2"
 811	},
 812};
 813
 814static const struct snd_soc_acpi_link_adr rt5682_link2_max98373_link0[] = {
 815	/* Expected order: jack -> amp */
 816	{
 817		.mask = BIT(2),
 818		.num_adr = ARRAY_SIZE(rt5682_2_adr),
 819		.adr_d = rt5682_2_adr,
 820	},
 821	{
 822		.mask = BIT(0),
 823		.num_adr = ARRAY_SIZE(mx8373_0_adr),
 824		.adr_d = mx8373_0_adr,
 825	},
 826	{}
 827};
 828
 829static const struct snd_soc_acpi_link_adr mtl_rvp[] = {
 830	{
 831		.mask = BIT(0),
 832		.num_adr = ARRAY_SIZE(rt711_sdca_0_adr),
 833		.adr_d = rt711_sdca_0_adr,
 834	},
 835	{}
 836};
 837
 838static const struct snd_soc_acpi_link_adr mtl_rt722_only[] = {
 839	{
 840		.mask = BIT(0),
 841		.num_adr = ARRAY_SIZE(rt722_0_single_adr),
 842		.adr_d = rt722_0_single_adr,
 843	},
 844	{}
 845};
 846
 847static const struct snd_soc_acpi_link_adr mtl_3_in_1_sdca[] = {
 848	{
 849		.mask = BIT(0),
 850		.num_adr = ARRAY_SIZE(rt711_sdca_0_adr),
 851		.adr_d = rt711_sdca_0_adr,
 852	},
 853	{
 854		.mask = BIT(2),
 855		.num_adr = ARRAY_SIZE(rt1316_2_group1_adr),
 856		.adr_d = rt1316_2_group1_adr,
 857	},
 858	{
 859		.mask = BIT(3),
 860		.num_adr = ARRAY_SIZE(rt1316_3_group1_adr),
 861		.adr_d = rt1316_3_group1_adr,
 862	},
 863	{
 864		.mask = BIT(1),
 865		.num_adr = ARRAY_SIZE(rt714_1_adr),
 866		.adr_d = rt714_1_adr,
 867	},
 868	{}
 869};
 870
 871static const struct snd_soc_acpi_link_adr mtl_sdw_rt1318_l12_rt714_l0[] = {
 872	{
 873		.mask = BIT(1),
 874		.num_adr = ARRAY_SIZE(rt1318_1_group1_adr),
 875		.adr_d = rt1318_1_group1_adr,
 876	},
 877	{
 878		.mask = BIT(2),
 879		.num_adr = ARRAY_SIZE(rt1318_2_group1_adr),
 880		.adr_d = rt1318_2_group1_adr,
 881	},
 882	{
 883		.mask = BIT(0),
 884		.num_adr = ARRAY_SIZE(rt714_0_adr),
 885		.adr_d = rt714_0_adr,
 886	},
 887	{}
 888};
 889
 890static const struct snd_soc_acpi_link_adr mtl_rt713_l0_rt1316_l12_rt1713_l3[] = {
 891	{
 892		.mask = BIT(0),
 893		.num_adr = ARRAY_SIZE(rt713_0_single_adr),
 894		.adr_d = rt713_0_single_adr,
 895	},
 896	{
 897		.mask = BIT(1),
 898		.num_adr = ARRAY_SIZE(rt1316_1_group2_adr),
 899		.adr_d = rt1316_1_group2_adr,
 900	},
 901	{
 902		.mask = BIT(2),
 903		.num_adr = ARRAY_SIZE(rt1316_2_group2_adr),
 904		.adr_d = rt1316_2_group2_adr,
 905	},
 906	{
 907		.mask = BIT(3),
 908		.num_adr = ARRAY_SIZE(rt1713_3_single_adr),
 909		.adr_d = rt1713_3_single_adr,
 910	},
 911	{}
 912};
 913
 914static const struct snd_soc_acpi_link_adr mtl_rt713_l0_rt1318_l1_rt1713_l3[] = {
 915	{
 916		.mask = BIT(0),
 917		.num_adr = ARRAY_SIZE(rt713_0_single_adr),
 918		.adr_d = rt713_0_single_adr,
 919	},
 920	{
 921		.mask = BIT(1),
 922		.num_adr = ARRAY_SIZE(rt1318_1_single_adr),
 923		.adr_d = rt1318_1_single_adr,
 924	},
 925	{
 926		.mask = BIT(3),
 927		.num_adr = ARRAY_SIZE(rt1713_3_single_adr),
 928		.adr_d = rt1713_3_single_adr,
 929	},
 930	{}
 931};
 932
 933static const struct snd_soc_acpi_link_adr mtl_rt713_l0_rt1318_l12_rt1713_l3[] = {
 934	{
 935		.mask = BIT(0),
 936		.num_adr = ARRAY_SIZE(rt713_0_single_adr),
 937		.adr_d = rt713_0_single_adr,
 938	},
 939	{
 940		.mask = BIT(1),
 941		.num_adr = ARRAY_SIZE(rt1318_1_group1_adr),
 942		.adr_d = rt1318_1_group1_adr,
 943	},
 944	{
 945		.mask = BIT(2),
 946		.num_adr = ARRAY_SIZE(rt1318_2_group1_adr),
 947		.adr_d = rt1318_2_group1_adr,
 948	},
 949	{
 950		.mask = BIT(3),
 951		.num_adr = ARRAY_SIZE(rt1713_3_single_adr),
 952		.adr_d = rt1713_3_single_adr,
 953	},
 954	{}
 955};
 956
 957static const struct snd_soc_acpi_link_adr mtl_rt713_l0_rt1316_l12[] = {
 958	{
 959		.mask = BIT(0),
 960		.num_adr = ARRAY_SIZE(rt713_0_single_adr),
 961		.adr_d = rt713_0_single_adr,
 962	},
 963	{
 964		.mask = BIT(1),
 965		.num_adr = ARRAY_SIZE(rt1316_1_group2_adr),
 966		.adr_d = rt1316_1_group2_adr,
 967	},
 968	{
 969		.mask = BIT(2),
 970		.num_adr = ARRAY_SIZE(rt1316_2_group2_adr),
 971		.adr_d = rt1316_2_group2_adr,
 972	},
 973	{}
 974};
 975
 976static const struct snd_soc_acpi_link_adr mtl_rt711_l0_rt1316_l3[] = {
 977	{
 978		.mask = BIT(0),
 979		.num_adr = ARRAY_SIZE(rt711_sdca_0_adr),
 980		.adr_d = rt711_sdca_0_adr,
 981	},
 982	{
 983		.mask = BIT(3),
 984		.num_adr = ARRAY_SIZE(rt1316_3_single_adr),
 985		.adr_d = rt1316_3_single_adr,
 986	},
 987	{}
 988};
 989
 990static const struct snd_soc_acpi_adr_device mx8363_2_adr[] = {
 991	{
 992		.adr = 0x000230019F836300ull,
 993		.num_endpoints = 1,
 994		.endpoints = &spk_l_endpoint,
 995		.name_prefix = "Left"
 996	},
 997	{
 998		.adr = 0x000231019F836300ull,
 999		.num_endpoints = 1,
1000		.endpoints = &spk_r_endpoint,
1001		.name_prefix = "Right"
1002	}
1003};
1004
1005static const struct snd_soc_acpi_adr_device cs42l42_0_adr[] = {
1006	{
1007		.adr = 0x00001001FA424200ull,
1008		.num_endpoints = 1,
1009		.endpoints = &single_endpoint,
1010		.name_prefix = "cs42l42"
1011	}
1012};
1013
1014static const struct snd_soc_acpi_adr_device tas2783_0_adr[] = {
1015	{
1016		.adr = 0x0000380102000001ull,
1017		.num_endpoints = 1,
1018		.endpoints = &spk_l_endpoint,
1019		.name_prefix = "tas2783-1"
1020	},
1021	{
1022		.adr = 0x0000390102000001ull,
1023		.num_endpoints = 1,
1024		.endpoints = &spk_r_endpoint,
1025		.name_prefix = "tas2783-2"
1026	}
1027};
1028
1029static const struct snd_soc_acpi_link_adr tas2783_link0[] = {
1030	{
1031		.mask = BIT(0),
1032		.num_adr = ARRAY_SIZE(tas2783_0_adr),
1033		.adr_d = tas2783_0_adr,
1034	},
1035	{}
1036};
1037
1038static const struct snd_soc_acpi_link_adr cs42l42_link0_max98363_link2[] = {
1039	/* Expected order: jack -> amp */
1040	{
1041		.mask = BIT(0),
1042		.num_adr = ARRAY_SIZE(cs42l42_0_adr),
1043		.adr_d = cs42l42_0_adr,
1044	},
1045	{
1046		.mask = BIT(2),
1047		.num_adr = ARRAY_SIZE(mx8363_2_adr),
1048		.adr_d = mx8363_2_adr,
1049	},
1050	{}
1051};
1052
1053static const struct snd_soc_acpi_link_adr mtl_cs42l43_l0[] = {
1054	{
1055		.mask = BIT(0),
1056		.num_adr = ARRAY_SIZE(cs42l43_0_adr),
1057		.adr_d = cs42l43_0_adr,
1058	},
1059	{}
1060};
1061
1062static const struct snd_soc_acpi_link_adr mtl_cs42l43_cs35l56[] = {
1063	{
1064		.mask = BIT(0),
1065		.num_adr = ARRAY_SIZE(cs42l43_0_adr),
1066		.adr_d = cs42l43_0_adr,
1067	},
1068	{
1069		.mask = BIT(1),
1070		.num_adr = ARRAY_SIZE(cs35l56_1_adr),
1071		.adr_d = cs35l56_1_adr,
1072	},
1073	{
1074		.mask = BIT(2),
1075		.num_adr = ARRAY_SIZE(cs35l56_2_adr),
1076		.adr_d = cs35l56_2_adr,
1077	},
1078	{}
1079};
1080
1081static const struct snd_soc_acpi_link_adr cs42l43_link0_cs35l56_link2_link3[] = {
1082	/* Expected order: jack -> amp */
1083	{
1084		.mask = BIT(0),
1085		.num_adr = ARRAY_SIZE(cs42l43_0_adr),
1086		.adr_d = cs42l43_0_adr,
1087	},
1088	{
1089		.mask = BIT(2),
1090		.num_adr = ARRAY_SIZE(cs35l56_2_r_adr),
1091		.adr_d = cs35l56_2_r_adr,
1092	},
1093	{
1094		.mask = BIT(3),
1095		.num_adr = ARRAY_SIZE(cs35l56_3_l_adr),
1096		.adr_d = cs35l56_3_l_adr,
1097	},
1098	{}
1099};
1100
1101static const struct snd_soc_acpi_link_adr cs42l43_link3_cs35l56_x4_link0_link1_spkagg[] = {
1102	/* Expected order: jack -> amp */
1103	{
1104		.mask = BIT(3),
1105		.num_adr = ARRAY_SIZE(cs42l43_l3_4amp_spkagg_adr),
1106		.adr_d = cs42l43_l3_4amp_spkagg_adr,
1107	},
1108	{
1109		.mask = BIT(1),
1110		.num_adr = 2,
1111		.adr_d = cs35l56_1_adr,
1112	},
1113	{
1114		.mask = BIT(0),
1115		.num_adr = 2,
1116		.adr_d = cs35l56_0_adr,
1117	},
1118	{}
1119};
1120
1121static const struct snd_soc_acpi_link_adr mtl_cs35l56_x8_link0_link1_fb[] = {
1122	{
1123		.mask = BIT(1),
1124		.num_adr = ARRAY_SIZE(cs35l56_1_fb_adr),
1125		.adr_d = cs35l56_1_fb_adr,
1126	},
1127	{
1128		.mask = BIT(0),
1129		.num_adr = ARRAY_SIZE(cs35l56_0_fb_adr),
1130		.adr_d = cs35l56_0_fb_adr,
1131	},
1132	{}
1133};
1134
1135static const struct snd_soc_acpi_link_adr mtl_cs35l56_x6_link0_link1_fb[] = {
1136	{
1137		.mask = BIT(1),
1138		.num_adr = ARRAY_SIZE(cs35l56_6amp_1_fb_adr),
1139		.adr_d = cs35l56_6amp_1_fb_adr,
1140	},
1141	{
1142		.mask = BIT(0),
1143		/* First 3 amps in cs35l56_0_fb_adr */
1144		.num_adr = 3,
1145		.adr_d = cs35l56_0_fb_adr,
1146	},
1147	{}
1148};
1149
1150static const struct snd_soc_acpi_link_adr mtl_cs35l63_x6_link2_link3_fb[] = {
1151	{
1152		.mask = BIT(3),
1153		.num_adr = ARRAY_SIZE(cs35l63_6amp_3_fb_adr),
1154		.adr_d = cs35l63_6amp_3_fb_adr,
1155	},
1156	{
1157		.mask = BIT(2),
1158		.num_adr = ARRAY_SIZE(cs35l63_6amp_2_fb_adr),
1159		.adr_d = cs35l63_6amp_2_fb_adr,
1160	},
1161	{}
1162};
1163
1164static const struct snd_soc_acpi_link_adr mtl_cs35l63_x2_link1_link3_fb[] = {
1165	{
1166		.mask = BIT(3),
1167		.num_adr = ARRAY_SIZE(cs35l63_3_fb_adr),
1168		.adr_d = cs35l63_3_fb_adr,
1169	},
1170	{
1171		.mask = BIT(1),
1172		.num_adr = ARRAY_SIZE(cs35l63_1_fb_adr),
1173		.adr_d = cs35l63_1_fb_adr,
1174	},
1175	{}
1176};
1177
1178/* this table is used when there is no I2S codec present */
1179struct snd_soc_acpi_mach snd_soc_acpi_intel_mtl_sdw_machines[] = {
1180	/* mockup tests need to be first */
1181	{
1182		.link_mask = GENMASK(3, 0),
1183		.links = sdw_mockup_headset_2amps_mic,
1184		.drv_name = "sof_sdw",
1185		.sof_tplg_filename = "sof-mtl-rt711-rt1308-rt715.tplg",
1186	},
1187	{
1188		.link_mask = BIT(0) | BIT(1) | BIT(3),
1189		.links = sdw_mockup_headset_1amp_mic,
1190		.drv_name = "sof_sdw",
1191		.sof_tplg_filename = "sof-mtl-rt711-rt1308-mono-rt715.tplg",
1192	},
1193	{
1194		.link_mask = GENMASK(2, 0),
1195		.links = sdw_mockup_mic_headset_1amp,
1196		.drv_name = "sof_sdw",
1197		.sof_tplg_filename = "sof-mtl-rt715-rt711-rt1308-mono.tplg",
1198	},
1199	{
1200		.link_mask = BIT(0),
1201		.links = tas2783_link0,
1202		.drv_name = "sof_sdw",
1203		.sof_tplg_filename = "sof-mtl-tas2783.tplg",
1204	},
1205	{
1206		.link_mask = GENMASK(3, 0),
1207		.links = mtl_rt713_l0_rt1316_l12_rt1713_l3,
1208		.drv_name = "sof_sdw",
1209		.sof_tplg_filename = "sof-mtl-rt713-l0-rt1316-l12-rt1713-l3.tplg",
1210	},
1211	{
1212		.link_mask = GENMASK(3, 0),
1213		.links = mtl_rt713_l0_rt1318_l12_rt1713_l3,
1214		.drv_name = "sof_sdw",
1215		.sof_tplg_filename = "sof-mtl-rt713-l0-rt1318-l12-rt1713-l3.tplg",
1216	},
1217	{
1218		.link_mask = BIT(0) | BIT(1) | BIT(3),
1219		.links = mtl_rt713_l0_rt1318_l1_rt1713_l3,
1220		.drv_name = "sof_sdw",
1221		.sof_tplg_filename = "sof-mtl-rt713-l0-rt1318-l1-rt1713-l3.tplg",
1222	},
1223	{
1224		.link_mask = GENMASK(2, 0),
1225		.links = mtl_rt713_l0_rt1316_l12,
1226		.drv_name = "sof_sdw",
1227		.sof_tplg_filename = "sof-mtl-rt713-l0-rt1316-l12.tplg",
1228	},
1229	{
1230		.link_mask = BIT(3) | BIT(0),
1231		.links = mtl_712_l0_1712_l3,
1232		.drv_name = "sof_sdw",
1233		.sof_tplg_filename = "sof-mtl-rt712-l0-rt1712-l3.tplg",
1234	},
1235	{
1236		.link_mask = BIT(0),
1237		.links = mtl_712_vb_l0,
1238		.drv_name = "sof_sdw",
1239		.machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb,
1240		.sof_tplg_filename = "sof-mtl-rt712-vb-l0.tplg",
1241		.get_function_tplg_files = sof_sdw_get_tplg_files,
1242	},
1243	{
1244		.link_mask = BIT(0),
1245		.links = mtl_712_l0,
1246		.drv_name = "sof_sdw",
1247		.sof_tplg_filename = "sof-mtl-rt712-l0.tplg",
1248		.get_function_tplg_files = sof_sdw_get_tplg_files,
1249	},
1250	{
1251		.link_mask = GENMASK(2, 0),
1252		.links = mtl_sdw_rt1318_l12_rt714_l0,
1253		.drv_name = "sof_sdw",
1254		.sof_tplg_filename = "sof-mtl-rt1318-l12-rt714-l0.tplg"
1255	},
1256	{
1257		.link_mask = BIT(0) | BIT(2) | BIT(3),
1258		.links = cs42l43_link0_cs35l56_link2_link3,
1259		.drv_name = "sof_sdw",
1260		.sof_tplg_filename = "sof-mtl-cs42l43-l0-cs35l56-l23.tplg",
1261		.get_function_tplg_files = sof_sdw_get_tplg_files,
1262	},
1263	{
1264		.link_mask = BIT(0) | BIT(1) | BIT(3),
1265		.links = cs42l43_link3_cs35l56_x4_link0_link1_spkagg,
1266		.drv_name = "sof_sdw",
1267		.sof_tplg_filename = "sof-mtl-cs42l43-l3-cs35l56-l01-spkagg.tplg",
1268		.get_function_tplg_files = sof_sdw_get_tplg_files,
1269	},
1270	{
1271		.link_mask = GENMASK(2, 0),
1272		.links = mtl_cs42l43_cs35l56,
1273		.drv_name = "sof_sdw",
1274		.sof_tplg_filename = "sof-mtl-cs42l43-l0-cs35l56-l12.tplg",
1275		.get_function_tplg_files = sof_sdw_get_tplg_files,
1276	},
1277	{
1278		.link_mask = BIT(0) | BIT(1),
1279		.links = mtl_cs35l56_x8_link0_link1_fb,
1280		.drv_name = "sof_sdw",
1281		.sof_tplg_filename = "sof-mtl-cs35l56-l01-fb8.tplg",
1282		.get_function_tplg_files = sof_sdw_get_tplg_files,
1283	},
1284	{
1285		.link_mask = BIT(0) | BIT(1),
1286		.links = mtl_cs35l56_x6_link0_link1_fb,
1287		.drv_name = "sof_sdw",
1288		.sof_tplg_filename = "sof-mtl-cs35l56-l01-fb6.tplg"
1289	},
1290	{
1291		.link_mask = BIT(0),
1292		.links = mtl_cs42l43_l0,
1293		.drv_name = "sof_sdw",
1294		.sof_tplg_filename = "sof-mtl-cs42l43-l0.tplg",
1295		.get_function_tplg_files = sof_sdw_get_tplg_files,
1296	},
1297	{
1298		.link_mask = BIT(1) | BIT(3),
1299		.links = mtl_cs35l63_x2_link1_link3_fb,
1300		.drv_name = "sof_sdw",
1301		.sof_tplg_filename = "sof-mtl-cs35l56-l01-fb8.tplg",
1302	},
1303	{
1304		.link_mask = BIT(2) | BIT(3),
1305		.links = mtl_cs35l63_x6_link2_link3_fb,
1306		.drv_name = "sof_sdw",
1307		.sof_tplg_filename = "sof-mtl-cs35l56-l01-fb6.tplg",
1308	},
1309	{
1310		.link_mask = GENMASK(3, 0),
1311		.links = mtl_3_in_1_sdca,
1312		.drv_name = "sof_sdw",
1313		.sof_tplg_filename = "sof-mtl-rt711-l0-rt1316-l23-rt714-l1.tplg",
1314	},
1315	{
1316		.link_mask = 0x9, /* 2 active links required */
1317		.links = mtl_rt711_l0_rt1316_l3,
1318		.drv_name = "sof_sdw",
1319		.sof_tplg_filename = "sof-mtl-rt711-l0-rt1316-l3.tplg",
1320	},
1321	{
1322		.link_mask = BIT(0),
1323		.links = mtl_rt722_only,
1324		.drv_name = "sof_sdw",
1325		.sof_tplg_filename = "sof-mtl-rt722-l0.tplg",
1326		.get_function_tplg_files = sof_sdw_get_tplg_files,
1327	},
1328	{
1329		.link_mask = BIT(0),
1330		.links = mtl_rvp,
1331		.drv_name = "sof_sdw",
1332		.sof_tplg_filename = "sof-mtl-rt711.tplg",
1333	},
1334	{
1335		.link_mask = BIT(0) | BIT(2),
1336		.links = rt5682_link2_max98373_link0,
1337		.drv_name = "sof_sdw",
1338		.sof_tplg_filename = "sof-mtl-sdw-rt5682-l2-max98373-l0.tplg",
1339	},
1340	{
1341		.link_mask = BIT(0) | BIT(2),
1342		.links = cs42l42_link0_max98363_link2,
1343		.drv_name = "sof_sdw",
1344		.sof_tplg_filename = "sof-mtl-sdw-cs42l42-l0-max98363-l2.tplg",
1345	},
1346	{},
1347};
1348EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_mtl_sdw_machines);
1349
1350MODULE_IMPORT_NS("SND_SOC_ACPI_INTEL_SDCA_QUIRKS");
~/ Read-only file preview.