mfd: AB3100 disable irq nosync
authorLinus Walleij <linus.walleij@stericsson.com>
Thu, 13 Aug 2009 09:50:01 +0000 (11:50 +0200)
committerSamuel Ortiz <sameo@linux.intel.com>
Thu, 17 Sep 2009 07:47:18 +0000 (09:47 +0200)
This will make the worker fire interrupt disable the AB3100 IRQ
without sync which resolves a race since the interrupt obviously
cannot wait for itself to complete while being handled.

Signed-off-by: Linus Walleij <linus.walleij@stericsson.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
drivers/mfd/ab3100-core.c

index bba534b..1d8ac1a 100644 (file)
@@ -422,7 +422,7 @@ static irqreturn_t ab3100_irq_handler(int irq, void *data)
         * stuff and we will re-enable the interrupts once th
         * worker has finished.
         */
         * stuff and we will re-enable the interrupts once th
         * worker has finished.
         */
-       disable_irq(ab3100->i2c_client->irq);
+       disable_irq_nosync(irq);
        schedule_work(&ab3100->work);
        return IRQ_HANDLED;
 }
        schedule_work(&ab3100->work);
        return IRQ_HANDLED;
 }