diff options
author | Herton Ronaldo Krzesinski <herton.krzesinski@canonical.com> | 2012-09-21 19:45:19 -0400 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2012-09-22 03:24:54 -0400 |
commit | cf55e904516947597d75fd3844acc24891a95772 (patch) | |
tree | 52c61d64149ce7bab1a9781e4a8c77d88bad565a | |
parent | 148728f1f7ee7c878a7f57ca6132891552967689 (diff) |
ALSA: hda/via - don't report presence on HPs with no presence support
If headphone jack can't detect plug presence, and we have the jack in
the jack table, snd_hda_jack_detect will return the plug as always
present (as it'll be considered as a phantom jack). The problem is that
when this happens, line out pins will always be disabled, resulting in
no sound if there are no headphones connected.
This was reported as a no sound problem after suspend on
http://bugs.launchpad.net/bugs/1052499, since the bug doesn't manifests
on first initialization before the phantom jack is added, but on resume
we reexecute the initialization code, and via_hp_automute starts
reporting HP always present with the jack now on the table.
BugLink: https://bugs.launchpad.net/bugs/1052499
Signed-off-by: Herton Ronaldo Krzesinski <herton.krzesinski@canonical.com>
Cc: <stable@vger.kernel.org> [v3.6+]
Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r-- | sound/pci/hda/patch_via.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sound/pci/hda/patch_via.c b/sound/pci/hda/patch_via.c index 74fb6fd6768a..5a45a912aedc 100644 --- a/sound/pci/hda/patch_via.c +++ b/sound/pci/hda/patch_via.c | |||
@@ -1672,7 +1672,8 @@ static void via_hp_automute(struct hda_codec *codec) | |||
1672 | struct via_spec *spec = codec->spec; | 1672 | struct via_spec *spec = codec->spec; |
1673 | 1673 | ||
1674 | if (!spec->hp_independent_mode && spec->autocfg.hp_pins[0] && | 1674 | if (!spec->hp_independent_mode && spec->autocfg.hp_pins[0] && |
1675 | (spec->codec_type != VT1708 || spec->vt1708_jack_detect)) | 1675 | (spec->codec_type != VT1708 || spec->vt1708_jack_detect) && |
1676 | is_jack_detectable(codec, spec->autocfg.hp_pins[0])) | ||
1676 | present = snd_hda_jack_detect(codec, spec->autocfg.hp_pins[0]); | 1677 | present = snd_hda_jack_detect(codec, spec->autocfg.hp_pins[0]); |
1677 | 1678 | ||
1678 | if (spec->smart51_enabled) | 1679 | if (spec->smart51_enabled) |