+++ /dev/null
-From: Takashi Iwai <tiwai@suse.de>
-Subject: ALSA: hda - Fix input pin initialization for STAC/IDT codecs
-Patch-mainline:
-References: bnc#443738
-
-The input pins are sometimes not initialized properly because
-of the optimization check of the current pinctl code.
-
-Force to initialize the mic input pins so that they can be set up
-properly even if they were in a weird state. But keep other input
-pins if already set up as input, since this could be an extra mic
-pin.
-
-Reference: Novell bnc#443738
- https://bugzilla.novell.com/show_bug.cgi?id=443738
-
-Signed-off-by: Takashi Iwai <tiwai@suse.de>
-
----
- sound/pci/hda/patch_sigmatel.c | 20 ++++++++++++--------
- 1 file changed, 12 insertions(+), 8 deletions(-)
-
---- a/sound/pci/hda/patch_sigmatel.c
-+++ b/sound/pci/hda/patch_sigmatel.c
-@@ -3658,14 +3658,18 @@ static int stac92xx_init(struct hda_code
- for (i = 0; i < AUTO_PIN_LAST; i++) {
- hda_nid_t nid = cfg->input_pins[i];
- if (nid) {
-- unsigned int pinctl = snd_hda_codec_read(codec, nid,
-- 0, AC_VERB_GET_PIN_WIDGET_CONTROL, 0);
-- /* if PINCTL already set then skip */
-- if (pinctl & AC_PINCAP_IN)
-- continue;
-- pinctl = AC_PINCTL_IN_EN;
-- if (i == AUTO_PIN_MIC || i == AUTO_PIN_FRONT_MIC)
-- pinctl |= stac92xx_get_vref(codec, nid);
-+ unsigned int pinctl;
-+ if (i == AUTO_PIN_MIC || i == AUTO_PIN_FRONT_MIC) {
-+ /* for mic pins, force to initialize */
-+ pinctl = stac92xx_get_vref(codec, nid);
-+ } else {
-+ pinctl = snd_hda_codec_read(codec, nid, 0,
-+ AC_VERB_GET_PIN_WIDGET_CONTROL, 0);
-+ /* if PINCTL already set then skip */
-+ if (pinctl & AC_PINCTL_IN_EN)
-+ continue;
-+ }
-+ pinctl |= AC_PINCTL_IN_EN;
- stac92xx_auto_set_pinctl(codec, nid, pinctl);
- }
- }