RE: [PATCH 3/4] gpio: sifive: Add GPIO driver for SiFive SoCs

From: Yash Shah
Date: Sun Nov 24 2019 - 23:54:48 EST


> -----Original Message-----
> From: Linus Walleij <linus.walleij@xxxxxxxxxx>
> Sent: 22 November 2019 17:58
> To: Bartosz Golaszewski <bgolaszewski@xxxxxxxxxxxx>
> Cc: Yash Shah <yash.shah@xxxxxxxxxx>; robh+dt@xxxxxxxxxx;
> mark.rutland@xxxxxxx; palmer@xxxxxxxxxxx; Paul Walmsley ( Sifive)
> <paul.walmsley@xxxxxxxxxx>; aou@xxxxxxxxxxxxxxxxx; tglx@xxxxxxxxxxxxx;
> jason@xxxxxxxxxxxxxx; maz@xxxxxxxxxx; bmeng.cn@xxxxxxxxx;
> atish.patra@xxxxxxx; Sagar Kadam <sagar.kadam@xxxxxxxxxx>; linux-
> gpio@xxxxxxxxxxxxxxx; devicetree@xxxxxxxxxxxxxxx; linux-
> riscv@xxxxxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; Sachin Ghadi
> <sachin.ghadi@xxxxxxxxxx>
> Subject: Re: [PATCH 3/4] gpio: sifive: Add GPIO driver for SiFive SoCs
>
> On Tue, Nov 19, 2019 at 5:42 PM Bartosz Golaszewski
> <bgolaszewski@xxxxxxxxxxxx> wrote:
> > wt., 19 lis 2019 o 16:03 Linus Walleij <linus.walleij@xxxxxxxxxx> napisaÅ(a):
> > > On Mon, Nov 18, 2019 at 11:15 AM Bartosz Golaszewski
> > > <bgolaszewski@xxxxxxxxxxxx> wrote:
>
> > > > pon., 18 lis 2019 o 11:03 Yash Shah <yash.shah@xxxxxxxxxx> napisaÅ(a):
> > > Is it really so? The bgpio_lock does protect the registers used by
> > > regmap-mmio but unless the interrupt code is also using the same
> > > registers it is fine to have a different lock for those.
> > >
> > > Is the interrupt code really poking into the very same registers as
> > > passed to bgpio_init()?
> > >
> > > Of course it could be seen as a bit dirty to poke around in the same
> > > memory space with regmap and the bgpio_* accessors but in practice
> > > it's no problem if they never touch the same things.
> > >
> > > Yours,
> > > Linus Walleij
> >
> > I'm wondering if it won't cause any inconsistencies when for example
> > interrupts are being triggered on input lines while we're also reading
> > their values? Seems to me it's just more clear to use a single lock
> > for a register range. Most drivers using gpio-mmio do just that in
> > their irq-related routines.
>
> OK good point. Just one lock for the whole thing is likely more maintainable
> even if it works with two different locks.
>
> > Anyway: even without using bgpio_lock this code is inconsistent: if
> > we're using regmap for interrupt registers, we should either decide to
> > rely on locking provided by regmap or disable it and use a locally
> > defined lock.
>
> OK makes sense, let's say we use the bgpio_lock everywhere for this.
>
> Yash: are you OK with this? (Haven't read the new patch set yet, maybe it is
> already fixed...)

Yes, I am ok with this. I will be sending v3 soon with this change.

- Yash