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