OpenCloudOS-Kernel/drivers/pinctrl/bcm
Jonathan Bell 714b1dd8f7 pinctrl: bcm2835: Clear the event latch register when disabling interrupts
It's possible to hit a race condition if interrupts are generated on a GPIO
pin when the IRQ line in question is being disabled.

If the interrupt is freed, bcm2835_gpio_irq_disable() is called which
disables the event generation sources (edge, level). If an event occurred
between the last disabling of hard IRQs and the write to the event
source registers, a bit would be set in the GPIO event detect register
(GPEDSn) which goes unacknowledged by bcm2835_gpio_irq_handler()
so Linux complains loudly.

There is no per-GPIO mask register, so when disabling GPIO interrupts
write 1 to the relevant bit in GPEDSn to clear out any stale events.

Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
Acked-by: Stephen Warren <swarren@wwwdotorg.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2015-07-20 11:01:52 +02:00
..
Kconfig pinctrl: cygnus: add gpio/pinconf driver 2015-03-18 02:02:19 +01:00
Makefile pinctrl: cygnus: add gpio/pinconf driver 2015-03-18 02:02:19 +01:00
pinctrl-bcm281xx.c pinctrl: make pinctrl_register() return proper error code 2015-06-10 14:49:52 +02:00
pinctrl-bcm2835.c pinctrl: bcm2835: Clear the event latch register when disabling interrupts 2015-07-20 11:01:52 +02:00
pinctrl-cygnus-gpio.c Here is the bulk of pin control changes for the v4.2 series: 2015-06-24 19:21:02 -07:00
pinctrl-cygnus-mux.c pinctrl: make pinctrl_register() return proper error code 2015-06-10 14:49:52 +02:00