};
 
 
-static int ad198x_parse_auto_config(struct hda_codec *codec)
+static int ad198x_parse_auto_config(struct hda_codec *codec, bool indep_hp)
 {
        struct ad198x_spec *spec = codec->spec;
        struct auto_pin_cfg *cfg = &spec->gen.autocfg;
        codec->no_trigger_sense = 1;
        codec->no_sticky_stream = 1;
 
-       spec->gen.indep_hp = 1;
+       spec->gen.indep_hp = indep_hp;
        spec->gen.add_stereo_mix_input = 1;
 
        err = snd_hda_parse_pin_defcfg(codec, cfg, NULL, 0);
                           ad1986a_fixups);
        snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE);
 
-       err = ad198x_parse_auto_config(codec);
+       err = ad198x_parse_auto_config(codec, false);
        if (err < 0) {
                snd_hda_gen_free(codec);
                return err;
 
        spec->gen.beep_nid = 0x10;
        set_beep_amp(spec, 0x10, 0, HDA_OUTPUT);
-       err = ad198x_parse_auto_config(codec);
+       err = ad198x_parse_auto_config(codec, false);
        if (err < 0)
                goto error;
        err = ad1983_add_spdif_mux_ctl(codec);
        snd_hda_pick_fixup(codec, NULL, ad1981_fixup_tbl, ad1981_fixups);
        snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE);
 
-       err = ad198x_parse_auto_config(codec);
+       err = ad198x_parse_auto_config(codec, false);
        if (err < 0)
                goto error;
        err = ad1983_add_spdif_mux_ctl(codec);
        snd_hda_pick_fixup(codec, ad1988_fixup_models, NULL, ad1988_fixups);
        snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE);
 
-       err = ad198x_parse_auto_config(codec);
+       err = ad198x_parse_auto_config(codec, true);
        if (err < 0)
                goto error;
        err = ad1988_add_spdif_mux_ctl(codec);
        snd_hda_pick_fixup(codec, NULL, ad1884_fixup_tbl, ad1884_fixups);
        snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE);
 
-       err = ad198x_parse_auto_config(codec);
+       err = ad198x_parse_auto_config(codec, true);
        if (err < 0)
                goto error;
        err = ad1983_add_spdif_mux_ctl(codec);
        spec->gen.mixer_merge_nid = 0x21;
        spec->gen.beep_nid = 0x10;
        set_beep_amp(spec, 0x10, 0, HDA_OUTPUT);
-       err = ad198x_parse_auto_config(codec);
+       err = ad198x_parse_auto_config(codec, true);
        if (err < 0)
                goto error;
        err = ad1988_add_spdif_mux_ctl(codec);