mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 04:02:20 +00:00
ALSA: Docs: Add documentation for Jack kcontrols
Add documentation describing Jack kcontrols and how to use them with HD-Audio and ASoC. Signed-off-by: Jie Yang <yang.jie@intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
807845e364
commit
12e180a27f
43
Documentation/sound/alsa/Jack-Controls.txt
Normal file
43
Documentation/sound/alsa/Jack-Controls.txt
Normal file
@ -0,0 +1,43 @@
|
||||
Why we need Jack kcontrols
|
||||
==========================
|
||||
|
||||
ALSA uses kcontrols to export audio controls(switch, volume, Mux, ...)
|
||||
to user space. This means userspace applications like pulseaudio can
|
||||
switch off headphones and switch on speakers when no headphones are
|
||||
pluged in.
|
||||
|
||||
The old ALSA jack code only created input devices for each registered
|
||||
jack. These jack input devices are not readable by userspace devices
|
||||
that run as non root.
|
||||
|
||||
The new jack code creates embedded jack kcontrols for each jack that
|
||||
can be read by any process.
|
||||
|
||||
This can be combined with UCM to allow userspace to route audio more
|
||||
intelligently based on jack insertion or removal events.
|
||||
|
||||
Jack Kcontrol Internals
|
||||
=======================
|
||||
|
||||
Each jack will have a kcontrol list, so that we can create a kcontrol
|
||||
and attach it to the jack, at jack creation stage. We can also add a
|
||||
kcontrol to an existing jack, at anytime when required.
|
||||
|
||||
Those kcontrols will be freed automatically when the Jack is freed.
|
||||
|
||||
How to use jack kcontrols
|
||||
=========================
|
||||
|
||||
In order to keep compatibility, snd_jack_new() has been modified by
|
||||
adding two params :-
|
||||
|
||||
- @initial_kctl: if true, create a kcontrol and add it to the jack
|
||||
list.
|
||||
- @phantom_jack: Don't create a input device for phantom jacks.
|
||||
|
||||
HDA jacks can set phantom_jack to true in order to create a phantom
|
||||
jack and set initial_kctl to true to create an initial kcontrol with
|
||||
the correct id.
|
||||
|
||||
ASoC jacks should set initial_kctl as false. The pin name will be
|
||||
assigned as the jack kcontrol name.
|
Loading…
Reference in New Issue
Block a user