summaryrefslogtreecommitdiff
path: root/drivers/gpio/gpio-omap.c
diff options
context:
space:
mode:
authorLinus Walleij <linus.walleij@linaro.org>2015-09-25 03:52:52 +0300
committerLinus Walleij <linus.walleij@linaro.org>2015-10-15 19:03:07 +0300
commit26ba9cd48fc0c2ff741de913270e9469506f3666 (patch)
treefcb9834464590ba51d36bdabd973424005374577 /drivers/gpio/gpio-omap.c
parent21d4de1469a1da20a14a745c5f49488bba417ea7 (diff)
downloadlinux-26ba9cd48fc0c2ff741de913270e9469506f3666.tar.xz
gpio: pl061: assign the apropriate handler for irqs
The PL061 can handle level IRQs and edge IRQs, however it is just utilizing handle_simple_irq() for all IRQs. Inspired by Stefan Agners patch to vf610, this assigns the right handler depending on what type is set up, and after this handle_bad_irq() is only used as default and if the type is not specified, as is done in the OMAP driver: defining the IRQ type is really not optional for this driver. The interrupt handler was just writing the interrupt clearing register for all lines that were high when entering the handling loop, this is wrong: that register is only supposed to be written (on a per-line basis) for edge IRQs, so this ACK was moved to the .irq_ack() callback as is proper. Tested with PL061 on the ARM RealView PB11MPCore and the MMC/SC card detect GPIO. Cc: Jonas Gorski <jogo@openwrt.org> Cc: Stefan Agner <stefan@agner.ch> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/gpio/gpio-omap.c')
0 files changed, 0 insertions, 0 deletions