839 lines · c
1// SPDX-License-Identifier: GPL-2.0-only2/*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 <sound/soc-acpi-intel-ssp-common.h>12#include "soc-acpi-intel-sdw-mockup-match.h"13 14static const struct snd_soc_acpi_codecs mtl_rt5682_rt5682s_hp = {15 .num_codecs = 2,16 .codecs = {RT5682_ACPI_HID, RT5682S_ACPI_HID},17};18 19static const struct snd_soc_acpi_codecs mtl_essx_83x6 = {20 .num_codecs = 3,21 .codecs = { "ESSX8316", "ESSX8326", "ESSX8336"},22};23 24static const struct snd_soc_acpi_codecs mtl_lt6911_hdmi = {25 .num_codecs = 1,26 .codecs = {"INTC10B0"}27};28 29struct snd_soc_acpi_mach snd_soc_acpi_intel_mtl_machines[] = {30 {31 .comp_ids = &mtl_essx_83x6,32 .drv_name = "mtl_es83x6_c1_h02",33 .machine_quirk = snd_soc_acpi_codec_list,34 .quirk_data = &mtl_lt6911_hdmi,35 .sof_tplg_filename = "sof-mtl-es83x6-ssp1-hdmi-ssp02.tplg",36 },37 {38 .comp_ids = &mtl_essx_83x6,39 .drv_name = "sof-essx8336",40 .sof_tplg_filename = "sof-mtl-es8336", /* the tplg suffix is added at run time */41 .tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_SSP_NUMBER |42 SND_SOC_ACPI_TPLG_INTEL_SSP_MSB |43 SND_SOC_ACPI_TPLG_INTEL_DMIC_NUMBER,44 },45 /* place boards for each headphone codec: sof driver will complete the46 * tplg name and machine driver will detect the amp type47 */48 {49 .id = CS42L42_ACPI_HID,50 .drv_name = "mtl_cs42l42_def",51 .sof_tplg_filename = "sof-mtl", /* the tplg suffix is added at run time */52 .tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_AMP_NAME |53 SND_SOC_ACPI_TPLG_INTEL_CODEC_NAME,54 },55 {56 .id = DA7219_ACPI_HID,57 .drv_name = "mtl_da7219_def",58 .sof_tplg_filename = "sof-mtl", /* the tplg suffix is added at run time */59 .tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_AMP_NAME |60 SND_SOC_ACPI_TPLG_INTEL_CODEC_NAME,61 },62 {63 .id = NAU8825_ACPI_HID,64 .drv_name = "mtl_nau8825_def",65 .sof_tplg_filename = "sof-mtl", /* the tplg suffix is added at run time */66 .tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_AMP_NAME |67 SND_SOC_ACPI_TPLG_INTEL_CODEC_NAME,68 },69 {70 .id = RT5650_ACPI_HID,71 .drv_name = "mtl_rt5682_def",72 .sof_tplg_filename = "sof-mtl", /* the tplg suffix is added at run time */73 .tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_AMP_NAME |74 SND_SOC_ACPI_TPLG_INTEL_CODEC_NAME,75 },76 {77 .comp_ids = &mtl_rt5682_rt5682s_hp,78 .drv_name = "mtl_rt5682_def",79 .sof_tplg_filename = "sof-mtl", /* the tplg suffix is added at run time */80 .tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_AMP_NAME |81 SND_SOC_ACPI_TPLG_INTEL_CODEC_NAME,82 },83 /* place amp-only boards in the end of table */84 {85 .id = "INTC10B0",86 .drv_name = "mtl_lt6911_hdmi_ssp",87 .sof_tplg_filename = "sof-mtl-hdmi-ssp02.tplg",88 },89 {},90};91EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_mtl_machines);92 93static const struct snd_soc_acpi_endpoint single_endpoint = {94 .num = 0,95 .aggregated = 0,96 .group_position = 0,97 .group_id = 0,98};99 100static const struct snd_soc_acpi_endpoint spk_l_endpoint = {101 .num = 0,102 .aggregated = 1,103 .group_position = 0,104 .group_id = 1,105};106 107static const struct snd_soc_acpi_endpoint spk_r_endpoint = {108 .num = 0,109 .aggregated = 1,110 .group_position = 1,111 .group_id = 1,112};113 114static const struct snd_soc_acpi_endpoint rt712_endpoints[] = {115 {116 .num = 0,117 .aggregated = 0,118 .group_position = 0,119 .group_id = 0,120 },121 {122 .num = 1,123 .aggregated = 0,124 .group_position = 0,125 .group_id = 0,126 },127};128 129/*130 * RT722 is a multi-function codec, three endpoints are created for131 * its headset, amp and dmic functions.132 */133static const struct snd_soc_acpi_endpoint rt722_endpoints[] = {134 {135 .num = 0,136 .aggregated = 0,137 .group_position = 0,138 .group_id = 0,139 },140 {141 .num = 1,142 .aggregated = 0,143 .group_position = 0,144 .group_id = 0,145 },146 {147 .num = 2,148 .aggregated = 0,149 .group_position = 0,150 .group_id = 0,151 },152};153 154static const struct snd_soc_acpi_endpoint spk_2_endpoint = {155 .num = 0,156 .aggregated = 1,157 .group_position = 2,158 .group_id = 1,159};160 161static const struct snd_soc_acpi_endpoint spk_3_endpoint = {162 .num = 0,163 .aggregated = 1,164 .group_position = 3,165 .group_id = 1,166};167 168static const struct snd_soc_acpi_adr_device rt711_sdca_0_adr[] = {169 {170 .adr = 0x000030025D071101ull,171 .num_endpoints = 1,172 .endpoints = &single_endpoint,173 .name_prefix = "rt711"174 }175};176 177static const struct snd_soc_acpi_adr_device rt712_0_single_adr[] = {178 {179 .adr = 0x000030025D071201ull,180 .num_endpoints = ARRAY_SIZE(rt712_endpoints),181 .endpoints = rt712_endpoints,182 .name_prefix = "rt712"183 }184};185 186static const struct snd_soc_acpi_adr_device rt1712_3_single_adr[] = {187 {188 .adr = 0x000330025D171201ull,189 .num_endpoints = 1,190 .endpoints = &single_endpoint,191 .name_prefix = "rt712-dmic"192 }193};194 195static const struct snd_soc_acpi_adr_device rt722_0_single_adr[] = {196 {197 .adr = 0x000030025d072201ull,198 .num_endpoints = ARRAY_SIZE(rt722_endpoints),199 .endpoints = rt722_endpoints,200 .name_prefix = "rt722"201 }202};203 204static const struct snd_soc_acpi_adr_device rt713_0_single_adr[] = {205 {206 .adr = 0x000031025D071301ull,207 .num_endpoints = 1,208 .endpoints = &single_endpoint,209 .name_prefix = "rt713"210 }211};212 213static const struct snd_soc_acpi_adr_device rt1713_3_single_adr[] = {214 {215 .adr = 0x000331025D171301ull,216 .num_endpoints = 1,217 .endpoints = &single_endpoint,218 .name_prefix = "rt713-dmic"219 }220};221 222static const struct snd_soc_acpi_adr_device mx8373_0_adr[] = {223 {224 .adr = 0x000023019F837300ull,225 .num_endpoints = 1,226 .endpoints = &spk_l_endpoint,227 .name_prefix = "Left"228 },229 {230 .adr = 0x000027019F837300ull,231 .num_endpoints = 1,232 .endpoints = &spk_r_endpoint,233 .name_prefix = "Right"234 }235};236 237static const struct snd_soc_acpi_adr_device rt5682_2_adr[] = {238 {239 .adr = 0x000221025D568200ull,240 .num_endpoints = 1,241 .endpoints = &single_endpoint,242 .name_prefix = "rt5682"243 }244};245 246static const struct snd_soc_acpi_adr_device rt1316_2_group1_adr[] = {247 {248 .adr = 0x000230025D131601ull,249 .num_endpoints = 1,250 .endpoints = &spk_l_endpoint,251 .name_prefix = "rt1316-1"252 }253};254 255static const struct snd_soc_acpi_adr_device rt1316_3_group1_adr[] = {256 {257 .adr = 0x000331025D131601ull,258 .num_endpoints = 1,259 .endpoints = &spk_r_endpoint,260 .name_prefix = "rt1316-2"261 }262};263 264static const struct snd_soc_acpi_adr_device rt1316_1_group2_adr[] = {265 {266 .adr = 0x000131025D131601ull,267 .num_endpoints = 1,268 .endpoints = &spk_l_endpoint,269 .name_prefix = "rt1316-1"270 }271};272 273static const struct snd_soc_acpi_adr_device rt1316_2_group2_adr[] = {274 {275 .adr = 0x000230025D131601ull,276 .num_endpoints = 1,277 .endpoints = &spk_r_endpoint,278 .name_prefix = "rt1316-2"279 }280};281 282static const struct snd_soc_acpi_adr_device rt1316_3_single_adr[] = {283 {284 .adr = 0x000330025D131601ull,285 .num_endpoints = 1,286 .endpoints = &single_endpoint,287 .name_prefix = "rt1316-1"288 }289};290 291static const struct snd_soc_acpi_adr_device rt1318_1_single_adr[] = {292 {293 .adr = 0x000130025D131801,294 .num_endpoints = 1,295 .endpoints = &single_endpoint,296 .name_prefix = "rt1318-1"297 }298};299 300static const struct snd_soc_acpi_adr_device rt1318_1_group1_adr[] = {301 {302 .adr = 0x000130025D131801ull,303 .num_endpoints = 1,304 .endpoints = &spk_l_endpoint,305 .name_prefix = "rt1318-1"306 }307};308 309static const struct snd_soc_acpi_adr_device rt1318_2_group1_adr[] = {310 {311 .adr = 0x000232025D131801ull,312 .num_endpoints = 1,313 .endpoints = &spk_r_endpoint,314 .name_prefix = "rt1318-2"315 }316};317 318static const struct snd_soc_acpi_adr_device rt714_0_adr[] = {319 {320 .adr = 0x000030025D071401ull,321 .num_endpoints = 1,322 .endpoints = &single_endpoint,323 .name_prefix = "rt714"324 }325};326 327static const struct snd_soc_acpi_adr_device rt714_1_adr[] = {328 {329 .adr = 0x000130025D071401ull,330 .num_endpoints = 1,331 .endpoints = &single_endpoint,332 .name_prefix = "rt714"333 }334};335 336static const struct snd_soc_acpi_link_adr mtl_712_l0_1712_l3[] = {337 {338 .mask = BIT(0),339 .num_adr = ARRAY_SIZE(rt712_0_single_adr),340 .adr_d = rt712_0_single_adr,341 },342 {343 .mask = BIT(3),344 .num_adr = ARRAY_SIZE(rt1712_3_single_adr),345 .adr_d = rt1712_3_single_adr,346 },347 {}348};349 350static const struct snd_soc_acpi_link_adr mtl_712_l0[] = {351 {352 .mask = BIT(0),353 .num_adr = ARRAY_SIZE(rt712_0_single_adr),354 .adr_d = rt712_0_single_adr,355 },356 {}357};358 359static const struct snd_soc_acpi_endpoint cs42l43_endpoints[] = {360 { /* Jack Playback Endpoint */361 .num = 0,362 .aggregated = 0,363 .group_position = 0,364 .group_id = 0,365 },366 { /* DMIC Capture Endpoint */367 .num = 1,368 .aggregated = 0,369 .group_position = 0,370 .group_id = 0,371 },372 { /* Jack Capture Endpoint */373 .num = 2,374 .aggregated = 0,375 .group_position = 0,376 .group_id = 0,377 },378 { /* Speaker Playback Endpoint */379 .num = 3,380 .aggregated = 0,381 .group_position = 0,382 .group_id = 0,383 },384};385 386static const struct snd_soc_acpi_adr_device cs42l43_0_adr[] = {387 {388 .adr = 0x00003001FA424301ull,389 .num_endpoints = ARRAY_SIZE(cs42l43_endpoints),390 .endpoints = cs42l43_endpoints,391 .name_prefix = "cs42l43"392 }393};394 395static const struct snd_soc_acpi_adr_device cs35l56_1_adr[] = {396 {397 .adr = 0x00013701FA355601ull,398 .num_endpoints = 1,399 .endpoints = &spk_r_endpoint,400 .name_prefix = "AMP3"401 },402 {403 .adr = 0x00013601FA355601ull,404 .num_endpoints = 1,405 .endpoints = &spk_3_endpoint,406 .name_prefix = "AMP4"407 }408};409 410static const struct snd_soc_acpi_adr_device cs35l56_2_adr[] = {411 {412 .adr = 0x00023301FA355601ull,413 .num_endpoints = 1,414 .endpoints = &spk_l_endpoint,415 .name_prefix = "AMP1"416 },417 {418 .adr = 0x00023201FA355601ull,419 .num_endpoints = 1,420 .endpoints = &spk_2_endpoint,421 .name_prefix = "AMP2"422 }423};424 425static const struct snd_soc_acpi_adr_device cs35l56_2_r_adr[] = {426 {427 .adr = 0x00023201FA355601ull,428 .num_endpoints = 1,429 .endpoints = &spk_r_endpoint,430 .name_prefix = "AMP3"431 },432 {433 .adr = 0x00023301FA355601ull,434 .num_endpoints = 1,435 .endpoints = &spk_3_endpoint,436 .name_prefix = "AMP4"437 }438 439};440 441static const struct snd_soc_acpi_adr_device cs35l56_3_l_adr[] = {442 {443 .adr = 0x00033001fa355601ull,444 .num_endpoints = 1,445 .endpoints = &spk_l_endpoint,446 .name_prefix = "AMP1"447 },448 {449 .adr = 0x00033101fa355601ull,450 .num_endpoints = 1,451 .endpoints = &spk_2_endpoint,452 .name_prefix = "AMP2"453 }454};455 456static const struct snd_soc_acpi_link_adr rt5682_link2_max98373_link0[] = {457 /* Expected order: jack -> amp */458 {459 .mask = BIT(2),460 .num_adr = ARRAY_SIZE(rt5682_2_adr),461 .adr_d = rt5682_2_adr,462 },463 {464 .mask = BIT(0),465 .num_adr = ARRAY_SIZE(mx8373_0_adr),466 .adr_d = mx8373_0_adr,467 },468 {}469};470 471static const struct snd_soc_acpi_link_adr mtl_rvp[] = {472 {473 .mask = BIT(0),474 .num_adr = ARRAY_SIZE(rt711_sdca_0_adr),475 .adr_d = rt711_sdca_0_adr,476 },477 {}478};479 480static const struct snd_soc_acpi_link_adr mtl_rt722_only[] = {481 {482 .mask = BIT(0),483 .num_adr = ARRAY_SIZE(rt722_0_single_adr),484 .adr_d = rt722_0_single_adr,485 },486 {}487};488 489static const struct snd_soc_acpi_link_adr mtl_3_in_1_sdca[] = {490 {491 .mask = BIT(0),492 .num_adr = ARRAY_SIZE(rt711_sdca_0_adr),493 .adr_d = rt711_sdca_0_adr,494 },495 {496 .mask = BIT(2),497 .num_adr = ARRAY_SIZE(rt1316_2_group1_adr),498 .adr_d = rt1316_2_group1_adr,499 },500 {501 .mask = BIT(3),502 .num_adr = ARRAY_SIZE(rt1316_3_group1_adr),503 .adr_d = rt1316_3_group1_adr,504 },505 {506 .mask = BIT(1),507 .num_adr = ARRAY_SIZE(rt714_1_adr),508 .adr_d = rt714_1_adr,509 },510 {}511};512 513static const struct snd_soc_acpi_link_adr mtl_sdw_rt1318_l12_rt714_l0[] = {514 {515 .mask = BIT(1),516 .num_adr = ARRAY_SIZE(rt1318_1_group1_adr),517 .adr_d = rt1318_1_group1_adr,518 },519 {520 .mask = BIT(2),521 .num_adr = ARRAY_SIZE(rt1318_2_group1_adr),522 .adr_d = rt1318_2_group1_adr,523 },524 {525 .mask = BIT(0),526 .num_adr = ARRAY_SIZE(rt714_0_adr),527 .adr_d = rt714_0_adr,528 },529 {}530};531 532static const struct snd_soc_acpi_link_adr mtl_rt713_l0_rt1316_l12_rt1713_l3[] = {533 {534 .mask = BIT(0),535 .num_adr = ARRAY_SIZE(rt713_0_single_adr),536 .adr_d = rt713_0_single_adr,537 },538 {539 .mask = BIT(1),540 .num_adr = ARRAY_SIZE(rt1316_1_group2_adr),541 .adr_d = rt1316_1_group2_adr,542 },543 {544 .mask = BIT(2),545 .num_adr = ARRAY_SIZE(rt1316_2_group2_adr),546 .adr_d = rt1316_2_group2_adr,547 },548 {549 .mask = BIT(3),550 .num_adr = ARRAY_SIZE(rt1713_3_single_adr),551 .adr_d = rt1713_3_single_adr,552 },553 {}554};555 556static const struct snd_soc_acpi_link_adr mtl_rt713_l0_rt1318_l1_rt1713_l3[] = {557 {558 .mask = BIT(0),559 .num_adr = ARRAY_SIZE(rt713_0_single_adr),560 .adr_d = rt713_0_single_adr,561 },562 {563 .mask = BIT(1),564 .num_adr = ARRAY_SIZE(rt1318_1_single_adr),565 .adr_d = rt1318_1_single_adr,566 },567 {568 .mask = BIT(3),569 .num_adr = ARRAY_SIZE(rt1713_3_single_adr),570 .adr_d = rt1713_3_single_adr,571 },572 {}573};574 575static const struct snd_soc_acpi_link_adr mtl_rt713_l0_rt1318_l12_rt1713_l3[] = {576 {577 .mask = BIT(0),578 .num_adr = ARRAY_SIZE(rt713_0_single_adr),579 .adr_d = rt713_0_single_adr,580 },581 {582 .mask = BIT(1),583 .num_adr = ARRAY_SIZE(rt1318_1_group1_adr),584 .adr_d = rt1318_1_group1_adr,585 },586 {587 .mask = BIT(2),588 .num_adr = ARRAY_SIZE(rt1318_2_group1_adr),589 .adr_d = rt1318_2_group1_adr,590 },591 {592 .mask = BIT(3),593 .num_adr = ARRAY_SIZE(rt1713_3_single_adr),594 .adr_d = rt1713_3_single_adr,595 },596 {}597};598 599static const struct snd_soc_acpi_link_adr mtl_rt713_l0_rt1316_l12[] = {600 {601 .mask = BIT(0),602 .num_adr = ARRAY_SIZE(rt713_0_single_adr),603 .adr_d = rt713_0_single_adr,604 },605 {606 .mask = BIT(1),607 .num_adr = ARRAY_SIZE(rt1316_1_group2_adr),608 .adr_d = rt1316_1_group2_adr,609 },610 {611 .mask = BIT(2),612 .num_adr = ARRAY_SIZE(rt1316_2_group2_adr),613 .adr_d = rt1316_2_group2_adr,614 },615 {}616};617 618static const struct snd_soc_acpi_link_adr mtl_rt711_l0_rt1316_l3[] = {619 {620 .mask = BIT(0),621 .num_adr = ARRAY_SIZE(rt711_sdca_0_adr),622 .adr_d = rt711_sdca_0_adr,623 },624 {625 .mask = BIT(3),626 .num_adr = ARRAY_SIZE(rt1316_3_single_adr),627 .adr_d = rt1316_3_single_adr,628 },629 {}630};631 632static const struct snd_soc_acpi_adr_device mx8363_2_adr[] = {633 {634 .adr = 0x000230019F836300ull,635 .num_endpoints = 1,636 .endpoints = &spk_l_endpoint,637 .name_prefix = "Left"638 },639 {640 .adr = 0x000231019F836300ull,641 .num_endpoints = 1,642 .endpoints = &spk_r_endpoint,643 .name_prefix = "Right"644 }645};646 647static const struct snd_soc_acpi_adr_device cs42l42_0_adr[] = {648 {649 .adr = 0x00001001FA424200ull,650 .num_endpoints = 1,651 .endpoints = &single_endpoint,652 .name_prefix = "cs42l42"653 }654};655 656static const struct snd_soc_acpi_link_adr cs42l42_link0_max98363_link2[] = {657 /* Expected order: jack -> amp */658 {659 .mask = BIT(0),660 .num_adr = ARRAY_SIZE(cs42l42_0_adr),661 .adr_d = cs42l42_0_adr,662 },663 {664 .mask = BIT(2),665 .num_adr = ARRAY_SIZE(mx8363_2_adr),666 .adr_d = mx8363_2_adr,667 },668 {}669};670 671static const struct snd_soc_acpi_link_adr mtl_cs42l43_l0[] = {672 {673 .mask = BIT(0),674 .num_adr = ARRAY_SIZE(cs42l43_0_adr),675 .adr_d = cs42l43_0_adr,676 },677 {}678};679 680static const struct snd_soc_acpi_link_adr mtl_cs42l43_cs35l56[] = {681 {682 .mask = BIT(0),683 .num_adr = ARRAY_SIZE(cs42l43_0_adr),684 .adr_d = cs42l43_0_adr,685 },686 {687 .mask = BIT(1),688 .num_adr = ARRAY_SIZE(cs35l56_1_adr),689 .adr_d = cs35l56_1_adr,690 },691 {692 .mask = BIT(2),693 .num_adr = ARRAY_SIZE(cs35l56_2_adr),694 .adr_d = cs35l56_2_adr,695 },696 {}697};698 699static const struct snd_soc_acpi_link_adr cs42l43_link0_cs35l56_link2_link3[] = {700 /* Expected order: jack -> amp */701 {702 .mask = BIT(0),703 .num_adr = ARRAY_SIZE(cs42l43_0_adr),704 .adr_d = cs42l43_0_adr,705 },706 {707 .mask = BIT(2),708 .num_adr = ARRAY_SIZE(cs35l56_2_r_adr),709 .adr_d = cs35l56_2_r_adr,710 },711 {712 .mask = BIT(3),713 .num_adr = ARRAY_SIZE(cs35l56_3_l_adr),714 .adr_d = cs35l56_3_l_adr,715 },716 {}717};718 719/* this table is used when there is no I2S codec present */720struct snd_soc_acpi_mach snd_soc_acpi_intel_mtl_sdw_machines[] = {721 /* mockup tests need to be first */722 {723 .link_mask = GENMASK(3, 0),724 .links = sdw_mockup_headset_2amps_mic,725 .drv_name = "sof_sdw",726 .sof_tplg_filename = "sof-mtl-rt711-rt1308-rt715.tplg",727 },728 {729 .link_mask = BIT(0) | BIT(1) | BIT(3),730 .links = sdw_mockup_headset_1amp_mic,731 .drv_name = "sof_sdw",732 .sof_tplg_filename = "sof-mtl-rt711-rt1308-mono-rt715.tplg",733 },734 {735 .link_mask = GENMASK(2, 0),736 .links = sdw_mockup_mic_headset_1amp,737 .drv_name = "sof_sdw",738 .sof_tplg_filename = "sof-mtl-rt715-rt711-rt1308-mono.tplg",739 },740 {741 .link_mask = GENMASK(3, 0),742 .links = mtl_rt713_l0_rt1316_l12_rt1713_l3,743 .drv_name = "sof_sdw",744 .sof_tplg_filename = "sof-mtl-rt713-l0-rt1316-l12-rt1713-l3.tplg",745 },746 {747 .link_mask = GENMASK(3, 0),748 .links = mtl_rt713_l0_rt1318_l12_rt1713_l3,749 .drv_name = "sof_sdw",750 .sof_tplg_filename = "sof-mtl-rt713-l0-rt1318-l12-rt1713-l3.tplg",751 },752 {753 .link_mask = BIT(0) | BIT(1) | BIT(3),754 .links = mtl_rt713_l0_rt1318_l1_rt1713_l3,755 .drv_name = "sof_sdw",756 .sof_tplg_filename = "sof-mtl-rt713-l0-rt1318-l1-rt1713-l3.tplg",757 },758 {759 .link_mask = GENMASK(2, 0),760 .links = mtl_rt713_l0_rt1316_l12,761 .drv_name = "sof_sdw",762 .sof_tplg_filename = "sof-mtl-rt713-l0-rt1316-l12.tplg",763 },764 {765 .link_mask = BIT(3) | BIT(0),766 .links = mtl_712_l0_1712_l3,767 .drv_name = "sof_sdw",768 .sof_tplg_filename = "sof-mtl-rt712-l0-rt1712-l3.tplg",769 },770 {771 .link_mask = BIT(0),772 .links = mtl_712_l0,773 .drv_name = "sof_sdw",774 .sof_tplg_filename = "sof-mtl-rt712-l0.tplg",775 },776 {777 .link_mask = GENMASK(2, 0),778 .links = mtl_sdw_rt1318_l12_rt714_l0,779 .drv_name = "sof_sdw",780 .sof_tplg_filename = "sof-mtl-rt1318-l12-rt714-l0.tplg"781 },782 {783 .link_mask = BIT(0) | BIT(2) | BIT(3),784 .links = cs42l43_link0_cs35l56_link2_link3,785 .drv_name = "sof_sdw",786 .sof_tplg_filename = "sof-mtl-cs42l43-l0-cs35l56-l23.tplg",787 },788 {789 .link_mask = GENMASK(2, 0),790 .links = mtl_cs42l43_cs35l56,791 .drv_name = "sof_sdw",792 .sof_tplg_filename = "sof-mtl-cs42l43-l0-cs35l56-l12.tplg",793 },794 {795 .link_mask = BIT(0),796 .links = mtl_cs42l43_l0,797 .drv_name = "sof_sdw",798 .sof_tplg_filename = "sof-mtl-cs42l43-l0.tplg",799 },800 {801 .link_mask = GENMASK(3, 0),802 .links = mtl_3_in_1_sdca,803 .drv_name = "sof_sdw",804 .sof_tplg_filename = "sof-mtl-rt711-l0-rt1316-l23-rt714-l1.tplg",805 },806 {807 .link_mask = 0x9, /* 2 active links required */808 .links = mtl_rt711_l0_rt1316_l3,809 .drv_name = "sof_sdw",810 .sof_tplg_filename = "sof-mtl-rt711-l0-rt1316-l3.tplg",811 },812 {813 .link_mask = BIT(0),814 .links = mtl_rt722_only,815 .drv_name = "sof_sdw",816 .sof_tplg_filename = "sof-mtl-rt722-l0.tplg",817 },818 {819 .link_mask = BIT(0),820 .links = mtl_rvp,821 .drv_name = "sof_sdw",822 .sof_tplg_filename = "sof-mtl-rt711.tplg",823 },824 {825 .link_mask = BIT(0) | BIT(2),826 .links = rt5682_link2_max98373_link0,827 .drv_name = "sof_sdw",828 .sof_tplg_filename = "sof-mtl-sdw-rt5682-l2-max98373-l0.tplg",829 },830 {831 .link_mask = BIT(0) | BIT(2),832 .links = cs42l42_link0_max98363_link2,833 .drv_name = "sof_sdw",834 .sof_tplg_filename = "sof-mtl-sdw-cs42l42-l0-max98363-l2.tplg",835 },836 {},837};838EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_mtl_sdw_machines);839