unsigned int val = snd_hda_codec_get_pincfg(codec, nids[i]);
                if (get_defcfg_device(val) != AC_JACK_HP_OUT)
                        continue;
-               val = snd_hda_codec_read(codec, nids[i], 0,
-                                        AC_VERB_GET_PIN_WIDGET_CONTROL, 0);
+               val = snd_hda_codec_get_pin_target(codec, nids[i]);
                val |= AC_PINCTL_VREF_80;
                snd_hda_set_pin_ctl(codec, nids[i], val);
                spec->gen.keep_vref_in_automute = 1;
                return;
        for (i = 0; i < ARRAY_SIZE(nids); i++) {
                unsigned int val;
-               val = snd_hda_codec_read(codec, nids[i], 0,
-                                        AC_VERB_GET_PIN_WIDGET_CONTROL, 0);
+               val = snd_hda_codec_get_pin_target(codec, nids[i]);
                val |= AC_PINCTL_VREF_50;
                snd_hda_set_pin_ctl(codec, nids[i], val);
        }
 
        if (action != HDA_FIXUP_ACT_INIT)
                return;
-       val = snd_hda_codec_read(codec, 0x0f, 0,
-                                AC_VERB_GET_PIN_WIDGET_CONTROL, 0);
+       val = snd_hda_codec_get_pin_target(codec, 0x0f);
        if (!(val & (AC_PINCTL_IN_EN | AC_PINCTL_OUT_EN)))
                val |= AC_PINCTL_IN_EN;
        val |= AC_PINCTL_VREF_50;