mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH 1/3] ALSA: hda/realtek: Fix DAC binding for Lenovo Legion Pro 7 16ARX8H
@ 2026-11-04 10:04 Zhang Heng
  2026-11-04 10:04 ` [PATCH 2/3] ALSA: hda/realtek: Fix DAC binding for Legion Pro 7 16ARX8H variant Zhang Heng
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Zhang Heng @ 2026-11-04 10:04 UTC (permalink / raw)
  To: tiwai, perex, kailang
  Cc: linux-sound, linux-kernel, Zhang Heng, Roman Maidanovych via B4 Relay

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@kernel.org>
Link: https://bugzilla.kernel.org/show_bug.cgi?id=221735
Signed-off-by: Zhang Heng <zhangheng@kylinos.cn>
---
 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


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2026-11-04 14:41 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-11-04 10:04 [PATCH 1/3] ALSA: hda/realtek: Fix DAC binding for Lenovo Legion Pro 7 16ARX8H Zhang Heng
2026-11-04 10:04 ` [PATCH 2/3] ALSA: hda/realtek: Fix DAC binding for Legion Pro 7 16ARX8H variant Zhang Heng
2026-11-04 10:04 ` [PATCH 3/3] ALSA: hda/realtek: Fix pop noise on ASUS PRIME B650M-K Zhang Heng
2026-11-04 14:41 ` [PATCH 1/3] ALSA: hda/realtek: Fix DAC binding for Lenovo Legion Pro 7 16ARX8H Takashi Iwai

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®