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
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.