diff options
author | Takashi Iwai <tiwai@suse.de> | 2010-09-17 10:26:37 +0200 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2010-09-17 10:28:20 +0200 |
commit | 41c89ef3aafea5f35601fa75edba90e7417f604e (patch) | |
tree | 77d93174e8411c8f0faf76d4985d4cecbbc54c64 /sound/pci | |
parent | 9907790aa06bfc04bf78b445e732ea10039c61e4 (diff) | |
download | linux-41c89ef3aafea5f35601fa75edba90e7417f604e.tar.gz linux-41c89ef3aafea5f35601fa75edba90e7417f604e.tar.bz2 linux-41c89ef3aafea5f35601fa75edba90e7417f604e.zip |
ALSA: hda - Fix mic attribute check for internal mics
Now Windows claims that the BIOS sets pins for internal mics to be
BOTH connection instead of FIXED.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci')
-rw-r--r-- | sound/pci/hda/hda_codec.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c index 08d81b873022..9f668efbe420 100644 --- a/sound/pci/hda/hda_codec.c +++ b/sound/pci/hda/hda_codec.c @@ -4648,8 +4648,11 @@ enum { static int get_mic_pin_attr(unsigned int def_conf) { unsigned int loc = get_defcfg_location(def_conf); - if (get_defcfg_connect(def_conf) == AC_JACK_PORT_FIXED || - (loc & 0x30) == AC_JACK_LOC_INTERNAL) + unsigned int conn = get_defcfg_connect(def_conf); + /* Windows may claim the internal mic to be BOTH, too */ + if (conn == AC_JACK_PORT_FIXED || conn == AC_JACK_PORT_BOTH) + return MIC_ATTR_INT; + if ((loc & 0x30) == AC_JACK_LOC_INTERNAL) return MIC_ATTR_INT; if ((loc & 0x30) == AC_JACK_LOC_SEPARATE) return MIC_ATTR_DOCK; |