Commit a37352e1 authored by Andrew Morton's avatar Andrew Morton Committed by Linus Torvalds

[PATCH] irqs: IRDA

Update the IRDA drivers to the new IRQ API.
parent ad9745b4
......@@ -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
......
......@@ -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)
......
......@@ -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 */
......
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