[PATCH 1/3] ALSA: hda/realtek: Fix DAC binding for Lenovo Legion Pro 7 16ARX8H
From: Zhang Heng
Date: Wed Nov 04 2026 - 05:14:24 EST
The Lenovo Legion Pro 7 16ARX8H (SSID 17aa:38a7) uses the TAS2781
I2C DAC. The generic ALC287_FIXUP_TAS2781_I2C quirk assumes two
speakers (0x14 and 0x17). It forcibly binds 0x14 to DAC 0x02, and
binds 0x17 and 0x21 to DAC 0x03.
However, this machine only has 0x17 as the speaker and lacks 0x14,
which leads to incorrect DAC binding. To fix this, chain the
alc295_fixup_asus_dacs() fixup before the generic quirk to ensure
the correct DAC routing for this hardware layout.
Tested-by: Roman Maidanovych via B4 Relay <devnull+devuarpd.gmail.com@xxxxxxxxxx>
Link: https://bugzilla.kernel.org/show_bug.cgi?id=221735
Signed-off-by: Zhang Heng <zhangheng@xxxxxxxxxx>
---
sound/hda/codecs/realtek/alc269.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/sound/hda/codecs/realtek/alc269.c b/sound/hda/codecs/realtek/alc269.c
index a75204d32865..f9dc1e1f3b38 100644
--- a/sound/hda/codecs/realtek/alc269.c
+++ b/sound/hda/codecs/realtek/alc269.c
@@ -4553,6 +4553,7 @@ enum {
ALC256_FIXUP_IPASON_SMARTBOOK_S1,
ALC256_FIXUP_ASUS_SPEAKER_COEFS,
ALC245_FIXUP_MINISFORUM_V3_MIC_NO_PRESENCE,
+ ALC287_FIXUP_TAS2781_I2C_DAC,
};
/* A special fixup for Lenovo C940 and Yoga Duet 7;
@@ -7061,6 +7062,12 @@ static const struct hda_fixup alc269_fixups[] = {
.chained = true,
.chain_id = ALC285_FIXUP_THINKPAD_HEADSET_JACK,
},
+ [ALC287_FIXUP_TAS2781_I2C_DAC] = {
+ .type = HDA_FIXUP_FUNC,
+ .v.func = alc295_fixup_asus_dacs,
+ .chained_before = true,
+ .chain_id = ALC287_FIXUP_TAS2781_I2C,
+ },
[ALC287_FIXUP_ASUS_ALLY_X] = {
.type = HDA_FIXUP_PINS,
.v.pins = (const struct hda_pintbl[]) {
@@ -8568,7 +8575,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
HDA_CODEC_QUIRK(0x17aa, 0x386a, "Lenovo Yoga 7 16IAP7", ALC287_FIXUP_YOGA9_14IAP7_BASS_SPK_PIN),
HDA_CODEC_QUIRK(0x17aa, 0x386e, "Legion Y9000X 2022 IAH7", ALC287_FIXUP_CS35L41_I2C_2),
SND_PCI_QUIRK(0x17aa, 0x386e, "Yoga Pro 7 14ARP8", ALC285_FIXUP_YOGA_SPEAKER2_TO_DAC1),
- HDA_CODEC_QUIRK(0x17aa, 0x38a7, "Legion Pro 7 16ARX8H", ALC287_FIXUP_TAS2781_I2C), /* this must match before PCI SSID 17aa:386f below */
+ HDA_CODEC_QUIRK(0x17aa, 0x38a7, "Legion Pro 7 16ARX8H", ALC287_FIXUP_TAS2781_I2C_DAC), /* this must match before PCI SSID 17aa:386f below */
HDA_CODEC_QUIRK(0x17aa, 0x38a8, "Legion Pro 7 16ARX8H", ALC287_FIXUP_TAS2781_I2C), /* this must match before PCI SSID 17aa:386f below */
SND_PCI_QUIRK(0x17aa, 0x386f, "Legion Pro 7i 16IAX7", ALC287_FIXUP_CS35L41_I2C_2),
SND_PCI_QUIRK(0x17aa, 0x3870, "Lenovo Yoga 7 14ARB7", ALC287_FIXUP_YOGA7_14ARB7_I2C),
--
2.25.1