aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Henningsson <david.henningsson@canonical.com>2012-09-07 01:25:44 -0400
committerTakashi Iwai <tiwai@suse.de>2012-09-07 06:41:38 -0400
commit5fe8e1e6717c0ed40abff8be3a441d0e2eb47169 (patch)
treef736e9ea99a691e0df5f169f36ae586fd19291f2
parenta8d372f171db9b90a64778fbcd9237c9bc256e06 (diff)
ALSA: hda - Remove ignore_misc_bit
The purpose of this flag is unclear. If the problem is that some machines have broken misc/NO_PRESENCE bits, they should be fixed by pin fixups. In addition, this causes jack detection functionality to be flawed on the M31EI, where there are two jacks without jack detection (which is properly marked as NO_PRESENCE), but due to ignore_misc_bit, these jacks are instead being reported as being present but always unplugged. BugLink: https://bugs.launchpad.net/bugs/939161 Signed-off-by: David Henningsson <david.henningsson@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r--sound/pci/hda/hda_auto_parser.c4
-rw-r--r--sound/pci/hda/hda_codec.h1
-rw-r--r--sound/pci/hda/hda_jack.c5
3 files changed, 2 insertions, 8 deletions
diff --git a/sound/pci/hda/hda_auto_parser.c b/sound/pci/hda/hda_auto_parser.c
index 4f7d2dfcef7b..9acd5a964eb6 100644
--- a/sound/pci/hda/hda_auto_parser.c
+++ b/sound/pci/hda/hda_auto_parser.c
@@ -141,7 +141,6 @@ int snd_hda_parse_pin_defcfg(struct hda_codec *codec,
141 memset(sequences_hp, 0, sizeof(sequences_hp)); 141 memset(sequences_hp, 0, sizeof(sequences_hp));
142 assoc_line_out = 0; 142 assoc_line_out = 0;
143 143
144 codec->ignore_misc_bit = true;
145 end_nid = codec->start_nid + codec->num_nodes; 144 end_nid = codec->start_nid + codec->num_nodes;
146 for (nid = codec->start_nid; nid < end_nid; nid++) { 145 for (nid = codec->start_nid; nid < end_nid; nid++) {
147 unsigned int wid_caps = get_wcaps(codec, nid); 146 unsigned int wid_caps = get_wcaps(codec, nid);
@@ -157,9 +156,6 @@ int snd_hda_parse_pin_defcfg(struct hda_codec *codec,
157 continue; 156 continue;
158 157
159 def_conf = snd_hda_codec_get_pincfg(codec, nid); 158 def_conf = snd_hda_codec_get_pincfg(codec, nid);
160 if (!(get_defcfg_misc(snd_hda_codec_get_pincfg(codec, nid)) &
161 AC_DEFCFG_MISC_NO_PRESENCE))
162 codec->ignore_misc_bit = false;
163 conn = get_defcfg_connect(def_conf); 159 conn = get_defcfg_connect(def_conf);
164 if (conn == AC_JACK_PORT_NONE) 160 if (conn == AC_JACK_PORT_NONE)
165 continue; 161 continue;
diff --git a/sound/pci/hda/hda_codec.h b/sound/pci/hda/hda_codec.h
index 8fd9f636cfe1..ee4ae8e271e3 100644
--- a/sound/pci/hda/hda_codec.h
+++ b/sound/pci/hda/hda_codec.h
@@ -861,7 +861,6 @@ struct hda_codec {
861 unsigned int no_sticky_stream:1; /* no sticky-PCM stream assignment */ 861 unsigned int no_sticky_stream:1; /* no sticky-PCM stream assignment */
862 unsigned int pins_shutup:1; /* pins are shut up */ 862 unsigned int pins_shutup:1; /* pins are shut up */
863 unsigned int no_trigger_sense:1; /* don't trigger at pin-sensing */ 863 unsigned int no_trigger_sense:1; /* don't trigger at pin-sensing */
864 unsigned int ignore_misc_bit:1; /* ignore MISC_NO_PRESENCE bit */
865 unsigned int no_jack_detect:1; /* Machine has no jack-detection */ 864 unsigned int no_jack_detect:1; /* Machine has no jack-detection */
866 unsigned int pcm_format_first:1; /* PCM format must be set first */ 865 unsigned int pcm_format_first:1; /* PCM format must be set first */
867 unsigned int epss:1; /* supporting EPSS? */ 866 unsigned int epss:1; /* supporting EPSS? */
diff --git a/sound/pci/hda/hda_jack.c b/sound/pci/hda/hda_jack.c
index aaccc0236bda..c9333c9688fb 100644
--- a/sound/pci/hda/hda_jack.c
+++ b/sound/pci/hda/hda_jack.c
@@ -26,9 +26,8 @@ bool is_jack_detectable(struct hda_codec *codec, hda_nid_t nid)
26 return false; 26 return false;
27 if (!(snd_hda_query_pin_caps(codec, nid) & AC_PINCAP_PRES_DETECT)) 27 if (!(snd_hda_query_pin_caps(codec, nid) & AC_PINCAP_PRES_DETECT))
28 return false; 28 return false;
29 if (!codec->ignore_misc_bit && 29 if (get_defcfg_misc(snd_hda_codec_get_pincfg(codec, nid)) &
30 (get_defcfg_misc(snd_hda_codec_get_pincfg(codec, nid)) & 30 AC_DEFCFG_MISC_NO_PRESENCE)
31 AC_DEFCFG_MISC_NO_PRESENCE))
32 return false; 31 return false;
33 if (!(get_wcaps(codec, nid) & AC_WCAP_UNSOL_CAP)) 32 if (!(get_wcaps(codec, nid) & AC_WCAP_UNSOL_CAP))
34 return false; 33 return false;