mirror of https://gitee.com/openkylin/linux.git
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
|
@ -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