| From 5a6f294e87974e6ec68d7113553ffd975d83bf15 Mon Sep 17 00:00:00 2001 |
| From: Takashi Iwai <tiwai@suse.de> |
| Date: Mon, 3 Jun 2013 11:17:38 +0200 |
| Subject: ALSA: hda/via - Fix wrongly cleared pins after suspend on |
| VT1802 |
| |
| From: Takashi Iwai <tiwai@suse.de> |
| |
| 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 <raa.lkml@gmail.com> |
| Signed-off-by: Takashi Iwai <tiwai@suse.de> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| sound/pci/hda/patch_via.c | 4 +++- |
| 1 file changed, 3 insertions(+), 1 deletion(-) |
| |
| --- 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 |
| /* 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; |