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

From: Linus Walleij
Date: Tue Nov 19 2019 - 10:03:11 EST


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):

> > As suggested in the comments received on the RFC version of this patch[0], I am trying to use regmap MMIO by looking at gpio-mvebu.c. I got your point regarding the usage of own locks is not making any sense.
> > Here is what I will do in v2:
> > 1. drop the usage of own locks
> > 2. consistently use regmap_* apis for register access (replace all iowrites).
> > Does this make sense now?
>
> The thing is: the gpio-mmio code you're (correctly) reusing uses a
> different lock - namely: bgpio_lock in struct gpio_chip. If you want
> to use regmap for register operations, then you need to set
> disable_locking in regmap_config to true and then take this lock
> manually on every access.

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