1 // SPDX-License-Identifier: GPL-2.0-only 2 /* 3 * soc-acpi-intel-ptl-match.c - tables and support for PTL ACPI enumeration. 4 * 5 * Copyright (c) 2024, Intel Corporation. 6 * 7 * Order of entries in snd_soc_acpi_intel_ptl_sdw_machines[] matters. 8 * Check subset of link mask when matching the machine driver, rule is 9 * superset match should be ordered before subset matches. 10 */ 11 12 #include <sound/soc-acpi.h> 13 #include <sound/soc-acpi-intel-match.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 #include <sound/soc-acpi-intel-ssp-common.h> 18 19 static const struct snd_soc_acpi_codecs ptl_rt5682_rt5682s_hp = { 20 .num_codecs = 2, 21 .codecs = {RT5682_ACPI_HID, RT5682S_ACPI_HID}, 22 }; 23 24 static const struct snd_soc_acpi_codecs ptl_essx_83x6 = { 25 .num_codecs = 3, 26 .codecs = { "ESSX8316", "ESSX8326", "ESSX8336"}, 27 }; 28 29 static const struct snd_soc_acpi_codecs ptl_lt6911_hdmi = { 30 .num_codecs = 1, 31 .codecs = {"INTC10B0"} 32 }; 33 34 struct snd_soc_acpi_mach snd_soc_acpi_intel_ptl_machines[] = { 35 { 36 .comp_ids = &ptl_rt5682_rt5682s_hp, 37 .drv_name = "ptl_rt5682_c1_h02", 38 .machine_quirk = snd_soc_acpi_codec_list, 39 .quirk_data = &ptl_lt6911_hdmi, 40 .sof_tplg_filename = "sof-ptl-rt5682-ssp1-hdmi-ssp02.tplg", 41 }, 42 { 43 .comp_ids = &ptl_rt5682_rt5682s_hp, 44 .drv_name = "ptl_rt5682_def", 45 .sof_tplg_filename = "sof-ptl", /* the tplg suffix is added at run time */ 46 .tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_AMP_NAME | 47 SND_SOC_ACPI_TPLG_INTEL_CODEC_NAME, 48 }, 49 { 50 .comp_ids = &ptl_essx_83x6, 51 .drv_name = "ptl_es83x6_c1_h02", 52 .machine_quirk = snd_soc_acpi_codec_list, 53 .quirk_data = &ptl_lt6911_hdmi, 54 .sof_tplg_filename = "sof-ptl-es83x6-ssp1-hdmi-ssp02.tplg", 55 }, 56 { 57 .comp_ids = &ptl_essx_83x6, 58 .drv_name = "sof-essx8336", 59 .sof_tplg_filename = "sof-ptl-es8336", /* the tplg suffix is added at run time */ 60 .tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_SSP_NUMBER | 61 SND_SOC_ACPI_TPLG_INTEL_SSP_MSB | 62 SND_SOC_ACPI_TPLG_INTEL_DMIC_NUMBER, 63 }, 64 /* place amp-only boards in the end of table */ 65 { 66 .id = "INTC10B0", 67 .drv_name = "ptl_lt6911_hdmi_ssp", 68 .sof_tplg_filename = "sof-ptl-hdmi-ssp02.tplg", 69 }, 70 {}, 71 }; 72 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_ptl_machines); 73 74 static const struct snd_soc_acpi_endpoint single_endpoint = { 75 .num = 0, 76 .aggregated = 0, 77 .group_position = 0, 78 .group_id = 0, 79 }; 80 81 static const struct snd_soc_acpi_endpoint spk_l_endpoint = { 82 .num = 0, 83 .aggregated = 1, 84 .group_position = 0, 85 .group_id = 1, 86 }; 87 88 static const struct snd_soc_acpi_endpoint spk_r_endpoint = { 89 .num = 0, 90 .aggregated = 1, 91 .group_position = 1, 92 .group_id = 1, 93 }; 94 95 static const struct snd_soc_acpi_endpoint spk_1_endpoint = { 96 .num = 0, 97 .aggregated = 1, 98 .group_position = 1, 99 .group_id = 1, 100 }; 101 102 static const struct snd_soc_acpi_endpoint spk_2_endpoint = { 103 .num = 0, 104 .aggregated = 1, 105 .group_position = 2, 106 .group_id = 1, 107 }; 108 109 static const struct snd_soc_acpi_endpoint spk_3_endpoint = { 110 .num = 0, 111 .aggregated = 1, 112 .group_position = 3, 113 .group_id = 1, 114 }; 115 116 static const struct snd_soc_acpi_endpoint spk_4_endpoint = { 117 .num = 0, 118 .aggregated = 1, 119 .group_position = 4, 120 .group_id = 1, 121 }; 122 123 static const struct snd_soc_acpi_endpoint spk_5_endpoint = { 124 .num = 0, 125 .aggregated = 1, 126 .group_position = 5, 127 .group_id = 1, 128 }; 129 130 static const struct snd_soc_acpi_endpoint spk_6_endpoint = { 131 .num = 0, 132 .aggregated = 1, 133 .group_position = 6, 134 .group_id = 1, 135 }; 136 137 /* 138 * Multi-function codecs with three endpoints created for 139 * headset, amp and dmic functions. 140 */ 141 static const struct snd_soc_acpi_endpoint rt_mf_endpoints[] = { 142 { 143 .num = 0, 144 .aggregated = 0, 145 .group_position = 0, 146 .group_id = 0, 147 }, 148 { 149 .num = 1, 150 .aggregated = 0, 151 .group_position = 0, 152 .group_id = 0, 153 }, 154 { 155 .num = 2, 156 .aggregated = 0, 157 .group_position = 0, 158 .group_id = 0, 159 }, 160 }; 161 162 static const struct snd_soc_acpi_endpoint jack_dmic_endpoints[] = { 163 /* Jack Endpoint */ 164 { 165 .num = 0, 166 .aggregated = 0, 167 .group_position = 0, 168 .group_id = 0, 169 }, 170 /* DMIC Endpoint */ 171 { 172 .num = 1, 173 .aggregated = 0, 174 .group_position = 0, 175 .group_id = 0, 176 }, 177 }; 178 179 static const struct snd_soc_acpi_endpoint jack_amp_g1_dmic_endpoints[] = { 180 /* Jack Endpoint */ 181 { 182 .num = 0, 183 .aggregated = 0, 184 .group_position = 0, 185 .group_id = 0, 186 }, 187 /* Amp Endpoint, work as spk_l_endpoint */ 188 { 189 .num = 1, 190 .aggregated = 1, 191 .group_position = 0, 192 .group_id = 1, 193 }, 194 /* DMIC Endpoint */ 195 { 196 .num = 2, 197 .aggregated = 0, 198 .group_position = 0, 199 .group_id = 0, 200 }, 201 }; 202 203 static const struct snd_soc_acpi_endpoint cs42l43_amp_spkagg_endpoints[] = { 204 { /* Jack Playback Endpoint */ 205 .num = 0, 206 .aggregated = 0, 207 .group_position = 0, 208 .group_id = 0, 209 }, 210 { /* DMIC Capture Endpoint */ 211 .num = 1, 212 .aggregated = 0, 213 .group_position = 0, 214 .group_id = 0, 215 }, 216 { /* Jack Capture Endpoint */ 217 .num = 2, 218 .aggregated = 0, 219 .group_position = 0, 220 .group_id = 0, 221 }, 222 { /* Speaker Playback Endpoint */ 223 .num = 3, 224 .aggregated = 1, 225 .group_position = 0, 226 .group_id = 1, 227 }, 228 }; 229 230 static const struct snd_soc_acpi_adr_device cs42l43_2_adr[] = { 231 { 232 .adr = 0x00023001fa424301ull, 233 .num_endpoints = ARRAY_SIZE(cs42l43_amp_spkagg_endpoints), 234 .endpoints = cs42l43_amp_spkagg_endpoints, 235 .name_prefix = "cs42l43" 236 } 237 }; 238 239 static const struct snd_soc_acpi_adr_device cs42l43_3_agg_adr[] = { 240 { 241 .adr = 0x00033001FA424301ull, 242 .num_endpoints = ARRAY_SIZE(cs42l43_amp_spkagg_endpoints), 243 .endpoints = cs42l43_amp_spkagg_endpoints, 244 .name_prefix = "cs42l43" 245 } 246 }; 247 248 static const struct snd_soc_acpi_adr_device cs35l56_2_lr_adr[] = { 249 { 250 .adr = 0x00023001fa355601ull, 251 .num_endpoints = 1, 252 .endpoints = &spk_l_endpoint, 253 .name_prefix = "AMP1" 254 }, 255 { 256 .adr = 0x00023101fa355601ull, 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 rt711_sdca_0_adr[] = { 306 { 307 .adr = 0x000030025D071101ull, 308 .num_endpoints = 1, 309 .endpoints = &single_endpoint, 310 .name_prefix = "rt711" 311 } 312 }; 313 314 static const struct snd_soc_acpi_adr_device rt712_vb_2_group1_adr[] = { 315 { 316 .adr = 0x000230025D071201ull, 317 .num_endpoints = ARRAY_SIZE(jack_amp_g1_dmic_endpoints), 318 .endpoints = jack_amp_g1_dmic_endpoints, 319 .name_prefix = "rt712" 320 } 321 }; 322 323 static const struct snd_soc_acpi_adr_device rt712_vb_3_group1_adr[] = { 324 { 325 .adr = 0x000330025D071201ull, 326 .num_endpoints = ARRAY_SIZE(jack_amp_g1_dmic_endpoints), 327 .endpoints = jack_amp_g1_dmic_endpoints, 328 .name_prefix = "rt712" 329 } 330 }; 331 332 static const struct snd_soc_acpi_adr_device rt713_vb_2_adr[] = { 333 { 334 .adr = 0x000230025d071301ull, 335 .num_endpoints = ARRAY_SIZE(jack_dmic_endpoints), 336 .endpoints = jack_dmic_endpoints, 337 .name_prefix = "rt713" 338 } 339 }; 340 341 static const struct snd_soc_acpi_adr_device rt713_vb_3_adr[] = { 342 { 343 .adr = 0x000330025D071301ull, 344 .num_endpoints = ARRAY_SIZE(jack_dmic_endpoints), 345 .endpoints = jack_dmic_endpoints, 346 .name_prefix = "rt713" 347 } 348 }; 349 350 static const struct snd_soc_acpi_adr_device rt1320_3_group1_adr[] = { 351 { 352 .adr = 0x000330025D132001ull, 353 .num_endpoints = 1, 354 .endpoints = &spk_r_endpoint, 355 .name_prefix = "rt1320-1" 356 } 357 }; 358 359 static const struct snd_soc_acpi_adr_device rt721_0_single_adr[] = { 360 { 361 .adr = 0x000030025d072101ull, 362 .num_endpoints = ARRAY_SIZE(rt_mf_endpoints), 363 .endpoints = rt_mf_endpoints, 364 .name_prefix = "rt721" 365 } 366 }; 367 368 static const struct snd_soc_acpi_adr_device rt721_3_single_adr[] = { 369 { 370 .adr = 0x000330025d072101ull, 371 .num_endpoints = ARRAY_SIZE(rt_mf_endpoints), 372 .endpoints = rt_mf_endpoints, 373 .name_prefix = "rt721" 374 } 375 }; 376 377 static const struct snd_soc_acpi_link_adr ptl_rt721_l3[] = { 378 { 379 .mask = BIT(3), 380 .num_adr = ARRAY_SIZE(rt721_3_single_adr), 381 .adr_d = rt721_3_single_adr, 382 }, 383 {}, 384 }; 385 386 static const struct snd_soc_acpi_adr_device rt722_0_single_adr[] = { 387 { 388 .adr = 0x000030025d072201ull, 389 .num_endpoints = ARRAY_SIZE(rt_mf_endpoints), 390 .endpoints = rt_mf_endpoints, 391 .name_prefix = "rt722" 392 } 393 }; 394 395 static const struct snd_soc_acpi_adr_device rt722_1_single_adr[] = { 396 { 397 .adr = 0x000130025d072201ull, 398 .num_endpoints = ARRAY_SIZE(rt_mf_endpoints), 399 .endpoints = rt_mf_endpoints, 400 .name_prefix = "rt722" 401 } 402 }; 403 404 static const struct snd_soc_acpi_adr_device rt722_3_single_adr[] = { 405 { 406 .adr = 0x000330025d072201ull, 407 .num_endpoints = ARRAY_SIZE(rt_mf_endpoints), 408 .endpoints = rt_mf_endpoints, 409 .name_prefix = "rt722" 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_2_group1_adr[] = { 432 { 433 .adr = 0x000230025D132001ull, 434 .num_endpoints = 1, 435 .endpoints = &spk_r_endpoint, 436 .name_prefix = "rt1320-1" 437 } 438 }; 439 440 static const struct snd_soc_acpi_adr_device rt1320_2_group2_adr[] = { 441 { 442 .adr = 0x000230025D132001ull, 443 .num_endpoints = 1, 444 .endpoints = &spk_r_endpoint, 445 .name_prefix = "rt1320-1" 446 } 447 }; 448 449 static const struct snd_soc_acpi_adr_device rt1320_2_group2_l_adr[] = { 450 { 451 .adr = 0x000230025D132001ull, 452 .num_endpoints = 1, 453 .endpoints = &spk_l_endpoint, 454 .name_prefix = "rt1320-1" 455 } 456 }; 457 458 static const struct snd_soc_acpi_adr_device rt1320_3_group2_adr[] = { 459 { 460 .adr = 0x000330025D132001ull, 461 .num_endpoints = 1, 462 .endpoints = &spk_r_endpoint, 463 .name_prefix = "rt1320-2" 464 } 465 }; 466 467 static const struct snd_soc_acpi_link_adr ptl_cs42l43_agg_l3_cs35l56_l2[] = { 468 { 469 .mask = BIT(3), 470 .num_adr = ARRAY_SIZE(cs42l43_3_agg_adr), 471 .adr_d = cs42l43_3_agg_adr, 472 }, 473 { 474 .mask = BIT(2), 475 .num_adr = ARRAY_SIZE(cs35l56_2_lr_adr), 476 .adr_d = cs35l56_2_lr_adr, 477 }, 478 {} 479 }; 480 481 static const struct snd_soc_acpi_link_adr ptl_cs42l43_l2_cs35l56x6_l13[] = { 482 { 483 .mask = BIT(2), 484 .num_adr = ARRAY_SIZE(cs42l43_2_adr), 485 .adr_d = cs42l43_2_adr, 486 }, 487 { 488 .mask = BIT(1), 489 .num_adr = ARRAY_SIZE(cs35l56_1_3amp_adr), 490 .adr_d = cs35l56_1_3amp_adr, 491 }, 492 { 493 .mask = BIT(3), 494 .num_adr = ARRAY_SIZE(cs35l56_3_3amp_adr), 495 .adr_d = cs35l56_3_3amp_adr, 496 }, 497 {} 498 }; 499 500 static const struct snd_soc_acpi_link_adr ptl_rt721_l0[] = { 501 { 502 .mask = BIT(0), 503 .num_adr = ARRAY_SIZE(rt721_0_single_adr), 504 .adr_d = rt721_0_single_adr, 505 }, 506 {} 507 }; 508 509 static const struct snd_soc_acpi_link_adr ptl_rt722_only[] = { 510 { 511 .mask = BIT(0), 512 .num_adr = ARRAY_SIZE(rt722_0_single_adr), 513 .adr_d = rt722_0_single_adr, 514 }, 515 {} 516 }; 517 518 static const struct snd_soc_acpi_link_adr ptl_rt722_l1[] = { 519 { 520 .mask = BIT(1), 521 .num_adr = ARRAY_SIZE(rt722_1_single_adr), 522 .adr_d = rt722_1_single_adr, 523 }, 524 {} 525 }; 526 527 static const struct snd_soc_acpi_link_adr ptl_rt722_l3[] = { 528 { 529 .mask = BIT(3), 530 .num_adr = ARRAY_SIZE(rt722_3_single_adr), 531 .adr_d = rt722_3_single_adr, 532 }, 533 {} 534 }; 535 536 static const struct snd_soc_acpi_link_adr ptl_rt722_l0_rt1320_l23[] = { 537 { 538 .mask = BIT(0), 539 .num_adr = ARRAY_SIZE(rt722_0_single_adr), 540 .adr_d = rt722_0_single_adr, 541 }, 542 { 543 .mask = BIT(2), 544 .num_adr = ARRAY_SIZE(rt1320_2_group2_l_adr), 545 .adr_d = rt1320_2_group2_l_adr, 546 }, 547 { 548 .mask = BIT(3), 549 .num_adr = ARRAY_SIZE(rt1320_3_group2_adr), 550 .adr_d = rt1320_3_group2_adr, 551 }, 552 {} 553 }; 554 555 static const struct snd_soc_acpi_link_adr ptl_rvp[] = { 556 { 557 .mask = BIT(0), 558 .num_adr = ARRAY_SIZE(rt711_sdca_0_adr), 559 .adr_d = rt711_sdca_0_adr, 560 }, 561 {} 562 }; 563 564 static const struct snd_soc_acpi_link_adr ptl_sdw_rt713_vb_l2_rt1320_l13[] = { 565 { 566 .mask = BIT(2), 567 .num_adr = ARRAY_SIZE(rt713_vb_2_adr), 568 .adr_d = rt713_vb_2_adr, 569 }, 570 { 571 .mask = BIT(1), 572 .num_adr = ARRAY_SIZE(rt1320_1_group2_adr), 573 .adr_d = rt1320_1_group2_adr, 574 }, 575 { 576 .mask = BIT(3), 577 .num_adr = ARRAY_SIZE(rt1320_3_group2_adr), 578 .adr_d = rt1320_3_group2_adr, 579 }, 580 {} 581 }; 582 583 static const struct snd_soc_acpi_link_adr ptl_sdw_rt713_vb_l3_rt1320_l12[] = { 584 { 585 .mask = BIT(3), 586 .num_adr = ARRAY_SIZE(rt713_vb_3_adr), 587 .adr_d = rt713_vb_3_adr, 588 }, 589 { 590 .mask = BIT(1), 591 .num_adr = ARRAY_SIZE(rt1320_1_group2_adr), 592 .adr_d = rt1320_1_group2_adr, 593 }, 594 { 595 .mask = BIT(2), 596 .num_adr = ARRAY_SIZE(rt1320_2_group2_adr), 597 .adr_d = rt1320_2_group2_adr, 598 }, 599 {} 600 }; 601 602 static const struct snd_soc_acpi_link_adr ptl_sdw_rt712_vb_l2_rt1320_l1[] = { 603 { 604 .mask = BIT(2), 605 .num_adr = ARRAY_SIZE(rt712_vb_2_group1_adr), 606 .adr_d = rt712_vb_2_group1_adr, 607 }, 608 { 609 .mask = BIT(1), 610 .num_adr = ARRAY_SIZE(rt1320_1_group1_adr), 611 .adr_d = rt1320_1_group1_adr, 612 }, 613 {} 614 }; 615 616 static const struct snd_soc_acpi_link_adr ptl_sdw_rt712_vb_l3_rt1320_l2[] = { 617 { 618 .mask = BIT(3), 619 .num_adr = ARRAY_SIZE(rt712_vb_3_group1_adr), 620 .adr_d = rt712_vb_3_group1_adr, 621 }, 622 { 623 .mask = BIT(2), 624 .num_adr = ARRAY_SIZE(rt1320_2_group1_adr), 625 .adr_d = rt1320_2_group1_adr, 626 }, 627 {} 628 }; 629 630 static const struct snd_soc_acpi_link_adr ptl_sdw_rt712_vb_l3_rt1320_l3[] = { 631 { 632 .mask = BIT(3), 633 .num_adr = ARRAY_SIZE(rt712_vb_3_group1_adr), 634 .adr_d = rt712_vb_3_group1_adr, 635 }, 636 { 637 .mask = BIT(3), 638 .num_adr = ARRAY_SIZE(rt1320_3_group1_adr), 639 .adr_d = rt1320_3_group1_adr, 640 }, 641 {} 642 }; 643 644 /* this table is used when there is no I2S codec present */ 645 struct snd_soc_acpi_mach snd_soc_acpi_intel_ptl_sdw_machines[] = { 646 /* Order Priority: mockup > most links > most bit link-mask > alphabetical */ 647 { 648 .link_mask = GENMASK(3, 0), 649 .links = sdw_mockup_headset_2amps_mic, 650 .drv_name = "sof_sdw", 651 .sof_tplg_filename = "sof-ptl-rt711-rt1308-rt715.tplg", 652 }, 653 { 654 .link_mask = BIT(0) | BIT(1) | BIT(3), 655 .links = sdw_mockup_headset_1amp_mic, 656 .drv_name = "sof_sdw", 657 .sof_tplg_filename = "sof-ptl-rt711-rt1308-mono-rt715.tplg", 658 }, 659 { 660 .link_mask = GENMASK(2, 0), 661 .links = sdw_mockup_mic_headset_1amp, 662 .drv_name = "sof_sdw", 663 .sof_tplg_filename = "sof-ptl-rt715-rt711-rt1308-mono.tplg", 664 }, 665 { 666 .link_mask = BIT(0), 667 .links = sdw_mockup_multi_func, 668 .drv_name = "sof_sdw", 669 .sof_tplg_filename = "sof-ptl-rt722.tplg", /* Reuse the existing tplg file */ 670 }, 671 { 672 .link_mask = BIT(1) | BIT(2) | BIT(3), 673 .links = ptl_sdw_rt713_vb_l2_rt1320_l13, 674 .drv_name = "sof_sdw", 675 .machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb, 676 .sof_tplg_filename = "sof-ptl-rt713-l2-rt1320-l13.tplg", 677 .get_function_tplg_files = sof_sdw_get_tplg_files, 678 }, 679 { 680 .link_mask = BIT(1) | BIT(2) | BIT(3), 681 .links = ptl_sdw_rt713_vb_l3_rt1320_l12, 682 .drv_name = "sof_sdw", 683 .machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb, 684 .sof_tplg_filename = "sof-ptl-rt713-l3-rt1320-l12.tplg", 685 .get_function_tplg_files = sof_sdw_get_tplg_files, 686 }, 687 { 688 .link_mask = BIT(1) | BIT(2) | BIT(3), 689 .links = ptl_cs42l43_l2_cs35l56x6_l13, 690 .drv_name = "sof_sdw", 691 .sof_tplg_filename = "sof-ptl-cs42l43-l2-cs35l56x6-l13.tplg", 692 }, 693 { 694 .link_mask = BIT(0) | BIT(2) | BIT(3), 695 .links = ptl_rt722_l0_rt1320_l23, 696 .drv_name = "sof_sdw", 697 .sof_tplg_filename = "sof-ptl-rt722-l0-rt1320-l23.tplg", 698 .get_function_tplg_files = sof_sdw_get_tplg_files, 699 }, 700 { 701 .link_mask = BIT(1) | BIT(2), 702 .links = ptl_sdw_rt712_vb_l2_rt1320_l1, 703 .drv_name = "sof_sdw", 704 .machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb, 705 .sof_tplg_filename = "sof-ptl-rt712-l2-rt1320-l1.tplg", 706 .get_function_tplg_files = sof_sdw_get_tplg_files, 707 }, 708 { 709 .link_mask = BIT(2) | BIT(3), 710 .links = ptl_sdw_rt712_vb_l3_rt1320_l2, 711 .drv_name = "sof_sdw", 712 .machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb, 713 .sof_tplg_filename = "sof-ptl-rt712-l3-rt1320-l2.tplg", 714 .get_function_tplg_files = sof_sdw_get_tplg_files, 715 }, 716 { 717 .link_mask = BIT(2) | BIT(3), 718 .links = ptl_cs42l43_agg_l3_cs35l56_l2, 719 .drv_name = "sof_sdw", 720 .sof_tplg_filename = "sof-ptl-cs42l43-agg-l3-cs35l56-l2.tplg", 721 }, 722 { 723 .link_mask = BIT(0), 724 .links = ptl_rvp, 725 .drv_name = "sof_sdw", 726 .sof_tplg_filename = "sof-ptl-rt711.tplg", 727 }, 728 { 729 .link_mask = BIT(0), 730 .links = ptl_rt721_l0, 731 .drv_name = "sof_sdw", 732 .sof_tplg_filename = "sof-ptl-rt721.tplg", 733 .get_function_tplg_files = sof_sdw_get_tplg_files, 734 }, 735 { 736 .link_mask = BIT(0), 737 .links = ptl_rt722_only, 738 .drv_name = "sof_sdw", 739 .sof_tplg_filename = "sof-ptl-rt722.tplg", 740 .get_function_tplg_files = sof_sdw_get_tplg_files, 741 }, 742 { 743 .link_mask = BIT(1), 744 .links = ptl_rt722_l1, 745 .drv_name = "sof_sdw", 746 .sof_tplg_filename = "sof-ptl-rt722.tplg", 747 .get_function_tplg_files = sof_sdw_get_tplg_files, 748 }, 749 { 750 .link_mask = BIT(3), 751 .links = ptl_sdw_rt712_vb_l3_rt1320_l3, 752 .drv_name = "sof_sdw", 753 .machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb, 754 .sof_tplg_filename = "sof-ptl-rt712-l3-rt1320-l3.tplg", 755 .get_function_tplg_files = sof_sdw_get_tplg_files, 756 }, 757 { 758 .link_mask = BIT(3), 759 .links = ptl_rt721_l3, 760 .drv_name = "sof_sdw", 761 .sof_tplg_filename = "sof-ptl-rt721.tplg", 762 .get_function_tplg_files = sof_sdw_get_tplg_files, 763 }, 764 { 765 .link_mask = BIT(3), 766 .links = ptl_rt722_l3, 767 .drv_name = "sof_sdw", 768 .sof_tplg_filename = "sof-ptl-rt722.tplg", 769 .get_function_tplg_files = sof_sdw_get_tplg_files, 770 }, 771 {}, 772 }; 773 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_ptl_sdw_machines); 774