Commit 5b552b16 authored by Andreas Mohr's avatar Andreas Mohr Committed by Jeff Garzik

[PATCH] NI5010 netcard cleanup

- updated MAINTAINERS entry to new format
- updated Jan-Pascal's (ACKed) and my email address
- driver cleanup/modernization (runtime-, not hardware-tested)

[bunk@stusta.de: build fix]
Signed-off-by: default avatarAndreas Mohr <andi@lisas.de>
Cc: Jeff Garzik <jeff@garzik.org>
Cc: Jan-Pascal van Best <jvbest@qv3pluto.leidenuniv.nl>
Signed-off-by: default avatarAdrian Bunk <bunk@stusta.de>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent 3a10cceb
...@@ -2039,9 +2039,10 @@ L: linux-kernel@vger.kernel.org ...@@ -2039,9 +2039,10 @@ L: linux-kernel@vger.kernel.org
S: Maintained S: Maintained
NI5010 NETWORK DRIVER NI5010 NETWORK DRIVER
P: Jan-Pascal van Best and Andreas Mohr P: Jan-Pascal van Best
M: Jan-Pascal van Best <jvbest@qv3pluto.leidenuniv.nl> M: janpascal@vanbest.org
M: Andreas Mohr <100.30936@germany.net> P: Andreas Mohr
M: andi@lisas.de
L: netdev@vger.kernel.org L: netdev@vger.kernel.org
S: Maintained S: Maintained
......
/* ni5010.c: A network driver for the MiCom-Interlan NI5010 ethercard. /* ni5010.c: A network driver for the MiCom-Interlan NI5010 ethercard.
* *
* Copyright 1996,1997 Jan-Pascal van Best and Andreas Mohr. * Copyright 1996,1997,2006 Jan-Pascal van Best and Andreas Mohr.
* *
* This software may be used and distributed according to the terms * This software may be used and distributed according to the terms
* of the GNU General Public License, incorporated herein by reference. * of the GNU General Public License, incorporated herein by reference.
* *
* The authors may be reached as: * The authors may be reached as:
* jvbest@wi.leidenuniv.nl a.mohr@mailto.de * janpascal@vanbest.org andi@lisas.de
* or by snail mail as
* Jan-Pascal van Best Andreas Mohr
* Klikspaanweg 58-4 Stauferstr. 6
* 2324 LZ Leiden D-71272 Renningen
* The Netherlands Germany
* *
* Sources: * Sources:
* Donald Becker's "skeleton.c" * Donald Becker's "skeleton.c"
...@@ -27,8 +22,9 @@ ...@@ -27,8 +22,9 @@
* 970503 v0.93: Fixed auto-irq failure on warm reboot (JB) * 970503 v0.93: Fixed auto-irq failure on warm reboot (JB)
* 970623 v1.00: First kernel version (AM) * 970623 v1.00: First kernel version (AM)
* 970814 v1.01: Added detection of onboard receive buffer size (AM) * 970814 v1.01: Added detection of onboard receive buffer size (AM)
* 060611 v1.02: slight cleanup: email addresses, driver modernization.
* Bugs: * Bugs:
* - None known... * - not SMP-safe (no locking of I/O accesses)
* - Note that you have to patch ifconfig for the new /proc/net/dev * - Note that you have to patch ifconfig for the new /proc/net/dev
* format. It gives incorrect stats otherwise. * format. It gives incorrect stats otherwise.
* *
...@@ -39,7 +35,7 @@ ...@@ -39,7 +35,7 @@
* Complete merge with Andreas' driver * Complete merge with Andreas' driver
* Implement ring buffers (Is this useful? You can't squeeze * Implement ring buffers (Is this useful? You can't squeeze
* too many packet in a 2k buffer!) * too many packet in a 2k buffer!)
* Implement DMA (Again, is this useful? Some docs says DMA is * Implement DMA (Again, is this useful? Some docs say DMA is
* slower than programmed I/O) * slower than programmed I/O)
* *
* Compile with: * Compile with:
...@@ -47,7 +43,7 @@ ...@@ -47,7 +43,7 @@
* -DMODULE -c ni5010.c * -DMODULE -c ni5010.c
* *
* Insert with e.g.: * Insert with e.g.:
* insmod ni5010.o io=0x300 irq=5 * insmod ni5010.ko io=0x300 irq=5
*/ */
#include <linux/module.h> #include <linux/module.h>
...@@ -69,15 +65,15 @@ ...@@ -69,15 +65,15 @@
#include "ni5010.h" #include "ni5010.h"
static const char *boardname = "NI5010"; static const char boardname[] = "NI5010";
static char *version = static char version[] __initdata =
"ni5010.c: v1.00 06/23/97 Jan-Pascal van Best and Andreas Mohr\n"; "ni5010.c: v1.02 20060611 Jan-Pascal van Best and Andreas Mohr\n";
/* bufsize_rcv == 0 means autoprobing */ /* bufsize_rcv == 0 means autoprobing */
static unsigned int bufsize_rcv; static unsigned int bufsize_rcv;
#define jumpered_interrupts /* IRQ line jumpered on board */ #define JUMPERED_INTERRUPTS /* IRQ line jumpered on board */
#undef jumpered_dma /* No DMA used */ #undef JUMPERED_DMA /* No DMA used */
#undef FULL_IODETECT /* Only detect in portlist */ #undef FULL_IODETECT /* Only detect in portlist */
#ifndef FULL_IODETECT #ifndef FULL_IODETECT
...@@ -281,7 +277,7 @@ static int __init ni5010_probe1(struct net_device *dev, int ioaddr) ...@@ -281,7 +277,7 @@ static int __init ni5010_probe1(struct net_device *dev, int ioaddr)
PRINTK2((KERN_DEBUG "%s: I/O #4 passed!\n", dev->name)); PRINTK2((KERN_DEBUG "%s: I/O #4 passed!\n", dev->name));
#ifdef jumpered_interrupts #ifdef JUMPERED_INTERRUPTS
if (dev->irq == 0xff) if (dev->irq == 0xff)
; ;
else if (dev->irq < 2) { else if (dev->irq < 2) {
...@@ -305,7 +301,7 @@ static int __init ni5010_probe1(struct net_device *dev, int ioaddr) ...@@ -305,7 +301,7 @@ static int __init ni5010_probe1(struct net_device *dev, int ioaddr)
} else if (dev->irq == 2) { } else if (dev->irq == 2) {
dev->irq = 9; dev->irq = 9;
} }
#endif /* jumpered_irq */ #endif /* JUMPERED_INTERRUPTS */
PRINTK2((KERN_DEBUG "%s: I/O #9 passed!\n", dev->name)); PRINTK2((KERN_DEBUG "%s: I/O #9 passed!\n", dev->name));
/* DMA is not supported (yet?), so no use detecting it */ /* DMA is not supported (yet?), so no use detecting it */
...@@ -334,7 +330,7 @@ static int __init ni5010_probe1(struct net_device *dev, int ioaddr) ...@@ -334,7 +330,7 @@ static int __init ni5010_probe1(struct net_device *dev, int ioaddr)
outw(0, IE_GP); /* Point GP at start of packet */ outw(0, IE_GP); /* Point GP at start of packet */
outb(0, IE_RBUF); /* set buffer byte 0 to 0 again */ outb(0, IE_RBUF); /* set buffer byte 0 to 0 again */
} }
printk("// bufsize rcv/xmt=%d/%d\n", bufsize_rcv, NI5010_BUFSIZE); printk("-> bufsize rcv/xmt=%d/%d\n", bufsize_rcv, NI5010_BUFSIZE);
memset(dev->priv, 0, sizeof(struct ni5010_local)); memset(dev->priv, 0, sizeof(struct ni5010_local));
dev->open = ni5010_open; dev->open = ni5010_open;
...@@ -354,11 +350,9 @@ static int __init ni5010_probe1(struct net_device *dev, int ioaddr) ...@@ -354,11 +350,9 @@ static int __init ni5010_probe1(struct net_device *dev, int ioaddr)
outb(0xff, EDLC_XCLR); /* Kill all pending xmt interrupts */ outb(0xff, EDLC_XCLR); /* Kill all pending xmt interrupts */
printk(KERN_INFO "%s: NI5010 found at 0x%x, using IRQ %d", dev->name, ioaddr, dev->irq); printk(KERN_INFO "%s: NI5010 found at 0x%x, using IRQ %d", dev->name, ioaddr, dev->irq);
if (dev->dma) printk(" & DMA %d", dev->dma); if (dev->dma)
printk(" & DMA %d", dev->dma);
printk(".\n"); printk(".\n");
printk(KERN_INFO "Join the NI5010 driver development team!\n");
printk(KERN_INFO "Mail to a.mohr@mailto.de or jvbest@wi.leidenuniv.nl\n");
return 0; return 0;
out: out:
release_region(dev->base_addr, NI5010_IO_EXTENT); release_region(dev->base_addr, NI5010_IO_EXTENT);
...@@ -371,7 +365,7 @@ out: ...@@ -371,7 +365,7 @@ out:
* *
* This routine should set everything up anew at each open, even * This routine should set everything up anew at each open, even
* registers that "should" only need to be set once at boot, so that * registers that "should" only need to be set once at boot, so that
* there is non-reboot way to recover if something goes wrong. * there is a non-reboot way to recover if something goes wrong.
*/ */
static int ni5010_open(struct net_device *dev) static int ni5010_open(struct net_device *dev)
...@@ -390,13 +384,13 @@ static int ni5010_open(struct net_device *dev) ...@@ -390,13 +384,13 @@ static int ni5010_open(struct net_device *dev)
* Always allocate the DMA channel after the IRQ, * Always allocate the DMA channel after the IRQ,
* and clean up on failure. * and clean up on failure.
*/ */
#ifdef jumpered_dma #ifdef JUMPERED_DMA
if (request_dma(dev->dma, cardname)) { if (request_dma(dev->dma, cardname)) {
printk(KERN_WARNING "%s: Cannot get dma %#2x\n", dev->name, dev->dma); printk(KERN_WARNING "%s: Cannot get dma %#2x\n", dev->name, dev->dma);
free_irq(dev->irq, NULL); free_irq(dev->irq, NULL);
return -EAGAIN; return -EAGAIN;
} }
#endif /* jumpered_dma */ #endif /* JUMPERED_DMA */
PRINTK3((KERN_DEBUG "%s: passed open() #2\n", dev->name)); PRINTK3((KERN_DEBUG "%s: passed open() #2\n", dev->name));
/* Reset the hardware here. Don't forget to set the station address. */ /* Reset the hardware here. Don't forget to set the station address. */
...@@ -633,7 +627,7 @@ static int ni5010_close(struct net_device *dev) ...@@ -633,7 +627,7 @@ static int ni5010_close(struct net_device *dev)
int ioaddr = dev->base_addr; int ioaddr = dev->base_addr;
PRINTK2((KERN_DEBUG "%s: entering ni5010_close\n", dev->name)); PRINTK2((KERN_DEBUG "%s: entering ni5010_close\n", dev->name));
#ifdef jumpered_interrupts #ifdef JUMPERED_INTERRUPTS
free_irq(dev->irq, NULL); free_irq(dev->irq, NULL);
#endif #endif
/* Put card in held-RESET state */ /* Put card in held-RESET state */
...@@ -771,7 +765,7 @@ module_param(irq, int, 0); ...@@ -771,7 +765,7 @@ module_param(irq, int, 0);
MODULE_PARM_DESC(io, "ni5010 I/O base address"); MODULE_PARM_DESC(io, "ni5010 I/O base address");
MODULE_PARM_DESC(irq, "ni5010 IRQ number"); MODULE_PARM_DESC(irq, "ni5010 IRQ number");
int init_module(void) static int __init ni5010_init_module(void)
{ {
PRINTK2((KERN_DEBUG "%s: entering init_module\n", boardname)); PRINTK2((KERN_DEBUG "%s: entering init_module\n", boardname));
/* /*
...@@ -792,13 +786,15 @@ int init_module(void) ...@@ -792,13 +786,15 @@ int init_module(void)
return 0; return 0;
} }
void cleanup_module(void) static void __exit ni5010_cleanup_module(void)
{ {
PRINTK2((KERN_DEBUG "%s: entering cleanup_module\n", boardname)); PRINTK2((KERN_DEBUG "%s: entering cleanup_module\n", boardname));
unregister_netdev(dev_ni5010); unregister_netdev(dev_ni5010);
release_region(dev_ni5010->base_addr, NI5010_IO_EXTENT); release_region(dev_ni5010->base_addr, NI5010_IO_EXTENT);
free_netdev(dev_ni5010); free_netdev(dev_ni5010);
} }
module_init(ni5010_init_module);
module_exit(ni5010_cleanup_module);
#endif /* MODULE */ #endif /* MODULE */
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment