From: Takashi Iwai Date: Fri, 21 Dec 2012 14:23:01 +0000 (+0100) Subject: ALSA: hda - Add inv_eapd flag to struct hda_codec X-Git-Tag: v3.9-rc1~52^2~77^2~112 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ecac3ed174034755ebc0b29393fb501ffd0b2afc;p=platform%2Fkernel%2Flinux-exynos.git ALSA: hda - Add inv_eapd flag to struct hda_codec Add the new flag, codec->inv_eapd, indicating that the EAPD implementation is inverted. There are always broken hardware in the world. Signed-off-by: Takashi Iwai --- diff --git a/sound/pci/hda/hda_codec.h b/sound/pci/hda/hda_codec.h index 2d9a51c..369ffaf 100644 --- a/sound/pci/hda/hda_codec.h +++ b/sound/pci/hda/hda_codec.h @@ -866,6 +866,7 @@ struct hda_codec { unsigned int pins_shutup:1; /* pins are shut up */ unsigned int no_trigger_sense:1; /* don't trigger at pin-sensing */ unsigned int no_jack_detect:1; /* Machine has no jack-detection */ + unsigned int inv_eapd:1; /* broken h/w: inverted EAPD control */ unsigned int pcm_format_first:1; /* PCM format must be set first */ unsigned int epss:1; /* supporting EPSS? */ unsigned int cached_write:1; /* write only to caches */ diff --git a/sound/pci/hda/hda_generic.c b/sound/pci/hda/hda_generic.c index ff15aea..f5bc185 100644 --- a/sound/pci/hda/hda_generic.c +++ b/sound/pci/hda/hda_generic.c @@ -545,6 +545,8 @@ 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; snd_hda_codec_update_cache(codec, pin, 0, AC_VERB_SET_EAPD_BTLENABLE, enable ? 0x02 : 0x00);