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