-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
yaml --- r: 142718 b: refs/heads/master c: 5f9c510 h: refs/heads/master v: v3
- Loading branch information
Takashi Iwai
committed
Apr 6, 2009
1 parent
a8ab9e9
commit 2d449e0
Showing
18 changed files
with
860 additions
and
66 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
--- | ||
refs/heads/master: fa075ed2dc80440bf3e9092d38a66c3227b174c1 | ||
refs/heads/master: 5f9c510e9e18cd029e15190d35dd4271f2ef393b |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
ASoC jack detection | ||
=================== | ||
|
||
ALSA has a standard API for representing physical jacks to user space, | ||
the kernel side of which can be seen in include/sound/jack.h. ASoC | ||
provides a version of this API adding two additional features: | ||
|
||
- It allows more than one jack detection method to work together on one | ||
user visible jack. In embedded systems it is common for multiple | ||
to be present on a single jack but handled by separate bits of | ||
hardware. | ||
|
||
- Integration with DAPM, allowing DAPM endpoints to be updated | ||
automatically based on the detected jack status (eg, turning off the | ||
headphone outputs if no headphones are present). | ||
|
||
This is done by splitting the jacks up into three things working | ||
together: the jack itself represented by a struct snd_soc_jack, sets of | ||
snd_soc_jack_pins representing DAPM endpoints to update and blocks of | ||
code providing jack reporting mechanisms. | ||
|
||
For example, a system may have a stereo headset jack with two reporting | ||
mechanisms, one for the headphone and one for the microphone. Some | ||
systems won't be able to use their speaker output while a headphone is | ||
connected and so will want to make sure to update both speaker and | ||
headphone when the headphone jack status changes. | ||
|
||
The jack - struct snd_soc_jack | ||
============================== | ||
|
||
This represents a physical jack on the system and is what is visible to | ||
user space. The jack itself is completely passive, it is set up by the | ||
machine driver and updated by jack detection methods. | ||
|
||
Jacks are created by the machine driver calling snd_soc_jack_new(). | ||
|
||
snd_soc_jack_pin | ||
================ | ||
|
||
These represent a DAPM pin to update depending on some of the status | ||
bits supported by the jack. Each snd_soc_jack has zero or more of these | ||
which are updated automatically. They are created by the machine driver | ||
and associated with the jack using snd_soc_jack_add_pins(). The status | ||
of the endpoint may configured to be the opposite of the jack status if | ||
required (eg, enabling a built in microphone if a microphone is not | ||
connected via a jack). | ||
|
||
Jack detection methods | ||
====================== | ||
|
||
Actual jack detection is done by code which is able to monitor some | ||
input to the system and update a jack by calling snd_soc_jack_report(), | ||
specifying a subset of bits to update. The jack detection code should | ||
be set up by the machine driver, taking configuration for the jack to | ||
update and the set of things to report when the jack is connected. | ||
|
||
Often this is done based on the status of a GPIO - a handler for this is | ||
provided by the snd_soc_jack_add_gpio() function. Other methods are | ||
also available, for example integrated into CODECs. One example of | ||
CODEC integrated jack detection can be see in the WM8350 driver. | ||
|
||
Each jack may have multiple reporting mechanisms, though it will need at | ||
least one to be useful. | ||
|
||
Machine drivers | ||
=============== | ||
|
||
These are all hooked together by the machine driver depending on the | ||
system hardware. The machine driver will set up the snd_soc_jack and | ||
the list of pins to update then set up one or more jack detection | ||
mechanisms to update that jack based on their current status. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.