cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

jack-controls.rst (1565B)


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