Hi Takashi-san > > I think this is a good direction to at least start to mitigate these > > problems (which we really should be doing) and hopefully make it easier > > to do further improvements in future. There's obviously more places > > where we should be checking the flag (controls for example) but they can > > be added later. One thing I would like to see is instead of setting the > > flag directly when we see a problem call a function to do it. That way > > if we want to improve things in the future we can do that without having > > to update the callers again. > > BTW, ALSA core has snd_card_disconnect() that does this kind of > shut-up from user-space. It was introduced for hot-unplug, but > basically unbinding is the software hot-unplug. So, if ASoC won't > rebind a once-unbound component, you can simply call > snd_card_disconnect() at the component unbinding time to assure that > no further user actions can be done. Thanks. I checked about snd_card_disconnect(), and it will be called from snd_card_free(). And it will be called from snd_soc_unregister_card() So, we can call snd_soc_unregister_card() whenever CPU/Codec/Platform were unregsiterd. This method also solve random unbind/bind Oops too. Here, random unbind/bind example is that expected correct operation is unbind all CPU/Codec/Platfrom/Card, and then, bind all CPU/Codec/Platfrom/Card again. (here unbind order can be random) But this case, we will get Oops if unbind Codec -> bind Codec -> unbind Card. Using snd_soc_unregister_card() can solve this issue too. Best regards --- Kuninori Morimoto _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel