summaryrefslogtreecommitdiffstats
path: root/drivers/net/eth16i.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/eth16i.c')
-rw-r--r--drivers/net/eth16i.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/drivers/net/eth16i.c b/drivers/net/eth16i.c
index 74cf38d50..fa5ae74e4 100644
--- a/drivers/net/eth16i.c
+++ b/drivers/net/eth16i.c
@@ -434,7 +434,7 @@ __initfunc(static int eth16i_probe1(struct device *dev, short ioaddr))
dev->irq = irq;
/* Try to obtain interrupt vector */
- if(request_irq(dev->irq, &eth16i_interrupt, 0, "eth16i", NULL)) {
+ if(request_irq(dev->irq, &eth16i_interrupt, 0, "eth16i", dev)) {
printk("%s: %s at %#3x, but is unusable due
conflict on IRQ %d.\n", dev->name, cardname, ioaddr, irq);
return EAGAIN;
@@ -807,8 +807,6 @@ static int eth16i_open(struct device *dev)
struct eth16i_local *lp = (struct eth16i_local *)dev->priv;
int ioaddr = dev->base_addr;
- irq2dev_map[dev->irq] = dev;
-
/* Powerup the chip */
outb(0xc0 | POWERUP, ioaddr + CONFIG_REG_1);
@@ -1106,7 +1104,7 @@ static void eth16i_rx(struct device *dev)
static void eth16i_interrupt(int irq, void *dev_id, struct pt_regs *regs)
{
- struct device *dev = (struct device *)(irq2dev_map[irq]);
+ struct device *dev = dev_id;
struct eth16i_local *lp;
int ioaddr = 0,
status;
@@ -1227,8 +1225,7 @@ int init_module(void)
void cleanup_module(void)
{
unregister_netdev( &dev_eth16i );
- free_irq( dev_eth16i.irq, NULL );
- irq2dev_map[ dev_eth16i.irq ] = NULL;
+ free_irq( dev_eth16i.irq, &dev_eth16i );
release_region( dev_eth16i.base_addr, ETH16I_IO_EXTENT );
}