gpio: mvebu: use chained_irq_{enter,exit} for GIC compatibility
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Fri, 7 Feb 2014 11:29:19 +0000 (12:29 +0100)
committerLinus Walleij <linus.walleij@linaro.org>
Wed, 12 Feb 2014 15:23:58 +0000 (16:23 +0100)
commit01ca59f1bb1e71f1f40d0cfbec6b467df144924d
tree6362480350b0ce8f57dc8a61e3424e12a59cef37
parentff2ed0491d9f6e8b1a0fa205324030588f9e4037
gpio: mvebu: use chained_irq_{enter,exit} for GIC compatibility

On currently supported SoCs, the GPIO block used on Marvell EBU SoCs
is always connected to the Marvell MPIC. However, we are going to
introduce the support for newer Marvell EBU SoCs that use the
Cortex-A9 core, and therefore use the GIC as their main interrupt
controller, to which the GPIO block controlled by the gpio-mvebu
driver is connected.

The GIC interrupt controller driver uses the fasteoi flow handler. In
order to ensure that the eoi hook of the GIC driver gets called, the
GPIO driver should call chained_irq_enter() and chained_irq_exit() in
its handler. Without this, the first GPIO interrupt locks up the
system because it doesn't get acked at the GIC level.

This change is similar to for example commit
0d978eb7349941139241a99acf05de6dd49b78d1 ("gpio: davinci: use
chained_irq_enter/chained_irq_exit API").

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Acked-by: Jason Cooper <jason@lakedaemon.net>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/gpio/gpio-mvebu.c