gpio: mmio: handle "ngpios" properly in bgpio_init()
authorAsmaa Mnebhi <asmaa@nvidia.com>
Tue, 11 Jul 2023 15:12:48 +0000 (11:12 -0400)
committerBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Tue, 18 Jul 2023 18:59:25 +0000 (20:59 +0200)
commit55b2395e4e92adc492c6b30ac109eb78250dcd9d
treee239c02e1fd509d38d7347d8b3939471a8a8ec0d
parent0f93a345aa42c40e2145c3719d878e7daa4eb6ee
gpio: mmio: handle "ngpios" properly in bgpio_init()

bgpio_init() uses "sz" argument to populate ngpio, which is not
accurate. Instead, read the "ngpios" property from the DT and if it
doesn't exist, use the "sz" argument. With this change, drivers no
longer need to overwrite the ngpio variable after calling bgpio_init().

If the "ngpios" property is specified, bgpio_bits is calculated
as the round up value of ngpio. At the moment, the only requirement
specified is that the round up value must be a multiple of 8 but
it should also be a power of 2 because we provide accessors based
on the bank size in bgpio_setup_accessors().

Signed-off-by: Asmaa Mnebhi <asmaa@nvidia.com>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
drivers/gpio/gpio-mmio.c
drivers/gpio/gpiolib.c
drivers/gpio/gpiolib.h