Hi Mark
ALSA SoC platform/codec will be replaced to component soon. This means 1 device might have multiple components. But current unregister component function only checks "dev" to find it. This means, unexpected component might be unregistered by current function. But, it is no problem if driver registered only 1 component.
Isn't this just a convenience for drivers though? It means they can just clean things up with one call and I'm having a hard time thinking of any use cases for only unregistering some components.
This means like this
OK case register_component(dev, driver_A);
unregister_component(dev); /* driver_A will be unregister */
not OK case register_component(dev, driver_A); register_component(dev, driver_B);
unregister_component(dev); /* it can't specify driver_A */ unregister_component(dev); /* it can't specify driver_B */
or do we want to have like this ?
register_component(dev, driver_A); register_component(dev, driver_B);
unregister_component(dev); /* unregister both driver_A/driver_B */
To avoid this issue, this patch adds new component unregister_exp/lookup/remove functions. "lookup" function finds component by "dev" and "driver name", and "remove" function removes it. "unregister_exp" will use these functions.
The exp name here seems a bit confusing... perhaps just _internal() or something?
OK, will fix in v2
+#define snd_soc_unregister_component(dev) snd_soc_unregister_component_exp(dev, NULL)
A static inline is better, it's got better type safety.
OK, will do
Best regards --- Kuninori Morimoto