]> www.infradead.org Git - users/willy/pagecache.git/commitdiff
ALSA: hda/realtek: Update default depop procedure
authorKailang Yang <kailang@realtek.com>
Wed, 23 Oct 2024 08:13:10 +0000 (16:13 +0800)
committerTakashi Iwai <tiwai@suse.de>
Wed, 23 Oct 2024 12:21:10 +0000 (14:21 +0200)
Old procedure has a chance to meet Headphone no output.

Fixes: c2d6af53a43f ("ALSA: hda/realtek - Add default procedure for suspend and resume state")
Signed-off-by: Kailang Yang <kailang@realtek.com>
Link: https://lore.kernel.org/17b717a0a0b04a77aea4a8ec820cba13@realtek.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/patch_realtek.c

index edf688f989c8a1738b9ae5e15af207ccdd9d69e7..3567b14b52b7c2e1a715e8f6578c409cc570d8b3 100644 (file)
@@ -3868,20 +3868,18 @@ static void alc_default_init(struct hda_codec *codec)
 
        hp_pin_sense = snd_hda_jack_detect(codec, hp_pin);
 
-       if (hp_pin_sense)
+       if (hp_pin_sense) {
                msleep(2);
 
-       snd_hda_codec_write(codec, hp_pin, 0,
-                           AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE);
-
-       if (hp_pin_sense)
-               msleep(85);
+               snd_hda_codec_write(codec, hp_pin, 0,
+                                   AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT);
 
-       snd_hda_codec_write(codec, hp_pin, 0,
-                           AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT);
+               msleep(75);
 
-       if (hp_pin_sense)
-               msleep(100);
+               snd_hda_codec_write(codec, hp_pin, 0,
+                                   AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE);
+               msleep(75);
+       }
 }
 
 static void alc_default_shutup(struct hda_codec *codec)
@@ -3897,22 +3895,20 @@ static void alc_default_shutup(struct hda_codec *codec)
 
        hp_pin_sense = snd_hda_jack_detect(codec, hp_pin);
 
-       if (hp_pin_sense)
+       if (hp_pin_sense) {
                msleep(2);
 
-       snd_hda_codec_write(codec, hp_pin, 0,
-                           AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE);
-
-       if (hp_pin_sense)
-               msleep(85);
-
-       if (!spec->no_shutup_pins)
                snd_hda_codec_write(codec, hp_pin, 0,
-                                   AC_VERB_SET_PIN_WIDGET_CONTROL, 0x0);
+                                   AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE);
 
-       if (hp_pin_sense)
-               msleep(100);
+               msleep(75);
 
+               if (!spec->no_shutup_pins)
+                       snd_hda_codec_write(codec, hp_pin, 0,
+                                           AC_VERB_SET_PIN_WIDGET_CONTROL, 0x0);
+
+               msleep(75);
+       }
        alc_auto_setup_eapd(codec, false);
        alc_shutup_pins(codec);
 }