ALSA: hda - Allow to change I/O direction in hp/mic jack mode ctl
authorTakashi Iwai <tiwai@suse.de>
Thu, 7 Mar 2013 17:30:27 +0000 (18:30 +0100)
committerTakashi Iwai <tiwai@suse.de>
Thu, 7 Mar 2013 17:30:27 +0000 (18:30 +0100)
The previous commits added the capability to change the pin control of
hp/mic shared jack, but it actually didn't work as expected when the
value is changed from the output to the input, since I forgot to reset
the pin I/O bit in that case.  This patch fixes the problem.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/hda_generic.c

index dc849e489641fe601aa38ab43036bd03118e9cae..cb40a0b7ce3ed0cfb618bc5ff07b83bd492dd09f 100644 (file)
@@ -2650,8 +2650,8 @@ static int hp_mic_jack_mode_put(struct snd_kcontrol *kcontrol,
                if (in_jacks > 1) {
                        unsigned int vref_caps = get_vref_caps(codec, nid);
                        val = snd_hda_codec_get_pin_target(codec, nid);
-                       val &= ~AC_PINCTL_VREFEN;
-                       val |= get_vref_idx(vref_caps, idx);
+                       val &= ~(AC_PINCTL_VREFEN | PIN_HP);
+                       val |= get_vref_idx(vref_caps, idx) | PIN_IN;
                } else
                        val = snd_hda_get_default_vref(codec, nid);
        }