]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
ALSA: hda/realtek: Audio disappears on HP 15-fc000 after warm boot again
authorKailang Yang <kailang@realtek.com>
Tue, 19 Aug 2025 06:03:44 +0000 (14:03 +0800)
committerTakashi Iwai <tiwai@suse.de>
Tue, 19 Aug 2025 06:26:15 +0000 (08:26 +0200)
There was a similar bug in the past (Bug 217440), which was fixed for
this laptop.
The same issue is occurring again as of kernel v.6.12.2. The symptoms
are very similar - initially audio works but after a warm reboot, the
audio completely disappears until the computer is powered off (there
is no audio output at all).

The issue is also related by caused by a different change now. By
bisecting different kernel versions, I found that reverting
cc3d0b5dd989 in patch_realtek.c[*] restores the sound and it works
fine after the reboot.

[*] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/sound/pci/hda/patch_realtek.c?h=v6.12.2&id=4ed7f16070a8475c088ff423b2eb11ba15eb89b6

[ patch description reformatted by tiwai ]

Fixes: cc3d0b5dd989 ("ALSA: hda/realtek: Update ALC256 depop procedure")
Link: https://bugzilla.kernel.org/show_bug.cgi?id=220109
Signed-off-by: Kailang Yang <kailang@realtek.com>
Link: https://lore.kernel.org/5317ca723c82447a938414fcca85cbf5@realtek.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/hda/codecs/realtek/alc269.c

index 6c78a286172c52955a3d2b2f97526ef7aadbcd61..0323606b3d6d9b0c283b5bd86a4334b01f54bf26 100644 (file)
@@ -510,6 +510,15 @@ static void alc256_shutup(struct hda_codec *codec)
                hp_pin = 0x21;
 
        alc_update_coefex_idx(codec, 0x57, 0x04, 0x0007, 0x1); /* Low power */
+
+       /* 3k pull low control for Headset jack. */
+       /* NOTE: call this before clearing the pin, otherwise codec stalls */
+       /* If disable 3k pulldown control for alc257, the Mic detection will not work correctly
+        * when booting with headset plugged. So skip setting it for the codec alc257
+        */
+       if (spec->en_3kpull_low)
+               alc_update_coef_idx(codec, 0x46, 0, 3 << 12);
+
        hp_pin_sense = snd_hda_jack_detect(codec, hp_pin);
 
        if (hp_pin_sense) {
@@ -520,14 +529,6 @@ static void alc256_shutup(struct hda_codec *codec)
 
                msleep(75);
 
-       /* 3k pull low control for Headset jack. */
-       /* NOTE: call this before clearing the pin, otherwise codec stalls */
-       /* If disable 3k pulldown control for alc257, the Mic detection will not work correctly
-        * when booting with headset plugged. So skip setting it for the codec alc257
-        */
-               if (spec->en_3kpull_low)
-                       alc_update_coef_idx(codec, 0x46, 0, 3 << 12);
-
                if (!spec->no_shutup_pins)
                        snd_hda_codec_write(codec, hp_pin, 0,
                                    AC_VERB_SET_PIN_WIDGET_CONTROL, 0x0);