static int __devinit hp100_pci_probe (struct pci_dev *pdev,
const struct pci_device_id *ent)
{
- struct net_device *dev = alloc_etherdev(sizeof(struct hp100_private));
- int ioaddr = pci_resource_start(pdev, 0);
+ struct net_device *dev;
+ int ioaddr;
u_short pci_command;
int err;
-
- if (!dev)
- return -ENOMEM;
+
+ if (pci_enable_device(pdev))
+ return -ENODEV;
+
+ dev = alloc_etherdev(sizeof(struct hp100_private));
+ if (!dev) {
+ err = -ENOMEM;
+ goto out0;
+ }
SET_MODULE_OWNER(dev);
SET_NETDEV_DEV(dev, &pdev->dev);
pci_write_config_word(pdev, PCI_COMMAND, pci_command);
}
-
+ ioaddr = pci_resource_start(pdev, 0);
err = hp100_probe1(dev, ioaddr, HP100_BUS_PCI, pdev);
if (err)
goto out1;
release_region(dev->base_addr, HP100_REGION_SIZE);
out1:
free_netdev(dev);
+ out0:
+ pci_disable_device(pdev);
return err;
}
struct net_device *dev = pci_get_drvdata(pdev);
cleanup_dev(dev);
+ pci_disable_device(pdev);
}