patch-2.4.0-test11 linux/drivers/net/ac3200.c
Next file: linux/drivers/net/acenic.c
Previous file: linux/drivers/net/a2065.c
Back to the patch index
Back to the overall index
- Lines: 110
- Date:
Tue Nov 14 13:16:37 2000
- Orig file:
v2.4.0-test10/linux/drivers/net/ac3200.c
- Orig date:
Tue Oct 31 12:42:26 2000
diff -u --recursive --new-file v2.4.0-test10/linux/drivers/net/ac3200.c linux/drivers/net/ac3200.c
@@ -99,6 +99,8 @@
{
unsigned short ioaddr = dev->base_addr;
+ SET_MODULE_OWNER(dev);
+
if (ioaddr > 0x1ff) /* Check a single specified location. */
return ac_probe1(ioaddr, dev);
else if (ioaddr > 0) /* Don't probe at all. */
@@ -107,12 +109,9 @@
if ( ! EISA_bus)
return -ENXIO;
- for (ioaddr = 0x1000; ioaddr < 0x9000; ioaddr += 0x1000) {
- if (check_region(ioaddr, AC_IO_EXTENT))
- continue;
+ for (ioaddr = 0x1000; ioaddr < 0x9000; ioaddr += 0x1000)
if (ac_probe1(ioaddr, dev) == 0)
return 0;
- }
return -ENODEV;
}
@@ -121,8 +120,8 @@
{
int i, retval;
- if (!request_region(ioaddr, AC_IO_EXTENT, "ac3200"))
- return -ENODEV;
+ if (!request_region(ioaddr, AC_IO_EXTENT, dev->name))
+ return -EBUSY;
if (inb_p(ioaddr + AC_ID_PORT) == 0xff) {
retval = -ENODEV;
@@ -172,9 +171,9 @@
printk(", assigning");
}
- if (request_irq(dev->irq, ei_interrupt, 0, "ac3200", dev)) {
+ retval = request_irq(dev->irq, ei_interrupt, 0, dev->name, dev);
+ if (retval) {
printk (" nothing! Unable to get IRQ %d.\n", dev->irq);
- retval = -EAGAIN;
goto out1;
}
@@ -262,15 +261,9 @@
#ifdef notyet
/* Someday we may enable the IRQ and shared memory here. */
int ioaddr = dev->base_addr;
-
- if (request_irq(dev->irq, ei_interrupt, 0, "ac3200", dev))
- return -EAGAIN;
#endif
ei_open(dev);
-
- MOD_INC_USE_COUNT;
-
return 0;
}
@@ -339,9 +332,6 @@
#endif
ei_close(dev);
-
- MOD_DEC_USE_COUNT;
-
return 0;
}
@@ -360,9 +350,6 @@
{
int this_dev, found = 0;
- if (load_8390_module("ac3200.c"))
- return -ENOSYS;
-
for (this_dev = 0; this_dev < MAX_AC32_CARDS; this_dev++) {
struct net_device *dev = &dev_ac32[this_dev];
dev->irq = irq[this_dev];
@@ -376,7 +363,6 @@
if (found != 0) { /* Got at least one. */
return 0;
}
- unload_8390_module();
return -ENXIO;
}
found++;
@@ -392,17 +378,16 @@
for (this_dev = 0; this_dev < MAX_AC32_CARDS; this_dev++) {
struct net_device *dev = &dev_ac32[this_dev];
if (dev->priv != NULL) {
- void *priv = dev->priv;
/* Someday free_irq may be in ac_close_card() */
free_irq(dev->irq, dev);
release_region(dev->base_addr, AC_IO_EXTENT);
if (ei_status.reg0)
iounmap((void *)dev->mem_start);
unregister_netdev(dev);
- kfree(priv);
+ kfree(dev->priv);
+ dev->priv = NULL;
}
}
- 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)