gpio: xilinx: No need to disable IRQs in the handler
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Mon, 10 May 2021 19:46:33 +0000 (22:46 +0300)
committerBartosz Golaszewski <bgolaszewski@baylibre.com>
Wed, 12 May 2021 11:54:27 +0000 (13:54 +0200)
In IRQ handler interrupts are already disabled, hence no need
to repeat it. Even in the threaded case, it is not a problem
because IRQ framework keeps interrupt disabled there as well.
Remove disabling IRQ part in the handler.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Tested-by: Neeli Srinivas <sneeli@xilinx.com>
Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
drivers/gpio/gpio-xilinx.c

index 01e6459b27e67428870bc26bfe077563840bbb91..0c43baa54b5b327ef0c6167c46ce669238c02510 100644 (file)
@@ -509,14 +509,13 @@ static void xgpio_irqhandler(struct irq_desc *desc)
        int irq_offset;
        u32 status;
        u32 bit;
-       unsigned long flags;
 
        status = xgpio_readreg(chip->regs + XGPIO_IPISR_OFFSET);
        xgpio_writereg(chip->regs + XGPIO_IPISR_OFFSET, status);
 
        chained_irq_enter(irqchip, desc);
 
-       spin_lock_irqsave(&chip->gpio_lock, flags);
+       spin_lock(&chip->gpio_lock);
 
        xgpio_read_ch_all(chip, XGPIO_DATA_OFFSET, all);
 
@@ -533,7 +532,7 @@ static void xgpio_irqhandler(struct irq_desc *desc)
        bitmap_copy(chip->last_irq_read, all, 64);
        bitmap_or(all, rising, falling, 64);
 
-       spin_unlock_irqrestore(&chip->gpio_lock, flags);
+       spin_unlock(&chip->gpio_lock);
 
        dev_dbg(gc->parent, "IRQ rising %*pb falling %*pb\n", 64, rising, 64, falling);