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_rt5682_rt5682s_hp = { 15 .num_codecs = 2, 16 .codecs = {RT5682_ACPI_HID, RT5682S_ACPI_HID}, 17 }; 18 19 static const struct snd_soc_acpi_codecs mtl_essx_83x6 = { 20 .num_codecs = 3, 21 .codecs = { "ESSX8316", "ESSX8326", "ESSX8336"}, 22 }; 23 24 static const struct snd_soc_acpi_codecs mtl_lt6911_hdmi = { 25 .num_codecs = 1, 26 .codecs = {"INTC10B0"} 27 }; 28 29 struct 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 the 46 * tplg name and machine driver will detect the amp type 47 */ 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 }; 91 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_mtl_machines); 92 93 static const struct snd_soc_acpi_endpoint single_endpoint = { 94 .num = 0, 95 .aggregated = 0, 96 .group_position = 0, 97 .group_id = 0, 98 }; 99 100 static 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 107 static 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 114 static 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 for 131 * its headset, amp and dmic functions. 132 */ 133 static 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 154 static 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 161 static 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 168 static 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 177 static 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 186 static 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 195 static 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 204 static 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 213 static 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 222 static 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 237 static 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 246 static 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 255 static 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 264 static 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 273 static 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 282 static 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 291 static 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 300 static 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 309 static 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 318 static 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 327 static 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 336 static 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 350 static 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 359 static 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 386 static 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 395 static 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 410 static 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 425 static 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 441 static 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 456 static 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 471 static 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 480 static 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 489 static 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 513 static 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 532 static 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 556 static 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 575 static 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 599 static 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 618 static 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 632 static 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 647 static 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 656 static 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 671 static 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 680 static 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 699 static 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 */ 720 struct 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 }; 838 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_mtl_sdw_machines); 839