[alsa-devel] Question about struct snd_soc_dai() :: cpu_dai->codec
Takashi Sakamoto
o-takashi at sakamocchi.jp
Thu Aug 4 05:17:57 CEST 2016
On Jul 30 2016 07:08, Mark Brown wrote:
>> But I think it's logically difficult to manage state of sound card; e.g.
>> disconnect. When one sound card instance consists of instances of
>> several 'DAI', 'Codecs' and 'Components' (this 'component' is not in
>> ALSA core contexts[1]) and we try to unload one of them, then which
>> state the card should be assigned to? Or no 'Codecs' drivers are loaded,
>> then which state should be assigned to the card?
>
> The card only instantiates when all the components of the card are
> present, until then it defers probe.
Oops. I forgot ALSA soc part utilizes EPROBE_DEFER. Thanks for your
correction.
>> Additionally, when old Codec driver is unloaded and new Codec driver is
>> loaded, then what should we do for corresponding PCM character devices
>> are? Currently, once snd_card_regsiter() is called, we cannot
>> insert/delete ALSA components such like PCM.
>
> The card should be deinstantiated and reinstantiated whenever a
> component driver unbinds and rebinds (respectively). You'd need to
> completely deregister the card to change the list of things it's
> expecting currently.
In a point of application interfaces, I guess that current
implementation of ALSA soc part includes a bug that it's possible to
unload codec or component modules when any ALSA character devices are
opened. The framework has no codes to manage reference counting of
character devices or loaded codecs, components.
Here, any of suggestions comes from my code reading. I apologize if
they're wrong.
Regards
Takashi Sakamoto
More information about the Alsa-devel
mailing list