Re: [PATCH v1 4/4] ASoC: tac5xx2-sdw: ACPI match for Intel mtl platform

From: Pierre-Louis Bossart

Date: Mon Mar 23 2026 - 17:51:48 EST


On 3/22/26 21:16, Niranjan H Y wrote:
> 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@xxxxxx>
> Reviewed-by: Bard Liao <yung-chuan.liao@xxxxxxxxxxxxxxx>

Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@xxxxxxxxx>

> ---
> .../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 72c35e73078e..2e4222456f27 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,