On 26/07/2024 10:13, Charles Keepax wrote:
On Thu, Jul 25, 2024 at 12:31:40PM +0200, Javier Carrasco wrote:
The instances of the `snd_soc_component_driver` struct are not modified after their declaration, and they are only passed to `devm_snd_soc_register_component()`, which expects a constant `snd_soc_component_driver`.
Move all instances of `snd_soc_component_driver` to read-only sections by declaring them const.
Signed-off-by: Javier Carrasco javier.carrasco.cruz@gmail.com
sound/soc/codecs/cs43130.c | 2 +-
-static struct snd_soc_component_driver soc_component_dev_cs43130 = { +static const struct snd_soc_component_driver soc_component_dev_cs43130 = { .probe = cs43130_probe, .controls = cs43130_snd_controls, .num_controls = ARRAY_SIZE(cs43130_snd_controls),
This won't work for cs43130, whilst what the driver does is clearly slightly sketch it directly modifies this struct before registering it with ASoC. That would need fixed first before this change can be made.
Thanks, Charles
Hi Charles,
thanks a lot for pointing this out, somehow I failed to compile cs43130 and sti-sas, which are the only two cases in the kernel that do modify snd_soc_component_driver after the declaration. The rest don't do that and I just double checked that they compile cleanly.
Those two cases where modifications are required rely on values that are not known until they are probed. I think it makes then sense that they are left as they are, so I will drop both drivers for v2.
Best regards, Javier Carrasco