[alsa-devel] [PATCH 000/127] ASoC: codec cleanup - codec probe/remove

Lars-Peter Clausen lars at metafoo.de
Tue Aug 9 09:52:48 CEST 2016


On 08/09/2016 06:52 AM, Kuninori Morimoto wrote:
> 
> Hi Mark
> 
> These are codec duplicate functions cleanup patches - v2
> We would like to switch to "component" style base ASoC in the future
> instead of current "CPU/Codec/Platform/Card" style.
> 
> Current "codec" has its .probe/.remove, and "component" has it too.
> codec side is just relayed it to component side.
> This is the time to cleanup.

While for the widgets, routes and controls it did not really matter, I do
not think this is the right approach for probe and remove.

This is kind of sub-classing a normal design pattern found all throughout
the kernel. You have a generic callback function and a specialized callback
function that takes the type of the object that is being worked on rather
than the generic object type.

Especially done as a blind mechanical conversion like you did this is not a
cleanup. Most probe functions do not actually need to know that they work on
a CODEC.

E.g. you now have very often this kind of code:

    struct snd_soc_codec *codec = snd_soc_component_to_codec(component);
    struct tas5086_private *priv = snd_soc_codec_get_drvdata(codec);

This could easily be replaced with

    struct tas5086_private *priv = snd_soc_component_get_drvdata(component);

But again, this indirection is not the problem we currently have with ASoC
and it's layering. This kind of cleanup should be done as a very final step
when all other CODEC specific elements have been removed from the driver.


More information about the Alsa-devel mailing list