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