]> git.hungrycats.org Git - linux/commitdiff
[PATCH] various irqreturn_t fixes
authorAndrew Morton <akpm@digeo.com>
Thu, 24 Apr 2003 15:59:05 +0000 (08:59 -0700)
committerLinus Torvalds <torvalds@home.transmeta.com>
Thu, 24 Apr 2003 15:59:05 +0000 (08:59 -0700)
Basically a mop-up of missed bits.  Also fix various warnings and compilation
errors.

12 files changed:
drivers/input/mouse/pc110pad.c
drivers/isdn/hisax/isurf.c
drivers/media/video/saa7134/saa7134-core.c
drivers/media/video/zr36067.c
drivers/net/tokenring/tms380tr.c
drivers/net/tokenring/tms380tr.h
drivers/net/wan/c101.c
drivers/net/wan/farsync.c
drivers/net/wan/hd6457x.c
drivers/net/wan/n2.c
drivers/net/wan/z85230.c
drivers/net/wan/z85230.h

index f9a3d9eebff2ed912f6f0dd58514d2b02188d225..910e03593aee59d284ce371cd2627e1c2985520c 100644 (file)
@@ -71,7 +71,8 @@ static irqreturn_t pc110pad_interrupt(int irq, void *ptr, struct pt_regs *regs)
 
        pc110pad_data[pc110pad_count++] = value;
 
-       if (pc110pad_count < 3) return;
+       if (pc110pad_count < 3)
+               return IRQ_HANDLED;
        
        input_regs(&pc110pad_dev, regs);
        input_report_key(&pc110pad_dev, BTN_TOUCH,
index a9baa4443d81d9f7102fbbbd81387239b2cf165a..4408791b6c0279ad99e1707cc212f81de218e138 100644 (file)
@@ -94,7 +94,7 @@ static struct bc_hw_ops isar_ops = {
        .write_reg = WriteISAR,
 };
 
-static void
+static irqreturn_t
 isurf_interrupt(int intno, void *dev_id, struct pt_regs *regs)
 {
        struct IsdnCardState *cs = dev_id;
@@ -130,6 +130,7 @@ isurf_interrupt(int intno, void *dev_id, struct pt_regs *regs)
        writeb(0, cs->hw.isurf.isac + ISAC_MASK);mb();
        writeb(ISAR_IRQMSK, cs->hw.isurf.isar + ISAR_IRQBIT); mb();
        spin_unlock(&cs->lock);
+       return IRQ_HANDLED;
 }
 
 static void
index e88367522cdb43238f2d0e713d82463fd222b0a2..4fbd9acc03cbc6fb0e7f55936c0c96b726c6967c 100644 (file)
@@ -532,7 +532,7 @@ static void print_irqstatus(struct saa7134_dev *dev, int loop,
        printk("\n");
 }
 
-static void saa7134_irq(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t saa7134_irq(int irq, void *dev_id, struct pt_regs *regs)
 {
        struct saa7134_dev *dev = (struct saa7134_dev*) dev_id;
        unsigned long report,status;
@@ -546,7 +546,7 @@ static void saa7134_irq(int irq, void *dev_id, struct pt_regs *regs)
                        if (irq_debug > 1)
                                printk(KERN_DEBUG "%s/irq: no (more) work\n",
                                       dev->name);
-                       return;
+                       goto out;
                }
                if (irq_debug)
                        print_irqstatus(dev,loop,report,status);
@@ -582,6 +582,8 @@ static void saa7134_irq(int irq, void *dev_id, struct pt_regs *regs)
                saa_writel(SAA7134_IRQ1,0);
                saa_writel(SAA7134_IRQ2,0);
        }
+out:
+       return IRQ_HANDLED;
 }
 
 /* ------------------------------------------------------------------ */
index 9786992551d05ef6b34af607a7476e1384443cfa..44b1c2ffca9a36201811788c4c5fee24d4293612 100644 (file)
@@ -2780,12 +2780,13 @@ static void error_handler(struct zoran *zr, u32 astat, u32 stat)
        }
 }
 
-static void zoran_irq(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t zoran_irq(int irq, void *dev_id, struct pt_regs *regs)
 {
        u32 stat, astat;
        int count;
        struct zoran *zr;
        unsigned long flags;
+       int handled = 0;
 
        zr = (struct zoran *) dev_id;
        count = 0;
@@ -2804,7 +2805,7 @@ static void zoran_irq(int irq, void *dev_id, struct pt_regs *regs)
                }
                zr->last_isr = stat;
                spin_unlock_irqrestore(&zr->lock, flags);
-               return;
+               return IRQ_HANDLED;
        }
 
        spin_lock_irqsave(&zr->lock, flags);
@@ -2815,6 +2816,7 @@ static void zoran_irq(int irq, void *dev_id, struct pt_regs *regs)
                if (!astat) {
                        break;
                }
+               handled = 1;
                if (astat & cardvsync[zr->card]) {      // SW
 
                        if (zr->codec_mode == BUZ_MODE_MOTION_DECOMPRESS
@@ -3008,6 +3010,7 @@ static void zoran_irq(int irq, void *dev_id, struct pt_regs *regs)
                zr->last_isr = stat;
        }
        spin_unlock_irqrestore(&zr->lock, flags);
+       return IRQ_RETVAL(handled);
 }
 
 /* Check a zoran_params struct for correctness, insert default params */
index 5e7d163a2359ba46a0729f442e57d149eb3b1689..e1062b3d654b08482ea1e5a5a9b67e571e247de9 100644 (file)
@@ -152,7 +152,6 @@ static int  tms380tr_init_card(struct net_device *dev);
 static void    tms380tr_init_ipb(struct net_local *tp);
 static void    tms380tr_init_net_local(struct net_device *dev);
 static void    tms380tr_init_opb(struct net_device *dev);
-void           tms380tr_interrupt(int irq, void *dev_id, struct pt_regs *regs);
 /* "M" */
 /* "O" */
 int            tms380tr_open(struct net_device *dev);
@@ -780,15 +779,16 @@ static void tms380tr_timer_chk(unsigned long data)
 /*
  * The typical workload of the driver: Handle the network interface interrupts.
  */
-void tms380tr_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+irqreturn_t tms380tr_interrupt(int irq, void *dev_id, struct pt_regs *regs)
 {
        struct net_device *dev = dev_id;
        struct net_local *tp;
        unsigned short irq_type;
+       int handled = 0;
 
        if(dev == NULL) {
                printk(KERN_INFO "%s: irq %d for unknown device.\n", dev->name, irq);
-               return;
+               return IRQ_NONE;
        }
 
        tp = (struct net_local *)dev->priv;
@@ -796,6 +796,7 @@ void tms380tr_interrupt(int irq, void *dev_id, struct pt_regs *regs)
        irq_type = SIFREADW(SIFSTS);
 
        while(irq_type & STS_SYSTEM_IRQ) {
+               handled = 1;
                irq_type &= STS_IRQ_MASK;
 
                if(!tms380tr_chk_ssb(tp, irq_type)) {
@@ -870,7 +871,7 @@ void tms380tr_interrupt(int irq, void *dev_id, struct pt_regs *regs)
                irq_type = SIFREADW(SIFSTS);
        }
 
-       return;
+       return IRQ_RETVAL(handled);
 }
 
 /*
index 5953dbb3beba0feb13bc306fb7933912d486b3ff..1b55d2a7a71d74dcaf329e8296093116803a05f2 100644 (file)
 
 #ifdef __KERNEL__
 
+#include <linux/interrupt.h>
+
 /* module prototypes */
 int tms380tr_open(struct net_device *dev);
 int tms380tr_close(struct net_device *dev);
-void tms380tr_interrupt(int irq, void *dev_id, struct pt_regs *regs);
+irqreturn_t tms380tr_interrupt(int irq, void *dev_id, struct pt_regs *regs);
 int tmsdev_init(struct net_device *dev, unsigned long dmalimit,
                struct pci_dev *pdev);
 void tmsdev_term(struct net_device *dev);
index 5995756d101617ff1cacc9ea3d5cd47d4c9a4e83..1061d32b70dc579dafcd11a326a5459e4ddc8911 100644 (file)
@@ -155,11 +155,12 @@ static int c101_open(struct net_device *dev)
 {
        hdlc_device *hdlc = dev_to_hdlc(dev);
        port_t *port = hdlc_to_port(hdlc);
+       int result;
 
        if (!try_module_get(THIS_MODULE))
                return -EFAULT; /* rmmod in progress */
 
-       int result = hdlc_open(hdlc);
+       result = hdlc_open(hdlc);
        if (result) {
                return result;
                module_put(THIS_MODULE);
index e583a6a4082e2e501a3fac0ad84d05979c5a8c37..bd546eedec5060dbf90373f59f9ce03f2aea105d 100644 (file)
@@ -772,7 +772,7 @@ fst_intr_rx ( struct fst_card_info *card, struct fst_port_info *port )
  *      The interrupt service routine
  *      Dev_id is our fst_card_info pointer
  */
-static void
+static irqreturn_t
 fst_intr ( int irq, void *dev_id, struct pt_regs *regs )
 {
         struct fst_card_info *card;
@@ -785,7 +785,7 @@ fst_intr ( int irq, void *dev_id, struct pt_regs *regs )
         if (( card = dev_id ) == NULL )
         {
                 dbg ( DBG_INTR,"intr: spurious %d\n", irq );
-                return;
+                return IRQ_NONE;
         }
 
         dbg ( DBG_INTR,"intr: %d %p\n", irq, card );
@@ -882,6 +882,7 @@ fst_intr ( int irq, void *dev_id, struct pt_regs *regs )
         }
 
         spin_unlock ( &card->card_lock );
+       return IRQ_HANDLED;
 }
 
 
index 110ae6c03a3beb9ed505fe4f87aede2c03852439..f85ae029f419e72c3e21acd99cfb0724c796d147 100644 (file)
@@ -408,17 +408,19 @@ static inline void sca_tx_intr(port_t *port)
 
 
 
-static void sca_intr(int irq, void* dev_id, struct pt_regs *regs)
+static irqreturn_t sca_intr(int irq, void* dev_id, struct pt_regs *regs)
 {
        card_t *card = dev_id;
        int i;
        u8 stat;
+       int handled = 0;
 
 #ifndef ALL_PAGES_ALWAYS_MAPPED
        u8 page = sca_get_page(card);
 #endif
 
        while((stat = sca_intr_status(card)) != 0) {
+               handled = 1;
                for (i = 0; i < 2; i++) {
                        port_t *port = get_port(card, i);
                        if (port) {
@@ -437,6 +439,7 @@ static void sca_intr(int irq, void* dev_id, struct pt_regs *regs)
 #ifndef ALL_PAGES_ALWAYS_MAPPED
        openwin(card, page);            /* Restore original page */
 #endif
+       return IRQ_RETVAL(handled);
 }
 
 
index 939ee3544523b48bc0aa76afe022883ecda8e81f..12b5434c2d2415abc8864f85765daeac970c67bb 100644 (file)
@@ -216,12 +216,13 @@ static int n2_open(struct net_device *dev)
        port_t *port = hdlc_to_port(hdlc);
        int io = port->card->io;
        u8 mcr = inb(io + N2_MCR) | (port->phy_node ? TX422_PORT1:TX422_PORT0);
+       int result;
 
 
        if (!try_module_get(THIS_MODULE))
                return -EFAULT; /* rmmod in progress */
 
-       int result = hdlc_open(hdlc);
+       result = hdlc_open(hdlc);
        if (result) {
                return result;
                module_put(THIS_MODULE);
index d2473ea84eecac465edcac74da0447e7e8d7938c..1a01cbef19b05884bd03fe287c431968bfd9c745 100644 (file)
@@ -718,7 +718,7 @@ EXPORT_SYMBOL(z8530_nop);
  *     channel). c->lock for both channels points to dev->lock
  */
 
-void z8530_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+irqreturn_t z8530_interrupt(int irq, void *dev_id, struct pt_regs *regs)
 {
        struct z8530_dev *dev=dev_id;
        u8 intr;
@@ -729,7 +729,7 @@ void z8530_interrupt(int irq, void *dev_id, struct pt_regs *regs)
        if(locker)
        {
                printk(KERN_ERR "IRQ re-enter\n");
-               return;
+               return IRQ_NONE;
        }
        locker=1;
 
@@ -775,6 +775,7 @@ void z8530_interrupt(int irq, void *dev_id, struct pt_regs *regs)
                printk(KERN_ERR "%s: interrupt jammed - abort(0x%X)!\n", dev->name, intr);
        /* Ok all done */
        locker=0;
+       return IRQ_HANDLED;
 }
 
 EXPORT_SYMBOL(z8530_interrupt);
index 070eff77c134b57ea8234dcce4321d6dc76e30ce..6eae40b884a81c2121ff417a76e70cc1fb1c85b4 100644 (file)
@@ -9,6 +9,7 @@
 #define _Z8530_H
 
 #include <linux/tty.h>
+#include <linux/interrupt.h>
 
 /* Conversion routines to/from brg time constants from/to bits
  * per second.
@@ -399,7 +400,7 @@ struct z8530_dev
 extern u8 z8530_dead_port[];
 extern u8 z8530_hdlc_kilostream_85230[];
 extern u8 z8530_hdlc_kilostream[];
-extern void z8530_interrupt(int, void *, struct pt_regs *);
+extern irqreturn_t z8530_interrupt(int, void *, struct pt_regs *);
 extern void z8530_describe(struct z8530_dev *, char *mapping, unsigned long io);
 extern int z8530_init(struct z8530_dev *);
 extern int z8530_shutdown(struct z8530_dev *);