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 {}, 65 }; 66 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_ptl_machines); 67 68 static const struct snd_soc_acpi_endpoint single_endpoint = { 69 .num = 0, 70 .aggregated = 0, 71 .group_position = 0, 72 .group_id = 0, 73 }; 74 75 static const struct snd_soc_acpi_endpoint spk_l_endpoint = { 76 .num = 0, 77 .aggregated = 1, 78 .group_position = 0, 79 .group_id = 1, 80 }; 81 82 static const struct snd_soc_acpi_endpoint spk_r_endpoint = { 83 .num = 0, 84 .aggregated = 1, 85 .group_position = 1, 86 .group_id = 1, 87 }; 88 89 static const struct snd_soc_acpi_endpoint spk_1_endpoint = { 90 .num = 0, 91 .aggregated = 1, 92 .group_position = 1, 93 .group_id = 1, 94 }; 95 96 static const struct snd_soc_acpi_endpoint spk_2_endpoint = { 97 .num = 0, 98 .aggregated = 1, 99 .group_position = 2, 100 .group_id = 1, 101 }; 102 103 static const struct snd_soc_acpi_endpoint spk_3_endpoint = { 104 .num = 0, 105 .aggregated = 1, 106 .group_position = 3, 107 .group_id = 1, 108 }; 109 110 static const struct snd_soc_acpi_endpoint spk_4_endpoint = { 111 .num = 0, 112 .aggregated = 1, 113 .group_position = 4, 114 .group_id = 1, 115 }; 116 117 static const struct snd_soc_acpi_endpoint spk_5_endpoint = { 118 .num = 0, 119 .aggregated = 1, 120 .group_position = 5, 121 .group_id = 1, 122 }; 123 124 static const struct snd_soc_acpi_endpoint spk_6_endpoint = { 125 .num = 0, 126 .aggregated = 1, 127 .group_position = 6, 128 .group_id = 1, 129 }; 130 131 /* 132 * Multi-function codecs with three endpoints created for 133 * headset, amp and dmic functions. 134 */ 135 static const struct snd_soc_acpi_endpoint rt_mf_endpoints[] = { 136 { 137 .num = 0, 138 .aggregated = 0, 139 .group_position = 0, 140 .group_id = 0, 141 }, 142 { 143 .num = 1, 144 .aggregated = 0, 145 .group_position = 0, 146 .group_id = 0, 147 }, 148 { 149 .num = 2, 150 .aggregated = 0, 151 .group_position = 0, 152 .group_id = 0, 153 }, 154 }; 155 156 static const struct snd_soc_acpi_endpoint jack_dmic_endpoints[] = { 157 /* Jack Endpoint */ 158 { 159 .num = 0, 160 .aggregated = 0, 161 .group_position = 0, 162 .group_id = 0, 163 }, 164 /* DMIC Endpoint */ 165 { 166 .num = 1, 167 .aggregated = 0, 168 .group_position = 0, 169 .group_id = 0, 170 }, 171 }; 172 173 static const struct snd_soc_acpi_endpoint jack_amp_g1_dmic_endpoints[] = { 174 /* Jack Endpoint */ 175 { 176 .num = 0, 177 .aggregated = 0, 178 .group_position = 0, 179 .group_id = 0, 180 }, 181 /* Amp Endpoint, work as spk_l_endpoint */ 182 { 183 .num = 1, 184 .aggregated = 1, 185 .group_position = 0, 186 .group_id = 1, 187 }, 188 /* DMIC Endpoint */ 189 { 190 .num = 2, 191 .aggregated = 0, 192 .group_position = 0, 193 .group_id = 0, 194 }, 195 }; 196 197 static const struct snd_soc_acpi_endpoint cs42l43_amp_spkagg_endpoints[] = { 198 { /* Jack Playback Endpoint */ 199 .num = 0, 200 .aggregated = 0, 201 .group_position = 0, 202 .group_id = 0, 203 }, 204 { /* DMIC Capture Endpoint */ 205 .num = 1, 206 .aggregated = 0, 207 .group_position = 0, 208 .group_id = 0, 209 }, 210 { /* Jack Capture Endpoint */ 211 .num = 2, 212 .aggregated = 0, 213 .group_position = 0, 214 .group_id = 0, 215 }, 216 { /* Speaker Playback Endpoint */ 217 .num = 3, 218 .aggregated = 1, 219 .group_position = 0, 220 .group_id = 1, 221 }, 222 }; 223 224 static const struct snd_soc_acpi_endpoint cs42l43_endpoints[] = { 225 { /* Jack Playback Endpoint */ 226 .num = 0, 227 .aggregated = 0, 228 .group_position = 0, 229 .group_id = 0, 230 }, 231 { /* DMIC Capture Endpoint */ 232 .num = 1, 233 .aggregated = 0, 234 .group_position = 0, 235 .group_id = 0, 236 }, 237 { /* Jack Capture Endpoint */ 238 .num = 2, 239 .aggregated = 0, 240 .group_position = 0, 241 .group_id = 0, 242 }, 243 { /* Speaker Playback Endpoint */ 244 .num = 3, 245 .aggregated = 0, 246 .group_position = 0, 247 .group_id = 0, 248 }, 249 }; 250 251 static const struct snd_soc_acpi_adr_device cs42l43_2_adr[] = { 252 { 253 .adr = 0x00023001fa424301ull, 254 .num_endpoints = ARRAY_SIZE(cs42l43_amp_spkagg_endpoints), 255 .endpoints = cs42l43_amp_spkagg_endpoints, 256 .name_prefix = "cs42l43" 257 } 258 }; 259 260 static const struct snd_soc_acpi_adr_device cs35l56_1_3amp_adr[] = { 261 { 262 .adr = 0x00013001fa355601ull, 263 .num_endpoints = 1, 264 .endpoints = &spk_1_endpoint, 265 .name_prefix = "AMP1" 266 }, 267 { 268 .adr = 0x00013101fa355601ull, 269 .num_endpoints = 1, 270 .endpoints = &spk_2_endpoint, 271 .name_prefix = "AMP2" 272 }, 273 { 274 .adr = 0x00013201fa355601ull, 275 .num_endpoints = 1, 276 .endpoints = &spk_3_endpoint, 277 .name_prefix = "AMP3" 278 } 279 }; 280 281 static const struct snd_soc_acpi_adr_device cs35l56_3_3amp_adr[] = { 282 { 283 .adr = 0x00033301fa355601ull, 284 .num_endpoints = 1, 285 .endpoints = &spk_4_endpoint, 286 .name_prefix = "AMP4" 287 }, 288 { 289 .adr = 0x00033401fa355601ull, 290 .num_endpoints = 1, 291 .endpoints = &spk_5_endpoint, 292 .name_prefix = "AMP5" 293 }, 294 { 295 .adr = 0x00033501fa355601ull, 296 .num_endpoints = 1, 297 .endpoints = &spk_6_endpoint, 298 .name_prefix = "AMP6" 299 } 300 }; 301 302 static const struct snd_soc_acpi_adr_device cs42l43_3_adr[] = { 303 { 304 .adr = 0x00033001FA424301ull, 305 .num_endpoints = ARRAY_SIZE(cs42l43_endpoints), 306 .endpoints = cs42l43_endpoints, 307 .name_prefix = "cs42l43" 308 } 309 }; 310 311 static const struct snd_soc_acpi_adr_device rt711_sdca_0_adr[] = { 312 { 313 .adr = 0x000030025D071101ull, 314 .num_endpoints = 1, 315 .endpoints = &single_endpoint, 316 .name_prefix = "rt711" 317 } 318 }; 319 320 static const struct snd_soc_acpi_adr_device rt712_vb_2_group1_adr[] = { 321 { 322 .adr = 0x000230025D071201ull, 323 .num_endpoints = ARRAY_SIZE(jack_amp_g1_dmic_endpoints), 324 .endpoints = jack_amp_g1_dmic_endpoints, 325 .name_prefix = "rt712" 326 } 327 }; 328 329 static const struct snd_soc_acpi_adr_device rt712_vb_3_group1_adr[] = { 330 { 331 .adr = 0x000330025D071201ull, 332 .num_endpoints = ARRAY_SIZE(jack_amp_g1_dmic_endpoints), 333 .endpoints = jack_amp_g1_dmic_endpoints, 334 .name_prefix = "rt712" 335 } 336 }; 337 338 static const struct snd_soc_acpi_adr_device rt713_vb_2_adr[] = { 339 { 340 .adr = 0x000230025d071301ull, 341 .num_endpoints = ARRAY_SIZE(jack_dmic_endpoints), 342 .endpoints = jack_dmic_endpoints, 343 .name_prefix = "rt713" 344 } 345 }; 346 347 static const struct snd_soc_acpi_adr_device rt713_vb_3_adr[] = { 348 { 349 .adr = 0x000330025D071301ull, 350 .num_endpoints = ARRAY_SIZE(jack_dmic_endpoints), 351 .endpoints = jack_dmic_endpoints, 352 .name_prefix = "rt713" 353 } 354 }; 355 356 static const struct snd_soc_acpi_adr_device rt1320_3_group1_adr[] = { 357 { 358 .adr = 0x000330025D132001ull, 359 .num_endpoints = 1, 360 .endpoints = &spk_r_endpoint, 361 .name_prefix = "rt1320-1" 362 } 363 }; 364 365 static const struct snd_soc_acpi_adr_device rt721_0_single_adr[] = { 366 { 367 .adr = 0x000030025d072101ull, 368 .num_endpoints = ARRAY_SIZE(rt_mf_endpoints), 369 .endpoints = rt_mf_endpoints, 370 .name_prefix = "rt721" 371 } 372 }; 373 374 static const struct snd_soc_acpi_adr_device rt721_3_single_adr[] = { 375 { 376 .adr = 0x000330025d072101ull, 377 .num_endpoints = ARRAY_SIZE(rt_mf_endpoints), 378 .endpoints = rt_mf_endpoints, 379 .name_prefix = "rt721" 380 } 381 }; 382 383 static const struct snd_soc_acpi_link_adr ptl_rt721_l3[] = { 384 { 385 .mask = BIT(3), 386 .num_adr = ARRAY_SIZE(rt721_3_single_adr), 387 .adr_d = rt721_3_single_adr, 388 }, 389 {}, 390 }; 391 392 static const struct snd_soc_acpi_adr_device rt722_0_single_adr[] = { 393 { 394 .adr = 0x000030025d072201ull, 395 .num_endpoints = ARRAY_SIZE(rt_mf_endpoints), 396 .endpoints = rt_mf_endpoints, 397 .name_prefix = "rt722" 398 } 399 }; 400 401 static const struct snd_soc_acpi_adr_device rt722_1_single_adr[] = { 402 { 403 .adr = 0x000130025d072201ull, 404 .num_endpoints = ARRAY_SIZE(rt_mf_endpoints), 405 .endpoints = rt_mf_endpoints, 406 .name_prefix = "rt722" 407 } 408 }; 409 410 static const struct snd_soc_acpi_adr_device rt722_3_single_adr[] = { 411 { 412 .adr = 0x000330025d072201ull, 413 .num_endpoints = ARRAY_SIZE(rt_mf_endpoints), 414 .endpoints = rt_mf_endpoints, 415 .name_prefix = "rt722" 416 } 417 }; 418 419 static const struct snd_soc_acpi_adr_device rt1320_1_group1_adr[] = { 420 { 421 .adr = 0x000130025D132001ull, 422 .num_endpoints = 1, 423 .endpoints = &spk_r_endpoint, 424 .name_prefix = "rt1320-1" 425 } 426 }; 427 428 static const struct snd_soc_acpi_adr_device rt1320_1_group2_adr[] = { 429 { 430 .adr = 0x000130025D132001ull, 431 .num_endpoints = 1, 432 .endpoints = &spk_l_endpoint, 433 .name_prefix = "rt1320-1" 434 } 435 }; 436 437 static const struct snd_soc_acpi_adr_device rt1320_2_group1_adr[] = { 438 { 439 .adr = 0x000230025D132001ull, 440 .num_endpoints = 1, 441 .endpoints = &spk_r_endpoint, 442 .name_prefix = "rt1320-1" 443 } 444 }; 445 446 static const struct snd_soc_acpi_adr_device rt1320_2_group2_adr[] = { 447 { 448 .adr = 0x000230025D132001ull, 449 .num_endpoints = 1, 450 .endpoints = &spk_r_endpoint, 451 .name_prefix = "rt1320-1" 452 } 453 }; 454 455 static const struct snd_soc_acpi_adr_device rt1320_3_group2_adr[] = { 456 { 457 .adr = 0x000330025D132001ull, 458 .num_endpoints = 1, 459 .endpoints = &spk_r_endpoint, 460 .name_prefix = "rt1320-2" 461 } 462 }; 463 464 static const struct snd_soc_acpi_link_adr ptl_cs42l43_l2_cs35l56x6_l13[] = { 465 { 466 .mask = BIT(2), 467 .num_adr = ARRAY_SIZE(cs42l43_2_adr), 468 .adr_d = cs42l43_2_adr, 469 }, 470 { 471 .mask = BIT(1), 472 .num_adr = ARRAY_SIZE(cs35l56_1_3amp_adr), 473 .adr_d = cs35l56_1_3amp_adr, 474 }, 475 { 476 .mask = BIT(3), 477 .num_adr = ARRAY_SIZE(cs35l56_3_3amp_adr), 478 .adr_d = cs35l56_3_3amp_adr, 479 }, 480 {} 481 }; 482 483 static const struct snd_soc_acpi_link_adr ptl_cs42l43_l3[] = { 484 { 485 .mask = BIT(3), 486 .num_adr = ARRAY_SIZE(cs42l43_3_adr), 487 .adr_d = cs42l43_3_adr, 488 }, 489 {} 490 }; 491 492 static const struct snd_soc_acpi_link_adr ptl_rt721_l0[] = { 493 { 494 .mask = BIT(0), 495 .num_adr = ARRAY_SIZE(rt721_0_single_adr), 496 .adr_d = rt721_0_single_adr, 497 }, 498 {} 499 }; 500 501 static const struct snd_soc_acpi_link_adr ptl_rt722_only[] = { 502 { 503 .mask = BIT(0), 504 .num_adr = ARRAY_SIZE(rt722_0_single_adr), 505 .adr_d = rt722_0_single_adr, 506 }, 507 {} 508 }; 509 510 static const struct snd_soc_acpi_link_adr ptl_rt722_l1[] = { 511 { 512 .mask = BIT(1), 513 .num_adr = ARRAY_SIZE(rt722_1_single_adr), 514 .adr_d = rt722_1_single_adr, 515 }, 516 {} 517 }; 518 519 static const struct snd_soc_acpi_link_adr ptl_rt722_l3[] = { 520 { 521 .mask = BIT(3), 522 .num_adr = ARRAY_SIZE(rt722_3_single_adr), 523 .adr_d = rt722_3_single_adr, 524 }, 525 {} 526 }; 527 528 static const struct snd_soc_acpi_link_adr ptl_rvp[] = { 529 { 530 .mask = BIT(0), 531 .num_adr = ARRAY_SIZE(rt711_sdca_0_adr), 532 .adr_d = rt711_sdca_0_adr, 533 }, 534 {} 535 }; 536 537 static const struct snd_soc_acpi_link_adr ptl_sdw_rt713_vb_l2_rt1320_l13[] = { 538 { 539 .mask = BIT(2), 540 .num_adr = ARRAY_SIZE(rt713_vb_2_adr), 541 .adr_d = rt713_vb_2_adr, 542 }, 543 { 544 .mask = BIT(1), 545 .num_adr = ARRAY_SIZE(rt1320_1_group2_adr), 546 .adr_d = rt1320_1_group2_adr, 547 }, 548 { 549 .mask = BIT(3), 550 .num_adr = ARRAY_SIZE(rt1320_3_group2_adr), 551 .adr_d = rt1320_3_group2_adr, 552 }, 553 {} 554 }; 555 556 static const struct snd_soc_acpi_link_adr ptl_sdw_rt713_vb_l3_rt1320_l12[] = { 557 { 558 .mask = BIT(3), 559 .num_adr = ARRAY_SIZE(rt713_vb_3_adr), 560 .adr_d = rt713_vb_3_adr, 561 }, 562 { 563 .mask = BIT(1), 564 .num_adr = ARRAY_SIZE(rt1320_1_group2_adr), 565 .adr_d = rt1320_1_group2_adr, 566 }, 567 { 568 .mask = BIT(2), 569 .num_adr = ARRAY_SIZE(rt1320_2_group2_adr), 570 .adr_d = rt1320_2_group2_adr, 571 }, 572 {} 573 }; 574 575 static const struct snd_soc_acpi_link_adr ptl_sdw_rt712_vb_l2_rt1320_l1[] = { 576 { 577 .mask = BIT(2), 578 .num_adr = ARRAY_SIZE(rt712_vb_2_group1_adr), 579 .adr_d = rt712_vb_2_group1_adr, 580 }, 581 { 582 .mask = BIT(1), 583 .num_adr = ARRAY_SIZE(rt1320_1_group1_adr), 584 .adr_d = rt1320_1_group1_adr, 585 }, 586 {} 587 }; 588 589 static const struct snd_soc_acpi_link_adr ptl_sdw_rt712_vb_l3_rt1320_l2[] = { 590 { 591 .mask = BIT(3), 592 .num_adr = ARRAY_SIZE(rt712_vb_3_group1_adr), 593 .adr_d = rt712_vb_3_group1_adr, 594 }, 595 { 596 .mask = BIT(2), 597 .num_adr = ARRAY_SIZE(rt1320_2_group1_adr), 598 .adr_d = rt1320_2_group1_adr, 599 }, 600 {} 601 }; 602 603 static const struct snd_soc_acpi_link_adr ptl_sdw_rt712_vb_l3_rt1320_l3[] = { 604 { 605 .mask = BIT(3), 606 .num_adr = ARRAY_SIZE(rt712_vb_3_group1_adr), 607 .adr_d = rt712_vb_3_group1_adr, 608 }, 609 { 610 .mask = BIT(3), 611 .num_adr = ARRAY_SIZE(rt1320_3_group1_adr), 612 .adr_d = rt1320_3_group1_adr, 613 }, 614 {} 615 }; 616 617 /* this table is used when there is no I2S codec present */ 618 struct snd_soc_acpi_mach snd_soc_acpi_intel_ptl_sdw_machines[] = { 619 /* Order Priority: mockup > most links > most bit link-mask > alphabetical */ 620 { 621 .link_mask = GENMASK(3, 0), 622 .links = sdw_mockup_headset_2amps_mic, 623 .drv_name = "sof_sdw", 624 .sof_tplg_filename = "sof-ptl-rt711-rt1308-rt715.tplg", 625 }, 626 { 627 .link_mask = BIT(0) | BIT(1) | BIT(3), 628 .links = sdw_mockup_headset_1amp_mic, 629 .drv_name = "sof_sdw", 630 .sof_tplg_filename = "sof-ptl-rt711-rt1308-mono-rt715.tplg", 631 }, 632 { 633 .link_mask = GENMASK(2, 0), 634 .links = sdw_mockup_mic_headset_1amp, 635 .drv_name = "sof_sdw", 636 .sof_tplg_filename = "sof-ptl-rt715-rt711-rt1308-mono.tplg", 637 }, 638 { 639 .link_mask = BIT(0), 640 .links = sdw_mockup_multi_func, 641 .drv_name = "sof_sdw", 642 .sof_tplg_filename = "sof-ptl-rt722.tplg", /* Reuse the existing tplg file */ 643 }, 644 { 645 .link_mask = BIT(1) | BIT(2) | BIT(3), 646 .links = ptl_sdw_rt713_vb_l2_rt1320_l13, 647 .drv_name = "sof_sdw", 648 .machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb, 649 .sof_tplg_filename = "sof-ptl-rt713-l2-rt1320-l13.tplg", 650 .get_function_tplg_files = sof_sdw_get_tplg_files, 651 }, 652 { 653 .link_mask = BIT(1) | BIT(2) | BIT(3), 654 .links = ptl_sdw_rt713_vb_l3_rt1320_l12, 655 .drv_name = "sof_sdw", 656 .machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb, 657 .sof_tplg_filename = "sof-ptl-rt713-l3-rt1320-l12.tplg", 658 .get_function_tplg_files = sof_sdw_get_tplg_files, 659 }, 660 { 661 .link_mask = BIT(1) | BIT(2) | BIT(3), 662 .links = ptl_cs42l43_l2_cs35l56x6_l13, 663 .drv_name = "sof_sdw", 664 .sof_tplg_filename = "sof-ptl-cs42l43-l2-cs35l56x6-l13.tplg", 665 }, 666 { 667 .link_mask = BIT(1) | BIT(2), 668 .links = ptl_sdw_rt712_vb_l2_rt1320_l1, 669 .drv_name = "sof_sdw", 670 .machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb, 671 .sof_tplg_filename = "sof-ptl-rt712-l2-rt1320-l1.tplg", 672 .get_function_tplg_files = sof_sdw_get_tplg_files, 673 }, 674 { 675 .link_mask = BIT(2) | BIT(3), 676 .links = ptl_sdw_rt712_vb_l3_rt1320_l2, 677 .drv_name = "sof_sdw", 678 .machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb, 679 .sof_tplg_filename = "sof-ptl-rt712-l3-rt1320-l2.tplg", 680 .get_function_tplg_files = sof_sdw_get_tplg_files, 681 }, 682 { 683 .link_mask = BIT(0), 684 .links = ptl_rvp, 685 .drv_name = "sof_sdw", 686 .sof_tplg_filename = "sof-ptl-rt711.tplg", 687 }, 688 { 689 .link_mask = BIT(0), 690 .links = ptl_rt721_l0, 691 .drv_name = "sof_sdw", 692 .sof_tplg_filename = "sof-ptl-rt721.tplg", 693 .get_function_tplg_files = sof_sdw_get_tplg_files, 694 }, 695 { 696 .link_mask = BIT(0), 697 .links = ptl_rt722_only, 698 .drv_name = "sof_sdw", 699 .sof_tplg_filename = "sof-ptl-rt722.tplg", 700 .get_function_tplg_files = sof_sdw_get_tplg_files, 701 }, 702 { 703 .link_mask = BIT(1), 704 .links = ptl_rt722_l1, 705 .drv_name = "sof_sdw", 706 .sof_tplg_filename = "sof-ptl-rt722.tplg", 707 .get_function_tplg_files = sof_sdw_get_tplg_files, 708 }, 709 { 710 .link_mask = BIT(3), 711 .links = ptl_cs42l43_l3, 712 .drv_name = "sof_sdw", 713 .sof_tplg_filename = "sof-ptl-cs42l43-l3.tplg", 714 .get_function_tplg_files = sof_sdw_get_tplg_files, 715 }, 716 { 717 .link_mask = BIT(3), 718 .links = ptl_sdw_rt712_vb_l3_rt1320_l3, 719 .drv_name = "sof_sdw", 720 .machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb, 721 .sof_tplg_filename = "sof-ptl-rt712-l3-rt1320-l3.tplg", 722 .get_function_tplg_files = sof_sdw_get_tplg_files, 723 }, 724 { 725 .link_mask = BIT(3), 726 .links = ptl_rt721_l3, 727 .drv_name = "sof_sdw", 728 .sof_tplg_filename = "sof-ptl-rt721.tplg", 729 .get_function_tplg_files = sof_sdw_get_tplg_files, 730 }, 731 { 732 .link_mask = BIT(3), 733 .links = ptl_rt722_l3, 734 .drv_name = "sof_sdw", 735 .sof_tplg_filename = "sof-ptl-rt722.tplg", 736 .get_function_tplg_files = sof_sdw_get_tplg_files, 737 }, 738 {}, 739 }; 740 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_ptl_sdw_machines); 741