[PATCH AUTOSEL 6.19-6.18] ASoC: amd: amd_sdw: add machine driver quirk for Lenovo models
From: Sasha Levin
Date: Mon Feb 23 2026 - 07:45:27 EST
From: Vijendar Mukunda <Vijendar.Mukunda@xxxxxxx>
[ Upstream commit 3acf517e1ae05ef66561b7a2782690387ce46e21 ]
This patch adds a quirk to include the codec amplifier function for Lenovo
models listed in the quirk table.
Note: In these models, the RT722 codec amplifier is excluded, and an
external amplifier is used instead.
Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@xxxxxxx>
Link: https://patch.msgid.link/20260218104734.3641481-3-Vijendar.Mukunda@xxxxxxx
Reviewed-by: Mario Limonciello (AMD) <superm1@xxxxxxxxxx>
Signed-off-by: Mark Brown <broonie@xxxxxxxxxx>
Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>
---
LLM Generated explanations, may be completely bogus:
## Analysis
### Commit Summary
This commit adds two DMI quirk entries for Lenovo laptop models (SKUs
"21YW" and "21YX") to the AMD SoundWire legacy machine driver quirk
table. The quirk flag `ASOC_SDW_CODEC_SPKR` tells the driver that these
models use an external amplifier instead of the RT722 codec's built-in
amplifier.
### Code Change Analysis
The change is purely additive - two new entries in the
`soc_sdw_quirk_table[]` DMI table, following the exact same pattern as
the existing Dell entries. Each entry:
- Matches on `DMI_SYS_VENDOR` = "LENOVO"
- Matches on a specific `DMI_PRODUCT_SKU`
- Sets `.driver_data` to `ASOC_SDW_CODEC_SPKR`
The change is 16 lines of addition, no deletions, no logic changes.
### Classification: Hardware Quirk
This falls squarely into the **QUIRKS and WORKAROUNDS** exception
category. Without this quirk, these Lenovo models would attempt to use
the RT722 codec amplifier which is not connected - meaning audio through
speakers would not work correctly (or at all) on these laptops. The
quirk tells the driver to use the external amplifier instead.
### Stable Kernel Criteria Assessment
1. **Obviously correct and tested**: Yes - follows identical pattern to
existing entries, reviewed by AMD maintainer Mario Limonciello.
2. **Fixes a real bug**: Yes - without this, speakers on these Lenovo
models won't work properly.
3. **Important issue**: Yes - broken audio on specific hardware.
4. **Small and contained**: Yes - 16 lines of table additions only.
5. **No new features/APIs**: Correct - just enables existing driver
functionality on new hardware.
6. **Clean application**: Should apply cleanly as it's a simple table
addition.
### Risk Assessment
**Extremely low risk.** The entries are DMI-matched to specific Lenovo
SKUs, so they cannot affect any other hardware. The pattern is identical
to existing entries. The worst case if the quirk were somehow wrong is
that audio routing would be incorrect on only these two specific models.
### Verification
- Verified the diff adds only DMI table entries following the exact same
structure as existing Dell entries in the same table.
- The `ASOC_SDW_CODEC_SPKR` flag is already used by multiple existing
entries (Dell SKUs 0D83, 0DD3, 0DD4), confirming it's established
functionality.
- Reviewed-by tag from Mario Limonciello (AMD) confirms subsystem
maintainer review.
- The file `sound/soc/amd/acp/acp-sdw-legacy-mach.c` is the correct
location for these AMD SoundWire quirks.
- Could NOT verify exactly which kernel version this file was introduced
(unverified), but given it's in mainline and the pattern matches
existing entries, the prerequisite driver infrastructure exists.
### User Impact
Without this patch, owners of these specific Lenovo laptop models (SKUs
21YW and 21YX) will have non-functional or incorrectly-routed speaker
audio. This is a significant usability issue for real hardware.
**YES**
sound/soc/amd/acp/acp-sdw-legacy-mach.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/sound/soc/amd/acp/acp-sdw-legacy-mach.c b/sound/soc/amd/acp/acp-sdw-legacy-mach.c
index fae94b9edd5a3..4f92de33a71a0 100644
--- a/sound/soc/amd/acp/acp-sdw-legacy-mach.c
+++ b/sound/soc/amd/acp/acp-sdw-legacy-mach.c
@@ -95,6 +95,22 @@ static const struct dmi_system_id soc_sdw_quirk_table[] = {
},
.driver_data = (void *)(ASOC_SDW_CODEC_SPKR),
},
+ {
+ .callback = soc_sdw_quirk_cb,
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
+ DMI_EXACT_MATCH(DMI_PRODUCT_SKU, "21YW"),
+ },
+ .driver_data = (void *)(ASOC_SDW_CODEC_SPKR),
+ },
+ {
+ .callback = soc_sdw_quirk_cb,
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
+ DMI_EXACT_MATCH(DMI_PRODUCT_SKU, "21YX"),
+ },
+ .driver_data = (void *)(ASOC_SDW_CODEC_SPKR),
+ },
{}
};
--
2.51.0