Hi Takashi-san
So, we can call snd_soc_unregister_card() whenever CPU/Codec/Platform were unregsiterd.
In theory yes, but you should be careful to do so, e.g. make sure that it won't be called again by the removal/unbind of other components / drivers.
I suggested snd_card_disconnect() because it doesn't release resources by itself, but it just disconnects from the further accesses. So, double-free won't happen in this case. It makes the hotunplug safer as long as the drivers manage the resource releases properly.
I had checked many unbind/bind pattern/order on 2nd [RFC] patch which I posted. At first, I believe Oops on unbind/bind issue was solved on it. 2nd, if my understanding was correct, it doesn't have double-free issue, or something like that. But, I'm not 100% sure about 2nd, thus it has [RFC] on patch.
Best regards --- Kuninori Morimoto