dmaengine: hsu: refactor hsu_dma_do_irq() to return int
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Tue, 23 Aug 2016 13:09:40 +0000 (16:09 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 2 Sep 2016 13:05:48 +0000 (15:05 +0200)
Since we have nice macro IRQ_RETVAL() we would use it to convert a flag of
handled interrupt from int to irqreturn_t.

The rationale of doing this is:
a) hence we implicitly mark hsu_dma_do_irq() as an auxiliary function that
   can't be used as interrupt handler directly, and
b) to be in align with serial driver which is using serial8250_handle_irq()
   that returns plain int by design.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/dma/hsu/hsu.c
drivers/dma/hsu/pci.c
drivers/tty/serial/8250/8250_mid.c
include/linux/dma/hsu.h

index c5f21efd6090ee35b2cbad7e4ceeb59a391ecc8a..29d04ca71d52ed05e47435a869fd7826ae93aa08 100644 (file)
@@ -200,10 +200,9 @@ EXPORT_SYMBOL_GPL(hsu_dma_get_status);
  *      is not a normal timeout interrupt, ie. hsu_dma_get_status() returned 0.
  *
  *      Return:
- *      IRQ_NONE for invalid channel number, IRQ_HANDLED otherwise.
+ *      0 for invalid channel number, 1 otherwise.
  */
-irqreturn_t hsu_dma_do_irq(struct hsu_dma_chip *chip, unsigned short nr,
-                          u32 status)
+int hsu_dma_do_irq(struct hsu_dma_chip *chip, unsigned short nr, u32 status)
 {
        struct hsu_dma_chan *hsuc;
        struct hsu_dma_desc *desc;
@@ -211,7 +210,7 @@ irqreturn_t hsu_dma_do_irq(struct hsu_dma_chip *chip, unsigned short nr,
 
        /* Sanity check */
        if (nr >= chip->hsu->nr_channels)
-               return IRQ_NONE;
+               return 0;
 
        hsuc = &chip->hsu->chan[nr];
 
@@ -230,7 +229,7 @@ irqreturn_t hsu_dma_do_irq(struct hsu_dma_chip *chip, unsigned short nr,
        }
        spin_unlock_irqrestore(&hsuc->vchan.lock, flags);
 
-       return IRQ_HANDLED;
+       return 1;
 }
 EXPORT_SYMBOL_GPL(hsu_dma_do_irq);
 
index 9916058531d93945a4534145ffdee75d4f6be6e2..b51639f045edaf2fbdfb618eef375abe37186e36 100644 (file)
@@ -29,7 +29,7 @@ static irqreturn_t hsu_pci_irq(int irq, void *dev)
        u32 dmaisr;
        u32 status;
        unsigned short i;
-       irqreturn_t ret = IRQ_NONE;
+       int ret = 0;
        int err;
 
        dmaisr = readl(chip->regs + HSU_PCI_DMAISR);
@@ -37,14 +37,14 @@ static irqreturn_t hsu_pci_irq(int irq, void *dev)
                if (dmaisr & 0x1) {
                        err = hsu_dma_get_status(chip, i, &status);
                        if (err > 0)
-                               ret |= IRQ_HANDLED;
+                               ret |= 1;
                        else if (err == 0)
                                ret |= hsu_dma_do_irq(chip, i, status);
                }
                dmaisr >>= 1;
        }
 
-       return ret;
+       return IRQ_RETVAL(ret);
 }
 
 static int hsu_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
index 339de9cd086612c60d17ef3c581b59df34a0022a..121a7f2d4697b56ece8a6233a49db0334adf3474 100644 (file)
@@ -99,27 +99,27 @@ static int dnv_handle_irq(struct uart_port *p)
        struct uart_8250_port *up = up_to_u8250p(p);
        unsigned int fisr = serial_port_in(p, INTEL_MID_UART_DNV_FISR);
        u32 status;
-       int ret = IRQ_NONE;
+       int ret = 0;
        int err;
 
        if (fisr & BIT(2)) {
                err = hsu_dma_get_status(&mid->dma_chip, 1, &status);
                if (err > 0) {
                        serial8250_rx_dma_flush(up);
-                       ret |= IRQ_HANDLED;
+                       ret |= 1;
                } else if (err == 0)
                        ret |= hsu_dma_do_irq(&mid->dma_chip, 1, status);
        }
        if (fisr & BIT(1)) {
                err = hsu_dma_get_status(&mid->dma_chip, 0, &status);
                if (err > 0)
-                       ret |= IRQ_HANDLED;
+                       ret |= 1;
                else if (err == 0)
                        ret |= hsu_dma_do_irq(&mid->dma_chip, 0, status);
        }
        if (fisr & BIT(0))
                ret |= serial8250_handle_irq(p, serial_port_in(p, UART_IIR));
-       return ret;
+       return IRQ_RETVAL(ret);
 }
 
 #define DNV_DMA_CHAN_OFFSET 0x80
index aaff68efba5dab20f33dfcbb102469e4f564cc33..197eec63e5019ba13fc4821389373a5f74f16802 100644 (file)
@@ -41,8 +41,7 @@ struct hsu_dma_chip {
 /* Export to the internal users */
 int hsu_dma_get_status(struct hsu_dma_chip *chip, unsigned short nr,
                       u32 *status);
-irqreturn_t hsu_dma_do_irq(struct hsu_dma_chip *chip, unsigned short nr,
-                          u32 status);
+int hsu_dma_do_irq(struct hsu_dma_chip *chip, unsigned short nr, u32 status);
 
 /* Export to the platform drivers */
 int hsu_dma_probe(struct hsu_dma_chip *chip);
@@ -53,10 +52,10 @@ static inline int hsu_dma_get_status(struct hsu_dma_chip *chip,
 {
        return 0;
 }
-static inline irqreturn_t hsu_dma_do_irq(struct hsu_dma_chip *chip,
-                                        unsigned short nr, u32 status)
+static inline int hsu_dma_do_irq(struct hsu_dma_chip *chip, unsigned short nr,
+                                u32 status)
 {
-       return IRQ_NONE;
+       return 0;
 }
 static inline int hsu_dma_probe(struct hsu_dma_chip *chip) { return -ENODEV; }
 static inline int hsu_dma_remove(struct hsu_dma_chip *chip) { return 0; }