diff options
author | Takashi Iwai <tiwai@suse.de> | 2009-05-07 16:22:53 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-05-18 16:34:36 -0700 |
commit | c8cdda3820c8e386187f09ec5a167dabb89fa5b0 (patch) | |
tree | 105ae00a41470f266171bbb0b8811f7b747aed26 | |
parent | 37cc4d06e29b623a3492070815b5875f546d7e72 (diff) | |
download | lwn-c8cdda3820c8e386187f09ec5a167dabb89fa5b0.tar.gz lwn-c8cdda3820c8e386187f09ec5a167dabb89fa5b0.zip |
ALSA: hda - Fix line-in on Mac Mini Core2 Duo
commit 5dd17cb992ef4c1ebb1a2d60cbef4b6967974673 upstream.
BIOS on Mac Mini Core2 Duo sets both INPUT and OUTPUT pinctl bits to
the line-in jack, and it confuses the driver as if it's a valid input.
This patch adds the check of OUTPUT bit so that the driver fixes the
invalid pin setup.
Tested-by: Tino Keitel <tino.keitel@gmx.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r-- | sound/pci/hda/patch_sigmatel.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index 6094344fb223..0547239cacb4 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c @@ -4007,7 +4007,12 @@ static int stac92xx_init(struct hda_codec *codec) 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)) { + /* Also, if both INPUT and OUTPUT are set, + * it must be a BIOS bug; need to override, too + */ + if (!(pinctl & AC_PINCTL_IN_EN) || + (pinctl & AC_PINCTL_OUT_EN)) { + pinctl &= ~AC_PINCTL_OUT_EN; pinctl |= AC_PINCTL_IN_EN; stac92xx_auto_set_pinctl(codec, nid, pinctl); |