Jelajahi Sumber

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>
Takashi Iwai 14 tahun lalu
induk
melakukan
41c89ef3aa
1 mengubah file dengan 5 tambahan dan 2 penghapusan
  1. 5 2
      sound/pci/hda/hda_codec.c

+ 5 - 2
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;