gpio: pca953x: return IRQ_NONE when appropriate
authorToby Smith <toby@tismith.id.au>
Wed, 30 Apr 2014 08:01:40 +0000 (18:01 +1000)
committerLinus Walleij <linus.walleij@linaro.org>
Fri, 9 May 2014 10:55:26 +0000 (12:55 +0200)
The irq handler should return IRQ_NONE or IRQ_HANDLED to report
if we have handled the interrupt.

Signed-off-by: Toby Smith <toby@tismith.id.au>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/gpio/gpio-pca953x.c

index d550d8e58705524b78753289b372abd7ae39818c..83cc2c8f105f7a0271829abf6b9e8e56d1a02a54 100644 (file)
@@ -503,10 +503,11 @@ static irqreturn_t pca953x_irq_handler(int irq, void *devid)
        struct pca953x_chip *chip = devid;
        u8 pending[MAX_BANK];
        u8 level;
+       unsigned nhandled = 0;
        int i;
 
        if (!pca953x_irq_pending(chip, pending))
-               return IRQ_HANDLED;
+               return IRQ_NONE;
 
        for (i = 0; i < NBANK(chip); i++) {
                while (pending[i]) {
@@ -514,10 +515,11 @@ static irqreturn_t pca953x_irq_handler(int irq, void *devid)
                        handle_nested_irq(irq_find_mapping(chip->domain,
                                                        level + (BANK_SZ * i)));
                        pending[i] &= ~(1 << level);
+                       nhandled++;
                }
        }
 
-       return IRQ_HANDLED;
+       return (nhandled > 0) ? IRQ_HANDLED : IRQ_NONE;
 }
 
 static int pca953x_gpio_irq_map(struct irq_domain *d, unsigned int irq,