ALSA: hda - Add snd_hda_jack_detect_state() helper function
authorTakashi Iwai <tiwai@suse.de>
Fri, 19 Jul 2013 14:59:46 +0000 (16:59 +0200)
committerTakashi Iwai <tiwai@suse.de>
Sun, 21 Jul 2013 09:52:54 +0000 (11:52 +0200)
commit60ea8ca21b4584cebb8163879b50ab3d941090bf
tree0642ef12921c948f9697efc877c6b4beda88c5bc
parente4c3bce26de240457370d00ce396602cc98bb3cc
ALSA: hda - Add snd_hda_jack_detect_state() helper function

snd_hda_jack_detect() function returns a boolean value for a jack
plugged in or not, but it also returns always true when the
corresponding pin is phantom (i.e. fixed).  This is OK in most cases,
but it makes the generic parser misbehaving about the auto-mute or
auto-mic switching, e.g. when one of headphone pins is a fixed.
Namely, the driver decides whether to mute the speaker or not, just
depending on the headphone plug state: if one of the headphone jacks
is seen as active, then the speaker is muted.  Thus this will result
always in the muted speaker output.

So, the problem is the function returns a boolean, after all, although
we need to think of "phantom" jack.  Now a new function,
snd_hda_jack_detect_state() is introduced to return these tristates.
The generic parser uses this function for checking the headphone or
mic jack states.

Meanwhile, the behavior of snd_hda_jack_detect() is kept as is, for
keeping compatibility in other driver codes.

Acked-by: David Henningsson <david.henningsson@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/hda_generic.c
sound/pci/hda/hda_jack.c
sound/pci/hda/hda_jack.h