About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Documentation / sound / alsa / Jack-Controls.txt


Based on kernel version 4.9. Page generated on 2016-12-21 14:37 EST.

1	Why we need Jack kcontrols
2	==========================
3	
4	ALSA uses kcontrols to export audio controls(switch, volume, Mux, ...)
5	to user space. This means userspace applications like pulseaudio can
6	switch off headphones and switch on speakers when no headphones are
7	pluged in.
8	
9	The old ALSA jack code only created input devices for each registered
10	jack. These jack input devices are not readable by userspace devices
11	that run as non root.
12	
13	The new jack code creates embedded jack kcontrols for each jack that
14	can be read by any process.
15	
16	This can be combined with UCM to allow userspace to route audio more
17	intelligently based on jack insertion or removal events.
18	
19	Jack Kcontrol Internals
20	=======================
21	
22	Each jack will have a kcontrol list, so that we can create a kcontrol
23	and attach it to the jack, at jack creation stage. We can also add a
24	kcontrol to an existing jack, at anytime when required.
25	
26	Those kcontrols will be freed automatically when the Jack is freed.
27	
28	How to use jack kcontrols
29	=========================
30	
31	In order to keep compatibility, snd_jack_new() has been modified by
32	adding two params :-
33	
34	 - @initial_kctl: if true, create a kcontrol and add it to the jack
35		list.
36	 - @phantom_jack: Don't create a input device for phantom jacks.
37	
38	HDA jacks can set phantom_jack to true in order to create a phantom
39	jack and set initial_kctl to true to create an initial kcontrol with
40	the correct id.
41	
42	ASoC jacks should set initial_kctl as false. The pin name will be
43	assigned as the jack kcontrol name.
Hide Line Numbers


About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog