

Some IRQ udpates for IRDA which seemed to get lost.


 drivers/net/irda/ali-ircc.c    |    9 +++++----
 drivers/net/irda/donauboe.c    |    7 ++++---
 drivers/net/irda/nsc-ircc.c    |    7 ++++---
 drivers/net/irda/smc-ircc.c    |    4 ++--
 drivers/net/irda/toshoboe.c    |    9 ++++-----
 drivers/net/irda/vlsi_ir.c     |    8 +++++---
 drivers/net/irda/w83977af_ir.c |    8 ++++----
 include/net/irda/irport.h      |    2 +-
 8 files changed, 29 insertions(+), 25 deletions(-)

diff -puN drivers/net/irda/ali-ircc.c~irqreturn-smcc drivers/net/irda/ali-ircc.c
--- 25/drivers/net/irda/ali-ircc.c~irqreturn-smcc	2003-04-24 05:17:12.000000000 -0700
+++ 25-akpm/drivers/net/irda/ali-ircc.c	2003-04-24 05:17:12.000000000 -0700
@@ -95,7 +95,6 @@ static int  ali_ircc_net_close(struct ne
 static int  ali_ircc_net_ioctl(struct net_device *dev, struct ifreq *rq, int cmd);
 static int  ali_ircc_pmproc(struct pm_dev *dev, pm_request_t rqst, void *data);
 static void ali_ircc_change_speed(struct ali_ircc_cb *self, __u32 baud);
-static void ali_ircc_interrupt(int irq, void *dev_id, struct pt_regs *regs);
 static void ali_ircc_suspend(struct ali_ircc_cb *self);
 static void ali_ircc_wakeup(struct ali_ircc_cb *self);
 static struct net_device_stats *ali_ircc_net_get_stats(struct net_device *dev);
@@ -632,7 +631,8 @@ static int ali_ircc_read_dongle_id (int 
  *    An interrupt from the chip has arrived. Time to do some work
  *
  */
-static void ali_ircc_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t ali_ircc_interrupt(int irq, void *dev_id,
+					struct pt_regs *regs)
 {
 	struct net_device *dev = (struct net_device *) dev_id;
 	struct ali_ircc_cb *self;
@@ -641,7 +641,7 @@ static void ali_ircc_interrupt(int irq, 
 		
  	if (!dev) {
 		WARNING("%s: irq %d for unknown device.\n", driver_name, irq);
-		return;
+		return IRQ_NONE;
 	}	
 	
 	self = (struct ali_ircc_cb *) dev->priv;
@@ -656,7 +656,8 @@ static void ali_ircc_interrupt(int irq, 
 		
 	spin_unlock(&self->lock);
 	
-	IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __FUNCTION__);		
+	IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __FUNCTION__);
+	return IRQ_HANDLED;
 }
 /*
  * Function ali_ircc_fir_interrupt(irq, struct ali_ircc_cb *self, regs)
diff -puN drivers/net/irda/donauboe.c~irqreturn-smcc drivers/net/irda/donauboe.c
--- 25/drivers/net/irda/donauboe.c~irqreturn-smcc	2003-04-24 05:17:12.000000000 -0700
+++ 25-akpm/drivers/net/irda/donauboe.c	2003-04-24 05:17:12.000000000 -0700
@@ -745,20 +745,20 @@ STATIC int toshoboe_invalid_dev(int irq)
   return 1;
 }
 
-STATIC void
+STATIC irqreturn_t
 toshoboe_probeinterrupt (int irq, void *dev_id, struct pt_regs *regs)
 {
   struct toshoboe_cb *self = (struct toshoboe_cb *) dev_id;
   __u8 irqstat;
 
   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);
@@ -791,6 +791,7 @@ toshoboe_probeinterrupt (int irq, void *
   if (irqstat & OBOE_INT_SIP) {
     self->int_sip++;
     PROBE_DEBUG("I"); }
+  return IRQ_HANDLED;
 }
 
 STATIC int
diff -puN drivers/net/irda/nsc-ircc.c~irqreturn-smcc drivers/net/irda/nsc-ircc.c
--- 25/drivers/net/irda/nsc-ircc.c~irqreturn-smcc	2003-04-24 05:17:12.000000000 -0700
+++ 25-akpm/drivers/net/irda/nsc-ircc.c	2003-04-24 05:17:12.000000000 -0700
@@ -131,7 +131,6 @@ static int  nsc_ircc_hard_xmit_fir(struc
 static int  nsc_ircc_pio_write(int iobase, __u8 *buf, int len, int fifo_size);
 static void nsc_ircc_dma_xmit(struct nsc_ircc_cb *self, int iobase);
 static __u8 nsc_ircc_change_speed(struct nsc_ircc_cb *self, __u32 baud);
-static void nsc_ircc_interrupt(int irq, void *dev_id, struct pt_regs *regs);
 static int  nsc_ircc_is_receiving(struct nsc_ircc_cb *self);
 static int  nsc_ircc_read_dongle_id (int iobase);
 static void nsc_ircc_init_dongle_interface (int iobase, int dongle_id);
@@ -1781,7 +1780,8 @@ static void nsc_ircc_fir_interrupt(struc
  *    An interrupt from the chip has arrived. Time to do some work
  *
  */
-static void nsc_ircc_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t nsc_ircc_interrupt(int irq, void *dev_id,
+				struct pt_regs *regs)
 {
 	struct net_device *dev = (struct net_device *) dev_id;
 	struct nsc_ircc_cb *self;
@@ -1790,7 +1790,7 @@ static void nsc_ircc_interrupt(int irq, 
 
 	if (!dev) {
 		WARNING("%s: irq %d for unknown device.\n", driver_name, irq);
-		return;
+		return IRQ_NONE;
 	}
 	self = (struct nsc_ircc_cb *) dev->priv;
 
@@ -1818,6 +1818,7 @@ static void nsc_ircc_interrupt(int irq, 
 	outb(bsr, iobase+BSR);       /* Restore bank register */
 
 	spin_unlock(&self->lock);
+	return IRQ_HANDLED;
 }
 
 /*
diff -puN drivers/net/irda/smc-ircc.c~irqreturn-smcc drivers/net/irda/smc-ircc.c
--- 25/drivers/net/irda/smc-ircc.c~irqreturn-smcc	2003-04-24 05:17:12.000000000 -0700
+++ 25-akpm/drivers/net/irda/smc-ircc.c	2003-04-24 05:17:12.000000000 -0700
@@ -992,9 +992,9 @@ static irqreturn_t ircc_interrupt(int ir
 		return IRQ_NONE;
 	}
 	irport = (struct irport_cb *) dev->priv;
-	ASSERT(irport != NULL, return;);
+	ASSERT(irport != NULL, return IRQ_NONE;);
 	self = (struct ircc_cb *) irport->priv;
-	ASSERT(self != NULL, return;);
+	ASSERT(self != NULL, return IRQ_NONE;);
 
 	/* Check if we should use the SIR interrupt handler */
 	if (self->io->speed < 576000) {
diff -puN drivers/net/irda/toshoboe.c~irqreturn-smcc drivers/net/irda/toshoboe.c
--- 25/drivers/net/irda/toshoboe.c~irqreturn-smcc	2003-04-24 05:17:12.000000000 -0700
+++ 25-akpm/drivers/net/irda/toshoboe.c	2003-04-24 05:17:12.000000000 -0700
@@ -349,7 +349,7 @@ toshoboe_hard_xmit (struct sk_buff *skb,
 }
 
 /*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;
@@ -360,7 +360,7 @@ toshoboe_interrupt (int irq, void *dev_i
     {
       printk (KERN_WARNING "%s: irq %d for unknown device.\n",
               driver_name, irq);
-      return;
+      return IRQ_NONE;
     }
 
   IRDA_DEBUG (4, "%s()\n", __FUNCTION__ );
@@ -369,7 +369,7 @@ toshoboe_interrupt (int irq, void *dev_i
 
 /* woz it us */
   if (!(irqstat & 0xf8))
-    return;
+    return IRQ_NONE;
 
   outb_p (irqstat, OBOE_ISR);   /*Acknologede it */
 
@@ -456,8 +456,7 @@ toshoboe_interrupt (int irq, void *dev_i
       self->stats.rx_errors++;
 
     }
-
-
+  return IRQ_HANDLED;
 }
 
 static int
diff -puN drivers/net/irda/vlsi_ir.c~irqreturn-smcc drivers/net/irda/vlsi_ir.c
--- 25/drivers/net/irda/vlsi_ir.c~irqreturn-smcc	2003-04-24 05:17:12.000000000 -0700
+++ 25-akpm/drivers/net/irda/vlsi_ir.c	2003-04-24 05:17:12.000000000 -0700
@@ -1570,7 +1570,8 @@ static int vlsi_ioctl(struct net_device 
 
 /********************************************************/
 
-static void vlsi_interrupt(int irq, void *dev_instance, struct pt_regs *regs)
+static irqreturn_t vlsi_interrupt(int irq, void *dev_instance,
+					struct pt_regs *regs)
 {
 	struct net_device *ndev = dev_instance;
 	vlsi_irda_dev_t *idev = ndev->priv;
@@ -1579,6 +1580,7 @@ static void vlsi_interrupt(int irq, void
 	int 		boguscount = 32;
 	unsigned	got_act;
 	unsigned long	flags;
+	int		handled = 0;
 
 	got_act = 0;
 	iobase = ndev->base_addr;
@@ -1591,7 +1593,7 @@ static void vlsi_interrupt(int irq, void
 
 		if (!(irintr&=IRINTR_INT_MASK))		/* not our INT - probably shared */
 			break;
-
+		handled = 1;
 		if (irintr&IRINTR_RPKTINT)
 			vlsi_rx_interrupt(ndev);
 
@@ -1610,7 +1612,7 @@ static void vlsi_interrupt(int irq, void
 
 	if (boguscount <= 0)
 		printk(KERN_WARNING "%s: too much work in interrupt!\n", __FUNCTION__);
-
+	return IRQ_RETVAL(handled);
 }
 
 /********************************************************/
diff -puN drivers/net/irda/w83977af_ir.c~irqreturn-smcc drivers/net/irda/w83977af_ir.c
--- 25/drivers/net/irda/w83977af_ir.c~irqreturn-smcc	2003-04-24 05:17:12.000000000 -0700
+++ 25-akpm/drivers/net/irda/w83977af_ir.c	2003-04-24 05:17:12.000000000 -0700
@@ -97,7 +97,6 @@ static int  w83977af_hard_xmit(struct sk
 static int  w83977af_pio_write(int iobase, __u8 *buf, int len, int fifo_size);
 static void w83977af_dma_write(struct w83977af_ir *self, int iobase);
 static void w83977af_change_speed(struct w83977af_ir *self, __u32 speed);
-static void w83977af_interrupt(int irq, void *dev_id, struct pt_regs *regs);
 static int  w83977af_is_receiving(struct w83977af_ir *self);
 
 static int  w83977af_net_init(struct net_device *dev);
@@ -1118,7 +1117,8 @@ static __u8 w83977af_fir_interrupt(struc
  *    An interrupt from the chip has arrived. Time to do some work
  *
  */
-static void w83977af_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t w83977af_interrupt(int irq, void *dev_id,
+					struct pt_regs *regs)
 {
 	struct net_device *dev = (struct net_device *) dev_id;
 	struct w83977af_ir *self;
@@ -1128,7 +1128,7 @@ static void w83977af_interrupt(int irq, 
 	if (!dev) {
 		printk(KERN_WARNING "%s: irq %d for unknown device.\n", 
 			driver_name, irq);
-		return;
+		return IRQ_NONE;
 	}
 	self = (struct w83977af_ir *) dev->priv;
 
@@ -1153,7 +1153,7 @@ static void w83977af_interrupt(int irq, 
 
 	outb(icr, iobase+ICR);    /* Restore (new) interrupts */
 	outb(set, iobase+SSR);    /* Restore bank register */
-
+	return IRQ_HANDLED;
 }
 
 /*
diff -puN include/net/irda/irport.h~irqreturn-smcc include/net/irda/irport.h
--- 25/include/net/irda/irport.h~irqreturn-smcc	2003-04-24 05:17:12.000000000 -0700
+++ 25-akpm/include/net/irda/irport.h	2003-04-24 05:17:12.000000000 -0700
@@ -73,7 +73,7 @@ struct irport_cb {
 	/* For piggyback drivers */
 	void *priv;                
 	void (*change_speed)(void *priv, __u32 speed);
-	void (*interrupt)(int irq, void *dev_id, struct pt_regs *regs);
+	int (*interrupt)(int irq, void *dev_id, struct pt_regs *regs);
 };
 
 struct irport_cb *irport_open(int i, unsigned int iobase, unsigned int irq);

_
