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_endpoint cs42l43_endpoints[] = { 231 { /* Jack Playback Endpoint */ 232 .num = 0, 233 .aggregated = 0, 234 .group_position = 0, 235 .group_id = 0, 236 }, 237 { /* DMIC Capture Endpoint */ 238 .num = 1, 239 .aggregated = 0, 240 .group_position = 0, 241 .group_id = 0, 242 }, 243 { /* Jack Capture Endpoint */ 244 .num = 2, 245 .aggregated = 0, 246 .group_position = 0, 247 .group_id = 0, 248 }, 249 { /* Speaker Playback Endpoint */ 250 .num = 3, 251 .aggregated = 0, 252 .group_position = 0, 253 .group_id = 0, 254 }, 255 }; 256 257 static const struct snd_soc_acpi_adr_device cs42l43_2_adr[] = { 258 { 259 .adr = 0x00023001fa424301ull, 260 .num_endpoints = ARRAY_SIZE(cs42l43_amp_spkagg_endpoints), 261 .endpoints = cs42l43_amp_spkagg_endpoints, 262 .name_prefix = "cs42l43" 263 } 264 }; 265 266 static const struct snd_soc_acpi_adr_device cs35l56_1_3amp_adr[] = { 267 { 268 .adr = 0x00013001fa355601ull, 269 .num_endpoints = 1, 270 .endpoints = &spk_1_endpoint, 271 .name_prefix = "AMP1" 272 }, 273 { 274 .adr = 0x00013101fa355601ull, 275 .num_endpoints = 1, 276 .endpoints = &spk_2_endpoint, 277 .name_prefix = "AMP2" 278 }, 279 { 280 .adr = 0x00013201fa355601ull, 281 .num_endpoints = 1, 282 .endpoints = &spk_3_endpoint, 283 .name_prefix = "AMP3" 284 } 285 }; 286 287 static const struct snd_soc_acpi_adr_device cs35l56_3_3amp_adr[] = { 288 { 289 .adr = 0x00033301fa355601ull, 290 .num_endpoints = 1, 291 .endpoints = &spk_4_endpoint, 292 .name_prefix = "AMP4" 293 }, 294 { 295 .adr = 0x00033401fa355601ull, 296 .num_endpoints = 1, 297 .endpoints = &spk_5_endpoint, 298 .name_prefix = "AMP5" 299 }, 300 { 301 .adr = 0x00033501fa355601ull, 302 .num_endpoints = 1, 303 .endpoints = &spk_6_endpoint, 304 .name_prefix = "AMP6" 305 } 306 }; 307 308 static const struct snd_soc_acpi_adr_device cs42l43_3_adr[] = { 309 { 310 .adr = 0x00033001FA424301ull, 311 .num_endpoints = ARRAY_SIZE(cs42l43_endpoints), 312 .endpoints = cs42l43_endpoints, 313 .name_prefix = "cs42l43" 314 } 315 }; 316 317 static const struct snd_soc_acpi_adr_device rt711_sdca_0_adr[] = { 318 { 319 .adr = 0x000030025D071101ull, 320 .num_endpoints = 1, 321 .endpoints = &single_endpoint, 322 .name_prefix = "rt711" 323 } 324 }; 325 326 static const struct snd_soc_acpi_adr_device rt712_vb_2_group1_adr[] = { 327 { 328 .adr = 0x000230025D071201ull, 329 .num_endpoints = ARRAY_SIZE(jack_amp_g1_dmic_endpoints), 330 .endpoints = jack_amp_g1_dmic_endpoints, 331 .name_prefix = "rt712" 332 } 333 }; 334 335 static const struct snd_soc_acpi_adr_device rt712_vb_3_group1_adr[] = { 336 { 337 .adr = 0x000330025D071201ull, 338 .num_endpoints = ARRAY_SIZE(jack_amp_g1_dmic_endpoints), 339 .endpoints = jack_amp_g1_dmic_endpoints, 340 .name_prefix = "rt712" 341 } 342 }; 343 344 static const struct snd_soc_acpi_adr_device rt713_vb_2_adr[] = { 345 { 346 .adr = 0x000230025d071301ull, 347 .num_endpoints = ARRAY_SIZE(jack_dmic_endpoints), 348 .endpoints = jack_dmic_endpoints, 349 .name_prefix = "rt713" 350 } 351 }; 352 353 static const struct snd_soc_acpi_adr_device rt713_vb_3_adr[] = { 354 { 355 .adr = 0x000330025D071301ull, 356 .num_endpoints = ARRAY_SIZE(jack_dmic_endpoints), 357 .endpoints = jack_dmic_endpoints, 358 .name_prefix = "rt713" 359 } 360 }; 361 362 static const struct snd_soc_acpi_adr_device rt1320_3_group1_adr[] = { 363 { 364 .adr = 0x000330025D132001ull, 365 .num_endpoints = 1, 366 .endpoints = &spk_r_endpoint, 367 .name_prefix = "rt1320-1" 368 } 369 }; 370 371 static const struct snd_soc_acpi_adr_device rt721_0_single_adr[] = { 372 { 373 .adr = 0x000030025d072101ull, 374 .num_endpoints = ARRAY_SIZE(rt_mf_endpoints), 375 .endpoints = rt_mf_endpoints, 376 .name_prefix = "rt721" 377 } 378 }; 379 380 static const struct snd_soc_acpi_adr_device rt721_3_single_adr[] = { 381 { 382 .adr = 0x000330025d072101ull, 383 .num_endpoints = ARRAY_SIZE(rt_mf_endpoints), 384 .endpoints = rt_mf_endpoints, 385 .name_prefix = "rt721" 386 } 387 }; 388 389 static const struct snd_soc_acpi_link_adr ptl_rt721_l3[] = { 390 { 391 .mask = BIT(3), 392 .num_adr = ARRAY_SIZE(rt721_3_single_adr), 393 .adr_d = rt721_3_single_adr, 394 }, 395 {}, 396 }; 397 398 static const struct snd_soc_acpi_adr_device rt722_0_single_adr[] = { 399 { 400 .adr = 0x000030025d072201ull, 401 .num_endpoints = ARRAY_SIZE(rt_mf_endpoints), 402 .endpoints = rt_mf_endpoints, 403 .name_prefix = "rt722" 404 } 405 }; 406 407 static const struct snd_soc_acpi_adr_device rt722_1_single_adr[] = { 408 { 409 .adr = 0x000130025d072201ull, 410 .num_endpoints = ARRAY_SIZE(rt_mf_endpoints), 411 .endpoints = rt_mf_endpoints, 412 .name_prefix = "rt722" 413 } 414 }; 415 416 static const struct snd_soc_acpi_adr_device rt722_3_single_adr[] = { 417 { 418 .adr = 0x000330025d072201ull, 419 .num_endpoints = ARRAY_SIZE(rt_mf_endpoints), 420 .endpoints = rt_mf_endpoints, 421 .name_prefix = "rt722" 422 } 423 }; 424 425 static const struct snd_soc_acpi_adr_device rt1320_1_group1_adr[] = { 426 { 427 .adr = 0x000130025D132001ull, 428 .num_endpoints = 1, 429 .endpoints = &spk_r_endpoint, 430 .name_prefix = "rt1320-1" 431 } 432 }; 433 434 static const struct snd_soc_acpi_adr_device rt1320_1_group2_adr[] = { 435 { 436 .adr = 0x000130025D132001ull, 437 .num_endpoints = 1, 438 .endpoints = &spk_l_endpoint, 439 .name_prefix = "rt1320-1" 440 } 441 }; 442 443 static const struct snd_soc_acpi_adr_device rt1320_2_group1_adr[] = { 444 { 445 .adr = 0x000230025D132001ull, 446 .num_endpoints = 1, 447 .endpoints = &spk_r_endpoint, 448 .name_prefix = "rt1320-1" 449 } 450 }; 451 452 static const struct snd_soc_acpi_adr_device rt1320_2_group2_adr[] = { 453 { 454 .adr = 0x000230025D132001ull, 455 .num_endpoints = 1, 456 .endpoints = &spk_r_endpoint, 457 .name_prefix = "rt1320-1" 458 } 459 }; 460 461 static const struct snd_soc_acpi_adr_device rt1320_3_group2_adr[] = { 462 { 463 .adr = 0x000330025D132001ull, 464 .num_endpoints = 1, 465 .endpoints = &spk_r_endpoint, 466 .name_prefix = "rt1320-2" 467 } 468 }; 469 470 static const struct snd_soc_acpi_link_adr ptl_cs42l43_l2_cs35l56x6_l13[] = { 471 { 472 .mask = BIT(2), 473 .num_adr = ARRAY_SIZE(cs42l43_2_adr), 474 .adr_d = cs42l43_2_adr, 475 }, 476 { 477 .mask = BIT(1), 478 .num_adr = ARRAY_SIZE(cs35l56_1_3amp_adr), 479 .adr_d = cs35l56_1_3amp_adr, 480 }, 481 { 482 .mask = BIT(3), 483 .num_adr = ARRAY_SIZE(cs35l56_3_3amp_adr), 484 .adr_d = cs35l56_3_3amp_adr, 485 }, 486 {} 487 }; 488 489 static const struct snd_soc_acpi_link_adr ptl_cs42l43_l3[] = { 490 { 491 .mask = BIT(3), 492 .num_adr = ARRAY_SIZE(cs42l43_3_adr), 493 .adr_d = cs42l43_3_adr, 494 }, 495 {} 496 }; 497 498 static const struct snd_soc_acpi_link_adr ptl_rt721_l0[] = { 499 { 500 .mask = BIT(0), 501 .num_adr = ARRAY_SIZE(rt721_0_single_adr), 502 .adr_d = rt721_0_single_adr, 503 }, 504 {} 505 }; 506 507 static const struct snd_soc_acpi_link_adr ptl_rt722_only[] = { 508 { 509 .mask = BIT(0), 510 .num_adr = ARRAY_SIZE(rt722_0_single_adr), 511 .adr_d = rt722_0_single_adr, 512 }, 513 {} 514 }; 515 516 static const struct snd_soc_acpi_link_adr ptl_rt722_l1[] = { 517 { 518 .mask = BIT(1), 519 .num_adr = ARRAY_SIZE(rt722_1_single_adr), 520 .adr_d = rt722_1_single_adr, 521 }, 522 {} 523 }; 524 525 static const struct snd_soc_acpi_link_adr ptl_rt722_l3[] = { 526 { 527 .mask = BIT(3), 528 .num_adr = ARRAY_SIZE(rt722_3_single_adr), 529 .adr_d = rt722_3_single_adr, 530 }, 531 {} 532 }; 533 534 static const struct snd_soc_acpi_link_adr ptl_rvp[] = { 535 { 536 .mask = BIT(0), 537 .num_adr = ARRAY_SIZE(rt711_sdca_0_adr), 538 .adr_d = rt711_sdca_0_adr, 539 }, 540 {} 541 }; 542 543 static const struct snd_soc_acpi_link_adr ptl_sdw_rt713_vb_l2_rt1320_l13[] = { 544 { 545 .mask = BIT(2), 546 .num_adr = ARRAY_SIZE(rt713_vb_2_adr), 547 .adr_d = rt713_vb_2_adr, 548 }, 549 { 550 .mask = BIT(1), 551 .num_adr = ARRAY_SIZE(rt1320_1_group2_adr), 552 .adr_d = rt1320_1_group2_adr, 553 }, 554 { 555 .mask = BIT(3), 556 .num_adr = ARRAY_SIZE(rt1320_3_group2_adr), 557 .adr_d = rt1320_3_group2_adr, 558 }, 559 {} 560 }; 561 562 static const struct snd_soc_acpi_link_adr ptl_sdw_rt713_vb_l3_rt1320_l12[] = { 563 { 564 .mask = BIT(3), 565 .num_adr = ARRAY_SIZE(rt713_vb_3_adr), 566 .adr_d = rt713_vb_3_adr, 567 }, 568 { 569 .mask = BIT(1), 570 .num_adr = ARRAY_SIZE(rt1320_1_group2_adr), 571 .adr_d = rt1320_1_group2_adr, 572 }, 573 { 574 .mask = BIT(2), 575 .num_adr = ARRAY_SIZE(rt1320_2_group2_adr), 576 .adr_d = rt1320_2_group2_adr, 577 }, 578 {} 579 }; 580 581 static const struct snd_soc_acpi_link_adr ptl_sdw_rt712_vb_l2_rt1320_l1[] = { 582 { 583 .mask = BIT(2), 584 .num_adr = ARRAY_SIZE(rt712_vb_2_group1_adr), 585 .adr_d = rt712_vb_2_group1_adr, 586 }, 587 { 588 .mask = BIT(1), 589 .num_adr = ARRAY_SIZE(rt1320_1_group1_adr), 590 .adr_d = rt1320_1_group1_adr, 591 }, 592 {} 593 }; 594 595 static const struct snd_soc_acpi_link_adr ptl_sdw_rt712_vb_l3_rt1320_l2[] = { 596 { 597 .mask = BIT(3), 598 .num_adr = ARRAY_SIZE(rt712_vb_3_group1_adr), 599 .adr_d = rt712_vb_3_group1_adr, 600 }, 601 { 602 .mask = BIT(2), 603 .num_adr = ARRAY_SIZE(rt1320_2_group1_adr), 604 .adr_d = rt1320_2_group1_adr, 605 }, 606 {} 607 }; 608 609 static const struct snd_soc_acpi_link_adr ptl_sdw_rt712_vb_l3_rt1320_l3[] = { 610 { 611 .mask = BIT(3), 612 .num_adr = ARRAY_SIZE(rt712_vb_3_group1_adr), 613 .adr_d = rt712_vb_3_group1_adr, 614 }, 615 { 616 .mask = BIT(3), 617 .num_adr = ARRAY_SIZE(rt1320_3_group1_adr), 618 .adr_d = rt1320_3_group1_adr, 619 }, 620 {} 621 }; 622 623 /* this table is used when there is no I2S codec present */ 624 struct snd_soc_acpi_mach snd_soc_acpi_intel_ptl_sdw_machines[] = { 625 /* Order Priority: mockup > most links > most bit link-mask > alphabetical */ 626 { 627 .link_mask = GENMASK(3, 0), 628 .links = sdw_mockup_headset_2amps_mic, 629 .drv_name = "sof_sdw", 630 .sof_tplg_filename = "sof-ptl-rt711-rt1308-rt715.tplg", 631 }, 632 { 633 .link_mask = BIT(0) | BIT(1) | BIT(3), 634 .links = sdw_mockup_headset_1amp_mic, 635 .drv_name = "sof_sdw", 636 .sof_tplg_filename = "sof-ptl-rt711-rt1308-mono-rt715.tplg", 637 }, 638 { 639 .link_mask = GENMASK(2, 0), 640 .links = sdw_mockup_mic_headset_1amp, 641 .drv_name = "sof_sdw", 642 .sof_tplg_filename = "sof-ptl-rt715-rt711-rt1308-mono.tplg", 643 }, 644 { 645 .link_mask = BIT(0), 646 .links = sdw_mockup_multi_func, 647 .drv_name = "sof_sdw", 648 .sof_tplg_filename = "sof-ptl-rt722.tplg", /* Reuse the existing tplg file */ 649 }, 650 { 651 .link_mask = BIT(1) | BIT(2) | BIT(3), 652 .links = ptl_sdw_rt713_vb_l2_rt1320_l13, 653 .drv_name = "sof_sdw", 654 .machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb, 655 .sof_tplg_filename = "sof-ptl-rt713-l2-rt1320-l13.tplg", 656 .get_function_tplg_files = sof_sdw_get_tplg_files, 657 }, 658 { 659 .link_mask = BIT(1) | BIT(2) | BIT(3), 660 .links = ptl_sdw_rt713_vb_l3_rt1320_l12, 661 .drv_name = "sof_sdw", 662 .machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb, 663 .sof_tplg_filename = "sof-ptl-rt713-l3-rt1320-l12.tplg", 664 .get_function_tplg_files = sof_sdw_get_tplg_files, 665 }, 666 { 667 .link_mask = BIT(1) | BIT(2) | BIT(3), 668 .links = ptl_cs42l43_l2_cs35l56x6_l13, 669 .drv_name = "sof_sdw", 670 .sof_tplg_filename = "sof-ptl-cs42l43-l2-cs35l56x6-l13.tplg", 671 }, 672 { 673 .link_mask = BIT(1) | BIT(2), 674 .links = ptl_sdw_rt712_vb_l2_rt1320_l1, 675 .drv_name = "sof_sdw", 676 .machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb, 677 .sof_tplg_filename = "sof-ptl-rt712-l2-rt1320-l1.tplg", 678 .get_function_tplg_files = sof_sdw_get_tplg_files, 679 }, 680 { 681 .link_mask = BIT(2) | BIT(3), 682 .links = ptl_sdw_rt712_vb_l3_rt1320_l2, 683 .drv_name = "sof_sdw", 684 .machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb, 685 .sof_tplg_filename = "sof-ptl-rt712-l3-rt1320-l2.tplg", 686 .get_function_tplg_files = sof_sdw_get_tplg_files, 687 }, 688 { 689 .link_mask = BIT(0), 690 .links = ptl_rvp, 691 .drv_name = "sof_sdw", 692 .sof_tplg_filename = "sof-ptl-rt711.tplg", 693 }, 694 { 695 .link_mask = BIT(0), 696 .links = ptl_rt721_l0, 697 .drv_name = "sof_sdw", 698 .sof_tplg_filename = "sof-ptl-rt721.tplg", 699 .get_function_tplg_files = sof_sdw_get_tplg_files, 700 }, 701 { 702 .link_mask = BIT(0), 703 .links = ptl_rt722_only, 704 .drv_name = "sof_sdw", 705 .sof_tplg_filename = "sof-ptl-rt722.tplg", 706 .get_function_tplg_files = sof_sdw_get_tplg_files, 707 }, 708 { 709 .link_mask = BIT(1), 710 .links = ptl_rt722_l1, 711 .drv_name = "sof_sdw", 712 .sof_tplg_filename = "sof-ptl-rt722.tplg", 713 .get_function_tplg_files = sof_sdw_get_tplg_files, 714 }, 715 { 716 .link_mask = BIT(3), 717 .links = ptl_cs42l43_l3, 718 .drv_name = "sof_sdw", 719 .sof_tplg_filename = "sof-ptl-cs42l43-l3.tplg", 720 .get_function_tplg_files = sof_sdw_get_tplg_files, 721 }, 722 { 723 .link_mask = BIT(3), 724 .links = ptl_sdw_rt712_vb_l3_rt1320_l3, 725 .drv_name = "sof_sdw", 726 .machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb, 727 .sof_tplg_filename = "sof-ptl-rt712-l3-rt1320-l3.tplg", 728 .get_function_tplg_files = sof_sdw_get_tplg_files, 729 }, 730 { 731 .link_mask = BIT(3), 732 .links = ptl_rt721_l3, 733 .drv_name = "sof_sdw", 734 .sof_tplg_filename = "sof-ptl-rt721.tplg", 735 .get_function_tplg_files = sof_sdw_get_tplg_files, 736 }, 737 { 738 .link_mask = BIT(3), 739 .links = ptl_rt722_l3, 740 .drv_name = "sof_sdw", 741 .sof_tplg_filename = "sof-ptl-rt722.tplg", 742 .get_function_tplg_files = sof_sdw_get_tplg_files, 743 }, 744 {}, 745 }; 746 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_ptl_sdw_machines); 747