patch-2.4.0-test11 linux/drivers/net/a2065.c

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

diff -u --recursive --new-file v2.4.0-test10/linux/drivers/net/a2065.c linux/drivers/net/a2065.c
@@ -261,7 +261,7 @@
 		barrier();
 	if ((i == 100) || (ll->rdp & LE_C0_ERR)) {
 		printk ("LANCE unopened after %d ticks, csr0=%4.4x.\n", i, ll->rdp);
-		return -1;
+		return -EIO;
 	}
 
 	/* Clear IDON by writing a "1", enable interrupts and start lance */
@@ -488,14 +488,14 @@
 {
 	struct lance_private *lp = (struct lance_private *)dev->priv;
 	volatile struct lance_regs *ll = lp->ll;
-	int status = 0;
+	int ret;
 
 	last_dev = dev;
 
 	/* Install the Interrupt handler */
-	if (request_irq(IRQ_AMIGA_PORTS, lance_interrupt, SA_SHIRQ,
-			"a2065 Ethernet", dev))
-		return -EAGAIN;
+	ret = request_irq(IRQ_AMIGA_PORTS, lance_interrupt, SA_SHIRQ,
+			  dev->name, dev);
+	if (ret) return ret;
 
 	/* Stop the Lance */
 	ll->rap = LE_CSR0;
@@ -506,11 +506,7 @@
 
 	netif_start_queue(dev);
 
-	status = init_restart_lance (lp);
-
-	MOD_INC_USE_COUNT;
-
-	return status;
+	return init_restart_lance (lp);
 }
 
 static int lance_close (struct net_device *dev)
@@ -526,9 +522,6 @@
 	ll->rdp = LE_C0_STOP;
 
 	free_irq(IRQ_AMIGA_PORTS, dev);
-
-	MOD_DEC_USE_COUNT;
-
 	return 0;
 }
 
@@ -727,6 +720,7 @@
 
 	while ((z = zorro_find_device(ZORRO_WILDCARD, z))) {
 		unsigned long board, base_addr, mem_start;
+		struct resource *r1, *r2;
 		int is_cbm;
 
 		if (z->id == ZORRO_PROD_CBM_A2065_1 ||
@@ -741,25 +735,27 @@
 		base_addr = board+A2065_LANCE;
 		mem_start = board+A2065_RAM;
 
-		if (!request_mem_region(base_addr, sizeof(struct lance_regs),
-					"Am7990"))
-			continue;
-		if (!request_mem_region(mem_start, A2065_RAM_SIZE, "RAM")) {
-			release_mem_region(base_addr,
-					   sizeof(struct lance_regs));
+		r1 = request_mem_region(base_addr, sizeof(struct lance_regs),
+					"Am7990");
+		if (!r1) continue;
+		r2 = request_mem_region(mem_start, A2065_RAM_SIZE, "RAM");
+		if (!r2) {
+			release_resource(r1);
 			continue;
 		}
 
 		dev = init_etherdev(NULL, sizeof(struct lance_private));
 
 		if (dev == NULL) {
-			release_mem_region(base_addr,
-					   sizeof(struct lance_regs));
-			release_mem_region(mem_start, A2065_RAM_SIZE);
+			release_resource(r1);
+			release_resource(r2);
 			return -ENOMEM;
 		}
-		priv = (struct lance_private *)dev->priv;
-		memset(priv, 0, sizeof(struct lance_private));
+		SET_MODULE_OWNER(dev);
+		priv = dev->priv;
+
+		r1->name = dev->name;
+		r2->name = dev->name;
 
 		priv->dev = dev;
 		dev->dev_addr[0] = 0x00;

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