ALSA: hda - Remove ignore_misc_bit
authorDavid Henningsson <david.henningsson@canonical.com>
Fri, 7 Sep 2012 05:25:44 +0000 (07:25 +0200)
committerTakashi Iwai <tiwai@suse.de>
Fri, 7 Sep 2012 10:41:38 +0000 (12:41 +0200)
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>
sound/pci/hda/hda_auto_parser.c
sound/pci/hda/hda_codec.h
sound/pci/hda/hda_jack.c

index 4f7d2dfcef7b16357ead4185b7b62e3463d5f1a5..9acd5a964eb63b9d0b4f66c4b6c323a891ef693d 100644 (file)
@@ -141,7 +141,6 @@ int snd_hda_parse_pin_defcfg(struct hda_codec *codec,
        memset(sequences_hp, 0, sizeof(sequences_hp));
        assoc_line_out = 0;
 
-       codec->ignore_misc_bit = true;
        end_nid = codec->start_nid + codec->num_nodes;
        for (nid = codec->start_nid; nid < end_nid; nid++) {
                unsigned int wid_caps = get_wcaps(codec, nid);
@@ -157,9 +156,6 @@ int snd_hda_parse_pin_defcfg(struct hda_codec *codec,
                        continue;
 
                def_conf = snd_hda_codec_get_pincfg(codec, nid);
-               if (!(get_defcfg_misc(snd_hda_codec_get_pincfg(codec, nid)) &
-                     AC_DEFCFG_MISC_NO_PRESENCE))
-                       codec->ignore_misc_bit = false;
                conn = get_defcfg_connect(def_conf);
                if (conn == AC_JACK_PORT_NONE)
                        continue;
index 8fd9f636cfe1b4767cd97fc1fd3778e12bb17ce0..ee4ae8e271e34f7c2bda1420220a1e0c7bd07e4c 100644 (file)
@@ -861,7 +861,6 @@ struct hda_codec {
        unsigned int no_sticky_stream:1; /* no sticky-PCM stream assignment */
        unsigned int pins_shutup:1;     /* pins are shut up */
        unsigned int no_trigger_sense:1; /* don't trigger at pin-sensing */
-       unsigned int ignore_misc_bit:1; /* ignore MISC_NO_PRESENCE bit */
        unsigned int no_jack_detect:1;  /* Machine has no jack-detection */
        unsigned int pcm_format_first:1; /* PCM format must be set first */
        unsigned int epss:1;            /* supporting EPSS? */
index aaccc0236bda86ccba98bd1f3a5cb69474c5823e..c9333c9688fb35efd72bd38b2bd5f96bd0d331ea 100644 (file)
@@ -26,9 +26,8 @@ bool is_jack_detectable(struct hda_codec *codec, hda_nid_t nid)
                return false;
        if (!(snd_hda_query_pin_caps(codec, nid) & AC_PINCAP_PRES_DETECT))
                return false;
-       if (!codec->ignore_misc_bit &&
-           (get_defcfg_misc(snd_hda_codec_get_pincfg(codec, nid)) &
-            AC_DEFCFG_MISC_NO_PRESENCE))
+       if (get_defcfg_misc(snd_hda_codec_get_pincfg(codec, nid)) &
+            AC_DEFCFG_MISC_NO_PRESENCE)
                return false;
        if (!(get_wcaps(codec, nid) & AC_WCAP_UNSOL_CAP))
                return false;