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,'>'); ...@@ -1193,7 +1193,7 @@ dumpbufs(skb->data,skb->len,'>');
} }
/*interrupt handler */ /*interrupt handler */
STATIC void STATIC irqreturn_t
toshoboe_interrupt (int irq, void *dev_id, struct pt_regs *regs) toshoboe_interrupt (int irq, void *dev_id, struct pt_regs *regs)
{ {
struct toshoboe_cb *self = (struct toshoboe_cb *) dev_id; struct toshoboe_cb *self = (struct toshoboe_cb *) dev_id;
...@@ -1201,13 +1201,13 @@ toshoboe_interrupt (int irq, void *dev_id, struct pt_regs *regs) ...@@ -1201,13 +1201,13 @@ toshoboe_interrupt (int irq, void *dev_id, struct pt_regs *regs)
struct sk_buff *skb = NULL; struct sk_buff *skb = NULL;
if (self == NULL && toshoboe_invalid_dev(irq)) if (self == NULL && toshoboe_invalid_dev(irq))
return; return IRQ_NONE;
irqstat = INB (OBOE_ISR); irqstat = INB (OBOE_ISR);
/* was it us */ /* was it us */
if (!(irqstat & OBOE_INT_MASK)) if (!(irqstat & OBOE_INT_MASK))
return; return IRQ_NONE;
/* Ack all the interrupts */ /* Ack all the interrupts */
OUTB (irqstat, OBOE_ISR); OUTB (irqstat, OBOE_ISR);
...@@ -1381,6 +1381,7 @@ dumpbufs(self->rx_bufs[self->rxs],len,'<'); ...@@ -1381,6 +1381,7 @@ dumpbufs(self->rx_bufs[self->rxs],len,'<');
IRDA_DEBUG (1, "%s.sip:%x(%x)%x\n", __FUNCTION__ IRDA_DEBUG (1, "%s.sip:%x(%x)%x\n", __FUNCTION__
,self->int_sip,irqstat,self->txpending); ,self->int_sip,irqstat,self->txpending);
} }
return IRQ_HANDLED;
} }
STATIC int STATIC int
......
...@@ -720,17 +720,18 @@ static void irport_receive(struct irport_cb *self) ...@@ -720,17 +720,18 @@ static void irport_receive(struct irport_cb *self)
* *
* Interrupt handler * 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 net_device *dev = (struct net_device *) dev_id;
struct irport_cb *self; struct irport_cb *self;
int boguscount = 0; int boguscount = 0;
int iobase; int iobase;
int iir, lsr; int iir, lsr;
int handled = 0;
if (!dev) { if (!dev) {
WARNING("%s() irq %d for unknown device.\n", __FUNCTION__, irq); WARNING("%s() irq %d for unknown device.\n", __FUNCTION__, irq);
return; return IRQ_NONE;
} }
self = (struct irport_cb *) dev->priv; self = (struct irport_cb *) dev->priv;
...@@ -740,6 +741,8 @@ void irport_interrupt(int irq, void *dev_id, struct pt_regs *regs) ...@@ -740,6 +741,8 @@ void irport_interrupt(int irq, void *dev_id, struct pt_regs *regs)
iir = inb(iobase+UART_IIR) & UART_IIR_ID; iir = inb(iobase+UART_IIR) & UART_IIR_ID;
while (iir) { while (iir) {
handled = 1;
/* Clear interrupt */ /* Clear interrupt */
lsr = inb(iobase+UART_LSR); lsr = inb(iobase+UART_LSR);
...@@ -771,6 +774,7 @@ void irport_interrupt(int irq, void *dev_id, struct pt_regs *regs) ...@@ -771,6 +774,7 @@ void irport_interrupt(int irq, void *dev_id, struct pt_regs *regs)
iir = inb(iobase + UART_IIR) & UART_IIR_ID; iir = inb(iobase + UART_IIR) & UART_IIR_ID;
} }
spin_unlock(&self->lock); spin_unlock(&self->lock);
return IRQ_RETVAL(handled);
} }
static int irport_net_init(struct net_device *dev) 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); ...@@ -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 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_dma_xmit(struct ircc_cb *self, int iobase, int bofs);
static void ircc_change_speed(void *priv, u32 speed); 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_open(struct net_device *dev);
static int ircc_net_close(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); 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) ...@@ -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 * 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 net_device *dev = (struct net_device *) dev_id;
struct irport_cb *irport; struct irport_cb *irport;
...@@ -989,7 +989,7 @@ static void ircc_interrupt(int irq, void *dev_id, struct pt_regs *regs) ...@@ -989,7 +989,7 @@ static void ircc_interrupt(int irq, void *dev_id, struct pt_regs *regs)
if (dev == NULL) { if (dev == NULL) {
printk(KERN_WARNING "%s: irq %d for unknown device.\n", printk(KERN_WARNING "%s: irq %d for unknown device.\n",
driver_name, irq); driver_name, irq);
return; return IRQ_NONE;
} }
irport = (struct irport_cb *) dev->priv; irport = (struct irport_cb *) dev->priv;
ASSERT(irport != NULL, return;); ASSERT(irport != NULL, return;);
...@@ -1000,7 +1000,7 @@ static void ircc_interrupt(int irq, void *dev_id, struct pt_regs *regs) ...@@ -1000,7 +1000,7 @@ static void ircc_interrupt(int irq, void *dev_id, struct pt_regs *regs)
if (self->io->speed < 576000) { if (self->io->speed < 576000) {
/* Will spinlock itself - Jean II */ /* Will spinlock itself - Jean II */
irport_interrupt(irq, dev_id, regs); irport_interrupt(irq, dev_id, regs);
return; return IRQ_HANDLED;
} }
iobase = self->io->fir_base; iobase = self->io->fir_base;
...@@ -1028,6 +1028,7 @@ static void ircc_interrupt(int irq, void *dev_id, struct pt_regs *regs) ...@@ -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); outb(IRCC_IER_ACTIVE_FRAME|IRCC_IER_EOM, iobase+IRCC_IER);
spin_unlock(&self->irport->lock); spin_unlock(&self->irport->lock);
return IRQ_HANDLED;
} }
#if 0 /* unused */ #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