summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2011-09-26 15:19:55 +0200
committerTakashi Iwai <tiwai@suse.de>2011-09-26 15:24:57 +0200
commite0d32e335fc0e354db93a807736243f5035fbc67 (patch)
tree5ac8696e62b1ca9636ee39c4c9a272a968c4a283
parent5fe6e0151dbd969f5fbcd94d05c968b76d76952b (diff)
downloadlinux-3.10-e0d32e335fc0e354db93a807736243f5035fbc67.tar.gz
linux-3.10-e0d32e335fc0e354db93a807736243f5035fbc67.tar.bz2
linux-3.10-e0d32e335fc0e354db93a807736243f5035fbc67.zip
ALSA: hda/realtek - Don't detect LO jack when identical with HP
The spec->autocfg.line_out_pins[] may contain the same pins as hp_pins[] depending on the configuration. When they are identical, detecting the line_jack_present flag screws up the auto-mute because alc_line_automute() is called unconditionally at initialization while it won't be triggered by unsol events, thus the old line_jack_present flag is kept for the whole run. For fixing this buggy behavior, the driver needs to check whether the line-outs are really individual, and skip if same as headphone jacks. Reference: https://bugzilla.novell.com/show_bug.cgi?id=716104 Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r--sound/pci/hda/patch_realtek.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 91a538173c9..7a73621a890 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -578,6 +578,10 @@ static void alc_line_automute(struct hda_codec *codec)
{
struct alc_spec *spec = codec->spec;
+ /* check LO jack only when it's different from HP */
+ if (spec->autocfg.line_out_pins[0] == spec->autocfg.hp_pins[0])
+ return;
+
spec->line_jack_present =
detect_jacks(codec, ARRAY_SIZE(spec->autocfg.line_out_pins),
spec->autocfg.line_out_pins);