ALSA: hda - Don't re-initialize shared hp/mic pinctl
authorTakashi Iwai <tiwai@suse.de>
Mon, 11 Mar 2013 08:48:43 +0000 (09:48 +0100)
committerTakashi Iwai <tiwai@suse.de>
Mon, 11 Mar 2013 08:57:21 +0000 (09:57 +0100)
When a headphone pin is set up as a shared hp/mic pin, we rather want
to keep it as a headphone primarily as default, but the driver
overrides it always as a mic pin, just because the input controls are
created after outputs.  Add a check of pin NID and skip the
re-initialization of pinctl for such a shared hp/mic pin.

Reported-by: Jonathan Woithe <jwoithe@just42.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/hda_generic.c

index fb232c118e91e3e142ebf61d384f5cd0ef40810e..aae6b1023d693c784b09ae498aa58b0dfd9d16bb 100644 (file)
@@ -2967,7 +2967,8 @@ static int create_input_ctls(struct hda_codec *codec)
                val = PIN_IN;
                if (cfg->inputs[i].type == AUTO_PIN_MIC)
                        val |= snd_hda_get_default_vref(codec, pin);
-               set_pin_target(codec, pin, val, false);
+               if (pin != spec->hp_mic_pin)
+                       set_pin_target(codec, pin, val, false);
 
                if (mixer) {
                        if (is_reachable_path(codec, pin, mixer)) {