spec->auto_mic = 0; /* disable auto-mic to be sure */
 }
 
+/* select or unmute the given capsrc route */
+static void select_or_unmute_capsrc(struct hda_codec *codec, hda_nid_t cap,
+                                   int idx)
+{
+       if (get_wcaps_type(get_wcaps(codec, cap)) == AC_WID_AUD_MIX) {
+               snd_hda_codec_amp_stereo(codec, cap, HDA_INPUT, idx,
+                                        HDA_AMP_MUTE, 0);
+       } else {
+               snd_hda_codec_write_cache(codec, cap, 0,
+                                         AC_VERB_SET_CONNECT_SEL, idx);
+       }
+}
+
 /* set the default connection to that pin */
 static int init_capsrc_for_pin(struct hda_codec *codec, hda_nid_t pin)
 {
                idx = get_connection_index(codec, cap, pin);
                if (idx < 0)
                        continue;
-               /* select or unmute this route */
-               if (get_wcaps_type(get_wcaps(codec, cap)) == AC_WID_AUD_MIX) {
-                       snd_hda_codec_amp_stereo(codec, cap, HDA_INPUT, idx,
-                                                HDA_AMP_MUTE, 0);
-               } else {
-                       snd_hda_codec_write_cache(codec, cap, 0,
-                                         AC_VERB_SET_CONNECT_SEL, idx);
-               }
+               select_or_unmute_capsrc(codec, cap, idx);
                return i; /* return the found index */
        }
        return -1; /* not found */
 
        /* set default input source */
        if (!spec->dual_adc_switch)
-               snd_hda_codec_write_cache(codec, spec->capsrc_nids[0],
-                                 0, AC_VERB_SET_CONNECT_SEL,
-                                 spec->input_mux->items[0].index);
+               select_or_unmute_capsrc(codec, spec->capsrc_nids[0],
+                                       spec->input_mux->items[0].index);
 
        err = alc_auto_add_mic_boost(codec);
        if (err < 0)