[PATCH] ALSA: hda/realtek: Drop unneeded DAC override for HONOR MagicBook Pro 16 2024

From: Denis Yakovlev

Date: Mon Oct 05 2026 - 16:39:05 EST


Commit 1e3e378d63be ("ALSA: hda/realtek: Enable bass speakers on HONOR
MagicBook Pro 16 2024") restricted the speaker pin 0x1b to DAC 0x02, on
the assumption that the second speaker pair would otherwise end up on
DAC 0x03, as channels 3/4 that a stereo stream never reaches. That
assumption was wrong: without the override, pin 0x1b is still connected
to DAC 0x02, the only DAC that pin 0x14 can use, so the override changes
nothing. With and without it the codec routing is identical and the
speakers behave the same with nothing plugged in, with headphones and
with a CTIA headset inserted; without it they also keep working after
suspend/resume.

That commit also got the speaker roles the wrong way round. Pin 0x1b,
which the BIOS does configure, drives the bottom speakers, which carry
the low and mid frequencies; pin 0x14 drives the tweeters next to the
keyboard, and those are the speakers that stay silent without the quirk.
Measured with the internal microphones, enabling one pin at a time: at
1 kHz the 0x14 pair alone is more than 30 dB below the 0x1b pair alone,
while at 6 kHz the two are within 10 dB of each other.

Drop the DAC override and correct the pin comment, so the quirk only
sets pin configurations, like the one for the sibling M1020 board
(HONOR MRB-XXX).

Fixes: 1e3e378d63be ("ALSA: hda/realtek: Enable bass speakers on HONOR MagicBook Pro 16 2024")
Assisted-by: LLM
Signed-off-by: Denis Yakovlev <mfthesun@xxxxxxxxxxx>
---
Tested on a HONOR MagicBook Pro 16 2024 (DRA-XX) with SOF, using an
out-of-tree build of the quirk with a module parameter that switches the
DAC override on and off; this patch corresponds to "off". Not tested
with the legacy HDA driver. The mixer control for pin 0x14 is still
called "Bass Speaker"; that name comes from the generic parser and is
not changed here.

sound/hda/codecs/realtek/alc269.c | 20 +-------------------
1 file changed, 1 insertion(+), 19 deletions(-)

diff --git a/sound/hda/codecs/realtek/alc269.c b/sound/hda/codecs/realtek/alc269.c
index 3a3244fe3..447c0ba35 100644
--- a/sound/hda/codecs/realtek/alc269.c
+++ b/sound/hda/codecs/realtek/alc269.c
@@ -2763,17 +2763,6 @@ static void alc294_fixup_bass_speaker_15(struct hda_codec *codec,
}
}

-/* route Speaker (0x1b) to DAC 0x02, the only DAC reachable from Bass Speaker (0x14) */
-static void alc256_fixup_honor_dra_xx_share_dac(struct hda_codec *codec,
- const struct hda_fixup *fix, int action)
-{
- if (action == HDA_FIXUP_ACT_PRE_PROBE) {
- static const hda_nid_t conn[] = { 0x02 };
-
- snd_hda_override_conn_list(codec, 0x1b, ARRAY_SIZE(conn), conn);
- }
-}
-
/* Hook to update amp GPIO4 for automute */
static void alc280_hp_gpio4_automute_hook(struct hda_codec *codec,
struct hda_jack_callback *jack)
@@ -4477,7 +4466,6 @@ enum {
ALC236_FIXUP_HP_DMIC,
ALC256_FIXUP_HONOR_MRB_XXX_M1020_AUDIO,
ALC256_FIXUP_HONOR_DRA_XX_SPEAKERS,
- ALC256_FIXUP_HONOR_DRA_XX_SHARE_DAC,
ALC256_FIXUP_HONOR_DRA_XX_HEADSET_MODE,
ALC245_FIXUP_HP_ENVY_X360_15_FH0XXX,
ALC287_FIXUP_ACER_MICMUTE_LED,
@@ -7227,17 +7215,11 @@ static const struct hda_fixup alc269_fixups[] = {
[ALC256_FIXUP_HONOR_DRA_XX_SPEAKERS] = {
.type = HDA_FIXUP_PINS,
.v.pins = (const struct hda_pintbl[]) {
- { 0x14, 0x90170111 }, /* bass speakers */
+ { 0x14, 0x90170111 }, /* tweeters (top speakers) */
{ 0x19, 0x03a1113c }, /* headset mic, without its own jack detect */
{ }
},
.chained = true,
- .chain_id = ALC256_FIXUP_HONOR_DRA_XX_SHARE_DAC
- },
- [ALC256_FIXUP_HONOR_DRA_XX_SHARE_DAC] = {
- .type = HDA_FIXUP_FUNC,
- .v.func = alc256_fixup_honor_dra_xx_share_dac,
- .chained = true,
.chain_id = ALC256_FIXUP_HONOR_DRA_XX_HEADSET_MODE
},
[ALC256_FIXUP_HONOR_DRA_XX_HEADSET_MODE] = {
--
2.53.0