]> git.karo-electronics.de Git - linux-beck.git/commitdiff
spi: fsl-espi: improve and simplify interrupt handler
authorHeiner Kallweit <hkallweit1@gmail.com>
Tue, 13 Sep 2016 21:15:57 +0000 (23:15 +0200)
committerMark Brown <broonie@kernel.org>
Wed, 14 Sep 2016 17:24:47 +0000 (18:24 +0100)
Simplify the interrupt handler a little. In addition don't call
fsl_espi_cpu_irq() if no event bit is set.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-fsl-espi.c

index 060624f45ce01c5534f2a73139b153c6ae1d0ed4..032bf3af8388f85b05c3b3bc4acc34579c4b5b58 100644 (file)
@@ -443,17 +443,11 @@ static void fsl_espi_cpu_irq(struct mpc8xxx_spi *mspi, u32 events)
                                &reg_base->event)) & SPIE_NF), 1000, 0);
                if (!ret) {
                        dev_err(mspi->dev, "tired waiting for SPIE_NF\n");
-
-                       /* Clear the SPIE bits */
-                       mpc8xxx_spi_write_reg(&reg_base->event, events);
                        complete(&mspi->done);
                        return;
                }
        }
 
-       /* Clear the events */
-       mpc8xxx_spi_write_reg(&reg_base->event, events);
-
        mspi->count -= 1;
        if (mspi->count) {
                u32 word = mspi->get_tx(mspi);
@@ -468,19 +462,21 @@ static irqreturn_t fsl_espi_irq(s32 irq, void *context_data)
 {
        struct mpc8xxx_spi *mspi = context_data;
        struct fsl_espi_reg *reg_base = mspi->reg_base;
-       irqreturn_t ret = IRQ_NONE;
        u32 events;
 
        /* Get interrupt events(tx/rx) */
        events = mpc8xxx_spi_read_reg(&reg_base->event);
-       if (events)
-               ret = IRQ_HANDLED;
+       if (!events)
+               return IRQ_NONE;
 
        dev_vdbg(mspi->dev, "%s: events %x\n", __func__, events);
 
        fsl_espi_cpu_irq(mspi, events);
 
-       return ret;
+       /* Clear the events */
+       mpc8xxx_spi_write_reg(&reg_base->event, events);
+
+       return IRQ_HANDLED;
 }
 
 #ifdef CONFIG_PM