pinctrl: sunxi: use chained_irq_{enter, exit} for GIC compatibility
authorChen-Yu Tsai <wens@csie.org>
Mon, 10 Feb 2014 16:22:37 +0000 (00:22 +0800)
committerJiri Slaby <jslaby@suse.cz>
Sat, 22 Mar 2014 21:01:52 +0000 (22:01 +0100)
commit809dbe001fb062198dee0589f095866b6a43032f
treed9bbab36fff1f52a6f378d5300e0a0cd64e47971
parentc3f3e9eb4aa81e725c45096dac9f897b1d311fa7
pinctrl: sunxi: use chained_irq_{enter, exit} for GIC compatibility

commit 905a5117e79367b7e58ae046d12ca9961f048c89 upstream.

On tha Allwinner A20 SoC, the external interrupts on the pin controller
device are connected to the GIC. Without chained_irq_{enter, exit},
external GPIO interrupts, such as used by mmc core card detect, cause
the system to hang.

This issue was first encountered during my attempt to get out-of-band
interrupts for WiFi on the Cubietruck working. With David's new series
of sunci-mci using mmc slot-gpio for (GPIO interrupt based) card
detection, removing the SD card also causes my Cubietruck to hang. This
problem should extend to all Allwinner A20 based boards.

With this fix, the system no longer hangs when I remove or insert the
SD card. /proc/interrupts show that the interrupt has correctly fired.
However the system still does not detect card removal/insertion. I
believe this is another unrelated issue.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
drivers/pinctrl/pinctrl-sunxi.c