Merge branch 'topic/hsu' into for-linus

This commit is contained in:
Vinod Koul 2016-10-03 09:17:44 +05:30
commit d38e45aa17
4 changed files with 15 additions and 17 deletions

View 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. * 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,
/* 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,
} }
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);

View File

@ -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)
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)

View File

@ -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

View File

@ -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,
{ {
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; }