summaryrefslogtreecommitdiff
path: root/sound
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2013-11-12 11:36:00 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-11-29 11:11:46 -0800
commit320f9078dbc4f9f71c79084d77cfe4c03aaaf328 (patch)
treead7e8ca7620c8f5261dcc3b28a6764809ffe8a7c /sound
parentc6ebcc4a440d9d8243ce33ed6c95235125fe1a80 (diff)
downloadlinux-3.10-320f9078dbc4f9f71c79084d77cfe4c03aaaf328.tar.gz
linux-3.10-320f9078dbc4f9f71c79084d77cfe4c03aaaf328.tar.bz2
linux-3.10-320f9078dbc4f9f71c79084d77cfe4c03aaaf328.zip
ALSA: hda - Check keep_eapd_on before inv_eapd
commit 468ac413045af1e0e4d1272291bed6878f248a69 upstream. We don't change the EAPD bit in set_pin_eapd() if keep_eapd_on flag is set by the codec driver and enable is false. But, we also apply the flipping of enable value according to inv_eapd flag in the same function, and this confused the former check, handled as if it's turned ON. The inverted EAPD check must be applied after keep_eapd_on check, instead. Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'sound')
-rw-r--r--sound/pci/hda/hda_generic.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sound/pci/hda/hda_generic.c b/sound/pci/hda/hda_generic.c
index d0cc796f778..26ed56f00b7 100644
--- a/sound/pci/hda/hda_generic.c
+++ b/sound/pci/hda/hda_generic.c
@@ -786,10 +786,10 @@ static void set_pin_eapd(struct hda_codec *codec, hda_nid_t pin, bool enable)
if (spec->own_eapd_ctl ||
!(snd_hda_query_pin_caps(codec, pin) & AC_PINCAP_EAPD))
return;
- if (codec->inv_eapd)
- enable = !enable;
if (spec->keep_eapd_on && !enable)
return;
+ if (codec->inv_eapd)
+ enable = !enable;
snd_hda_codec_update_cache(codec, pin, 0,
AC_VERB_SET_EAPD_BTLENABLE,
enable ? 0x02 : 0x00);