On Fri, 20 May 2022 09:50:22 +0200, Takashi Iwai wrote:
On Thu, 19 May 2022 19:47:33 +0200, Vitaly Rodionov wrote: On Thu, 19 May 2022 19:47:33 +0200, Vitaly Rodionov wrote:
From: Stefan Binding sbinding@opensource.cirrus.com
The cs35l41 part contains a DSP which is able to run firmware. The cs_dsp library can be used to control the DSP. These controls can be exposed to userspace using ALSA controls. This library adds apis to be able to interface between cs_dsp and hda drivers and expose the relevant controls as ALSA controls.
The apis to add and remove the controls start new threads when adding/removing controls since it is possible that setting an ALSA control would end up calling this api, which would then deadlock.
Well, I still don't understand why the addition/deletion itself has to be in a work. As far as I see, it's simple calls of snd_ctl_add() and snd_ctl_remove_id().
And, if the problem is that you're calling snd_ctl_add() from another control callback, it's rather the problem of the caller's side, not here. IOW, the async implementation should be rather in the caller side.
Also, the description about the newly added controls is missing. It looks like a really special (non-standard) control that uses TLV for other purposes, and this must be mentioned somewhere.
And, I wonder what happens with alsactl store/restore with those controls. Are TLV contents properly parsed there?
thanks,
Takashi