• Linus Walleij's avatar
    pinctrl: bcm2835: switch to GPIOLIB_IRQCHIP · 85ae9e51
    Linus Walleij authored
    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: default avatarStefan Wahren <stefan.wahren@i2se.com>
    Tested-by: default avatarEric Anholt <eric@anholt.net>
    Acked-by: default avatarEric Anholt <eric@anholt.net>
    Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    85ae9e51
pinctrl-bcm2835.c 28.9 KB