From: Takashi Iwai Date: Mon, 3 Jun 2013 09:17:38 +0000 (+0200) Subject: ALSA: hda/via - Fix wrongly cleared pins after suspend on VT1802 X-Git-Tag: v3.9.6~45 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fae0b025aedc23e872458046aada45c857b07373;p=thirdparty%2Fkernel%2Fstable.git ALSA: hda/via - Fix wrongly cleared pins after suspend on VT1802 commit 5a6f294e87974e6ec68d7113553ffd975d83bf15 upstream. VIA driver has a special suspend handling only for VT1802 to reduce the pop noise. During the transition to the generic parser, the behavior of snd_hda_set_pin_ctl() was also changed to modify the cached values, too. And this caused a regression where the pin is still cleared even after the resume (including the resume from power save), resulting in the silent output. The fix is simply to replace snd_hda_set_pin_ctl() with the explicit call of snd_hda_codec_write() again. Reported-by: Alex Riesen Signed-off-by: Takashi Iwai Signed-off-by: Greg Kroah-Hartman --- diff --git a/sound/pci/hda/patch_via.c b/sound/pci/hda/patch_via.c index 14bb936f5636d..67cb0ae6860e7 100644 --- a/sound/pci/hda/patch_via.c +++ b/sound/pci/hda/patch_via.c @@ -483,7 +483,9 @@ static int via_suspend(struct hda_codec *codec) /* Fix pop noise on headphones */ int i; for (i = 0; i < spec->gen.autocfg.hp_outs; i++) - snd_hda_set_pin_ctl(codec, spec->gen.autocfg.hp_pins[i], 0); + snd_hda_codec_write(codec, spec->gen.autocfg.hp_pins[i], + 0, AC_VERB_SET_PIN_WIDGET_CONTROL, + 0x00); } return 0;