[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20230607152308.02b404e1@bootlin.com>
Date: Wed, 7 Jun 2023 15:23:08 +0200
From: Herve Codina <herve.codina@...tlin.com>
To: andy.shevchenko@...il.com
Cc: Liam Girdwood <lgirdwood@...il.com>,
Mark Brown <broonie@...nel.org>,
Rob Herring <robh+dt@...nel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski+dt@...aro.org>,
Conor Dooley <conor+dt@...nel.org>,
Jonathan Cameron <jic23@...nel.org>,
Lars-Peter Clausen <lars@...afoo.de>,
Jaroslav Kysela <perex@...ex.cz>,
Takashi Iwai <tiwai@...e.com>,
Kuninori Morimoto <kuninori.morimoto.gx@...esas.com>,
alsa-devel@...a-project.org, devicetree@...r.kernel.org,
linux-kernel@...r.kernel.org, linux-iio@...r.kernel.org,
Christophe Leroy <christophe.leroy@...roup.eu>,
Thomas Petazzoni <thomas.petazzoni@...tlin.com>
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@...tlin.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
Powered by blists - more mailing lists