]> git.neil.brown.name Git - history.git/commitdiff
Switch remaining users of autoirq_*() API to probe_irq_{on,off}
authorKai Germaschewski <kai@tp1.ruhr-uni-bochum.de>
Sun, 28 Apr 2002 13:06:50 +0000 (08:06 -0500)
committerKai Germaschewski <kai@tp1.ruhr-uni-bochum.de>
Sun, 28 Apr 2002 13:06:50 +0000 (08:06 -0500)
autoirq_*() has been replaced by probe_irq_{on,off} a long time ago, so
it's about time to have it go away.

18 files changed:
drivers/cdrom/sonycd535.c
drivers/net/3c501.c
drivers/net/8390.h
drivers/net/Makefile
drivers/net/appletalk/ltpc.c
drivers/net/depca.c
drivers/net/eepro.c
drivers/net/ewrk3.c
drivers/net/isa-skeleton.c
drivers/net/lance.c
drivers/net/ni5010.c
drivers/net/ni52.c
drivers/net/ni65.c
drivers/net/pcmcia/ax8390.h
drivers/net/smc9194.c
drivers/net/wan/sbni.c
drivers/net/wd.c
include/linux/ioport.h

index b19a356f8e002cdd54f20f039d2a1a5d16178494..f659266b56839f8f6b8d36de1eb3e245d3eee9b4 100644 (file)
@@ -1549,19 +1549,20 @@ sony535_init(void)
 #endif
                        /* now ready to use interrupts, if available */
                        sony535_irq_used = tmp_irq;
-#ifndef MODULE
-/* This code is not in MODULEs by default, since the autoirq stuff might
- * not be in the module-accessible symbol table.
- */
+
                        /* A negative sony535_irq_used will attempt an autoirq. */
                        if (sony535_irq_used < 0) {
-                               autoirq_setup(0);
+                               unsigned long irq_mask, delay;
+
+                               irq_mask = probe_irq_on();
                                enable_interrupts();
                                outb(0, read_status_reg);       /* does a reset? */
-                               sony535_irq_used = autoirq_report(10);
+                               delay = jiffies + HZ/10;
+                               while (time_before(jiffies, delay)) ;
+
+                               sony535_irq_used = probe_irq_off(irq_mask);
                                disable_interrupts();
                        }
-#endif
                        if (sony535_irq_used > 0) {
                            if (request_irq(sony535_irq_used, cdu535_interrupt,
                                                                SA_INTERRUPT, CDU535_HANDLE, NULL)) {
index 74f82b397b05fe8d2e7f250ea282af5a2bc4d40e..d61fe21cd798abbf8811799bee6de77b9761614c 100644 (file)
@@ -323,14 +323,18 @@ static int __init el1_probe1(struct net_device *dev, int ioaddr)
 
        if (dev->irq < 2)
        {
-               autoirq_setup(2);
+               unsigned long irq_mask, delay;
+
+               irq_mask = probe_irq_on();
                inb(RX_STATUS);         /* Clear pending interrupts. */
                inb(TX_STATUS);
                outb(AX_LOOP + 1, AX_CMD);
 
                outb(0x00, AX_CMD);
 
-               autoirq = autoirq_report(1);
+               delay = jiffies + HZ/50;
+               while (time_before(jiffies, delay)) ;
+               autoirq = probe_irq_off(irq_mask);
 
                if (autoirq == 0)
                {
index 91db251922b5cc48220f772fbb594481fb504cb6..1a266a1611e1f5b14c35809bc5386dfdfcba9d0f 100644 (file)
@@ -39,12 +39,6 @@ extern int ei_debug;
 #define ei_debug 1
 #endif
 
-#ifndef HAVE_AUTOIRQ
-/* From auto_irq.c */
-extern void autoirq_setup(int waittime);
-extern unsigned long autoirq_report(int waittime);
-#endif
-
 extern int ethdev_init(struct net_device *dev);
 extern void NS8390_init(struct net_device *dev, int startp);
 extern int ei_open(struct net_device *dev);
index 923ee83dbd434d6560f90ad80acc4df4edf54a87..611f5bfea011b2bb92ac9d826272185a50f9bcfb 100644 (file)
@@ -221,16 +221,6 @@ subdir-y   += ../acorn/net
 obj-y          += ../acorn/net/acorn-net.o
 endif
 
-#
-# HIPPI adapters
-#
-
-ifneq ($(ARCH),s390)
-ifneq ($(ARCH),s390x)
-obj-y += auto_irq.o
-endif
-endif
-
 include $(TOPDIR)/Rules.make
 
 clean:
index 579c3b3cd6ec1ec77e2b6b2cb624db3ea0a1e15b..b48f5db13ab03c483f2aaa8952055a3e982710b0 100644 (file)
@@ -1092,15 +1092,18 @@ int __init ltpc_probe(struct net_device *dev)
 
        /* probe for the IRQ line */
        if (irq < 2) {
-               autoirq_setup(2);
+               unsigned long irq_mask, delay;
 
+               irq_mask = probe_irq_on();
                /* reset the interrupt line */
                inb_p(io+7);
                inb_p(io+7);
                /* trigger an interrupt (I hope) */
                inb_p(io+6);
 
-               autoirq = autoirq_report(1);
+               delay = jiffies + HZ/50;
+               while (time_before(jiffies, delay)) ;
+               autoirq = probe_irq_off(irq_mask);
 
                if (autoirq == 0) {
                        printk("ltpc: probe at %#x failed to detect IRQ line.\n",
index 9095f2fc6bc6c6e929f2376cb74f9dc1c7d270e1..b5b1283c6bc9ad9ffd6b898dd0a56303ee6acabb 100644 (file)
@@ -682,7 +682,9 @@ depca_hw_init(struct net_device *dev, u_long ioaddr, int mca_slot)
        if (dev->irq < 2) {
 #ifndef MODULE
                unsigned char irqnum;
-               autoirq_setup(0);
+               unsigned long irq_mask, delay;
+
+               irq_mask = probe_irq_on();
 
                /* Assign the correct irq list */
                switch (lp->adapter) {
@@ -706,7 +708,10 @@ depca_hw_init(struct net_device *dev, u_long ioaddr, int mca_slot)
                /* Trigger an initialization just for the interrupt. */
                outw(INEA | INIT, DEPCA_DATA);
          
-               irqnum = autoirq_report(1);
+               delay = jiffies + HZ/50;
+               while (time_before(jiffies, delay)) ;
+               irqnum = probe_irq_off(irq_mask);
+
                status = -ENXIO;
                if (!irqnum) {
                        printk(" and failed to detect IRQ line.\n");
index 47211e514bf0264af8facd38281853dac2c0afdd..79e131a5d489eb63db4ac87443500d6fda0ebc99 100644 (file)
@@ -896,12 +896,16 @@ static int        eepro_grab_irq(struct net_device *dev)
                eepro_sw2bank0(ioaddr); /* Switch back to Bank 0 */
 
                if (request_irq (*irqp, NULL, SA_SHIRQ, "bogus", dev) != EBUSY) {
+                       unsigned long irq_mask, delay;
                        /* Twinkle the interrupt, and check if it's seen */
-                       autoirq_setup(0);
+                       irq_mask = probe_irq_on();
 
                        eepro_diag(ioaddr); /* RESET the 82595 */
 
-                       if (*irqp == autoirq_report(2))  /* It's a good IRQ line */
+                       delay = jiffies + HZ/50;
+                       while (time_before(jiffies, delay)) ;
+
+                       if (*irqp == probe_irq_off(irq_mask))  /* It's a good IRQ line */
                                break;
 
                        /* clear all interrupts */
index dadc8c8d331e005c9ad6899324a518633d662e63..fe9ee5bcf60b85326face47f9b8c5c1a20f09b82 100644 (file)
@@ -555,8 +555,10 @@ ewrk3_hw_init(struct net_device *dev, u_long iobase)
                                                                if (dev->irq < 2) {
 #ifndef MODULE
                                                                        u_char irqnum;
+                                                                       unsigned long irq_mask, delay;
+                       
 
-                                                                       autoirq_setup(0);
+                                                                       irq_mask = probe_irq_on();
 
                                                                        /*
                                                                           ** Trigger a TNE interrupt.
@@ -567,7 +569,9 @@ ewrk3_hw_init(struct net_device *dev, u_long iobase)
 
                                                                        irqnum = irq[((icr & IRQ_SEL) >> 4)];
 
-                                                                       dev->irq = autoirq_report(1);
+                                                                       delay = jiffies + HZ/50;
+                                                                       while (time_before(jiffies, delay)) ;
+                                                                       dev->irq = probe_irq_off(irq_mask);
                                                                        if ((dev->irq) && (irqnum == dev->irq)) {
                                                                                printk(" and uses IRQ%d.\n", dev->irq);
                                                                        } else {
index bf3fcbb0053f92e6f2b9cdb06556c80c1fc16951..ef7ab45f92a5b3ab1177b48d345fb56e3e400eb4 100644 (file)
@@ -202,10 +202,10 @@ static int __init netcard_probe1(struct net_device *dev, int ioaddr)
        if (dev->irq == -1)
                ;       /* Do nothing: a user-level program will set it. */
        else if (dev->irq < 2) {        /* "Auto-IRQ" */
-               autoirq_setup(0);
+               unsigned long irq_mask = probe_irq_on();
                /* Trigger an interrupt here. */
 
-               dev->irq = autoirq_report(0);
+               dev->irq = probe_irq_off(irq_mask);
                if (net_debug >= 2)
                        printk(" autoirq is %d", dev->irq);
        } else if (dev->irq == 2)
index 03e504fa4b5b47eaba3d7a4b75695d16b6ddf8e5..bcd07be20f4f382f9574f0e52a1149ef357873bd 100644 (file)
@@ -545,15 +545,19 @@ static int __init lance_probe1(struct net_device *dev, int ioaddr, int irq, int
        if (dev->irq >= 2)
                printk(" assigned IRQ %d", dev->irq);
        else if (lance_version != 0)  { /* 7990 boards need DMA detection first. */
+               unsigned long irq_mask, delay;
+
                /* To auto-IRQ we enable the initialization-done and DMA error
                   interrupts. For ISA boards we get a DMA error, but VLB and PCI
                   boards will work. */
-               autoirq_setup(0);
+               irq_mask = probe_irq_on();
 
                /* Trigger an initialization just for the interrupt. */
                outw(0x0041, ioaddr+LANCE_DATA);
 
-               dev->irq = autoirq_report(2);
+               delay = jiffies + HZ/50;
+               while (time_before(jiffies, delay)) ;
+               dev->irq = probe_irq_off(irq_mask);
                if (dev->irq)
                        printk(", probed IRQ %d", dev->irq);
                else {
@@ -619,10 +623,14 @@ static int __init lance_probe1(struct net_device *dev, int ioaddr, int irq, int
        if (lance_version == 0 && dev->irq == 0) {
                /* We may auto-IRQ now that we have a DMA channel. */
                /* Trigger an initialization just for the interrupt. */
-               autoirq_setup(0);
+               unsigned long irq_mask, delay;
+
+               irq_mask = probe_irq_on(0);
                outw(0x0041, ioaddr+LANCE_DATA);
 
-               dev->irq = autoirq_report(4);
+               delay = jiffies + HZ/25;
+               while (time_before(jiffies, delay)) ;
+               dev->irq = probe_irq_off(irq_mask);
                if (dev->irq == 0) {
                        printk("  Failed to detect the 7990 IRQ line.\n");
                        return -ENODEV;
index 0974671fcfd3e917a201377402be543c8f698165..d14642c7179217ffa85232a39a3a3e53a3b45443 100644 (file)
@@ -254,11 +254,15 @@ static int __init ni5010_probe1(struct net_device *dev, int ioaddr)
        if (dev->irq == 0xff)
                ;
        else if (dev->irq < 2) {
+               unsigned long irq_mask, delay;
+
                PRINTK2((KERN_DEBUG "%s: I/O #5 passed!\n", dev->name));
 
-               autoirq_setup(0);
+               irq_mask = probe_irq_on();
                trigger_irq(ioaddr);
-               dev->irq = autoirq_report(2);
+               delay = jiffies + HZ/50;
+               while (time_before(jiffies, delay)) ;
+               dev->irq = probe_irq_off(irq_mask);
 
                PRINTK2((KERN_DEBUG "%s: I/O #6 passed!\n", dev->name));
 
index 32b5dc1fca9dd4b8c12259b1339e37938ec397b5..c98c10638588085035f34970bd632eee343566e7 100644 (file)
@@ -491,10 +491,16 @@ static int __init ni52_probe1(struct net_device *dev,int ioaddr)
 
        if(dev->irq < 2)
        {
-               autoirq_setup(0);
+               unsigned long irq_mask, delay;
+
+               irq_mask = probe_irq_on();
                ni_reset586();
                ni_attn586();
-               if(!(dev->irq = autoirq_report(2)))
+
+               delay = jiffies + HZ/50;
+               while (time_before(jiffies, delay)) ;
+               dev->irq = probe_irq_off(irq_mask);
+               if(!dev->irq)
                {
                        printk("?autoirq, Failed to detect IRQ line!\n");
                        kfree(dev->priv);
index 849b1852d8c48f0d4cc44a6ff0bfe2014d3ef8a3..869598c640082540de4bfd39a7c408691fc5124d 100644 (file)
@@ -447,11 +447,15 @@ static int __init ni65_probe1(struct net_device *dev,int ioaddr)
 
                if(dev->irq < 2)
                {
+                       unsigned long irq_mask, delay;
+
                        ni65_init_lance(p,dev->dev_addr,0,0);
-                       autoirq_setup(0);
+                       irq_mask = probe_irq_on();
                        writereg(CSR0_INIT|CSR0_INEA,CSR0); /* trigger interrupt */
-
-                       if(!(dev->irq = autoirq_report(2)))
+                       delay = jiffies + HZ/50;
+                       while (time_before(jiffies, delay)) ;
+                       dev->irq = probe_irq_off(irq_mask);
+                       if(!dev->irq)
                        {
                                printk("Failed to detect IRQ line!\n");
                                ni65_free_buffer(p);
index 4d94199ad6335505a715b19eca4f1ef53cd6974f..f299adba1a47e861b914491b463aad3ddb4d7ad2 100644 (file)
@@ -39,12 +39,6 @@ extern int ei_debug;
 #define ei_debug 1
 #endif
 
-#ifndef HAVE_AUTOIRQ
-/* From auto_irq.c */
-extern void autoirq_setup(int waittime);
-extern unsigned long autoirq_report(int waittime);
-#endif
-
 static int ethdev_init(struct net_device *dev);
 static void NS8390_init(struct net_device *dev, int startp);
 static int ei_open(struct net_device *dev);
index 07337b7b912f6c28f1102f897cf0272e80229e8a..55ae511aad1bcdf1fa512df16ae08e688037eb57 100644 (file)
@@ -751,15 +751,15 @@ int __init smc_findirq( int ioaddr )
                timeout--;
        }
        /* there is really nothing that I can do here if timeout fails,
-          as autoirq_report will return a 0 anyway, which is what I
+          as probe_irq_off will return a 0 anyway, which is what I
           want in this case.   Plus, the clean up is needed in both
           cases.  */
 
        /* DELAY HERE!
           On a fast machine, the status might change before the interrupt
           is given to the processor.  This means that the interrupt was
-          never detected, and autoirq_report fails to report anything.
-          This should fix autoirq_* problems.
+          never detected, and probe_irq_off fails to report anything.
+          This should fix probe_irq_* problems.
        */
        SMC_DELAY();
        SMC_DELAY();
index 85923bee6ede3c3c6cd52b068c1c62c7ca592923..9f6f6f619d00f437f44450406e0ce48587299032 100644 (file)
@@ -330,10 +330,14 @@ sbni_probe1( struct net_device  *dev,  unsigned long  ioaddr,  int  irq )
        outb( 0, ioaddr + CSR0 );
 
        if( irq < 2 ) {
-               autoirq_setup( 5 );
+               unsigned long irq_mask, delay;
+
+               irq_mask = probe_irq_on();
                outb( EN_INT | TR_REQ, ioaddr + CSR0 );
                outb( PR_RES, ioaddr + CSR1 );
-               irq = autoirq_report( 5 );
+               delay = jiffies + HZ/20;
+               while (time_before(jiffies, delay)) ;
+               irq = probe_irq_off(irq_mask);
                outb( 0, ioaddr + CSR0 );
 
                if( !irq ) {
index 3f244b70ed394add82f9372f415d0bf3029e249b..004a8ccadd7219c89a67b7e9edc229cb29d955f1 100644 (file)
@@ -235,18 +235,23 @@ static int __init wd_probe1(struct net_device *dev, int ioaddr)
                int reg4 = inb(ioaddr+4);
                if (ancient || reg1 == 0xff) {  /* Ack!! No way to read the IRQ! */
                        short nic_addr = ioaddr+WD_NIC_OFFSET;
+                       unsigned long irq_mask, delay;
 
                        /* We have an old-style ethercard that doesn't report its IRQ
                           line.  Do autoirq to find the IRQ line. Note that this IS NOT
                           a reliable way to trigger an interrupt. */
                        outb_p(E8390_NODMA + E8390_STOP, nic_addr);
                        outb(0x00, nic_addr+EN0_IMR);   /* Disable all intrs. */
-                       autoirq_setup(0);
+                       
+                       irq_mask = probe_irq_on();
                        outb_p(0xff, nic_addr + EN0_IMR);       /* Enable all interrupts. */
                        outb_p(0x00, nic_addr + EN0_RCNTLO);
                        outb_p(0x00, nic_addr + EN0_RCNTHI);
                        outb(E8390_RREAD+E8390_START, nic_addr); /* Trigger it... */
-                       dev->irq = autoirq_report(2);
+                       delay = jiffies + HZ/50;
+                       while (time_before(jiffies, delay)) ;
+                       dev->irq = probe_irq_off(irq_mask);
+                       
                        outb_p(0x00, nic_addr+EN0_IMR); /* Mask all intrs. again. */
 
                        if (ei_debug > 2)
index 7c3569949684240c958069f8e70f42ad22212c5f..819c0000052bf4ceac4a8ad126fdaf85a870aeba 100644 (file)
@@ -113,8 +113,4 @@ extern void __release_region(struct resource *, unsigned long, unsigned long);
 #define get_ioport_list(buf)   get_resource_list(&ioport_resource, buf, PAGE_SIZE)
 #define get_mem_list(buf)      get_resource_list(&iomem_resource, buf, PAGE_SIZE)
 
-#define HAVE_AUTOIRQ
-extern void autoirq_setup(int waittime);
-extern int autoirq_report(int waittime);
-
 #endif /* _LINUX_IOPORT_H */