From: Jonathan Cameron <Jonathan.Cameron@Huawei.com>
To: Lothar Rubusch <l.rubusch@gmail.com>
Cc: Jonathan Cameron <jic23@kernel.org>, <lars@metafoo.de>,
<Michael.Hennerich@analog.com>, <robh+dt@kernel.org>,
<krzysztof.kozlowski+dt@linaro.org>, <conor+dt@kernel.org>,
<linux-iio@vger.kernel.org>, <devicetree@vger.kernel.org>,
<linux-kernel@vger.kernel.org>, <eraretuya@gmail.com>
Subject: Re: [PATCH v3 4/6] iio: accel: adxl345: Remove single info instances
Date: Mon, 25 Mar 2024 14:48:57 +0000 [thread overview]
Message-ID: <20240325144857.000017fb@Huawei.com> (raw)
In-Reply-To: <CAFXKEHZWArvErzeoaO+jMrrA7AuQ4izJioNW_wWTza-bLXV22A@mail.gmail.com>
On Sun, 24 Mar 2024 20:06:51 +0100
Lothar Rubusch <l.rubusch@gmail.com> wrote:
> On Sun, Mar 24, 2024 at 2:35 PM Jonathan Cameron <jic23@kernel.org> wrote:
> >
> > On Sat, 23 Mar 2024 12:20:28 +0000
> > Lothar Rubusch <l.rubusch@gmail.com> wrote:
> >
> > > Add a common array adxl3x5_chip_info and an enum for
> > > indexing. This allows to remove local redundantly
> > > initialized code in the bus specific modules.
> > >
> > > Signed-off-by: Lothar Rubusch <l.rubusch@gmail.com>
> > > ---
> > > drivers/iio/accel/adxl345.h | 7 +++++++
> > > drivers/iio/accel/adxl345_core.c | 12 ++++++++++++
> > > drivers/iio/accel/adxl345_i2c.c | 20 +++++---------------
> > > drivers/iio/accel/adxl345_spi.c | 20 +++++---------------
> > > 4 files changed, 29 insertions(+), 30 deletions(-)
> > >
> > > diff --git a/drivers/iio/accel/adxl345.h b/drivers/iio/accel/adxl345.h
> > > index 6b84a2cee..de6b1767d 100644
> > > --- a/drivers/iio/accel/adxl345.h
> > > +++ b/drivers/iio/accel/adxl345.h
> > > @@ -26,11 +26,18 @@
> > > */
> > > #define ADXL375_USCALE 480000
> > >
> > > +enum adxl345_device_type {
> > > + ADXL345,
> > > + ADXL375,
> > > +};
> > > +
> > > struct adxl345_chip_info {
> > > const char *name;
> > > int uscale;
> > > };
> > >
> > > +extern const struct adxl345_chip_info adxl3x5_chip_info[];
> > > +
> > > int adxl345_core_probe(struct device *dev, struct regmap *regmap,
> > > int (*setup)(struct device*, struct regmap*));
> > >
> > > diff --git a/drivers/iio/accel/adxl345_core.c b/drivers/iio/accel/adxl345_core.c
> > > index 33424edca..e3718d0dd 100644
> > > --- a/drivers/iio/accel/adxl345_core.c
> > > +++ b/drivers/iio/accel/adxl345_core.c
> > > @@ -62,6 +62,18 @@ struct adxl345_data {
> > > BIT(IIO_CHAN_INFO_SAMP_FREQ), \
> > > }
> > >
> > > +const struct adxl345_chip_info adxl3x5_chip_info[] = {
> > > + [ADXL345] = {
> > > + .name = "adxl345",
> > > + .uscale = ADXL345_USCALE,
> > > + },
> > > + [ADXL375] = {
> > > + .name = "adxl375",
> > > + .uscale = ADXL375_USCALE,
> > > + },
> > > +};
> > > +EXPORT_SYMBOL_NS_GPL(adxl3x5_chip_info, IIO_ADXL345);
> >
> > There is little advantage here form using an array. I'd just have
> > two exported structures. Then the name alone is enough in the
> > id tables. And probably no need for the enum definition.
> >
> > This use of arrays is an old pattern that makes little sense if the
> > IDs have no actual meaning and you aren't supporting lots of different
> > parts. For 2 parts I'd argue definitely not worth it.
> >
>
> Agree. I see your point. I drop the info array enum patch.
>
> (...)
>
> Btw. may I ask another question: The adxl345/75 driver is doing the
> configuration
> inside the probe(). Other Analog drivers moved that out into a
> xxx_setup() and call
> this function in the probe(). In general, is it better to keep all
> inside the probe() or
> separate? I mean, the probe is still quite short, and reading through
> severl call
> hierarchies feels a bit "sparghetti". On the other side I can see a
> certain idea of
> separation of functionality: dedicated chip configuration. Would you
> mind to give
> me a small statement/opinion on this please?
I'd based it on code complexity.
If it's one call (and error handling) to do it then inline makes sense.
If it's lots of lines, a separate function make sense.
Where the boundary between the two lies is subjective so I tend to
just go with whatever an author prefers. Note that I'm not keen
to see the noise of refactors if the code lies in this gray area?
Jonathan
>
next prev parent reply other threads:[~2024-03-25 14:49 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-23 12:20 [PATCH v3 0/6] iio: accel: adxl345: Add spi-3wire feature Lothar Rubusch
2024-03-23 12:20 ` [PATCH v3 1/6] iio: accel: adxl345: Pass function pointer to core Lothar Rubusch
2024-03-23 12:20 ` [PATCH v3 2/6] iio: accel: adxl345: Make data_range obsolete Lothar Rubusch
2024-03-23 12:20 ` [PATCH v3 3/6] iio: accel: adxl345: Add spi-3wire option Lothar Rubusch
2024-03-24 13:32 ` Jonathan Cameron
2024-03-24 18:59 ` Lothar Rubusch
2024-03-25 14:46 ` Jonathan Cameron
2024-03-23 12:20 ` [PATCH v3 4/6] iio: accel: adxl345: Remove single info instances Lothar Rubusch
2024-03-24 13:35 ` Jonathan Cameron
2024-03-24 19:06 ` Lothar Rubusch
2024-03-25 14:48 ` Jonathan Cameron [this message]
2024-03-23 12:20 ` [PATCH v3 5/6] iio: accel: adxl345: Group bus configuration Lothar Rubusch
2024-03-24 13:37 ` Jonathan Cameron
2024-03-23 12:20 ` [PATCH v3 6/6] dt-bindings: iio: accel: adxl345: Add spi-3wire Lothar Rubusch
2024-03-23 14:28 ` Krzysztof Kozlowski
2024-03-24 13:39 ` [PATCH v3 0/6] iio: accel: adxl345: Add spi-3wire feature Jonathan Cameron
2024-03-24 19:20 ` Lothar Rubusch
2024-03-25 14:51 ` Jonathan Cameron
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240325144857.000017fb@Huawei.com \
--to=jonathan.cameron@huawei.com \
--cc=Michael.Hennerich@analog.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=eraretuya@gmail.com \
--cc=jic23@kernel.org \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=l.rubusch@gmail.com \
--cc=lars@metafoo.de \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=robh+dt@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.