Commit 5a6f294e authored by Takashi Iwai's avatar Takashi Iwai

ALSA: hda/via - Fix wrongly cleared pins after suspend on VT1802

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: default avatarAlex Riesen <raa.lkml@gmail.com>
Cc: <stable@vger.kernel.org> [v3.9]
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 05909d5c
...@@ -484,7 +484,9 @@ static int via_suspend(struct hda_codec *codec) ...@@ -484,7 +484,9 @@ static int via_suspend(struct hda_codec *codec)
/* Fix pop noise on headphones */ /* Fix pop noise on headphones */
int i; int i;
for (i = 0; i < spec->gen.autocfg.hp_outs; 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; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment