1 // SPDX-License-Identifier: GPL-2.0-only 2 /* 3 * soc-acpi-intel-lnl-match.c - tables and support for LNL ACPI enumeration. 4 * 5 * Copyright (c) 2023, Intel Corporation 6 * 7 */ 8 9 #include <sound/soc-acpi.h> 10 #include <sound/soc-acpi-intel-match.h> 11 #include "sof-function-topology-lib.h" 12 #include "soc-acpi-intel-sdca-quirks.h" 13 #include "soc-acpi-intel-sdw-mockup-match.h" 14 15 struct snd_soc_acpi_mach snd_soc_acpi_intel_lnl_machines[] = { 16 {}, 17 }; 18 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_lnl_machines); 19 20 static const struct snd_soc_acpi_endpoint single_endpoint = { 21 .num = 0, 22 .aggregated = 0, 23 .group_position = 0, 24 .group_id = 0, 25 }; 26 27 static const struct snd_soc_acpi_endpoint spk_l_endpoint = { 28 .num = 0, 29 .aggregated = 1, 30 .group_position = 0, 31 .group_id = 1, 32 }; 33 34 static const struct snd_soc_acpi_endpoint spk_r_endpoint = { 35 .num = 0, 36 .aggregated = 1, 37 .group_position = 1, 38 .group_id = 1, 39 }; 40 41 static const struct snd_soc_acpi_endpoint spk_1_endpoint = { 42 .num = 0, 43 .aggregated = 1, 44 .group_position = 1, 45 .group_id = 1, 46 }; 47 48 static const struct snd_soc_acpi_endpoint spk_2_endpoint = { 49 .num = 0, 50 .aggregated = 1, 51 .group_position = 2, 52 .group_id = 1, 53 }; 54 55 static const struct snd_soc_acpi_endpoint spk_3_endpoint = { 56 .num = 0, 57 .aggregated = 1, 58 .group_position = 3, 59 .group_id = 1, 60 }; 61 62 static const struct snd_soc_acpi_endpoint spk_4_endpoint = { 63 .num = 0, 64 .aggregated = 1, 65 .group_position = 4, 66 .group_id = 1, 67 }; 68 69 static const struct snd_soc_acpi_endpoint spk_5_endpoint = { 70 .num = 0, 71 .aggregated = 1, 72 .group_position = 5, 73 .group_id = 1, 74 }; 75 76 static const struct snd_soc_acpi_endpoint spk_6_endpoint = { 77 .num = 0, 78 .aggregated = 1, 79 .group_position = 6, 80 .group_id = 1, 81 }; 82 83 static const struct snd_soc_acpi_endpoint rt712_endpoints[] = { 84 { 85 .num = 0, 86 .aggregated = 0, 87 .group_position = 0, 88 .group_id = 0, 89 }, 90 { 91 .num = 1, 92 .aggregated = 0, 93 .group_position = 0, 94 .group_id = 0, 95 }, 96 }; 97 98 /* 99 * RT722 is a multi-function codec, three endpoints are created for 100 * its headset, amp and dmic functions. 101 */ 102 static const struct snd_soc_acpi_endpoint rt722_endpoints[] = { 103 { 104 .num = 0, 105 .aggregated = 0, 106 .group_position = 0, 107 .group_id = 0, 108 }, 109 { 110 .num = 1, 111 .aggregated = 0, 112 .group_position = 0, 113 .group_id = 0, 114 }, 115 { 116 .num = 2, 117 .aggregated = 0, 118 .group_position = 0, 119 .group_id = 0, 120 }, 121 }; 122 123 static const struct snd_soc_acpi_endpoint jack_dmic_endpoints[] = { 124 /* Jack Endpoint */ 125 { 126 .num = 0, 127 .aggregated = 0, 128 .group_position = 0, 129 .group_id = 0, 130 }, 131 /* DMIC Endpoint */ 132 { 133 .num = 1, 134 .aggregated = 0, 135 .group_position = 0, 136 .group_id = 0, 137 }, 138 }; 139 140 static const struct snd_soc_acpi_endpoint jack_amp_g1_dmic_endpoints[] = { 141 /* Jack Endpoint */ 142 { 143 .num = 0, 144 .aggregated = 0, 145 .group_position = 0, 146 .group_id = 0, 147 }, 148 /* Amp Endpoint, work as spk_l_endpoint */ 149 { 150 .num = 1, 151 .aggregated = 1, 152 .group_position = 0, 153 .group_id = 1, 154 }, 155 /* DMIC Endpoint */ 156 { 157 .num = 2, 158 .aggregated = 0, 159 .group_position = 0, 160 .group_id = 0, 161 }, 162 }; 163 164 static const struct snd_soc_acpi_endpoint cs42l43_endpoints[] = { 165 { /* Jack Playback Endpoint */ 166 .num = 0, 167 .aggregated = 0, 168 .group_position = 0, 169 .group_id = 0, 170 }, 171 { /* DMIC Capture Endpoint */ 172 .num = 1, 173 .aggregated = 0, 174 .group_position = 0, 175 .group_id = 0, 176 }, 177 { /* Jack Capture Endpoint */ 178 .num = 2, 179 .aggregated = 0, 180 .group_position = 0, 181 .group_id = 0, 182 }, 183 { /* Speaker Playback Endpoint */ 184 .num = 3, 185 .aggregated = 0, 186 .group_position = 0, 187 .group_id = 0, 188 }, 189 }; 190 191 static const struct snd_soc_acpi_endpoint cs42l43_amp_spkagg_endpoints[] = { 192 { /* Jack Playback Endpoint */ 193 .num = 0, 194 .aggregated = 0, 195 .group_position = 0, 196 .group_id = 0, 197 }, 198 { /* DMIC Capture Endpoint */ 199 .num = 1, 200 .aggregated = 0, 201 .group_position = 0, 202 .group_id = 0, 203 }, 204 { /* Jack Capture Endpoint */ 205 .num = 2, 206 .aggregated = 0, 207 .group_position = 0, 208 .group_id = 0, 209 }, 210 { /* Speaker Playback Endpoint */ 211 .num = 3, 212 .aggregated = 1, 213 .group_position = 0, 214 .group_id = 1, 215 }, 216 }; 217 218 static const struct snd_soc_acpi_adr_device cs35l56_2_l_adr[] = { 219 { 220 .adr = 0x00023001FA355601ull, 221 .num_endpoints = 1, 222 .endpoints = &spk_l_endpoint, 223 .name_prefix = "AMP1" 224 }, 225 { 226 .adr = 0x00023101FA355601ull, 227 .num_endpoints = 1, 228 .endpoints = &spk_2_endpoint, 229 .name_prefix = "AMP2" 230 } 231 }; 232 233 static const struct snd_soc_acpi_adr_device cs35l56_3_r_adr[] = { 234 { 235 .adr = 0x00033201fa355601ull, 236 .num_endpoints = 1, 237 .endpoints = &spk_r_endpoint, 238 .name_prefix = "AMP3" 239 }, 240 { 241 .adr = 0x00033301fa355601ull, 242 .num_endpoints = 1, 243 .endpoints = &spk_3_endpoint, 244 .name_prefix = "AMP4" 245 } 246 }; 247 248 static const struct snd_soc_acpi_adr_device cs35l56_3_lr_adr[] = { 249 { 250 .adr = 0x00033001fa355601ull, 251 .num_endpoints = 1, 252 .endpoints = &spk_l_endpoint, 253 .name_prefix = "AMP1" 254 }, 255 { 256 .adr = 0x00033101fa355601ull, 257 .num_endpoints = 1, 258 .endpoints = &spk_r_endpoint, 259 .name_prefix = "AMP2" 260 } 261 }; 262 263 static const struct snd_soc_acpi_adr_device cs35l56_1_3amp_adr[] = { 264 { 265 .adr = 0x00013001fa355601ull, 266 .num_endpoints = 1, 267 .endpoints = &spk_1_endpoint, 268 .name_prefix = "AMP1" 269 }, 270 { 271 .adr = 0x00013101fa355601ull, 272 .num_endpoints = 1, 273 .endpoints = &spk_2_endpoint, 274 .name_prefix = "AMP2" 275 }, 276 { 277 .adr = 0x00013201fa355601ull, 278 .num_endpoints = 1, 279 .endpoints = &spk_3_endpoint, 280 .name_prefix = "AMP3" 281 } 282 }; 283 284 static const struct snd_soc_acpi_adr_device cs35l56_3_3amp_adr[] = { 285 { 286 .adr = 0x00033301fa355601ull, 287 .num_endpoints = 1, 288 .endpoints = &spk_4_endpoint, 289 .name_prefix = "AMP4" 290 }, 291 { 292 .adr = 0x00033401fa355601ull, 293 .num_endpoints = 1, 294 .endpoints = &spk_5_endpoint, 295 .name_prefix = "AMP5" 296 }, 297 { 298 .adr = 0x00033501fa355601ull, 299 .num_endpoints = 1, 300 .endpoints = &spk_6_endpoint, 301 .name_prefix = "AMP6" 302 } 303 }; 304 305 static const struct snd_soc_acpi_adr_device cs42l43_0_adr[] = { 306 { 307 .adr = 0x00003001FA424301ull, 308 .num_endpoints = ARRAY_SIZE(cs42l43_endpoints), 309 .endpoints = cs42l43_endpoints, 310 .name_prefix = "cs42l43" 311 } 312 }; 313 314 static const struct snd_soc_acpi_adr_device cs42l43_2_adr[] = { 315 { 316 .adr = 0x00023001fa424301ull, 317 .num_endpoints = ARRAY_SIZE(cs42l43_amp_spkagg_endpoints), 318 .endpoints = cs42l43_amp_spkagg_endpoints, 319 .name_prefix = "cs42l43" 320 } 321 }; 322 323 static const struct snd_soc_acpi_adr_device rt711_sdca_0_adr[] = { 324 { 325 .adr = 0x000030025D071101ull, 326 .num_endpoints = 1, 327 .endpoints = &single_endpoint, 328 .name_prefix = "rt711" 329 } 330 }; 331 332 static const struct snd_soc_acpi_adr_device rt712_2_single_adr[] = { 333 { 334 .adr = 0x000230025D071201ull, 335 .num_endpoints = ARRAY_SIZE(rt712_endpoints), 336 .endpoints = rt712_endpoints, 337 .name_prefix = "rt712" 338 } 339 }; 340 341 static const struct snd_soc_acpi_adr_device rt1712_3_single_adr[] = { 342 { 343 .adr = 0x000330025D171201ull, 344 .num_endpoints = 1, 345 .endpoints = &single_endpoint, 346 .name_prefix = "rt712-dmic" 347 } 348 }; 349 350 static const struct snd_soc_acpi_adr_device rt712_vb_2_group1_adr[] = { 351 { 352 .adr = 0x000230025D071201ull, 353 .num_endpoints = ARRAY_SIZE(jack_amp_g1_dmic_endpoints), 354 .endpoints = jack_amp_g1_dmic_endpoints, 355 .name_prefix = "rt712" 356 } 357 }; 358 359 static const struct snd_soc_acpi_adr_device rt722_0_single_adr[] = { 360 { 361 .adr = 0x000030025d072201ull, 362 .num_endpoints = ARRAY_SIZE(rt722_endpoints), 363 .endpoints = rt722_endpoints, 364 .name_prefix = "rt722" 365 } 366 }; 367 368 static const struct snd_soc_acpi_adr_device rt1316_2_group1_adr[] = { 369 { 370 .adr = 0x000230025D131601ull, 371 .num_endpoints = 1, 372 .endpoints = &spk_l_endpoint, 373 .name_prefix = "rt1316-1" 374 } 375 }; 376 377 static const struct snd_soc_acpi_adr_device rt1316_3_group1_adr[] = { 378 { 379 .adr = 0x000331025D131601ull, 380 .num_endpoints = 1, 381 .endpoints = &spk_r_endpoint, 382 .name_prefix = "rt1316-2" 383 } 384 }; 385 386 static const struct snd_soc_acpi_adr_device rt1318_1_adr[] = { 387 { 388 .adr = 0x000133025D131801ull, 389 .num_endpoints = 1, 390 .endpoints = &single_endpoint, 391 .name_prefix = "rt1318-1" 392 } 393 }; 394 395 static const struct snd_soc_acpi_adr_device rt1318_1_group1_adr[] = { 396 { 397 .adr = 0x000130025D131801ull, 398 .num_endpoints = 1, 399 .endpoints = &spk_l_endpoint, 400 .name_prefix = "rt1318-1" 401 } 402 }; 403 404 static const struct snd_soc_acpi_adr_device rt1318_2_group1_adr[] = { 405 { 406 .adr = 0x000232025D131801ull, 407 .num_endpoints = 1, 408 .endpoints = &spk_r_endpoint, 409 .name_prefix = "rt1318-2" 410 } 411 }; 412 413 static const struct snd_soc_acpi_adr_device rt1320_1_group1_adr[] = { 414 { 415 .adr = 0x000130025D132001ull, 416 .num_endpoints = 1, 417 .endpoints = &spk_r_endpoint, 418 .name_prefix = "rt1320-1" 419 } 420 }; 421 422 static const struct snd_soc_acpi_adr_device rt1320_1_group2_adr[] = { 423 { 424 .adr = 0x000130025D132001ull, 425 .num_endpoints = 1, 426 .endpoints = &spk_l_endpoint, 427 .name_prefix = "rt1320-1" 428 } 429 }; 430 431 static const struct snd_soc_acpi_adr_device rt1320_3_group2_adr[] = { 432 { 433 .adr = 0x000330025D132001ull, 434 .num_endpoints = 1, 435 .endpoints = &spk_r_endpoint, 436 .name_prefix = "rt1320-2" 437 } 438 }; 439 440 static const struct snd_soc_acpi_adr_device rt713_0_adr[] = { 441 { 442 .adr = 0x000031025D071301ull, 443 .num_endpoints = 1, 444 .endpoints = &single_endpoint, 445 .name_prefix = "rt713" 446 } 447 }; 448 449 static const struct snd_soc_acpi_adr_device rt713_vb_2_adr[] = { 450 { 451 .adr = 0x000230025d071301ull, 452 .num_endpoints = ARRAY_SIZE(jack_dmic_endpoints), 453 .endpoints = jack_dmic_endpoints, 454 .name_prefix = "rt713" 455 } 456 }; 457 458 static const struct snd_soc_acpi_adr_device rt714_0_adr[] = { 459 { 460 .adr = 0x000030025D071401ull, 461 .num_endpoints = 1, 462 .endpoints = &single_endpoint, 463 .name_prefix = "rt714" 464 } 465 }; 466 467 static const struct snd_soc_acpi_adr_device rt714_1_adr[] = { 468 { 469 .adr = 0x000130025D071401ull, 470 .num_endpoints = 1, 471 .endpoints = &single_endpoint, 472 .name_prefix = "rt714" 473 } 474 }; 475 476 static const struct snd_soc_acpi_link_adr lnl_cs42l43_l0[] = { 477 { 478 .mask = BIT(0), 479 .num_adr = ARRAY_SIZE(cs42l43_0_adr), 480 .adr_d = cs42l43_0_adr, 481 }, 482 {} 483 }; 484 485 static const struct snd_soc_acpi_link_adr lnl_cs42l43_l0_cs35l56_l3[] = { 486 { 487 .mask = BIT(0), 488 .num_adr = ARRAY_SIZE(cs42l43_0_adr), 489 .adr_d = cs42l43_0_adr, 490 }, 491 { 492 .mask = BIT(3), 493 .num_adr = ARRAY_SIZE(cs35l56_3_lr_adr), 494 .adr_d = cs35l56_3_lr_adr, 495 }, 496 {} 497 }; 498 499 static const struct snd_soc_acpi_link_adr lnl_cs42l43_l0_cs35l56_l23[] = { 500 { 501 .mask = BIT(0), 502 .num_adr = ARRAY_SIZE(cs42l43_0_adr), 503 .adr_d = cs42l43_0_adr, 504 }, 505 { 506 .mask = BIT(2), 507 .num_adr = ARRAY_SIZE(cs35l56_2_l_adr), 508 .adr_d = cs35l56_2_l_adr, 509 }, 510 { 511 .mask = BIT(3), 512 .num_adr = ARRAY_SIZE(cs35l56_3_r_adr), 513 .adr_d = cs35l56_3_r_adr, 514 }, 515 {} 516 }; 517 518 static const struct snd_soc_acpi_link_adr lnl_cs42l43_l2_cs35l56x6_l13[] = { 519 { 520 .mask = BIT(2), 521 .num_adr = ARRAY_SIZE(cs42l43_2_adr), 522 .adr_d = cs42l43_2_adr, 523 }, 524 { 525 .mask = BIT(1), 526 .num_adr = ARRAY_SIZE(cs35l56_1_3amp_adr), 527 .adr_d = cs35l56_1_3amp_adr, 528 }, 529 { 530 .mask = BIT(3), 531 .num_adr = ARRAY_SIZE(cs35l56_3_3amp_adr), 532 .adr_d = cs35l56_3_3amp_adr, 533 }, 534 {} 535 }; 536 537 static const struct snd_soc_acpi_link_adr lnl_rvp[] = { 538 { 539 .mask = BIT(0), 540 .num_adr = ARRAY_SIZE(rt711_sdca_0_adr), 541 .adr_d = rt711_sdca_0_adr, 542 }, 543 {} 544 }; 545 546 static const struct snd_soc_acpi_link_adr lnl_712_only[] = { 547 { 548 .mask = BIT(2), 549 .num_adr = ARRAY_SIZE(rt712_2_single_adr), 550 .adr_d = rt712_2_single_adr, 551 }, 552 { 553 .mask = BIT(3), 554 .num_adr = ARRAY_SIZE(rt1712_3_single_adr), 555 .adr_d = rt1712_3_single_adr, 556 }, 557 {} 558 }; 559 560 static const struct snd_soc_acpi_link_adr lnl_rt722_only[] = { 561 { 562 .mask = BIT(0), 563 .num_adr = ARRAY_SIZE(rt722_0_single_adr), 564 .adr_d = rt722_0_single_adr, 565 }, 566 {} 567 }; 568 569 static const struct snd_soc_acpi_link_adr lnl_3_in_1_sdca[] = { 570 { 571 .mask = BIT(0), 572 .num_adr = ARRAY_SIZE(rt711_sdca_0_adr), 573 .adr_d = rt711_sdca_0_adr, 574 }, 575 { 576 .mask = BIT(2), 577 .num_adr = ARRAY_SIZE(rt1316_2_group1_adr), 578 .adr_d = rt1316_2_group1_adr, 579 }, 580 { 581 .mask = BIT(3), 582 .num_adr = ARRAY_SIZE(rt1316_3_group1_adr), 583 .adr_d = rt1316_3_group1_adr, 584 }, 585 { 586 .mask = BIT(1), 587 .num_adr = ARRAY_SIZE(rt714_1_adr), 588 .adr_d = rt714_1_adr, 589 }, 590 {} 591 }; 592 593 static const struct snd_soc_acpi_link_adr lnl_sdw_rt1318_l12_rt714_l0[] = { 594 { 595 .mask = BIT(1), 596 .num_adr = ARRAY_SIZE(rt1318_1_group1_adr), 597 .adr_d = rt1318_1_group1_adr, 598 }, 599 { 600 .mask = BIT(2), 601 .num_adr = ARRAY_SIZE(rt1318_2_group1_adr), 602 .adr_d = rt1318_2_group1_adr, 603 }, 604 { 605 .mask = BIT(0), 606 .num_adr = ARRAY_SIZE(rt714_0_adr), 607 .adr_d = rt714_0_adr, 608 }, 609 {} 610 }; 611 612 static const struct snd_soc_acpi_link_adr lnl_sdw_rt713_l0_rt1318_l1[] = { 613 { 614 .mask = BIT(0), 615 .num_adr = ARRAY_SIZE(rt713_0_adr), 616 .adr_d = rt713_0_adr, 617 }, 618 { 619 .mask = BIT(1), 620 .num_adr = ARRAY_SIZE(rt1318_1_adr), 621 .adr_d = rt1318_1_adr, 622 }, 623 {} 624 }; 625 626 static const struct snd_soc_acpi_link_adr lnl_sdw_rt713_vb_l2_rt1320_l13[] = { 627 { 628 .mask = BIT(2), 629 .num_adr = ARRAY_SIZE(rt713_vb_2_adr), 630 .adr_d = rt713_vb_2_adr, 631 }, 632 { 633 .mask = BIT(1), 634 .num_adr = ARRAY_SIZE(rt1320_1_group2_adr), 635 .adr_d = rt1320_1_group2_adr, 636 }, 637 { 638 .mask = BIT(3), 639 .num_adr = ARRAY_SIZE(rt1320_3_group2_adr), 640 .adr_d = rt1320_3_group2_adr, 641 }, 642 {} 643 }; 644 645 static const struct snd_soc_acpi_link_adr lnl_sdw_rt712_vb_l2_rt1320_l1[] = { 646 { 647 .mask = BIT(2), 648 .num_adr = ARRAY_SIZE(rt712_vb_2_group1_adr), 649 .adr_d = rt712_vb_2_group1_adr, 650 }, 651 { 652 .mask = BIT(1), 653 .num_adr = ARRAY_SIZE(rt1320_1_group1_adr), 654 .adr_d = rt1320_1_group1_adr, 655 }, 656 {} 657 }; 658 659 /* this table is used when there is no I2S codec present */ 660 /* this table is used when there is no I2S codec present */ 661 struct snd_soc_acpi_mach snd_soc_acpi_intel_lnl_sdw_machines[] = { 662 /* mockup tests need to be first */ 663 { 664 .link_mask = GENMASK(3, 0), 665 .links = sdw_mockup_headset_2amps_mic, 666 .drv_name = "sof_sdw", 667 .sof_tplg_filename = "sof-lnl-rt711-rt1308-rt715.tplg", 668 }, 669 { 670 .link_mask = BIT(0) | BIT(1) | BIT(3), 671 .links = sdw_mockup_headset_1amp_mic, 672 .drv_name = "sof_sdw", 673 .sof_tplg_filename = "sof-lnl-rt711-rt1308-mono-rt715.tplg", 674 }, 675 { 676 .link_mask = GENMASK(2, 0), 677 .links = sdw_mockup_mic_headset_1amp, 678 .drv_name = "sof_sdw", 679 .sof_tplg_filename = "sof-lnl-rt715-rt711-rt1308-mono.tplg", 680 }, 681 { 682 .link_mask = BIT(0), 683 .links = sdw_mockup_multi_func, 684 .drv_name = "sof_sdw", 685 .sof_tplg_filename = "sof-lnl-rt722-l0.tplg", /* Reuse the existing tplg file */ 686 }, 687 { 688 .link_mask = GENMASK(3, 0), 689 .links = lnl_3_in_1_sdca, 690 .drv_name = "sof_sdw", 691 .sof_tplg_filename = "sof-lnl-rt711-l0-rt1316-l23-rt714-l1.tplg", 692 }, 693 { 694 .link_mask = BIT(0) | BIT(2) | BIT(3), 695 .links = lnl_cs42l43_l0_cs35l56_l23, 696 .drv_name = "sof_sdw", 697 .sof_tplg_filename = "sof-lnl-cs42l43-l0-cs35l56-l23.tplg", 698 }, 699 { 700 .link_mask = BIT(1) | BIT(2) | BIT(3), 701 .links = lnl_cs42l43_l2_cs35l56x6_l13, 702 .drv_name = "sof_sdw", 703 .sof_tplg_filename = "sof-lnl-cs42l43-l2-cs35l56x6-l13.tplg", 704 }, 705 { 706 .link_mask = BIT(0) | BIT(3), 707 .links = lnl_cs42l43_l0_cs35l56_l3, 708 .drv_name = "sof_sdw", 709 .sof_tplg_filename = "sof-lnl-cs42l43-l0-cs35l56-l3.tplg", 710 }, 711 { 712 .link_mask = BIT(0), 713 .links = lnl_cs42l43_l0, 714 .drv_name = "sof_sdw", 715 .sof_tplg_filename = "sof-lnl-cs42l43-l0.tplg", 716 .get_function_tplg_files = sof_sdw_get_tplg_files, 717 }, 718 { 719 .link_mask = BIT(0), 720 .links = lnl_rvp, 721 .drv_name = "sof_sdw", 722 .sof_tplg_filename = "sof-lnl-rt711.tplg", 723 }, 724 { 725 .link_mask = BIT(2) | BIT(3), 726 .links = lnl_712_only, 727 .drv_name = "sof_sdw", 728 .sof_tplg_filename = "sof-lnl-rt712-l2-rt1712-l3.tplg", 729 }, 730 { 731 .link_mask = BIT(0), 732 .links = lnl_rt722_only, 733 .drv_name = "sof_sdw", 734 .sof_tplg_filename = "sof-lnl-rt722-l0.tplg", 735 .get_function_tplg_files = sof_sdw_get_tplg_files, 736 }, 737 { 738 .link_mask = GENMASK(2, 0), 739 .links = lnl_sdw_rt1318_l12_rt714_l0, 740 .drv_name = "sof_sdw", 741 .sof_tplg_filename = "sof-lnl-rt1318-l12-rt714-l0.tplg" 742 }, 743 { 744 .link_mask = BIT(0) | BIT(1), 745 .links = lnl_sdw_rt713_l0_rt1318_l1, 746 .drv_name = "sof_sdw", 747 .sof_tplg_filename = "sof-lnl-rt713-l0-rt1318-l1.tplg" 748 }, 749 { 750 .link_mask = BIT(1) | BIT(2), 751 .links = lnl_sdw_rt712_vb_l2_rt1320_l1, 752 .drv_name = "sof_sdw", 753 .machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb, 754 .sof_tplg_filename = "sof-lnl-rt712-l2-rt1320-l1.tplg", 755 .get_function_tplg_files = sof_sdw_get_tplg_files, 756 }, 757 { 758 .link_mask = BIT(1) | BIT(2) | BIT(3), 759 .links = lnl_sdw_rt713_vb_l2_rt1320_l13, 760 .drv_name = "sof_sdw", 761 .machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb, 762 .sof_tplg_filename = "sof-lnl-rt713-l2-rt1320-l13.tplg", 763 .get_function_tplg_files = sof_sdw_get_tplg_files, 764 }, 765 {}, 766 }; 767 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_lnl_sdw_machines); 768