pinctrl: bcm2835: switch to GPIOLIB_IRQCHIP
authorLinus Walleij <linus.walleij@linaro.org>
Mon, 14 Nov 2016 17:48:19 +0000 (18:48 +0100)
committerLinus Walleij <linus.walleij@linaro.org>
Wed, 7 Dec 2016 14:27:01 +0000 (15:27 +0100)
commit85ae9e512f437cd09bf61564bdba29ab88bab3e3
tree8e7954b666ea8bef960003b0e1c2369a59fe6628
parent1ff91f0ae3361f17e42448f6fc7181926ef21587
pinctrl: bcm2835: switch to GPIOLIB_IRQCHIP

It should be possible to use the GPIOLIB_IRQCHIP helper
library with the BCM2835 driver since it is a pretty straight
forward cascaded irqchip.

The only difference from other drivers is that the BCM2835
has several banks for a single gpiochip, and each bank has
a separate IRQ line. Instead of creating one gpiochip per
bank, a single gpiochip covers all banks GPIO lines. This
makes it necessary to resolve the bank ID in the IRQ
handler.

The GPIOLIB_IRQCHIP allows several IRQs to be cascaded off
the same gpiochip by calling gpiochip_set_chained_irqchip()
repeatedly, but we have been a bit short on examples
for how this should be handled in practice, so this is intended
as an example of how this can be achieved.

The old code did not model the chip as a chained interrupt
handler, but this patch also rectifies that situation.

Cc: Stephen Warren <swarren@wwwdotorg.org>
Tested-by: Stefan Wahren <stefan.wahren@i2se.com>
Tested-by: Eric Anholt <eric@anholt.net>
Acked-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/pinctrl/bcm/Kconfig
drivers/pinctrl/bcm/pinctrl-bcm2835.c