[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240914120936.01e3d694@jic23-huawei>
Date: Sat, 14 Sep 2024 12:09:36 +0100
From: Jonathan Cameron <jic23@...nel.org>
To: Guillaume Stols <gstols@...libre.com>
Cc: Uwe Kleine-König <ukleinek@...nel.org>, Lars-Peter
Clausen <lars@...afoo.de>, Michael Hennerich
<Michael.Hennerich@...log.com>, Rob Herring <robh@...nel.org>, Krzysztof
Kozlowski <krzk+dt@...nel.org>, Conor Dooley <conor+dt@...nel.org>, Greg
Kroah-Hartman <gregkh@...uxfoundation.org>, "Rafael J. Wysocki"
<rafael@...nel.org>, Jonathan Corbet <corbet@....net>,
linux-pwm@...r.kernel.org, linux-kernel@...r.kernel.org,
linux-fbdev@...r.kernel.org, linux-iio@...r.kernel.org,
devicetree@...r.kernel.org, linux-doc@...r.kernel.org,
aardelean@...libre.com
Subject: Re: [PATCH 7/8] iio: adc: ad7606: Switch to
xxx_get_device_match_data
On Sat, 14 Sep 2024 11:21:34 +0200
Guillaume Stols <gstols@...libre.com> wrote:
> On 8/17/24 17:33, Jonathan Cameron wrote:
> > On Thu, 15 Aug 2024 12:12:01 +0000
> > Guillaume Stols <gstols@...libre.com> wrote:
> >
> >> On the parallel version, the current implementation is only compatible
> >> with id tables and won't work with fx_nodes. So in this commit, the goal
> >> is to switch to use get_device_match_data, in order to simplify the
> >> logic of retrieving chip data.
> >>
> >> Also, chip info is moved in the .h file so to be accessible to all the
> >> driver files that can set a pointer to the corresponding chip as the
> >> driver data.
> > This means each driver gets their own copy.
> >
> > Better to use an extern in the header and keep the actual data
> > in the core module.
>
> ack.
>
> Given your previous comment about introducing
> platform_device_get_match_data, I guess I should instead do it directly
> in the driver's probe, like its done in axp20x_adc.c ? Somehting like that:
>
> if (!dev_fwnode(&pdev->dev)) {
> const struct platform_device_id *id;
>
> id = platform_get_device_id(pdev);
> chip_info = (const struct ad7606_chip_info *)id->driver_data;
> } else {
> struct device *dev = &pdev->dev;
> chip_info = device_get_match_data(dev);
> }
Yes, something along those lines makes sense.
If there are enough instances of this we can have a standard
definition for this similar to the i2c / spi ones that defaults
to device_get_match_data() if available, and falls back to the old
way if not.
If you want to add that great, if not it can be a separate
bit of work for another day.
Jonathan
Powered by blists - more mailing lists