From a37352e1904229c694b670688b663d1b63f927bb Mon Sep 17 00:00:00 2001 From: Andrew Morton Date: Sun, 20 Apr 2003 20:21:11 -0700 Subject: [PATCH] [PATCH] irqs: IRDA Update the IRDA drivers to the new IRQ API. --- drivers/net/irda/donauboe.c | 7 ++++--- drivers/net/irda/irport.c | 8 ++++++-- drivers/net/irda/smc-ircc.c | 9 +++++---- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/drivers/net/irda/donauboe.c b/drivers/net/irda/donauboe.c index b8a3c498228af..b90bd7c274600 100644 --- a/drivers/net/irda/donauboe.c +++ b/drivers/net/irda/donauboe.c @@ -1193,7 +1193,7 @@ dumpbufs(skb->data,skb->len,'>'); } /*interrupt handler */ -STATIC void +STATIC irqreturn_t toshoboe_interrupt (int irq, void *dev_id, struct pt_regs *regs) { struct toshoboe_cb *self = (struct toshoboe_cb *) dev_id; @@ -1201,13 +1201,13 @@ toshoboe_interrupt (int irq, void *dev_id, struct pt_regs *regs) struct sk_buff *skb = NULL; if (self == NULL && toshoboe_invalid_dev(irq)) - return; + return IRQ_NONE; irqstat = INB (OBOE_ISR); /* was it us */ if (!(irqstat & OBOE_INT_MASK)) - return; + return IRQ_NONE; /* Ack all the interrupts */ OUTB (irqstat, OBOE_ISR); @@ -1381,6 +1381,7 @@ dumpbufs(self->rx_bufs[self->rxs],len,'<'); IRDA_DEBUG (1, "%s.sip:%x(%x)%x\n", __FUNCTION__ ,self->int_sip,irqstat,self->txpending); } + return IRQ_HANDLED; } STATIC int diff --git a/drivers/net/irda/irport.c b/drivers/net/irda/irport.c index 19e85ca3b3c15..310e7ead2f4a6 100644 --- a/drivers/net/irda/irport.c +++ b/drivers/net/irda/irport.c @@ -720,17 +720,18 @@ static void irport_receive(struct irport_cb *self) * * Interrupt handler */ -void irport_interrupt(int irq, void *dev_id, struct pt_regs *regs) +irqreturn_t irport_interrupt(int irq, void *dev_id, struct pt_regs *regs) { struct net_device *dev = (struct net_device *) dev_id; struct irport_cb *self; int boguscount = 0; int iobase; int iir, lsr; + int handled = 0; if (!dev) { WARNING("%s() irq %d for unknown device.\n", __FUNCTION__, irq); - return; + return IRQ_NONE; } self = (struct irport_cb *) dev->priv; @@ -740,6 +741,8 @@ void irport_interrupt(int irq, void *dev_id, struct pt_regs *regs) iir = inb(iobase+UART_IIR) & UART_IIR_ID; while (iir) { + handled = 1; + /* Clear interrupt */ lsr = inb(iobase+UART_LSR); @@ -771,6 +774,7 @@ void irport_interrupt(int irq, void *dev_id, struct pt_regs *regs) iir = inb(iobase + UART_IIR) & UART_IIR_ID; } spin_unlock(&self->lock); + return IRQ_RETVAL(handled); } static int irport_net_init(struct net_device *dev) diff --git a/drivers/net/irda/smc-ircc.c b/drivers/net/irda/smc-ircc.c index 5c5e0e36727b2..570f66981f67b 100644 --- a/drivers/net/irda/smc-ircc.c +++ b/drivers/net/irda/smc-ircc.c @@ -86,7 +86,7 @@ static void ircc_dma_receive_complete(struct ircc_cb *self, int iobase); static int ircc_hard_xmit(struct sk_buff *skb, struct net_device *dev); static void ircc_dma_xmit(struct ircc_cb *self, int iobase, int bofs); static void ircc_change_speed(void *priv, u32 speed); -static void ircc_interrupt(int irq, void *dev_id, struct pt_regs *regs); +static irqreturn_t ircc_interrupt(int irq, void *dev_id, struct pt_regs *regs); static int ircc_net_open(struct net_device *dev); static int ircc_net_close(struct net_device *dev); static int ircc_pmproc(struct pm_dev *dev, pm_request_t rqst, void *data); @@ -979,7 +979,7 @@ static void ircc_dma_receive_complete(struct ircc_cb *self, int iobase) * An interrupt from the chip has arrived. Time to do some work * */ -static void ircc_interrupt(int irq, void *dev_id, struct pt_regs *regs) +static irqreturn_t ircc_interrupt(int irq, void *dev_id, struct pt_regs *regs) { struct net_device *dev = (struct net_device *) dev_id; struct irport_cb *irport; @@ -989,7 +989,7 @@ static void ircc_interrupt(int irq, void *dev_id, struct pt_regs *regs) if (dev == NULL) { printk(KERN_WARNING "%s: irq %d for unknown device.\n", driver_name, irq); - return; + return IRQ_NONE; } irport = (struct irport_cb *) dev->priv; ASSERT(irport != NULL, return;); @@ -1000,7 +1000,7 @@ static void ircc_interrupt(int irq, void *dev_id, struct pt_regs *regs) if (self->io->speed < 576000) { /* Will spinlock itself - Jean II */ irport_interrupt(irq, dev_id, regs); - return; + return IRQ_HANDLED; } iobase = self->io->fir_base; @@ -1028,6 +1028,7 @@ static void ircc_interrupt(int irq, void *dev_id, struct pt_regs *regs) outb(IRCC_IER_ACTIVE_FRAME|IRCC_IER_EOM, iobase+IRCC_IER); spin_unlock(&self->irport->lock); + return IRQ_HANDLED; } #if 0 /* unused */ -- 2.53.0