Commit d2f5a731 authored by Andy Shevchenko's avatar Andy Shevchenko Committed by Greg Kroah-Hartman

dmaengine: hsu: refactor hsu_dma_do_irq() to return int

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: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 46e36683
...@@ -200,10 +200,9 @@ EXPORT_SYMBOL_GPL(hsu_dma_get_status); ...@@ -200,10 +200,9 @@ EXPORT_SYMBOL_GPL(hsu_dma_get_status);
* is not a normal timeout interrupt, ie. hsu_dma_get_status() returned 0. * is not a normal timeout interrupt, ie. hsu_dma_get_status() returned 0.
* *
* Return: * 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, int hsu_dma_do_irq(struct hsu_dma_chip *chip, unsigned short nr, u32 status)
u32 status)
{ {
struct hsu_dma_chan *hsuc; struct hsu_dma_chan *hsuc;
struct hsu_dma_desc *desc; struct hsu_dma_desc *desc;
...@@ -211,7 +210,7 @@ irqreturn_t hsu_dma_do_irq(struct hsu_dma_chip *chip, unsigned short nr, ...@@ -211,7 +210,7 @@ irqreturn_t hsu_dma_do_irq(struct hsu_dma_chip *chip, unsigned short nr,
/* Sanity check */ /* Sanity check */
if (nr >= chip->hsu->nr_channels) if (nr >= chip->hsu->nr_channels)
return IRQ_NONE; return 0;
hsuc = &chip->hsu->chan[nr]; hsuc = &chip->hsu->chan[nr];
...@@ -230,7 +229,7 @@ irqreturn_t hsu_dma_do_irq(struct hsu_dma_chip *chip, unsigned short 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); spin_unlock_irqrestore(&hsuc->vchan.lock, flags);
return IRQ_HANDLED; return 1;
} }
EXPORT_SYMBOL_GPL(hsu_dma_do_irq); EXPORT_SYMBOL_GPL(hsu_dma_do_irq);
......
...@@ -29,7 +29,7 @@ static irqreturn_t hsu_pci_irq(int irq, void *dev) ...@@ -29,7 +29,7 @@ static irqreturn_t hsu_pci_irq(int irq, void *dev)
u32 dmaisr; u32 dmaisr;
u32 status; u32 status;
unsigned short i; unsigned short i;
irqreturn_t ret = IRQ_NONE; int ret = 0;
int err; int err;
dmaisr = readl(chip->regs + HSU_PCI_DMAISR); dmaisr = readl(chip->regs + HSU_PCI_DMAISR);
...@@ -37,14 +37,14 @@ static irqreturn_t hsu_pci_irq(int irq, void *dev) ...@@ -37,14 +37,14 @@ static irqreturn_t hsu_pci_irq(int irq, void *dev)
if (dmaisr & 0x1) { if (dmaisr & 0x1) {
err = hsu_dma_get_status(chip, i, &status); err = hsu_dma_get_status(chip, i, &status);
if (err > 0) if (err > 0)
ret |= IRQ_HANDLED; ret |= 1;
else if (err == 0) else if (err == 0)
ret |= hsu_dma_do_irq(chip, i, status); ret |= hsu_dma_do_irq(chip, i, status);
} }
dmaisr >>= 1; dmaisr >>= 1;
} }
return ret; return IRQ_RETVAL(ret);
} }
static int hsu_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) static int hsu_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
......
...@@ -99,27 +99,27 @@ static int dnv_handle_irq(struct uart_port *p) ...@@ -99,27 +99,27 @@ static int dnv_handle_irq(struct uart_port *p)
struct uart_8250_port *up = up_to_u8250p(p); struct uart_8250_port *up = up_to_u8250p(p);
unsigned int fisr = serial_port_in(p, INTEL_MID_UART_DNV_FISR); unsigned int fisr = serial_port_in(p, INTEL_MID_UART_DNV_FISR);
u32 status; u32 status;
int ret = IRQ_NONE; int ret = 0;
int err; int err;
if (fisr & BIT(2)) { if (fisr & BIT(2)) {
err = hsu_dma_get_status(&mid->dma_chip, 1, &status); err = hsu_dma_get_status(&mid->dma_chip, 1, &status);
if (err > 0) { if (err > 0) {
serial8250_rx_dma_flush(up); serial8250_rx_dma_flush(up);
ret |= IRQ_HANDLED; ret |= 1;
} else if (err == 0) } else if (err == 0)
ret |= hsu_dma_do_irq(&mid->dma_chip, 1, status); ret |= hsu_dma_do_irq(&mid->dma_chip, 1, status);
} }
if (fisr & BIT(1)) { if (fisr & BIT(1)) {
err = hsu_dma_get_status(&mid->dma_chip, 0, &status); err = hsu_dma_get_status(&mid->dma_chip, 0, &status);
if (err > 0) if (err > 0)
ret |= IRQ_HANDLED; ret |= 1;
else if (err == 0) else if (err == 0)
ret |= hsu_dma_do_irq(&mid->dma_chip, 0, status); ret |= hsu_dma_do_irq(&mid->dma_chip, 0, status);
} }
if (fisr & BIT(0)) if (fisr & BIT(0))
ret |= serial8250_handle_irq(p, serial_port_in(p, UART_IIR)); ret |= serial8250_handle_irq(p, serial_port_in(p, UART_IIR));
return ret; return IRQ_RETVAL(ret);
} }
#define DNV_DMA_CHAN_OFFSET 0x80 #define DNV_DMA_CHAN_OFFSET 0x80
......
...@@ -41,8 +41,7 @@ struct hsu_dma_chip { ...@@ -41,8 +41,7 @@ struct hsu_dma_chip {
/* Export to the internal users */ /* Export to the internal users */
int hsu_dma_get_status(struct hsu_dma_chip *chip, unsigned short nr, int hsu_dma_get_status(struct hsu_dma_chip *chip, unsigned short nr,
u32 *status); u32 *status);
irqreturn_t hsu_dma_do_irq(struct hsu_dma_chip *chip, unsigned short nr, int hsu_dma_do_irq(struct hsu_dma_chip *chip, unsigned short nr, u32 status);
u32 status);
/* Export to the platform drivers */ /* Export to the platform drivers */
int hsu_dma_probe(struct hsu_dma_chip *chip); 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, ...@@ -53,10 +52,10 @@ static inline int hsu_dma_get_status(struct hsu_dma_chip *chip,
{ {
return 0; return 0;
} }
static inline irqreturn_t hsu_dma_do_irq(struct hsu_dma_chip *chip, static inline int hsu_dma_do_irq(struct hsu_dma_chip *chip, unsigned short nr,
unsigned short nr, u32 status) 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_probe(struct hsu_dma_chip *chip) { return -ENODEV; }
static inline int hsu_dma_remove(struct hsu_dma_chip *chip) { return 0; } static inline int hsu_dma_remove(struct hsu_dma_chip *chip) { return 0; }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment