Re: [PATCH v2 3/3] ALSA: hda/realtek: enable AW88399 on Lenovo Legion Pro

From: Marco Giunta

Date: Wed Jul 29 2026 - 13:54:18 EST


Hi Aaron,

Thanks for looking at this. I think there are some misunderstandings
I'd like to address.

Regarding default DAC routing and the R9000P codec dump
in bugzilla 218329#c31: that user is running a stock kernel,
without this patch series applied; indeed, they have no
snd_hda_scodec_aw88399 module loaded, and their dmesg shows:

ALC287: picked fixup for PCI SSID 17aa:38bb

This is the Yoga S780-14.5 Air quirk (ALC287_FIXUP_TAS2781_I2C)
firing by mistake, because the R9000P shares PCI SSID 17aa:38bb
with that model (one of our R9000P testers independently confirmed this
by providing their lspci output).
That quirk is chained to several other, and in particular it ultimately
calls the function alc285_fixup_thinkpad_x1_gen7, which does:

static const hda_nid_t conn[] = { 0x02, 0x03 }; /* exclude 0x06 */
static const hda_nid_t preferred_pairs[] = {
0x14, 0x02, 0x17, 0x03, 0x21, 0x03, 0
};

The HDA_CODEC_QUIRK entries in this patch exist precisely to prevent
that collision, matching on codec SSID instead of PCI SSID.
The "0x03*" in that bugzilla codec dump, therefore, comes from the
wrong quirk's override, not the hardware default,
which instead is 0x17->0x06, as can also be seen on the other Legions.

Regarding the DAC 0x02 override for pin 0x17: this is necessary
in order to fix broken volume controls. The fact that this override
achieves this goal has been confirmed by every tester
across all three supported models.
Indeed, before adding this override, earlier versions of the patch
required alsa-ucm-conf workarounds to make volume controls work at all.
Without it and the rest of the patch as-is, the woofers turn on, but
speaker volume is always 0 or 100% irrespective of OS volume controls.

Three independent lines of evidence support this being
the correct DAC rerouting:

1. The official Lenovo Windows driver selects DAC 0x02
for both 0x14 and 0x17, as can be confirmed by performing a
realtek codec dump on a stock Windows install.

2. Multiple existing quirks in alc269.c perform the same override on
laptops (Lenovo or otherwise) with similar sound architectures,
with comments explicitly stating that this is done to fix
volume controls, and therefore implying that this is a common issue
on laptops with realtek chips from this family.
Some examples of these quirks and comments include:
* alc274_fixup_hp_aio_bind_dacs:
"avoid DAC 0x06 for speaker switch 0x17; it has no volume
control"
"The speaker is routed to the Node 0x06 by a mistake, thus the
speaker's volume can't be adjusted"
* alc289_fixup_asus_ga401:
"avoid DAC 0x06 for bass speaker 0x17; it has no volume
control"
* alc287_fixup_yoga9_14iap7_bass_spk_pin:
"Avoid DAC 0x06 and 0x08, as they have no volume controls"
"Prefer both speakerbar (0x14) and bass speakers (0x17) connected
to DAC 0x02."
* alc285_fixup_hp_spectre_x360_eb1:
"share DAC [0x02 among 0x14 and 0x17] to have unified volume control"
* alc285_fixup_thinkpad_x1_gen7 itself:
"DAC3 (NID 0x06) -> Unused, due to the lack of volume amp"

In particular, many of these quirks share a single DAC between
tweeters and woofers (typically 0x02 and 0x14/0x17) without issue.

3. All testers confirmed working volume control with DAC 0x02 rerouting
on SSIDs 3906/3907, 3927/3928, and 3938/3939. Without an override of
the default 0x06 routing, instead, woofer volume is either 0 or 100%
regardless of OS volume levels.

In light of these points, an override away from 0x06 is absolutely needed
on these machines, and preferentially towards DAC 0x02.

Regarding DAC 0x03 and 4-channel playback: a 4.0 surround profile is not
meaningful on this hardware regardless of DAC assignment.
Indeed, selecting a 4.0 profile results in one pair of L/R channels
(either front or rear) being silent; no DAC configuration makes
all four channels work. I verified this empirically with both
0x17->0x02 and 0x17->0x03 (as well as no override), so in this sense
which DAC override is used is actually completely irrelevant.
The correct audio profile for this hardware is analog stereo (2.0),
which works perfectly with the DAC 0x02 override, and makes front and rear
channels sound the same and work correctly when using speaker-test -c 4.
More generally, the tweeters and woofers reproduce the same stereo signal,
and don't actually represent separate channels in a true surround setup.
That the 4.0 profiles are exposed at all is an artifact of the HDA parser,
not a consequence of this patch's DAC override.

Regarding pin 0x1d: it's true that, in practice,
leaving the hardware default 0x40600001 untouched won't change
anything meaningful for this node, which is essentially
already disabled for all practical purposes. The override to
0x411111f0 matches the Windows driver's pin configuration, which,
as can be seen from a realtek codec dump from the official driver,
performs this pincfg override anyway.
I'm happy to drop this line if a maintainer considers it redundant.

Happy to answer further questions, and thanks again for looking at this.

Best regards,
Marco