[PATCH AUTOSEL 6.19-6.12] ASoC: soc-acpi-intel-arl-match: change rt722 amp endpoint to aggregated

Sasha Levin
2026-02-14T01:07:10Z

From: Bard Liao <yung-chuan.liao@linux.intel.com>

[ Upstream commit 08c09899960118ffb01417242e659eb6cc067d6a ]

rt722 is aggregated with rt1320 amp in arl_rt722_l0_rt1320_l2 and it is
the only audio configuration in the ARL platform. Set .aggregated = 1 to
represent the fact and avoid unexpected issue.

Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Reviewed-by: Liam Girdwood <liam.r.girdwood@intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Link: https://patch.msgid.link/20260119091749.1752088-2-yung-chuan.liao@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---

LLM Generated explanations, may be completely bogus:

So the RT722+RT1320 support was added in v6.13. This means stable trees
6.13.y and potentially 6.12.y (if it was backported) could be affected.

### Assessment

**What the commit fixes**: The RT722 codec's amplifier endpoint was
incorrectly configured as non-aggregated (`.aggregated = 0`) when it is
actually aggregated with the RT1320 amplifier. This mismatch between the
software description and the actual hardware topology could cause audio
initialization or routing issues on ARL platforms with this specific
codec configuration.

**Is this a real bug fix?** Yes, but it's borderline. The commit message
uses the vague "avoid unexpected issue" rather than describing a
specific observed failure. However, incorrectly describing the hardware
topology is objectively wrong — it's like having wrong device tree data.
Getting the aggregation flag wrong could cause the SoundWire bus manager
to incorrectly handle stream synchronization between the RT722 amp and
RT1320.

**Meets stable criteria?**
- Obviously correct: Yes — the commit sets the aggregation flag to match
reality
- Fixes a real bug: The hardware description was wrong; this is a
correctness fix
- Small and contained: Yes — just a few struct field changes in one file
- No new features: Correct — just fixes existing configuration data

**Risk**: Very low. This only affects ARL platforms with the specific
RT722+RT1320 configuration. The change is purely to endpoint metadata
and is reviewed by Intel audio maintainers.

**Concern**: The commit message's vagueness about what "unexpected
issue" means makes it somewhat uncertain whether this causes an actual
user-visible failure or is a proactive correctness fix. However, wrong
aggregation settings in SoundWire can realistically cause audio failures
(amplifier not playing, stream synchronization issues).

This is a hardware configuration correctness fix — similar to a quirk or
device tree fix. It's small, well-reviewed, low-risk, and fixes an
objectively wrong hardware description that could cause audio issues on
ARL platforms.

**YES**

.../intel/common/soc-acpi-intel-arl-match.c | 23 +++++++++----------
1 file changed, 11 insertions(+), 12 deletions(-)

diff --git a/sound/soc/intel/common/soc-acpi-intel-arl-match.c b/sound/soc/intel/common/soc-acpi-intel-arl-match.c
index 6bf7a6250ddc3..c952f7d2b2c0e 100644
--- a/sound/soc/intel/common/soc-acpi-intel-arl-match.c
+++ b/sound/soc/intel/common/soc-acpi-intel-arl-match.c
@@ -45,23 +45,22 @@ static const struct snd_soc_acpi_endpoint spk_3_endpoint = {
.group_id = 1,
};

-/*
- * RT722 is a multi-function codec, three endpoints are created for
- * its headset, amp and dmic functions.
- */
-static const struct snd_soc_acpi_endpoint rt722_endpoints[] = {
+static const struct snd_soc_acpi_endpoint jack_amp_g1_dmic_endpoints[] = {
+ /* Jack Endpoint */
{
.num = 0,
.aggregated = 0,
.group_position = 0,
.group_id = 0,
},
+ /* Amp Endpoint, work as spk_l_endpoint */
{
.num = 1,
- .aggregated = 0,
+ .aggregated = 1,
.group_position = 0,
- .group_id = 0,
+ .group_id = 1,
},
+ /* DMIC Endpoint */
{
.num = 2,
.aggregated = 0,
@@ -229,11 +228,11 @@ static const struct snd_soc_acpi_adr_device rt711_sdca_0_adr[] = {
}
};

-static const struct snd_soc_acpi_adr_device rt722_0_single_adr[] = {
+static const struct snd_soc_acpi_adr_device rt722_0_agg_adr[] = {
{
.adr = 0x000030025D072201ull,
- .num_endpoints = ARRAY_SIZE(rt722_endpoints),
- .endpoints = rt722_endpoints,
+ .num_endpoints = ARRAY_SIZE(jack_amp_g1_dmic_endpoints),
+ .endpoints = jack_amp_g1_dmic_endpoints,
.name_prefix = "rt722"
}
};
@@ -394,8 +393,8 @@ static const struct snd_soc_acpi_link_adr arl_rt711_l0_rt1316_l3[] = {
static const struct snd_soc_acpi_link_adr arl_rt722_l0_rt1320_l2[] = {
{
.mask = BIT(0),
- .num_adr = ARRAY_SIZE(rt722_0_single_adr),
- .adr_d = rt722_0_single_adr,
+ .num_adr = ARRAY_SIZE(rt722_0_agg_adr),
+ .adr_d = rt722_0_agg_adr,
},
{
.mask = BIT(2),
--
2.51.0