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