[PATCH v12 4/4] ASoC: tac5xx2-sdw: ACPI match for intel mtl platform

Niranjan H Y
2026-04-28T16:29:50Z

Add acpi match entries to support TI's tac5572,
tas2883, tac5672 and tac5682 on link 0 on MTL machine.

Signed-off-by: Niranjan H Y <niranjan.hy@ti.com>
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>
---
v12:
- no change

v11:
- no change
---
.../intel/common/soc-acpi-intel-mtl-match.c | 132 ++++++++++++++++++
1 file changed, 132 insertions(+)

diff --git a/sound/soc/intel/common/soc-acpi-intel-mtl-match.c b/sound/soc/intel/common/soc-acpi-intel-mtl-match.c
index 72c35e730..2e4222456 100644
--- a/sound/soc/intel/common/soc-acpi-intel-mtl-match.c
+++ b/sound/soc/intel/common/soc-acpi-intel-mtl-match.c
@@ -122,6 +122,42 @@ static const struct snd_soc_acpi_endpoint spk_r_endpoint = {
.group_id = 1,
};

+static const struct snd_soc_acpi_endpoint tac5xx2_endpoints[] = {
+ { /* Playback Endpoint */
+ .num = 0,
+ .aggregated = 0,
+ .group_position = 0,
+ .group_id = 0,
+ },
+ { /* Mic Capture Endpoint */
+ .num = 1,
+ .aggregated = 0,
+ .group_position = 0,
+ .group_id = 0,
+ },
+ { /* UAJ-HP with Mic Endpoint */
+ .num = 2,
+ .aggregated = 0,
+ .group_position = 0,
+ .group_id = 0,
+ },
+};
+
+static const struct snd_soc_acpi_endpoint tas2883_endpoints[] = {
+ { /* Playback Endpoint */
+ .num = 0,
+ .aggregated = 0,
+ .group_position = 0,
+ .group_id = 0,
+ },
+ { /* Mic Capture Endpoint */
+ .num = 1,
+ .aggregated = 0,
+ .group_position = 0,
+ .group_id = 0,
+ },
+};
+
static const struct snd_soc_acpi_endpoint rt712_endpoints[] = {
{
.num = 0,
@@ -1011,6 +1047,33 @@ static const struct snd_soc_acpi_adr_device cs42l42_0_adr[] = {
}
};

+static const struct snd_soc_acpi_adr_device tac5572_0_adr[] = {
+ {
+ .adr = 0x0000300102557201ull,
+ .num_endpoints = ARRAY_SIZE(tac5xx2_endpoints),
+ .endpoints = tac5xx2_endpoints,
+ .name_prefix = "tac5572"
+ }
+};
+
+static const struct snd_soc_acpi_adr_device tac5672_0_adr[] = {
+ {
+ .adr = 0x0000300102567201ull,
+ .num_endpoints = ARRAY_SIZE(tac5xx2_endpoints),
+ .endpoints = tac5xx2_endpoints,
+ .name_prefix = "tac5672"
+ }
+};
+
+static const struct snd_soc_acpi_adr_device tac5682_0_adr[] = {
+ {
+ .adr = 0x0000300102568201ull,
+ .num_endpoints = ARRAY_SIZE(tac5xx2_endpoints),
+ .endpoints = tac5xx2_endpoints,
+ .name_prefix = "tac5682"
+ }
+};
+
static const struct snd_soc_acpi_adr_device tas2783_0_adr[] = {
{
.adr = 0x00003c0102000001ull,
@@ -1035,9 +1098,45 @@ static const struct snd_soc_acpi_adr_device tas2783_0_adr[] = {
.num_endpoints = 1,
.endpoints = &spk_r_endpoint,
.name_prefix = "tas2783-4"
+ },
+};
+
+static const struct snd_soc_acpi_adr_device tas2883_0_adr[] = {
+ {
+ .adr = 0x0000300102288301ull,
+ .num_endpoints = ARRAY_SIZE(tas2883_endpoints),
+ .endpoints = tas2883_endpoints,
+ .name_prefix = "tas2883"
}
};

+static const struct snd_soc_acpi_link_adr tac5572_l0[] = {
+ {
+ .mask = BIT(0),
+ .num_adr = ARRAY_SIZE(tac5572_0_adr),
+ .adr_d = tac5572_0_adr,
+ },
+ {}
+};
+
+static const struct snd_soc_acpi_link_adr tac5672_l0[] = {
+ {
+ .mask = BIT(0),
+ .num_adr = ARRAY_SIZE(tac5672_0_adr),
+ .adr_d = tac5672_0_adr,
+ },
+ {}
+};
+
+static const struct snd_soc_acpi_link_adr tac5682_l0[] = {
+ {
+ .mask = BIT(0),
+ .num_adr = ARRAY_SIZE(tac5682_0_adr),
+ .adr_d = tac5682_0_adr,
+ },
+ {}
+};
+
static const struct snd_soc_acpi_link_adr tas2783_link0[] = {
{
.mask = BIT(0),
@@ -1047,6 +1146,15 @@ static const struct snd_soc_acpi_link_adr tas2783_link0[] = {
{}
};

+static const struct snd_soc_acpi_link_adr tas2883_l0[] = {
+ {
+ .mask = BIT(0),
+ .num_adr = ARRAY_SIZE(tas2883_0_adr),
+ .adr_d = tas2883_0_adr,
+ },
+ {}
+};
+
static const struct snd_soc_acpi_link_adr cs42l42_link0_max98363_link2[] = {
/* Expected order: jack -> amp */
{
@@ -1208,12 +1316,36 @@ struct snd_soc_acpi_mach snd_soc_acpi_intel_mtl_sdw_machines[] = {
.drv_name = "sof_sdw",
.sof_tplg_filename = "sof-mtl-rt715-rt711-rt1308-mono.tplg",
},
+ {
+ .link_mask = BIT(0),
+ .links = tac5572_l0,
+ .drv_name = "sof_sdw",
+ .sof_tplg_filename = "sof-mtl-tac5572.tplg",
+ },
+ {
+ .link_mask = BIT(0),
+ .links = tac5672_l0,
+ .drv_name = "sof_sdw",
+ .sof_tplg_filename = "sof-mtl-tac5672.tplg",
+ },
+ {
+ .link_mask = BIT(0),
+ .links = tac5682_l0,
+ .drv_name = "sof_sdw",
+ .sof_tplg_filename = "sof-mtl-tac5682.tplg",
+ },
{
.link_mask = BIT(0),
.links = tas2783_link0,
.drv_name = "sof_sdw",
.sof_tplg_filename = "sof-mtl-tas2783.tplg",
},
+ {
+ .link_mask = BIT(0),
+ .links = tas2883_l0,
+ .drv_name = "sof_sdw",
+ .sof_tplg_filename = "sof-mtl-tas2883.tplg",
+ },
{
.link_mask = GENMASK(3, 0),
.links = mtl_rt713_l0_rt1316_l12_rt1713_l3,
--
2.34.1