patch-2.4.0-test2 linux/drivers/net/lne390.c

Next file: linux/drivers/net/mac89x0.c
Previous file: linux/drivers/net/lance.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.0-test1/linux/drivers/net/lne390.c linux/drivers/net/lne390.c
@@ -107,13 +107,13 @@
 	if (ioaddr > 0x1ff)		/* Check a single specified location. */
 		return lne390_probe1(dev, ioaddr);
 	else if (ioaddr > 0)		/* Don't probe at all. */
-		return ENXIO;
+		return -ENXIO;
 
 	if (!EISA_bus) {
 #if LNE390_DEBUG & LNE390_D_PROBE
 		printk("lne390-debug: Not an EISA bus. Not probing high ports.\n");
 #endif
-		return ENXIO;
+		return -ENXIO;
 	}
 
 	/* EISA spec allows for up to 16 slots, but 8 is typical. */
@@ -124,7 +124,7 @@
 			return 0;
 	}
 
-	return ENODEV;
+	return -ENODEV;
 }
 
 int __init lne390_probe1(struct net_device *dev, int ioaddr)
@@ -144,7 +144,7 @@
 /*	Check the EISA ID of the card. */
 	eisa_id = inl(ioaddr + LNE390_ID_PORT);
 	if ((eisa_id != LNE390_ID0) && (eisa_id != LNE390_ID1)) {
-		return ENODEV;
+		return -ENODEV;
 	}
 
 	revision = (eisa_id >> 24) & 0x01;	/* 0 = rev A, 1 rev B */
@@ -158,13 +158,10 @@
 		for(i = 0; i < ETHER_ADDR_LEN; i++)
 			printk(" %02x", inb(ioaddr + LNE390_SA_PROM + i));
 		printk(" (invalid prefix).\n");
-		return ENODEV;
+		return -ENODEV;
 	}
 #endif
 
-	if (load_8390_module("lne390.c"))
-		return -ENOSYS;
-
 	/* We should have a "dev" from Space.c or the static module table. */
 	if (dev == NULL) {
 		printk("lne390.c: Passed a NULL device.\n");
@@ -198,7 +195,7 @@
 		printk (" unable to get IRQ %d.\n", dev->irq);
 		kfree(dev->priv);
 		dev->priv = NULL;
-		return EAGAIN;
+		return -EAGAIN;
 	}
 
 	if (dev->mem_start == 0) {
@@ -231,7 +228,7 @@
 			free_irq(dev->irq, dev);
 			kfree(dev->priv);
 			dev->priv = NULL;
-			return EINVAL;
+			return -EINVAL;
 		}
 		dev->mem_start = (unsigned long)ioremap(dev->mem_start, LNE390_STOP_PG*0x100);
 		if (dev->mem_start == 0) {
@@ -241,7 +238,7 @@
 			free_irq(dev->irq, dev);
 			kfree(dev->priv);
 			dev->priv = NULL;
-			return EAGAIN;
+			return -EAGAIN;
 		}
 		ei_status.reg0 = 1;	/* Use as remap flag */
 		printk("lne390.c: remapped %dkB card memory to virtual address %#lx\n",
@@ -393,6 +390,9 @@
 {
 	int this_dev, found = 0;
 
+	if (load_8390_module("lne390.c"))
+		return -ENOSYS;
+
 	for (this_dev = 0; this_dev < MAX_LNE_CARDS; this_dev++) {
 		struct net_device *dev = &dev_lne[this_dev];
 		dev->irq = irq[this_dev];
@@ -404,14 +404,13 @@
 		if (register_netdev(dev) != 0) {
 			printk(KERN_WARNING "lne390.c: No LNE390 card found (i/o = 0x%x).\n", io[this_dev]);
 			if (found != 0) {	/* Got at least one. */
-				lock_8390_module();
 				return 0;
 			}
+			unload_8390_module();
 			return -ENXIO;
 		}
 		found++;
 	}
-	lock_8390_module();
 	return 0;
 }
 
@@ -431,7 +430,7 @@
 			kfree(priv);
 		}
 	}
-	unlock_8390_module();
+	unload_8390_module();
 }
 #endif /* MODULE */
 

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)