diff options
author | Ralf Baechle <ralf@linux-mips.org> | 1997-12-06 23:51:34 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 1997-12-06 23:51:34 +0000 |
commit | 230e5ab6a084ed50470f101934782dbf54b0d06b (patch) | |
tree | 5dd821c8d33f450470588e7a543f74bf74306e9e /drivers/net/ne.c | |
parent | c9b1c8a64c6444d189856f1e26bdcb8b4cd0113a (diff) |
Merge with Linux 2.1.67.
Diffstat (limited to 'drivers/net/ne.c')
-rw-r--r-- | drivers/net/ne.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/net/ne.c b/drivers/net/ne.c index c989d1841..04cc02961 100644 --- a/drivers/net/ne.c +++ b/drivers/net/ne.c @@ -42,6 +42,7 @@ static const char *version = #include <linux/pci.h> #include <linux/bios32.h> #include <linux/init.h> +#include <linux/delay.h> #include <asm/system.h> #include <asm/io.h> @@ -77,6 +78,8 @@ pci_clone_list[] __initdata = { {PCI_VENDOR_ID_WINBOND2, PCI_DEVICE_ID_WINBOND2_89C940}, {PCI_VENDOR_ID_COMPEX, PCI_DEVICE_ID_COMPEX_RL2000}, {PCI_VENDOR_ID_KTI, PCI_DEVICE_ID_KTI_ET32P2}, + {PCI_VENDOR_ID_NETVIN, PCI_DEVICE_ID_NETVIN_NV5000SC}, + {PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C926}, {0,} }; #endif @@ -408,6 +411,7 @@ __initfunc(static int ne_probe1(struct device *dev, int ioaddr)) outb_p(0x00, ioaddr + EN0_RCNTLO); outb_p(0x00, ioaddr + EN0_RCNTHI); outb_p(E8390_RREAD+E8390_START, ioaddr); /* Trigger it... */ + udelay(10000); /* wait 10ms for interrupt to propagate */ outb_p(0x00, ioaddr + EN0_IMR); /* Mask it again. */ dev->irq = autoirq_report(0); if (ei_debug > 2) @@ -425,7 +429,8 @@ __initfunc(static int ne_probe1(struct device *dev, int ioaddr)) /* Snarf the interrupt now. There's no point in waiting since we cannot share and the board will usually be enabled. */ { - int irqval = request_irq(dev->irq, ei_interrupt, SA_INTERRUPT, name, NULL); + int irqval = request_irq(dev->irq, ei_interrupt, + pci_irq_line ? SA_SHIRQ : 0, name, dev); if (irqval) { printk (" unable to get IRQ %d (irqval=%d).\n", dev->irq, irqval); return EAGAIN; @@ -437,7 +442,7 @@ __initfunc(static int ne_probe1(struct device *dev, int ioaddr)) /* Allocate dev->priv and fill in 8390 specific dev fields. */ if (ethdev_init(dev)) { printk (" unable to get memory for dev->priv.\n"); - free_irq(dev->irq, NULL); + free_irq(dev->irq, dev); return -ENOMEM; } @@ -782,8 +787,7 @@ cleanup_module(void) if (dev->priv != NULL) { kfree(dev->priv); dev->priv = NULL; - free_irq(dev->irq, NULL); - irq2dev_map[dev->irq] = NULL; + free_irq(dev->irq, dev); release_region(dev->base_addr, NE_IO_EXTENT); unregister_netdev(dev); } |