lp->asBitValid = TRUE;
lp->timeout = -1;
lp->gendev = gendev;
- lp->lock = (spinlock_t) SPIN_LOCK_UNLOCKED;
+ lp->lock = SPIN_LOCK_UNLOCKED;
init_timer(&lp->timer);
de4x5_parse_params(dev);
** Re-initialize the DE4X5...
*/
status = de4x5_init(dev);
- lp->lock = (spinlock_t) SPIN_LOCK_UNLOCKED;
+ lp->lock = SPIN_LOCK_UNLOCKED;
lp->state = OPEN;
de4x5_dbg_open(dev);
return -ENODEV;
/* Ok, the device seems to be for us. */
- if (!(dev = alloc_etherdev (sizeof (struct de4x5_private))))
- return -ENOMEM;
+ if (pci_enable_device (pdev))
+ return -ENODEV;
+
+ if (!(dev = alloc_etherdev (sizeof (struct de4x5_private)))) {
+ error = -ENOMEM;
+ goto disable_dev;
+ }
lp = netdev_priv(dev);
lp->bus = PCI;
release_region (iobase, DE4X5_PCI_TOTAL_SIZE);
free_dev:
free_netdev (dev);
+ disable_dev:
+ pci_disable_device (pdev);
return error;
}
unregister_netdev (dev);
free_netdev (dev);
release_region (iobase, DE4X5_PCI_TOTAL_SIZE);
+ pci_disable_device (pdev);
}
static struct pci_device_id de4x5_pci_tbl[] = {