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@xxxxxxxxxxxxxxxxxxxxx> > > > > 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