1 // SPDX-License-Identifier: GPL-2.0-only 2 /* 3 * soc-apci-intel-adl-match.c - tables and support for ADL ACPI enumeration. 4 * 5 * Copyright (c) 2020, Intel Corporation. 6 */ 7 8 #include <sound/soc-acpi.h> 9 #include <sound/soc-acpi-intel-match.h> 10 #include <sound/soc-acpi-intel-ssp-common.h> 11 12 static const struct snd_soc_acpi_codecs essx_83x6 = { 13 .num_codecs = 3, 14 .codecs = { "ESSX8316", "ESSX8326", "ESSX8336"}, 15 }; 16 17 static const struct snd_soc_acpi_endpoint single_endpoint = { 18 .num = 0, 19 .aggregated = 0, 20 .group_position = 0, 21 .group_id = 0, 22 }; 23 24 static const struct snd_soc_acpi_endpoint spk_l_endpoint = { 25 .num = 0, 26 .aggregated = 1, 27 .group_position = 0, 28 .group_id = 1, 29 }; 30 31 static const struct snd_soc_acpi_endpoint spk_r_endpoint = { 32 .num = 0, 33 .aggregated = 1, 34 .group_position = 1, 35 .group_id = 1, 36 }; 37 38 static const struct snd_soc_acpi_endpoint spk_2_endpoint = { 39 .num = 0, 40 .aggregated = 1, 41 .group_position = 2, 42 .group_id = 1, 43 }; 44 45 static const struct snd_soc_acpi_endpoint spk_3_endpoint = { 46 .num = 0, 47 .aggregated = 1, 48 .group_position = 3, 49 .group_id = 1, 50 }; 51 52 static const struct snd_soc_acpi_adr_device cs35l56_2_r_adr[] = { 53 { 54 .adr = 0x00023201FA355601ull, 55 .num_endpoints = 1, 56 .endpoints = &spk_r_endpoint, 57 .name_prefix = "AMP3" 58 }, 59 { 60 .adr = 0x00023301FA355601ull, 61 .num_endpoints = 1, 62 .endpoints = &spk_3_endpoint, 63 .name_prefix = "AMP4" 64 } 65 }; 66 67 static const struct snd_soc_acpi_adr_device cs35l56_3_l_adr[] = { 68 { 69 .adr = 0x00033001fa355601ull, 70 .num_endpoints = 1, 71 .endpoints = &spk_l_endpoint, 72 .name_prefix = "AMP1" 73 }, 74 { 75 .adr = 0x00033101fa355601ull, 76 .num_endpoints = 1, 77 .endpoints = &spk_2_endpoint, 78 .name_prefix = "AMP2" 79 } 80 }; 81 82 static const struct snd_soc_acpi_endpoint cs42l43_endpoints[] = { 83 { /* Jack Playback Endpoint */ 84 .num = 0, 85 .aggregated = 0, 86 .group_position = 0, 87 .group_id = 0, 88 }, 89 { /* DMIC Capture Endpoint */ 90 .num = 1, 91 .aggregated = 0, 92 .group_position = 0, 93 .group_id = 0, 94 }, 95 { /* Jack Capture Endpoint */ 96 .num = 2, 97 .aggregated = 0, 98 .group_position = 0, 99 .group_id = 0, 100 }, 101 { /* Speaker Playback Endpoint */ 102 .num = 3, 103 .aggregated = 0, 104 .group_position = 0, 105 .group_id = 0, 106 }, 107 }; 108 109 static const struct snd_soc_acpi_adr_device cs42l43_0_adr[] = { 110 { 111 .adr = 0x00003001FA424301ull, 112 .num_endpoints = ARRAY_SIZE(cs42l43_endpoints), 113 .endpoints = cs42l43_endpoints, 114 .name_prefix = "cs42l43" 115 } 116 }; 117 118 static const struct snd_soc_acpi_adr_device rt711_0_adr[] = { 119 { 120 .adr = 0x000020025D071100ull, 121 .num_endpoints = 1, 122 .endpoints = &single_endpoint, 123 .name_prefix = "rt711" 124 } 125 }; 126 127 static const struct snd_soc_acpi_adr_device rt1308_1_group1_adr[] = { 128 { 129 .adr = 0x000120025D130800ull, 130 .num_endpoints = 1, 131 .endpoints = &spk_l_endpoint, 132 .name_prefix = "rt1308-1" 133 } 134 }; 135 136 static const struct snd_soc_acpi_adr_device rt1308_2_group1_adr[] = { 137 { 138 .adr = 0x000220025D130800ull, 139 .num_endpoints = 1, 140 .endpoints = &spk_r_endpoint, 141 .name_prefix = "rt1308-2" 142 } 143 }; 144 145 static const struct snd_soc_acpi_adr_device rt715_3_adr[] = { 146 { 147 .adr = 0x000320025D071500ull, 148 .num_endpoints = 1, 149 .endpoints = &single_endpoint, 150 .name_prefix = "rt715" 151 } 152 }; 153 154 static const struct snd_soc_acpi_adr_device rt711_sdca_0_adr[] = { 155 { 156 .adr = 0x000030025D071101ull, 157 .num_endpoints = 1, 158 .endpoints = &single_endpoint, 159 .name_prefix = "rt711" 160 } 161 }; 162 163 static const struct snd_soc_acpi_adr_device rt711_sdca_2_adr[] = { 164 { 165 .adr = 0x000230025D071101ull, 166 .num_endpoints = 1, 167 .endpoints = &single_endpoint, 168 .name_prefix = "rt711" 169 } 170 }; 171 172 static const struct snd_soc_acpi_adr_device rt1316_1_group1_adr[] = { 173 { 174 .adr = 0x000131025D131601ull, /* unique ID is set for some reason */ 175 .num_endpoints = 1, 176 .endpoints = &spk_l_endpoint, 177 .name_prefix = "rt1316-1" 178 } 179 }; 180 181 static const struct snd_soc_acpi_adr_device rt1316_2_group1_adr[] = { 182 { 183 .adr = 0x000230025D131601ull, 184 .num_endpoints = 1, 185 .endpoints = &spk_r_endpoint, 186 .name_prefix = "rt1316-2" 187 } 188 }; 189 190 static const struct snd_soc_acpi_adr_device rt1316_3_group1_adr[] = { 191 { 192 .adr = 0x000330025D131601ull, 193 .num_endpoints = 1, 194 .endpoints = &spk_r_endpoint, 195 .name_prefix = "rt1316-2" 196 } 197 }; 198 199 static const struct snd_soc_acpi_adr_device rt1316_0_group2_adr[] = { 200 { 201 .adr = 0x000031025D131601ull, 202 .num_endpoints = 1, 203 .endpoints = &spk_l_endpoint, 204 .name_prefix = "rt1316-1" 205 } 206 }; 207 208 static const struct snd_soc_acpi_adr_device rt1316_1_group2_adr[] = { 209 { 210 .adr = 0x000130025D131601ull, 211 .num_endpoints = 1, 212 .endpoints = &spk_r_endpoint, 213 .name_prefix = "rt1316-2" 214 } 215 }; 216 217 static const struct snd_soc_acpi_adr_device rt1316_2_group2_adr[] = { 218 { 219 .adr = 0x000232025D131601ull, 220 .num_endpoints = 1, 221 .endpoints = &spk_r_endpoint, 222 .name_prefix = "rt1316-2" 223 } 224 }; 225 226 static const struct snd_soc_acpi_adr_device rt1316_1_single_adr[] = { 227 { 228 .adr = 0x000130025D131601ull, 229 .num_endpoints = 1, 230 .endpoints = &single_endpoint, 231 .name_prefix = "rt1316-1" 232 } 233 }; 234 235 static const struct snd_soc_acpi_adr_device rt1316_2_single_adr[] = { 236 { 237 .adr = 0x000230025D131601ull, 238 .num_endpoints = 1, 239 .endpoints = &single_endpoint, 240 .name_prefix = "rt1316-1" 241 } 242 }; 243 244 static const struct snd_soc_acpi_adr_device rt1316_3_single_adr[] = { 245 { 246 .adr = 0x000330025D131601ull, 247 .num_endpoints = 1, 248 .endpoints = &single_endpoint, 249 .name_prefix = "rt1316-1" 250 } 251 }; 252 253 static const struct snd_soc_acpi_adr_device rt714_0_adr[] = { 254 { 255 .adr = 0x000030025D071401ull, 256 .num_endpoints = 1, 257 .endpoints = &single_endpoint, 258 .name_prefix = "rt714" 259 } 260 }; 261 262 static const struct snd_soc_acpi_adr_device rt714_2_adr[] = { 263 { 264 .adr = 0x000230025D071401ull, 265 .num_endpoints = 1, 266 .endpoints = &single_endpoint, 267 .name_prefix = "rt714" 268 } 269 }; 270 271 static const struct snd_soc_acpi_adr_device rt714_3_adr[] = { 272 { 273 .adr = 0x000330025D071401ull, 274 .num_endpoints = 1, 275 .endpoints = &single_endpoint, 276 .name_prefix = "rt714" 277 } 278 }; 279 280 static const struct snd_soc_acpi_link_adr adl_default[] = { 281 { 282 .mask = BIT(0), 283 .num_adr = ARRAY_SIZE(rt711_0_adr), 284 .adr_d = rt711_0_adr, 285 }, 286 { 287 .mask = BIT(1), 288 .num_adr = ARRAY_SIZE(rt1308_1_group1_adr), 289 .adr_d = rt1308_1_group1_adr, 290 }, 291 { 292 .mask = BIT(2), 293 .num_adr = ARRAY_SIZE(rt1308_2_group1_adr), 294 .adr_d = rt1308_2_group1_adr, 295 }, 296 { 297 .mask = BIT(3), 298 .num_adr = ARRAY_SIZE(rt715_3_adr), 299 .adr_d = rt715_3_adr, 300 }, 301 {} 302 }; 303 304 static const struct snd_soc_acpi_link_adr adl_sdca_default[] = { 305 { 306 .mask = BIT(0), 307 .num_adr = ARRAY_SIZE(rt711_sdca_0_adr), 308 .adr_d = rt711_sdca_0_adr, 309 }, 310 { 311 .mask = BIT(1), 312 .num_adr = ARRAY_SIZE(rt1316_1_group1_adr), 313 .adr_d = rt1316_1_group1_adr, 314 }, 315 { 316 .mask = BIT(2), 317 .num_adr = ARRAY_SIZE(rt1316_2_group1_adr), 318 .adr_d = rt1316_2_group1_adr, 319 }, 320 { 321 .mask = BIT(3), 322 .num_adr = ARRAY_SIZE(rt714_3_adr), 323 .adr_d = rt714_3_adr, 324 }, 325 {} 326 }; 327 328 static const struct snd_soc_acpi_link_adr adl_sdca_3_in_1[] = { 329 { 330 .mask = BIT(0), 331 .num_adr = ARRAY_SIZE(rt711_sdca_0_adr), 332 .adr_d = rt711_sdca_0_adr, 333 }, 334 { 335 .mask = BIT(1), 336 .num_adr = ARRAY_SIZE(rt1316_1_group1_adr), 337 .adr_d = rt1316_1_group1_adr, 338 }, 339 { 340 .mask = BIT(2), 341 .num_adr = ARRAY_SIZE(rt714_2_adr), 342 .adr_d = rt714_2_adr, 343 }, 344 { 345 .mask = BIT(3), 346 .num_adr = ARRAY_SIZE(rt1316_3_group1_adr), 347 .adr_d = rt1316_3_group1_adr, 348 }, 349 {} 350 }; 351 352 static const struct snd_soc_acpi_link_adr adl_sdw_rt711_link2_rt1316_link01_rt714_link3[] = { 353 { 354 .mask = BIT(2), 355 .num_adr = ARRAY_SIZE(rt711_sdca_2_adr), 356 .adr_d = rt711_sdca_2_adr, 357 }, 358 { 359 .mask = BIT(0), 360 .num_adr = ARRAY_SIZE(rt1316_0_group2_adr), 361 .adr_d = rt1316_0_group2_adr, 362 }, 363 { 364 .mask = BIT(1), 365 .num_adr = ARRAY_SIZE(rt1316_1_group2_adr), 366 .adr_d = rt1316_1_group2_adr, 367 }, 368 { 369 .mask = BIT(3), 370 .num_adr = ARRAY_SIZE(rt714_3_adr), 371 .adr_d = rt714_3_adr, 372 }, 373 {} 374 }; 375 376 static const struct snd_soc_acpi_link_adr adl_sdw_rt711_link2_rt1316_link01[] = { 377 { 378 .mask = BIT(2), 379 .num_adr = ARRAY_SIZE(rt711_sdca_2_adr), 380 .adr_d = rt711_sdca_2_adr, 381 }, 382 { 383 .mask = BIT(0), 384 .num_adr = ARRAY_SIZE(rt1316_0_group2_adr), 385 .adr_d = rt1316_0_group2_adr, 386 }, 387 { 388 .mask = BIT(1), 389 .num_adr = ARRAY_SIZE(rt1316_1_group2_adr), 390 .adr_d = rt1316_1_group2_adr, 391 }, 392 {} 393 }; 394 395 static const struct snd_soc_acpi_link_adr adl_sdw_rt1316_link12_rt714_link0[] = { 396 { 397 .mask = BIT(1), 398 .num_adr = ARRAY_SIZE(rt1316_1_group1_adr), 399 .adr_d = rt1316_1_group1_adr, 400 }, 401 { 402 .mask = BIT(2), 403 .num_adr = ARRAY_SIZE(rt1316_2_group1_adr), 404 .adr_d = rt1316_2_group1_adr, 405 }, 406 { 407 .mask = BIT(0), 408 .num_adr = ARRAY_SIZE(rt714_0_adr), 409 .adr_d = rt714_0_adr, 410 }, 411 {} 412 }; 413 414 static const struct snd_soc_acpi_link_adr adl_sdw_rt1316_link1_rt714_link0[] = { 415 { 416 .mask = BIT(1), 417 .num_adr = ARRAY_SIZE(rt1316_1_single_adr), 418 .adr_d = rt1316_1_single_adr, 419 }, 420 { 421 .mask = BIT(0), 422 .num_adr = ARRAY_SIZE(rt714_0_adr), 423 .adr_d = rt714_0_adr, 424 }, 425 {} 426 }; 427 428 static const struct snd_soc_acpi_link_adr adl_sdw_rt1316_link2_rt714_link3[] = { 429 { 430 .mask = BIT(2), 431 .num_adr = ARRAY_SIZE(rt1316_2_single_adr), 432 .adr_d = rt1316_2_single_adr, 433 }, 434 { 435 .mask = BIT(3), 436 .num_adr = ARRAY_SIZE(rt714_3_adr), 437 .adr_d = rt714_3_adr, 438 }, 439 {} 440 }; 441 442 static const struct snd_soc_acpi_link_adr adl_sdw_rt1316_link2_rt714_link0[] = { 443 { 444 .mask = BIT(2), 445 .num_adr = ARRAY_SIZE(rt1316_2_single_adr), 446 .adr_d = rt1316_2_single_adr, 447 }, 448 { 449 .mask = BIT(0), 450 .num_adr = ARRAY_SIZE(rt714_0_adr), 451 .adr_d = rt714_0_adr, 452 }, 453 {} 454 }; 455 456 static const struct snd_soc_acpi_link_adr adl_sdw_rt711_link0_rt1316_link3[] = { 457 { 458 .mask = BIT(0), 459 .num_adr = ARRAY_SIZE(rt711_sdca_0_adr), 460 .adr_d = rt711_sdca_0_adr, 461 }, 462 { 463 .mask = BIT(3), 464 .num_adr = ARRAY_SIZE(rt1316_3_single_adr), 465 .adr_d = rt1316_3_single_adr, 466 }, 467 {} 468 }; 469 470 static const struct snd_soc_acpi_link_adr adl_sdw_rt711_link0_rt1316_link2[] = { 471 { 472 .mask = BIT(0), 473 .num_adr = ARRAY_SIZE(rt711_sdca_0_adr), 474 .adr_d = rt711_sdca_0_adr, 475 }, 476 { 477 .mask = BIT(2), 478 .num_adr = ARRAY_SIZE(rt1316_2_single_adr), 479 .adr_d = rt1316_2_single_adr, 480 }, 481 {} 482 }; 483 484 static const struct snd_soc_acpi_adr_device mx8373_2_adr[] = { 485 { 486 .adr = 0x000223019F837300ull, 487 .num_endpoints = 1, 488 .endpoints = &spk_l_endpoint, 489 .name_prefix = "Left" 490 }, 491 { 492 .adr = 0x000227019F837300ull, 493 .num_endpoints = 1, 494 .endpoints = &spk_r_endpoint, 495 .name_prefix = "Right" 496 } 497 }; 498 499 static const struct snd_soc_acpi_adr_device rt5682_0_adr[] = { 500 { 501 .adr = 0x000021025D568200ull, 502 .num_endpoints = 1, 503 .endpoints = &single_endpoint, 504 .name_prefix = "rt5682" 505 } 506 }; 507 508 static const struct snd_soc_acpi_link_adr adl_cs42l43_l0_cs35l56_l23[] = { 509 { 510 .mask = BIT(0), 511 .num_adr = ARRAY_SIZE(cs42l43_0_adr), 512 .adr_d = cs42l43_0_adr, 513 }, 514 { 515 .mask = BIT(2), 516 .num_adr = ARRAY_SIZE(cs35l56_2_r_adr), 517 .adr_d = cs35l56_2_r_adr, 518 }, 519 { 520 .mask = BIT(3), 521 .num_adr = ARRAY_SIZE(cs35l56_3_l_adr), 522 .adr_d = cs35l56_3_l_adr, 523 }, 524 {} 525 }; 526 527 static const struct snd_soc_acpi_link_adr adl_rvp[] = { 528 { 529 .mask = BIT(0), 530 .num_adr = ARRAY_SIZE(rt711_0_adr), 531 .adr_d = rt711_0_adr, 532 }, 533 {} 534 }; 535 536 static const struct snd_soc_acpi_link_adr adlps_rvp[] = { 537 { 538 .mask = BIT(0), 539 .num_adr = ARRAY_SIZE(rt711_sdca_0_adr), 540 .adr_d = rt711_sdca_0_adr, 541 }, 542 {} 543 }; 544 545 static const struct snd_soc_acpi_link_adr adl_chromebook_base[] = { 546 { 547 .mask = BIT(0), 548 .num_adr = ARRAY_SIZE(rt5682_0_adr), 549 .adr_d = rt5682_0_adr, 550 }, 551 { 552 .mask = BIT(2), 553 .num_adr = ARRAY_SIZE(mx8373_2_adr), 554 .adr_d = mx8373_2_adr, 555 }, 556 {} 557 }; 558 559 static const struct snd_soc_acpi_link_adr adl_sdw_rt1316_link02[] = { 560 { 561 .mask = BIT(0), 562 .num_adr = ARRAY_SIZE(rt1316_0_group2_adr), 563 .adr_d = rt1316_0_group2_adr, 564 }, 565 { 566 .mask = BIT(2), 567 .num_adr = ARRAY_SIZE(rt1316_2_group2_adr), 568 .adr_d = rt1316_2_group2_adr, 569 }, 570 {} 571 }; 572 573 static const struct snd_soc_acpi_codecs adl_max98357a_amp = { 574 .num_codecs = 1, 575 .codecs = {"MX98357A"} 576 }; 577 578 static const struct snd_soc_acpi_codecs adl_rt5682_rt5682s_hp = { 579 .num_codecs = 2, 580 .codecs = {RT5682_ACPI_HID, RT5682S_ACPI_HID}, 581 }; 582 583 static const struct snd_soc_acpi_codecs adl_rt1019p_amp = { 584 .num_codecs = 1, 585 .codecs = {"RTL1019"} 586 }; 587 588 static const struct snd_soc_acpi_codecs adl_lt6911_hdmi = { 589 .num_codecs = 1, 590 .codecs = {"INTC10B0"} 591 }; 592 593 struct snd_soc_acpi_mach snd_soc_acpi_intel_adl_machines[] = { 594 { 595 .comp_ids = &adl_rt5682_rt5682s_hp, 596 .drv_name = "adl_mx98357_rt5682", 597 .machine_quirk = snd_soc_acpi_codec_list, 598 .quirk_data = &adl_max98357a_amp, 599 .sof_tplg_filename = "sof-adl-max98357a-rt5682.tplg", 600 }, 601 { 602 .id = "10508825", 603 .drv_name = "adl_rt1019p_8825", 604 .machine_quirk = snd_soc_acpi_codec_list, 605 .quirk_data = &adl_rt1019p_amp, 606 .sof_tplg_filename = "sof-adl-rt1019-nau8825.tplg", 607 }, 608 { 609 .comp_ids = &adl_rt5682_rt5682s_hp, 610 .drv_name = "adl_rt5682_c1_h02", 611 .machine_quirk = snd_soc_acpi_codec_list, 612 .quirk_data = &adl_lt6911_hdmi, 613 .sof_tplg_filename = "sof-adl-rt5682-ssp1-hdmi-ssp02.tplg", 614 }, 615 { 616 .comp_ids = &essx_83x6, 617 .drv_name = "adl_es83x6_c1_h02", 618 .machine_quirk = snd_soc_acpi_codec_list, 619 .quirk_data = &adl_lt6911_hdmi, 620 .sof_tplg_filename = "sof-adl-es83x6-ssp1-hdmi-ssp02.tplg", 621 }, 622 { 623 .comp_ids = &essx_83x6, 624 .drv_name = "sof-essx8336", 625 .sof_tplg_filename = "sof-adl-es8336", /* the tplg suffix is added at run time */ 626 .tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_SSP_NUMBER | 627 SND_SOC_ACPI_TPLG_INTEL_SSP_MSB | 628 SND_SOC_ACPI_TPLG_INTEL_DMIC_NUMBER, 629 }, 630 /* place boards for each headphone codec: sof driver will complete the 631 * tplg name and machine driver will detect the amp type 632 */ 633 { 634 .id = CS42L42_ACPI_HID, 635 .drv_name = "adl_cs42l42_def", 636 .sof_tplg_filename = "sof-adl", /* the tplg suffix is added at run time */ 637 .tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_AMP_NAME | 638 SND_SOC_ACPI_TPLG_INTEL_CODEC_NAME, 639 }, 640 { 641 .id = DA7219_ACPI_HID, 642 .drv_name = "adl_da7219_def", 643 .sof_tplg_filename = "sof-adl", /* the tplg suffix is added at run time */ 644 .tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_AMP_NAME | 645 SND_SOC_ACPI_TPLG_INTEL_CODEC_NAME, 646 }, 647 { 648 .id = NAU8825_ACPI_HID, 649 .drv_name = "adl_nau8825_def", 650 .sof_tplg_filename = "sof-adl", /* the tplg suffix is added at run time */ 651 .tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_AMP_NAME | 652 SND_SOC_ACPI_TPLG_INTEL_CODEC_NAME, 653 }, 654 { 655 .id = RT5650_ACPI_HID, 656 .drv_name = "adl_rt5682_def", 657 .sof_tplg_filename = "sof-adl", /* the tplg suffix is added at run time */ 658 .tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_AMP_NAME | 659 SND_SOC_ACPI_TPLG_INTEL_CODEC_NAME, 660 }, 661 { 662 .comp_ids = &adl_rt5682_rt5682s_hp, 663 .drv_name = "adl_rt5682_def", 664 .sof_tplg_filename = "sof-adl", /* the tplg suffix is added at run time */ 665 .tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_AMP_NAME | 666 SND_SOC_ACPI_TPLG_INTEL_CODEC_NAME, 667 }, 668 /* place amp-only boards in the end of table */ 669 { 670 .id = "CSC3541", 671 .drv_name = "adl_cs35l41", 672 .sof_tplg_filename = "sof-adl-cs35l41.tplg", 673 }, 674 { 675 .id = "INTC10B0", 676 .drv_name = "adl_lt6911_hdmi_ssp", 677 .sof_tplg_filename = "sof-adl-nocodec-hdmi-ssp02.tplg" 678 }, 679 {}, 680 }; 681 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_adl_machines); 682 683 /* this table is used when there is no I2S codec present */ 684 struct snd_soc_acpi_mach snd_soc_acpi_intel_adl_sdw_machines[] = { 685 { 686 .link_mask = BIT(0) | BIT(2) | BIT(3), 687 .links = adl_cs42l43_l0_cs35l56_l23, 688 .drv_name = "sof_sdw", 689 .sof_tplg_filename = "sof-adl-cs42l43-l0-cs35l56-l23.tplg", 690 }, 691 { 692 .link_mask = 0xF, /* 4 active links required */ 693 .links = adl_default, 694 .drv_name = "sof_sdw", 695 .sof_tplg_filename = "sof-adl-rt711-l0-rt1308-l12-rt715-l3.tplg", 696 }, 697 { 698 .link_mask = 0xF, /* 4 active links required */ 699 .links = adl_sdca_default, 700 .drv_name = "sof_sdw", 701 .sof_tplg_filename = "sof-adl-rt711-l0-rt1316-l12-rt714-l3.tplg", 702 }, 703 { 704 .link_mask = 0xF, /* 4 active links required */ 705 .links = adl_sdca_3_in_1, 706 .drv_name = "sof_sdw", 707 .sof_tplg_filename = "sof-adl-rt711-l0-rt1316-l13-rt714-l2.tplg", 708 }, 709 { 710 .link_mask = 0xF, /* 4 active links required */ 711 .links = adl_sdw_rt711_link2_rt1316_link01_rt714_link3, 712 .drv_name = "sof_sdw", 713 .sof_tplg_filename = "sof-adl-rt711-l2-rt1316-l01-rt714-l3.tplg", 714 }, 715 { 716 .link_mask = 0x7, /* rt1316 on link0 and link1 & rt711 on link2*/ 717 .links = adl_sdw_rt711_link2_rt1316_link01, 718 .drv_name = "sof_sdw", 719 .sof_tplg_filename = "sof-adl-rt711-l2-rt1316-l01.tplg", 720 }, 721 { 722 .link_mask = 0xC, /* rt1316 on link2 & rt714 on link3 */ 723 .links = adl_sdw_rt1316_link2_rt714_link3, 724 .drv_name = "sof_sdw", 725 .sof_tplg_filename = "sof-adl-rt1316-l2-mono-rt714-l3.tplg", 726 }, 727 { 728 .link_mask = 0x7, /* rt714 on link0 & two rt1316s on link1 and link2 */ 729 .links = adl_sdw_rt1316_link12_rt714_link0, 730 .drv_name = "sof_sdw", 731 .sof_tplg_filename = "sof-adl-rt1316-l12-rt714-l0.tplg", 732 }, 733 { 734 .link_mask = 0x3, /* rt1316 on link1 & rt714 on link0 */ 735 .links = adl_sdw_rt1316_link1_rt714_link0, 736 .drv_name = "sof_sdw", 737 .sof_tplg_filename = "sof-adl-rt1316-l1-mono-rt714-l0.tplg", 738 }, 739 { 740 .link_mask = 0x5, /* 2 active links required */ 741 .links = adl_sdw_rt1316_link2_rt714_link0, 742 .drv_name = "sof_sdw", 743 .sof_tplg_filename = "sof-adl-rt1316-l2-mono-rt714-l0.tplg", 744 }, 745 { 746 .link_mask = 0x9, /* 2 active links required */ 747 .links = adl_sdw_rt711_link0_rt1316_link3, 748 .drv_name = "sof_sdw", 749 .sof_tplg_filename = "sof-adl-rt711-l0-rt1316-l3.tplg", 750 }, 751 { 752 .link_mask = 0x5, /* 2 active links required */ 753 .links = adl_sdw_rt711_link0_rt1316_link2, 754 .drv_name = "sof_sdw", 755 .sof_tplg_filename = "sof-adl-rt711-l0-rt1316-l2.tplg", 756 }, 757 { 758 .link_mask = 0x1, /* link0 required */ 759 .links = adl_rvp, 760 .drv_name = "sof_sdw", 761 .sof_tplg_filename = "sof-adl-rt711.tplg", 762 }, 763 { 764 .link_mask = 0x1, /* link0 required */ 765 .links = adlps_rvp, 766 .drv_name = "sof_sdw", 767 .sof_tplg_filename = "sof-adl-rt711.tplg", 768 }, 769 { 770 .link_mask = 0x5, /* rt5682 on link0 & 2xmax98373 on link 2 */ 771 .links = adl_chromebook_base, 772 .drv_name = "sof_sdw", 773 .sof_tplg_filename = "sof-adl-sdw-max98373-rt5682.tplg", 774 }, 775 { 776 .link_mask = BIT(0) | BIT(2), 777 .links = adl_sdw_rt1316_link02, 778 .drv_name = "sof_sdw", 779 .sof_tplg_filename = "sof-adl-rt1316-l02.tplg", 780 }, 781 {}, 782 }; 783 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_adl_sdw_machines); 784