On 2020-07-31 5:58 PM, Lars-Peter Clausen wrote:
On 7/31/20 5:47 PM, Cezary Rojewski wrote:
On 2020-07-31 5:07 PM, Pierre-Louis Bossart wrote:
On 7/31/20 9:41 AM, Cezary Rojewski wrote:
Provide a mechanism for true two-step component registration. This mimics device registration flow where initialization is the first step while addition goes as second in line. Drivers may choose to modify component's fields before registering component to ASoC subsystem via snd_soc_add_component.
I must admit I don't see where this might be used for Intel platforms, we've been happily using snd_soc_register_component() without hitting limitations.
Patchset targets entire ASoC framework, not Intel catalog. As _initialize and _add are already in place, having a two-step registration is cohesive with other "frameworks" e.g. device one.
New to ASoC? Trying to learn soc-components? Guess what, creation/registration procedure is exactly the same as one you're used to already!
Also the only two uses of snd_soc_add_component() seem mainly driven by memory allocation - and avoiding a devm_kzalloc in snd_soc_register_component().
In general, code quality and improvements to its flow should not require ton of usages. But hey, you got two already.
Out of curiosity, can you provide an example where this two-step would be required or beneficial? Thanks!
Overridding component->name which is currently always tied to fmt_single_name so you may choose a different name than the ->dev one.
For what it is worth, I think this is a sensible change for the outlined reasons. It's something I've always had in the back of my mind, but there was never enough of a need to actually do it.
One change I'd like to see is the addition of snd_soc_component_alloc(), which combines the step of kzalloc() and snd_soc_component_init() as these will be done pretty much always in lockstep. And it also matches the APIs that other frameworks offer.
- Lars
Nice, so it's not just me imagining things : D
In general granular registration is robust and scales well into the future. Components functionality will only grow in time so I bet usecases don't end on my example.
I'd suggest transition to _alloc/_init/other being separated from this patchset - let it serve as a middle step.
Czarek