struct cs_spec *spec = codec->spec;
        struct auto_pin_cfg *cfg = &spec->autocfg;
        hda_nid_t pin = cfg->inputs[idx].pin;
-       unsigned int val = snd_hda_query_pin_caps(codec, pin);
-       if (!(val & AC_PINCAP_PRES_DETECT))
+       unsigned int val;
+       if (!is_jack_detectable(codec, pin))
                return 0;
        val = snd_hda_codec_get_pincfg(codec, pin);
        return (snd_hda_get_input_pin_attr(val) != INPUT_PIN_ATTR_INT);
 {
        struct cs_spec *spec = codec->spec;
        struct auto_pin_cfg *cfg = &spec->autocfg;
-       unsigned int caps, hp_present;
+       unsigned int hp_present;
        hda_nid_t nid;
        int i;
 
        hp_present = 0;
        for (i = 0; i < cfg->hp_outs; i++) {
                nid = cfg->hp_pins[i];
-               caps = snd_hda_query_pin_caps(codec, nid);
-               if (!(caps & AC_PINCAP_PRES_DETECT))
+               if (!is_jack_detectable(codec, nid))
                        continue;
                hp_present = snd_hda_jack_detect(codec, nid);
                if (hp_present)
 
 
        for (i = 0; i < cfg->hp_outs; i++) {
                hda_nid_t nid = cfg->hp_pins[i];
-               if (!(snd_hda_query_pin_caps(codec, nid) &
-                     AC_PINCAP_PRES_DETECT))
+               if (!is_jack_detectable(codec, nid))
                        continue;
                snd_printdd("realtek: Enable HP auto-muting on NID 0x%x\n",
                            nid);
            cfg->line_out_pins[0] != cfg->speaker_pins[0]) {
                for (i = 0; i < cfg->line_outs; i++) {
                        hda_nid_t nid = cfg->line_out_pins[i];
-                       if (!(snd_hda_query_pin_caps(codec, nid) &
-                             AC_PINCAP_PRES_DETECT))
+                       if (!is_jack_detectable(codec, nid))
                                continue;
                        snd_printdd("realtek: Enable Line-Out auto-muting "
                                    "on NID 0x%x\n", nid);
 
        for (i = 0; i < cfg->num_inputs; i++) {
                nid = cfg->inputs[i].pin;
-               if (!(snd_hda_query_pin_caps(codec, nid) &
-                     AC_PINCAP_PRES_DETECT))
+               if (!is_jack_detectable(codec, nid))
                        continue;
                if (snd_hda_jack_detect(codec, nid)) {
                        if (cfg->inputs[i].type < type_found) {