ALSA: hda/analog - Handle inverted EAPD properly in vmaster hook
authorTakashi Iwai <tiwai@suse.de>
Mon, 2 Dec 2013 14:01:35 +0000 (15:01 +0100)
committerTakashi Iwai <tiwai@suse.de>
Mon, 2 Dec 2013 14:40:14 +0000 (15:40 +0100)
ad_vmaster_eapd_hook() needs to handle the inverted EAPD case
properly, too.  Otherwise the output gets broken on Lenovo N100 with
AD1986A codec.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=64971
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/patch_analog.c

index 34d86ec5d3dd06738227d766a0526a424e5ac691..f6351b8e0f5d8840dbb1228503eb13d3a731c24c 100644 (file)
@@ -147,6 +147,8 @@ static void ad_vmaster_eapd_hook(void *private_data, int enabled)
 
        if (!spec->eapd_nid)
                return;
+       if (codec->inv_eapd)
+               enabled = !enabled;
        snd_hda_codec_update_cache(codec, spec->eapd_nid, 0,
                                   AC_VERB_SET_EAPD_BTLENABLE,
                                   enabled ? 0x02 : 0x00);