[alsa-devel] questions about asoc jack detection

Lu Guanqun guanqun.lu at intel.com
Wed Apr 20 16:06:15 CEST 2011

On Wed, Apr 20, 2011 at 05:31:02PM +0800, Mark Brown wrote:
> On Wed, Apr 20, 2011 at 02:52:12PM +0800, Lu Guanqun wrote:
> > I have a question wrt jack detection, suppose now I have internal
> > speaker enabled and then headphone is inserted. According to the current
> > jack code in asoc, the Headphone pin wil be enabled, but it does nothing
> > to Internal Speaker. There is still sound coming out from speaker.
> This is a policy question - depending on the use case the application
> may wish to still play sound out of the speaker.  One obvious example
> here is ringtones on phones.  If the user has been doing something like
> listen to music on headphones but then takes the headphones off they'll
> probably not hear anything that plays out of only the headphones so you
> should play ringtones out of both outputs in order to ensure that they
> are audible.

Yes, it's related to policy. But I see some inconsistencies in handling
this stuff. In this above example, you suggest we should play out of
both outputs. However in HDA code, the common way when headphone is
inserted is to mute the speaker and enable the headphone. Is there some
differences between the HDA code and the ASoC code? Or this is just due
to legacy code?

> If you really want to you can add an invert to the hookup for a pin, but
> it's not recommended unless there's some physical reason both can't be
> enabled simultaneously.
> > The possible solution is to let the application make the policy to
> > switch the output source to Headphone, because the jack event can be
> > observed. If we decide to let the userspace application make the policy,
> > then why do we bother to enable the jack pin at the first place?
> If we can detect the physical presence of the output transducer it's not
> really a policy decision if it's worth enabling the audio path.


More information about the Alsa-devel mailing list