Messages in this thread | | | Date | Wed, 7 Jun 2023 15:23:08 +0200 | From | Herve Codina <> | Subject | Re: [PATCH v2 7/9] ASoC: codecs: Add support for the generic IIO auxiliary devices |
| |
Hi Andy,
On Tue, 6 Jun 2023 15:54:04 +0200 Herve Codina <herve.codina@bootlin.com> wrote:
... > > > > > + platform_set_drvdata(pdev, iio_aux); > > > > Which callback is using this driver data? > > None -> I will remove platform_set_drvdata(). >
My previous answer was not correct. The platform_set_drvdata() call is needed.
In fact, the driver uses snd_soc_component_get_drvdata() https://elixir.bootlin.com/linux/v6.4-rc5/source/include/sound/soc-component.h#L425 and this snd_soc_component_get_drvdata() get the driver data set by the platform_set_drvdata() call.
I cannot use snd_soc_component_set_drvdata() to set the driver data because I haven't got the struct snd_soc_component instance when I need to set the driver data.
So, I will not remove the platform_set_drvdata() call.
The sequence is: --- 8< --- static int audio_iio_aux_probe(struct platform_device *pdev) { struct audio_iio_aux *iio_aux;
iio_aux = devm_kzalloc(&pdev->dev, sizeof(*iio_aux), GFP_KERNEL); if (!iio_aux) return -ENOMEM;
...
platform_set_drvdata(pdev, iio_aux);
return devm_snd_soc_register_component(iio_aux->dev, &audio_iio_aux_component_driver, NULL, 0); } --- 8< ---
The struct snd_soc_component instance will be create during the devm_snd_soc_register_component() call.
Regards, Hervé
-- Hervé Codina, Bootlin Embedded Linux and Kernel engineering https://bootlin.com
| |