aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2018-01-19 08:18:34 -0500
committerTakashi Iwai <tiwai@suse.de>2018-01-19 08:18:34 -0500
commit1c9609e3a8cf5997bd35205cfda1ff2218ee793b (patch)
tree7e863744fe6993a804e6ee0f83453a64e2bd701f
parentc86d95cb6b7ecda7b7d56e40c24b7d8b9bf9159a (diff)
ALSA: hda - Reduce the suspend time consumption for ALC256
ALC256 has its own quirk to override the shutup call, and it contains the COEF update for pulling down the headset jack control. Currently, the COEF update is called after clearing the headphone pin, and this seems triggering a stall of the codec communication, and results in a long delay over a second at suspend. A quick resolution is to swap the calls: at first with the COEF update, then clear the headphone pin. Fixes: 4a219ef8f370 ("ALSA: hda/realtek - Add ALC256 HP depop function") Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=198503 Reported-by: Paul Menzel <pmenzel@molgen.mpg.de> Cc: <stable@vger.kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r--sound/pci/hda/patch_realtek.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 0004e282a837..23475888192b 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -3154,11 +3154,13 @@ static void alc256_shutup(struct hda_codec *codec)
3154 if (hp_pin_sense) 3154 if (hp_pin_sense)
3155 msleep(85); 3155 msleep(85);
3156 3156
3157 /* 3k pull low control for Headset jack. */
3158 /* NOTE: call this before clearing the pin, otherwise codec stalls */
3159 alc_update_coef_idx(codec, 0x46, 0, 3 << 12);
3160
3157 snd_hda_codec_write(codec, hp_pin, 0, 3161 snd_hda_codec_write(codec, hp_pin, 0,
3158 AC_VERB_SET_PIN_WIDGET_CONTROL, 0x0); 3162 AC_VERB_SET_PIN_WIDGET_CONTROL, 0x0);
3159 3163
3160 alc_update_coef_idx(codec, 0x46, 0, 3 << 12); /* 3k pull low control for Headset jack. */
3161
3162 if (hp_pin_sense) 3164 if (hp_pin_sense)
3163 msleep(100); 3165 msleep(100);
3164 3166