aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2007-05-29 12:01:06 -0400
committerJaroslav Kysela <perex@suse.cz>2007-05-31 03:06:04 -0400
commitf9acba4347ac2145456aa8dedaab3d74761da42a (patch)
tree6878fc49c00e3ae29a14ac3eee6beb2dea223ac7
parent7353e14d91b78dc6da0d93fb081346c5ef854876 (diff)
[ALSA] hda-codec - Fix input with STAC92xx
The recent fix for STAC92xx surround outputs broke the input pin setting for shared line-in and mic jacks. This patch fixes the breakage. Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@suse.cz>
-rw-r--r--sound/pci/hda/patch_sigmatel.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c
index 1527cb61e5d6..33fc7cd00935 100644
--- a/sound/pci/hda/patch_sigmatel.c
+++ b/sound/pci/hda/patch_sigmatel.c
@@ -1764,6 +1764,21 @@ static void stac92xx_set_pinctl(struct hda_codec *codec, hda_nid_t nid,
1764 unsigned int pin_ctl = snd_hda_codec_read(codec, nid, 1764 unsigned int pin_ctl = snd_hda_codec_read(codec, nid,
1765 0, AC_VERB_GET_PIN_WIDGET_CONTROL, 0x00); 1765 0, AC_VERB_GET_PIN_WIDGET_CONTROL, 0x00);
1766 1766
1767 if (pin_ctl & AC_PINCTL_IN_EN) {
1768 /*
1769 * we need to check the current set-up direction of
1770 * shared input pins since they can be switched via
1771 * "xxx as Output" mixer switch
1772 */
1773 struct sigmatel_spec *spec = codec->spec;
1774 struct auto_pin_cfg *cfg = &spec->autocfg;
1775 if ((nid == cfg->input_pins[AUTO_PIN_LINE] &&
1776 spec->line_switch) ||
1777 (nid == cfg->input_pins[AUTO_PIN_MIC] &&
1778 spec->mic_switch))
1779 return;
1780 }
1781
1767 /* if setting pin direction bits, clear the current 1782 /* if setting pin direction bits, clear the current
1768 direction bits first */ 1783 direction bits first */
1769 if (flag & (AC_PINCTL_IN_EN | AC_PINCTL_OUT_EN)) 1784 if (flag & (AC_PINCTL_IN_EN | AC_PINCTL_OUT_EN))