From: Boris Brezillon <boris.brezillon@bootlin.com>
To: Andy Shevchenko <andy.shevchenko@gmail.com>
Cc: Wolfram Sang <wsa@the-dreams.de>,
linux-i2c <linux-i2c@vger.kernel.org>,
Jonathan Corbet <corbet@lwn.net>,
Linux Documentation List <linux-doc@vger.kernel.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Arnd Bergmann <arnd@arndb.de>,
Przemyslaw Sroka <psroka@cadence.com>,
Arkadiusz Golec <agolec@cadence.com>,
Alan Douglas <adouglas@cadence.com>,
Bartosz Folta <bfolta@cadence.com>, Damian Kos <dkos@cadence.com>,
Alicja Jurasik-Urbaniak <alicja@cadence.com>,
Cyprian Wronka <cwronka@cadence.com>,
Suresh Punnoose <sureshp@cadence.com>,
Rafal Ciepiela <rafalc@cadence.com>,
Thomas Petazzoni <thomas.petazzoni@bootlin.com>,
Nishanth Menon <nm@ti.com>, Rob Herring <robh+dt@kernel.org>,
Pawel Moll <pawel.moll@arm.com>, Mark Rutland <mark.rutland>
Subject: Re: [PATCH v5 09/10] gpio: Add a driver for Cadence I3C GPIO expander
Date: Tue, 26 Jun 2018 21:56:48 +0200 [thread overview]
Message-ID: <20180626215648.1472b96e@bbrezillon> (raw)
In-Reply-To: <CAHp75Vdxg49q6aQj0dDpzM4q2WnQbGoCECWR1roda7aMR+u4gg@mail.gmail.com>
Hi Andy,
On Tue, 26 Jun 2018 22:07:03 +0300
Andy Shevchenko <andy.shevchenko@gmail.com> wrote:
> On Fri, Jun 22, 2018 at 1:49 PM, Boris Brezillon
> <boris.brezillon@bootlin.com> wrote:
> > Add a driver for Cadence I3C GPIO expander.
> >
> > Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
>
> > + scratchbuf = kmalloc(sizeof(*scratchbuf) * 2, GFP_KERNEL);
>
> kmalloc_array() ?
>
> > + ret = i3c_device_do_priv_xfers(gpioc->i3cdev, xfers,
> > + ARRAY_SIZE(xfers));
>
> One line?
>
>
> > +static void cdns_i3c_gpio_set_multiple(struct gpio_chip *g,
> > + unsigned long *mask,
> > + unsigned long *bits)
> > +{
> > + struct cdns_i3c_gpio *gpioc = gpioc_to_cdns_gpioc(g);
> > + u8 newovr;
> > + int ret;
> > +
> > + newovr = (gpioc->ovr & ~(*mask)) | (*bits & *mask);
> > + if (newovr == gpioc->ovr)
> > + return;
> > +
> > + ret = cdns_i3c_gpio_write_reg(gpioc, OVR, newovr);
> > + if (!ret)
> > + gpioc->ovr = newovr;
>
> You don't change mask here, why do you need a pointer to it?
What are you talking about??!!! This is part of the gpio_chip interface
that drivers have to implement. You can't decide that mask should not be
a pointer. And if you actually look at the code, you'll probably see
that the reason we're passed a pointer here is that the GPIO chip might
expose more GPIOs than can be represented by an unsigned long, hence
the array of unsigned long.
I'll say it here because this is not the first time I'm pissed off by
one of your review. You seem to review everything that is posted on the
LKML, and most of the time your reviews are superficial (focused on tiny
details or coding style issues). Don't you have better things to do?
I mean, I'm fine when I get such comments from people that also do
useful comments, but yours are most of the time useless and sometime
even wrong because you didn't time to look at the code in details.
>
> > +}
>
> > +static int cdns_i3c_gpio_get_multiple(struct gpio_chip *g,
> > + unsigned long *mask,
> > + unsigned long *bits)
> > +{
> > + struct cdns_i3c_gpio *gpioc = gpioc_to_cdns_gpioc(g);
> > + int ret;
> > + u8 ivr;
> > +
> > + ret = cdns_i3c_gpio_read_reg(gpioc, IVR, &ivr);
> > + if (ret)
> > + return ret;
> > +
> > + *bits = ivr & *mask & gpioc->dir;
> > + *bits |= gpioc->ovr & *mask & ~gpioc->dir;
>
> Ditto.
>
> > +
> > + return 0;
> > +}
>
> > +static void cdns_i3c_gpio_ibi_handler(struct i3c_device *i3cdev,
> > + const struct i3c_ibi_payload *payload)
> > +{
> > + struct cdns_i3c_gpio *gpioc = i3cdev_get_drvdata(i3cdev);
>
> > + u8 isr = 0;
>
> Perhaps you need to check the result of _read_reg() below instead of
> dummy assignment?
>
> > + int i;
> > +
> > + cdns_i3c_gpio_read_reg(gpioc, ISR, &isr);
>
> > + for (i = 0; i < 8; i++) {
> > + unsigned int irq;
> > +
> > + if (!(BIT(i) & isr & gpioc->imr))
> > + continue;
>
> for_each_set_bit() ?
>
> > +
> > + irq = irq_find_mapping(gpioc->gpioc.irq.domain, i);
> > + handle_nested_irq(irq);
> > + }
> > +}
>
> > +static const struct i3c_device_id cdns_i3c_gpio_ids[] = {
> > + I3C_DEVICE(0x1c9, 0x0, NULL),
>
> > + { /* sentinel */ },
>
> Slightly better without comma.
>
> > +};
> > +MODULE_DEVICE_TABLE(i3c, cdns_i3c_gpio_ids);
>
next prev parent reply other threads:[~2018-06-26 19:56 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-22 10:49 [PATCH v5 00/10] Add the I3C subsystem Boris Brezillon
2018-06-22 10:49 ` [PATCH v5 01/10] i3c: Add core I3C infrastructure Boris Brezillon
2018-06-22 21:35 ` Peter Rosin
2018-06-23 10:17 ` Boris Brezillon
2018-06-23 21:40 ` Peter Rosin
2018-06-24 12:02 ` Boris Brezillon
2018-06-24 21:55 ` Peter Rosin
2018-06-25 8:03 ` Boris Brezillon
2018-06-28 15:38 ` vitor
2018-06-28 21:02 ` Boris Brezillon
2018-07-11 14:05 ` Arnd Bergmann
2018-06-22 10:49 ` [PATCH v5 02/10] docs: driver-api: Add I3C documentation Boris Brezillon
2018-06-26 21:07 ` Randy Dunlap
2018-06-27 7:20 ` Boris Brezillon
2018-06-22 10:49 ` [PATCH v5 03/10] i3c: Add sysfs ABI spec Boris Brezillon
2018-06-22 10:49 ` [PATCH v5 04/10] dt-bindings: i3c: Document core bindings Boris Brezillon
2018-07-11 14:10 ` Arnd Bergmann
2018-07-11 14:45 ` Boris Brezillon
2018-07-11 14:56 ` Arnd Bergmann
2018-06-22 10:49 ` [PATCH v5 05/10] dt-bindings: i3c: Add macros to help fill I3C/I2C device's reg property Boris Brezillon
2018-06-22 10:49 ` [PATCH v5 06/10] MAINTAINERS: Add myself as the I3C subsystem maintainer Boris Brezillon
2018-06-22 10:49 ` [PATCH v5 07/10] i3c: master: Add driver for Cadence IP Boris Brezillon
2018-07-11 14:19 ` Arnd Bergmann
2018-06-22 10:49 ` [PATCH v5 08/10] dt-bindings: i3c: Document Cadence I3C master bindings Boris Brezillon
2018-06-22 10:49 ` [PATCH v5 09/10] gpio: Add a driver for Cadence I3C GPIO expander Boris Brezillon
2018-06-22 16:04 ` Randy Dunlap
2018-06-22 18:35 ` Boris Brezillon
2018-06-26 19:07 ` Andy Shevchenko
2018-06-26 19:56 ` Boris Brezillon [this message]
2018-06-26 20:44 ` Andy Shevchenko
2018-06-26 21:46 ` Boris Brezillon
2018-06-27 17:53 ` Andy Shevchenko
2018-06-27 19:36 ` Boris Brezillon
2018-06-27 22:54 ` Joe Perches
2018-06-28 0:00 ` Andy Shevchenko
2018-06-28 0:50 ` Joe Perches
2018-06-27 22:14 ` Linus Walleij
2018-06-28 4:08 ` Wolfram Sang
2018-06-22 10:49 ` [PATCH v5 10/10] dt-bindings: gpio: Add bindings for Cadence I3C gpio expander Boris Brezillon
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=20180626215648.1472b96e@bbrezillon \
--to=boris.brezillon@bootlin.com \
--cc=adouglas@cadence.com \
--cc=agolec@cadence.com \
--cc=alicja@cadence.com \
--cc=andy.shevchenko@gmail.com \
--cc=arnd@arndb.de \
--cc=bfolta@cadence.com \
--cc=corbet@lwn.net \
--cc=cwronka@cadence.com \
--cc=dkos@cadence.com \
--cc=gregkh@linuxfoundation.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-i2c@vger.kernel.org \
--cc=nm@ti.com \
--cc=pawel.moll@arm.com \
--cc=psroka@cadence.com \
--cc=rafalc@cadence.com \
--cc=robh+dt@kernel.org \
--cc=sureshp@cadence.com \
--cc=thomas.petazzoni@bootlin.com \
--cc=wsa@the-dreams.de \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).