[PATCH v4 0/6] ALSA: control - add generic LED API

Takashi Iwai tiwai at suse.de
Tue Mar 30 17:49:04 CEST 2021


On Wed, 17 Mar 2021 18:29:39 +0100,
Jaroslav Kysela wrote:
> 
> This patchset tries to resolve the diversity in the audio LED
> control among the ALSA drivers. A new control layer registration
> is introduced which allows to run additional operations on
> top of the elementary ALSA sound controls.
> 
> A new control access group (three bits in the access flags)
> was introduced to carry the LED group information for
> the sound controls. The low-level sound drivers can just
> mark those controls using this access group. This information
> is not exported to the user space, but user space can
> manage the LED sound control associations through sysfs
> (last patch) per Mark's request. It makes things fully
> configurable in the kernel and user space (UCM).
> 
> The actual state ('route') evaluation is really easy
> (the minimal value check for all channels / controls / cards).
> If there's more complicated logic for a given hardware,
> the card driver may eventually export a new read-only
> sound control for the LED group and do the logic itself.
> 
> The new LED trigger control code is completely separated
> and possibly optional (there's no symbol dependency).
> The full code separation allows eventually to move this
> LED trigger control to the user space in future.
> Actually it replaces the already present functionality
> in the kernel space (HDA drivers) and allows a quick adoption
> for the recent hardware (ASoC codecs including SoundWire).
> 
> # lsmod | grep snd_ctl_led
> snd_ctl_led            24576  0
> 
> The sound driver implementation is really easy:
> 
> 1) call snd_ctl_led_request() when control LED layer should be
>    automatically activated
>    / it calls module_request("snd-ctl-led") on demand /
> 2) mark all related kcontrols with
> 	SNDRV_CTL_ELEM_ACCESS_SPK_LED or
> 	SNDRV_CTL_ELEM_ACCESS_MIC_LED
> 
> v4 changes:
>   - the LED access flags are private to kernel now (no user space
>     API change)
>   - fixes (kctl management, sysfs cleanup)
>   - add the sysfs LED marking kcontrol management
>     - https://lore.kernel.org/alsa-devel/28fffebd-1ce9-7480-0f2f-ed8369abddf1@perex.cz/
> v3 changes:
>   - reorder the controls_rwsem use to fix the remaining mutex issue
>     card->controls_rwsem <-> snd_ctl_layer_rwsem
> v2 changes:
>   - fix the locking - remove the controls_rwsem read lock
>     in the element get (the consistency is already protected
>     with the global snd_ctl_led_mutex and possible partial
>     value writes are catched with the next value change
>     notification callback)
>   - rename state to brightness and show the brightness
>     unsigned integer value instead the text on/off string
>     (sync with the LED core routines)
>   - remove snd_ctl_led_hello() function (CI warning)
>   - make snd_ctl_led_get_by_access() function static (CI warning)
>   - move snd_ctl_layer_rwsem lock before the registraction
>     callback call in snd_ctl_register_layer() - optimization
> v1:
>   - https://lore.kernel.org/alsa-devel/20210211111400.1131020-1-perex@perex.cz/
> Original RFC:
>   - https://lore.kernel.org/alsa-devel/20210207201157.869972-1-perex@perex.cz/
> 
> Cc: Hans de Goede <hdegoede at redhat.com>
> 
> Jaroslav Kysela (6):
>   ALSA: control - introduce snd_ctl_notify_one() helper
>   ALSA: control - add layer registration routines
>   ALSA: control - add generic LED trigger module as the new control
>     layer
>   ALSA: HDA - remove the custom implementation for the audio LED trigger
>   ALSA: control - add sysfs support to the LED trigger module
>   ALSA: led control - add sysfs kcontrol LED marking layer

As we seem agreeing with this approach, I merged this patch set as is
now for 5.13.  For the further development, let's put changes over
there.

An immutable branch was created on top of the clean 5.12-rc5, and
tagged as mute-led-rework, too.

Mark, please pull from there if you need to patch further ASoC changes
that are relevant with the feature.


Thanks!

Takashi


More information about the Alsa-devel mailing list