summaryrefslogtreecommitdiff
path: root/fs/squashfs/cache.c
diff options
context:
space:
mode:
authorGrygorii Strashko <grygorii.strashko@ti.com>2017-10-03 11:17:05 -0500
committerLinus Walleij <linus.walleij@linaro.org>2017-10-07 13:17:07 +0200
commit80ac93c274411a55ae731f259f75e4ca5e499e8b (patch)
tree73fce39c76d4636fc20486f94d797c87d58c0d6e /fs/squashfs/cache.c
parente4b2ae7a8a11c5d4e0a6e21ba65d4b487a15d3d8 (diff)
downloadlinux-80ac93c274411a55ae731f259f75e4ca5e499e8b.tar.gz
linux-80ac93c274411a55ae731f259f75e4ca5e499e8b.tar.xz
gpio: omap: Fix lost edge interrupts
Now acking of edge irqs happens the following way: - omap_gpio_irq_handler - "isr" = read irq status - omap_clear_gpio_irqbank(bank, isr_saved & ~level_mask); ^ clear edge status, so irq can be accepted - loop while "isr" generic_handle_irq() - handle_edge_irq() - desc->irq_data.chip->irq_ack(&desc->irq_data); - omap_gpio_ack_irq() it might be that at this moment edge IRQ was triggered again and it will be cleared and IRQ will be lost. Use handle_simple_irq and clear edge interrupts early without disabling them in omap_gpio_irq_handler to avoid loosing interrupts. [1] https://marc.info/?l=linux-omap&m=149004465313534&w=2 Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com> Signed-off-by: Ladislav Michl <ladis@linux-mips.org> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'fs/squashfs/cache.c')
0 files changed, 0 insertions, 0 deletions