diff options
author | Takashi Iwai <tiwai@suse.de> | 2011-09-26 09:19:55 -0400 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2011-09-26 09:24:57 -0400 |
commit | e0d32e335fc0e354db93a807736243f5035fbc67 (patch) | |
tree | 5ac8696e62b1ca9636ee39c4c9a272a968c4a283 /sound | |
parent | 5fe6e0151dbd969f5fbcd94d05c968b76d76952b (diff) |
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>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 91a538173c97..7a73621a8909 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) | |||
578 | { | 578 | { |
579 | struct alc_spec *spec = codec->spec; | 579 | struct alc_spec *spec = codec->spec; |
580 | 580 | ||
581 | /* check LO jack only when it's different from HP */ | ||
582 | if (spec->autocfg.line_out_pins[0] == spec->autocfg.hp_pins[0]) | ||
583 | return; | ||
584 | |||
581 | spec->line_jack_present = | 585 | spec->line_jack_present = |
582 | detect_jacks(codec, ARRAY_SIZE(spec->autocfg.line_out_pins), | 586 | detect_jacks(codec, ARRAY_SIZE(spec->autocfg.line_out_pins), |
583 | spec->autocfg.line_out_pins); | 587 | spec->autocfg.line_out_pins); |