1 // SPDX-License-Identifier: GPL-2.0-only 2 /* 3 * soc-acpi-intel-mtl-match.c - tables and support for MTL ACPI enumeration. 4 * 5 * Copyright (c) 2022, Intel Corporation. 6 * 7 */ 8 9 #include <sound/soc-acpi.h> 10 #include <sound/soc-acpi-intel-match.h> 11 #include "soc-acpi-intel-sdw-mockup-match.h" 12 13 static const struct snd_soc_acpi_codecs mtl_max98357a_amp = { 14 .num_codecs = 1, 15 .codecs = {"MX98357A"} 16 }; 17 18 static const struct snd_soc_acpi_codecs mtl_max98360a_amp = { 19 .num_codecs = 1, 20 .codecs = {"MX98360A"} 21 }; 22 23 static const struct snd_soc_acpi_codecs mtl_rt1019p_amp = { 24 .num_codecs = 1, 25 .codecs = {"RTL1019"} 26 }; 27 28 static const struct snd_soc_acpi_codecs mtl_rt5682_rt5682s_hp = { 29 .num_codecs = 2, 30 .codecs = {"10EC5682", "RTL5682"}, 31 }; 32 33 static const struct snd_soc_acpi_codecs mtl_essx_83x6 = { 34 .num_codecs = 3, 35 .codecs = { "ESSX8316", "ESSX8326", "ESSX8336"}, 36 }; 37 38 static const struct snd_soc_acpi_codecs mtl_lt6911_hdmi = { 39 .num_codecs = 1, 40 .codecs = {"INTC10B0"} 41 }; 42 43 static const struct snd_soc_acpi_codecs mtl_rt5650_amp = { 44 .num_codecs = 1, 45 .codecs = {"10EC5650"} 46 }; 47 48 struct snd_soc_acpi_mach snd_soc_acpi_intel_mtl_machines[] = { 49 { 50 .comp_ids = &mtl_rt5682_rt5682s_hp, 51 .drv_name = "mtl_mx98357_rt5682", 52 .machine_quirk = snd_soc_acpi_codec_list, 53 .quirk_data = &mtl_max98357a_amp, 54 .sof_tplg_filename = "sof-mtl-max98357a-rt5682.tplg", 55 }, 56 { 57 .comp_ids = &mtl_rt5682_rt5682s_hp, 58 .drv_name = "mtl_mx98360_rt5682", 59 .machine_quirk = snd_soc_acpi_codec_list, 60 .quirk_data = &mtl_max98360a_amp, 61 .sof_tplg_filename = "sof-mtl-max98360a-rt5682.tplg", 62 }, 63 { 64 .comp_ids = &mtl_rt5682_rt5682s_hp, 65 .drv_name = "mtl_rt5682_def", 66 .machine_quirk = snd_soc_acpi_codec_list, 67 .quirk_data = &mtl_rt1019p_amp, 68 .sof_tplg_filename = "sof-mtl-rt1019-rt5682.tplg", 69 }, 70 { 71 .comp_ids = &mtl_essx_83x6, 72 .drv_name = "mtl_es83x6_c1_h02", 73 .machine_quirk = snd_soc_acpi_codec_list, 74 .quirk_data = &mtl_lt6911_hdmi, 75 .sof_tplg_filename = "sof-mtl-es83x6-ssp1-hdmi-ssp02.tplg", 76 }, 77 { 78 .comp_ids = &mtl_essx_83x6, 79 .drv_name = "sof-essx8336", 80 .sof_tplg_filename = "sof-mtl-es8336", /* the tplg suffix is added at run time */ 81 .tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_SSP_NUMBER | 82 SND_SOC_ACPI_TPLG_INTEL_SSP_MSB | 83 SND_SOC_ACPI_TPLG_INTEL_DMIC_NUMBER, 84 }, 85 { 86 .id = "10EC5650", 87 .drv_name = "mtl_rt5682_def", 88 .machine_quirk = snd_soc_acpi_codec_list, 89 .quirk_data = &mtl_rt5650_amp, 90 .sof_tplg_filename = "sof-mtl-rt5650.tplg", 91 }, 92 /* place amp-only boards in the end of table */ 93 { 94 .id = "INTC10B0", 95 .drv_name = "mtl_lt6911_hdmi_ssp", 96 .sof_tplg_filename = "sof-mtl-hdmi-ssp02.tplg", 97 }, 98 {}, 99 }; 100 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_mtl_machines); 101 102 static const struct snd_soc_acpi_endpoint single_endpoint = { 103 .num = 0, 104 .aggregated = 0, 105 .group_position = 0, 106 .group_id = 0, 107 }; 108 109 static const struct snd_soc_acpi_endpoint spk_l_endpoint = { 110 .num = 0, 111 .aggregated = 1, 112 .group_position = 0, 113 .group_id = 1, 114 }; 115 116 static const struct snd_soc_acpi_endpoint spk_r_endpoint = { 117 .num = 0, 118 .aggregated = 1, 119 .group_position = 1, 120 .group_id = 1, 121 }; 122 123 static const struct snd_soc_acpi_endpoint rt712_endpoints[] = { 124 { 125 .num = 0, 126 .aggregated = 0, 127 .group_position = 0, 128 .group_id = 0, 129 }, 130 { 131 .num = 1, 132 .aggregated = 0, 133 .group_position = 0, 134 .group_id = 0, 135 }, 136 }; 137 138 /* 139 * RT722 is a multi-function codec, three endpoints are created for 140 * its headset, amp and dmic functions. 141 */ 142 static const struct snd_soc_acpi_endpoint rt722_endpoints[] = { 143 { 144 .num = 0, 145 .aggregated = 0, 146 .group_position = 0, 147 .group_id = 0, 148 }, 149 { 150 .num = 1, 151 .aggregated = 0, 152 .group_position = 0, 153 .group_id = 0, 154 }, 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 spk_2_endpoint = { 164 .num = 0, 165 .aggregated = 1, 166 .group_position = 2, 167 .group_id = 1, 168 }; 169 170 static const struct snd_soc_acpi_endpoint spk_3_endpoint = { 171 .num = 0, 172 .aggregated = 1, 173 .group_position = 3, 174 .group_id = 1, 175 }; 176 177 static const struct snd_soc_acpi_adr_device rt711_sdca_0_adr[] = { 178 { 179 .adr = 0x000030025D071101ull, 180 .num_endpoints = 1, 181 .endpoints = &single_endpoint, 182 .name_prefix = "rt711" 183 } 184 }; 185 186 static const struct snd_soc_acpi_adr_device rt712_0_single_adr[] = { 187 { 188 .adr = 0x000030025D071201ull, 189 .num_endpoints = ARRAY_SIZE(rt712_endpoints), 190 .endpoints = rt712_endpoints, 191 .name_prefix = "rt712" 192 } 193 }; 194 195 static const struct snd_soc_acpi_adr_device rt1712_3_single_adr[] = { 196 { 197 .adr = 0x000330025D171201ull, 198 .num_endpoints = 1, 199 .endpoints = &single_endpoint, 200 .name_prefix = "rt712-dmic" 201 } 202 }; 203 204 static const struct snd_soc_acpi_adr_device rt722_0_single_adr[] = { 205 { 206 .adr = 0x000030025d072201ull, 207 .num_endpoints = ARRAY_SIZE(rt722_endpoints), 208 .endpoints = rt722_endpoints, 209 .name_prefix = "rt722" 210 } 211 }; 212 213 static const struct snd_soc_acpi_adr_device rt713_0_single_adr[] = { 214 { 215 .adr = 0x000031025D071301ull, 216 .num_endpoints = 1, 217 .endpoints = &single_endpoint, 218 .name_prefix = "rt713" 219 } 220 }; 221 222 static const struct snd_soc_acpi_adr_device rt1713_3_single_adr[] = { 223 { 224 .adr = 0x000331025D171301ull, 225 .num_endpoints = 1, 226 .endpoints = &single_endpoint, 227 .name_prefix = "rt713-dmic" 228 } 229 }; 230 231 static const struct snd_soc_acpi_adr_device mx8373_0_adr[] = { 232 { 233 .adr = 0x000023019F837300ull, 234 .num_endpoints = 1, 235 .endpoints = &spk_l_endpoint, 236 .name_prefix = "Left" 237 }, 238 { 239 .adr = 0x000027019F837300ull, 240 .num_endpoints = 1, 241 .endpoints = &spk_r_endpoint, 242 .name_prefix = "Right" 243 } 244 }; 245 246 static const struct snd_soc_acpi_adr_device rt5682_2_adr[] = { 247 { 248 .adr = 0x000221025D568200ull, 249 .num_endpoints = 1, 250 .endpoints = &single_endpoint, 251 .name_prefix = "rt5682" 252 } 253 }; 254 255 static const struct snd_soc_acpi_adr_device rt1316_2_group1_adr[] = { 256 { 257 .adr = 0x000230025D131601ull, 258 .num_endpoints = 1, 259 .endpoints = &spk_l_endpoint, 260 .name_prefix = "rt1316-1" 261 } 262 }; 263 264 static const struct snd_soc_acpi_adr_device rt1316_3_group1_adr[] = { 265 { 266 .adr = 0x000331025D131601ull, 267 .num_endpoints = 1, 268 .endpoints = &spk_r_endpoint, 269 .name_prefix = "rt1316-2" 270 } 271 }; 272 273 static const struct snd_soc_acpi_adr_device rt1316_1_group2_adr[] = { 274 { 275 .adr = 0x000131025D131601ull, 276 .num_endpoints = 1, 277 .endpoints = &spk_l_endpoint, 278 .name_prefix = "rt1316-1" 279 } 280 }; 281 282 static const struct snd_soc_acpi_adr_device rt1316_2_group2_adr[] = { 283 { 284 .adr = 0x000230025D131601ull, 285 .num_endpoints = 1, 286 .endpoints = &spk_r_endpoint, 287 .name_prefix = "rt1316-2" 288 } 289 }; 290 291 static const struct snd_soc_acpi_adr_device rt1318_1_group1_adr[] = { 292 { 293 .adr = 0x000130025D131801ull, 294 .num_endpoints = 1, 295 .endpoints = &spk_l_endpoint, 296 .name_prefix = "rt1318-1" 297 } 298 }; 299 300 static const struct snd_soc_acpi_adr_device rt1318_2_group1_adr[] = { 301 { 302 .adr = 0x000232025D131801ull, 303 .num_endpoints = 1, 304 .endpoints = &spk_r_endpoint, 305 .name_prefix = "rt1318-2" 306 } 307 }; 308 309 static const struct snd_soc_acpi_adr_device rt714_0_adr[] = { 310 { 311 .adr = 0x000030025D071401ull, 312 .num_endpoints = 1, 313 .endpoints = &single_endpoint, 314 .name_prefix = "rt714" 315 } 316 }; 317 318 static const struct snd_soc_acpi_adr_device rt714_1_adr[] = { 319 { 320 .adr = 0x000130025D071401ull, 321 .num_endpoints = 1, 322 .endpoints = &single_endpoint, 323 .name_prefix = "rt714" 324 } 325 }; 326 327 static const struct snd_soc_acpi_link_adr mtl_712_only[] = { 328 { 329 .mask = BIT(0), 330 .num_adr = ARRAY_SIZE(rt712_0_single_adr), 331 .adr_d = rt712_0_single_adr, 332 }, 333 { 334 .mask = BIT(3), 335 .num_adr = ARRAY_SIZE(rt1712_3_single_adr), 336 .adr_d = rt1712_3_single_adr, 337 }, 338 {} 339 }; 340 341 static const struct snd_soc_acpi_adr_device cs42l43_0_adr[] = { 342 { 343 .adr = 0x00003001FA424301ull, 344 .num_endpoints = 1, 345 .endpoints = &single_endpoint, 346 .name_prefix = "cs42l43" 347 } 348 }; 349 350 static const struct snd_soc_acpi_adr_device cs35l56_1_adr[] = { 351 { 352 .adr = 0x00013701FA355601ull, 353 .num_endpoints = 1, 354 .endpoints = &spk_r_endpoint, 355 .name_prefix = "AMP8" 356 }, 357 { 358 .adr = 0x00013601FA355601ull, 359 .num_endpoints = 1, 360 .endpoints = &spk_3_endpoint, 361 .name_prefix = "AMP7" 362 } 363 }; 364 365 static const struct snd_soc_acpi_adr_device cs35l56_2_adr[] = { 366 { 367 .adr = 0x00023301FA355601ull, 368 .num_endpoints = 1, 369 .endpoints = &spk_l_endpoint, 370 .name_prefix = "AMP1" 371 }, 372 { 373 .adr = 0x00023201FA355601ull, 374 .num_endpoints = 1, 375 .endpoints = &spk_2_endpoint, 376 .name_prefix = "AMP2" 377 } 378 }; 379 380 static const struct snd_soc_acpi_adr_device cs35l56_2_r_adr[] = { 381 { 382 .adr = 0x00023201FA355601ull, 383 .num_endpoints = 1, 384 .endpoints = &spk_r_endpoint, 385 .name_prefix = "AMP3" 386 }, 387 { 388 .adr = 0x00023301FA355601ull, 389 .num_endpoints = 1, 390 .endpoints = &spk_3_endpoint, 391 .name_prefix = "AMP4" 392 } 393 394 }; 395 396 static const struct snd_soc_acpi_adr_device cs35l56_3_l_adr[] = { 397 { 398 .adr = 0x00033001fa355601ull, 399 .num_endpoints = 1, 400 .endpoints = &spk_l_endpoint, 401 .name_prefix = "AMP1" 402 }, 403 { 404 .adr = 0x00033101fa355601ull, 405 .num_endpoints = 1, 406 .endpoints = &spk_2_endpoint, 407 .name_prefix = "AMP2" 408 } 409 }; 410 411 static const struct snd_soc_acpi_link_adr rt5682_link2_max98373_link0[] = { 412 /* Expected order: jack -> amp */ 413 { 414 .mask = BIT(2), 415 .num_adr = ARRAY_SIZE(rt5682_2_adr), 416 .adr_d = rt5682_2_adr, 417 }, 418 { 419 .mask = BIT(0), 420 .num_adr = ARRAY_SIZE(mx8373_0_adr), 421 .adr_d = mx8373_0_adr, 422 }, 423 {} 424 }; 425 426 static const struct snd_soc_acpi_link_adr mtl_rvp[] = { 427 { 428 .mask = BIT(0), 429 .num_adr = ARRAY_SIZE(rt711_sdca_0_adr), 430 .adr_d = rt711_sdca_0_adr, 431 }, 432 {} 433 }; 434 435 static const struct snd_soc_acpi_link_adr mtl_rt722_only[] = { 436 { 437 .mask = BIT(0), 438 .num_adr = ARRAY_SIZE(rt722_0_single_adr), 439 .adr_d = rt722_0_single_adr, 440 }, 441 {} 442 }; 443 444 static const struct snd_soc_acpi_link_adr mtl_3_in_1_sdca[] = { 445 { 446 .mask = BIT(0), 447 .num_adr = ARRAY_SIZE(rt711_sdca_0_adr), 448 .adr_d = rt711_sdca_0_adr, 449 }, 450 { 451 .mask = BIT(2), 452 .num_adr = ARRAY_SIZE(rt1316_2_group1_adr), 453 .adr_d = rt1316_2_group1_adr, 454 }, 455 { 456 .mask = BIT(3), 457 .num_adr = ARRAY_SIZE(rt1316_3_group1_adr), 458 .adr_d = rt1316_3_group1_adr, 459 }, 460 { 461 .mask = BIT(1), 462 .num_adr = ARRAY_SIZE(rt714_1_adr), 463 .adr_d = rt714_1_adr, 464 }, 465 {} 466 }; 467 468 static const struct snd_soc_acpi_link_adr mtl_sdw_rt1318_l12_rt714_l0[] = { 469 { 470 .mask = BIT(1), 471 .num_adr = ARRAY_SIZE(rt1318_1_group1_adr), 472 .adr_d = rt1318_1_group1_adr, 473 }, 474 { 475 .mask = BIT(2), 476 .num_adr = ARRAY_SIZE(rt1318_2_group1_adr), 477 .adr_d = rt1318_2_group1_adr, 478 }, 479 { 480 .mask = BIT(0), 481 .num_adr = ARRAY_SIZE(rt714_0_adr), 482 .adr_d = rt714_0_adr, 483 }, 484 {} 485 }; 486 487 static const struct snd_soc_acpi_link_adr mtl_rt713_l0_rt1316_l12_rt1713_l3[] = { 488 { 489 .mask = BIT(0), 490 .num_adr = ARRAY_SIZE(rt713_0_single_adr), 491 .adr_d = rt713_0_single_adr, 492 }, 493 { 494 .mask = BIT(1), 495 .num_adr = ARRAY_SIZE(rt1316_1_group2_adr), 496 .adr_d = rt1316_1_group2_adr, 497 }, 498 { 499 .mask = BIT(2), 500 .num_adr = ARRAY_SIZE(rt1316_2_group2_adr), 501 .adr_d = rt1316_2_group2_adr, 502 }, 503 { 504 .mask = BIT(3), 505 .num_adr = ARRAY_SIZE(rt1713_3_single_adr), 506 .adr_d = rt1713_3_single_adr, 507 }, 508 {} 509 }; 510 511 static const struct snd_soc_acpi_link_adr mtl_rt713_l0_rt1316_l12[] = { 512 { 513 .mask = BIT(0), 514 .num_adr = ARRAY_SIZE(rt713_0_single_adr), 515 .adr_d = rt713_0_single_adr, 516 }, 517 { 518 .mask = BIT(1), 519 .num_adr = ARRAY_SIZE(rt1316_1_group2_adr), 520 .adr_d = rt1316_1_group2_adr, 521 }, 522 { 523 .mask = BIT(2), 524 .num_adr = ARRAY_SIZE(rt1316_2_group2_adr), 525 .adr_d = rt1316_2_group2_adr, 526 }, 527 {} 528 }; 529 530 static const struct snd_soc_acpi_adr_device mx8363_2_adr[] = { 531 { 532 .adr = 0x000230019F836300ull, 533 .num_endpoints = 1, 534 .endpoints = &spk_l_endpoint, 535 .name_prefix = "Left" 536 }, 537 { 538 .adr = 0x000231019F836300ull, 539 .num_endpoints = 1, 540 .endpoints = &spk_r_endpoint, 541 .name_prefix = "Right" 542 } 543 }; 544 545 static const struct snd_soc_acpi_adr_device cs42l42_0_adr[] = { 546 { 547 .adr = 0x00001001FA424200ull, 548 .num_endpoints = 1, 549 .endpoints = &single_endpoint, 550 .name_prefix = "cs42l42" 551 } 552 }; 553 554 static const struct snd_soc_acpi_link_adr cs42l42_link0_max98363_link2[] = { 555 /* Expected order: jack -> amp */ 556 { 557 .mask = BIT(0), 558 .num_adr = ARRAY_SIZE(cs42l42_0_adr), 559 .adr_d = cs42l42_0_adr, 560 }, 561 { 562 .mask = BIT(2), 563 .num_adr = ARRAY_SIZE(mx8363_2_adr), 564 .adr_d = mx8363_2_adr, 565 }, 566 {} 567 }; 568 569 static const struct snd_soc_acpi_link_adr mtl_cs42l43_cs35l56[] = { 570 { 571 .mask = BIT(0), 572 .num_adr = ARRAY_SIZE(cs42l43_0_adr), 573 .adr_d = cs42l43_0_adr, 574 }, 575 { 576 .mask = BIT(1), 577 .num_adr = ARRAY_SIZE(cs35l56_1_adr), 578 .adr_d = cs35l56_1_adr, 579 }, 580 { 581 .mask = BIT(2), 582 .num_adr = ARRAY_SIZE(cs35l56_2_adr), 583 .adr_d = cs35l56_2_adr, 584 }, 585 {} 586 }; 587 588 static const struct snd_soc_acpi_link_adr cs42l43_link0_cs35l56_link2_link3[] = { 589 /* Expected order: jack -> amp */ 590 { 591 .mask = BIT(0), 592 .num_adr = ARRAY_SIZE(cs42l43_0_adr), 593 .adr_d = cs42l43_0_adr, 594 }, 595 { 596 .mask = BIT(2), 597 .num_adr = ARRAY_SIZE(cs35l56_2_r_adr), 598 .adr_d = cs35l56_2_r_adr, 599 }, 600 { 601 .mask = BIT(3), 602 .num_adr = ARRAY_SIZE(cs35l56_3_l_adr), 603 .adr_d = cs35l56_3_l_adr, 604 }, 605 {} 606 }; 607 608 /* this table is used when there is no I2S codec present */ 609 struct snd_soc_acpi_mach snd_soc_acpi_intel_mtl_sdw_machines[] = { 610 /* mockup tests need to be first */ 611 { 612 .link_mask = GENMASK(3, 0), 613 .links = sdw_mockup_headset_2amps_mic, 614 .drv_name = "sof_sdw", 615 .sof_tplg_filename = "sof-mtl-rt711-rt1308-rt715.tplg", 616 }, 617 { 618 .link_mask = BIT(0) | BIT(1) | BIT(3), 619 .links = sdw_mockup_headset_1amp_mic, 620 .drv_name = "sof_sdw", 621 .sof_tplg_filename = "sof-mtl-rt711-rt1308-mono-rt715.tplg", 622 }, 623 { 624 .link_mask = GENMASK(2, 0), 625 .links = sdw_mockup_mic_headset_1amp, 626 .drv_name = "sof_sdw", 627 .sof_tplg_filename = "sof-mtl-rt715-rt711-rt1308-mono.tplg", 628 }, 629 { 630 .link_mask = GENMASK(3, 0), 631 .links = mtl_rt713_l0_rt1316_l12_rt1713_l3, 632 .drv_name = "sof_sdw", 633 .sof_tplg_filename = "sof-mtl-rt713-l0-rt1316-l12-rt1713-l3.tplg", 634 }, 635 { 636 .link_mask = GENMASK(2, 0), 637 .links = mtl_rt713_l0_rt1316_l12, 638 .drv_name = "sof_sdw", 639 .sof_tplg_filename = "sof-mtl-rt713-l0-rt1316-l12.tplg", 640 }, 641 { 642 .link_mask = BIT(3) | BIT(0), 643 .links = mtl_712_only, 644 .drv_name = "sof_sdw", 645 .sof_tplg_filename = "sof-mtl-rt712-l0-rt1712-l3.tplg", 646 }, 647 { 648 .link_mask = GENMASK(2, 0), 649 .links = mtl_sdw_rt1318_l12_rt714_l0, 650 .drv_name = "sof_sdw", 651 .sof_tplg_filename = "sof-mtl-rt1318-l12-rt714-l0.tplg" 652 }, 653 { 654 .link_mask = BIT(0) | BIT(2) | BIT(3), 655 .links = cs42l43_link0_cs35l56_link2_link3, 656 .drv_name = "sof_sdw", 657 .sof_tplg_filename = "sof-mtl-cs42l43-l0-cs35l56-l23.tplg", 658 }, 659 { 660 .link_mask = GENMASK(2, 0), 661 .links = mtl_cs42l43_cs35l56, 662 .drv_name = "sof_sdw", 663 .sof_tplg_filename = "sof-mtl-cs42l43-l0-cs35l56-l12.tplg", 664 }, 665 { 666 .link_mask = GENMASK(3, 0), 667 .links = mtl_3_in_1_sdca, 668 .drv_name = "sof_sdw", 669 .sof_tplg_filename = "sof-mtl-rt711-l0-rt1316-l23-rt714-l1.tplg", 670 }, 671 { 672 .link_mask = BIT(0), 673 .links = mtl_rt722_only, 674 .drv_name = "sof_sdw", 675 .sof_tplg_filename = "sof-mtl-rt722-l0.tplg", 676 }, 677 { 678 .link_mask = BIT(0), 679 .links = mtl_rvp, 680 .drv_name = "sof_sdw", 681 .sof_tplg_filename = "sof-mtl-rt711.tplg", 682 }, 683 { 684 .link_mask = BIT(0) | BIT(2), 685 .links = rt5682_link2_max98373_link0, 686 .drv_name = "sof_sdw", 687 .sof_tplg_filename = "sof-mtl-sdw-rt5682-l2-max98373-l0.tplg", 688 }, 689 { 690 .link_mask = BIT(0) | BIT(2), 691 .links = cs42l42_link0_max98363_link2, 692 .drv_name = "sof_sdw", 693 .sof_tplg_filename = "sof-mtl-sdw-cs42l42-l0-max98363-l2.tplg", 694 }, 695 {}, 696 }; 697 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_mtl_sdw_machines); 698