Esempio n. 1
0
static void spec_remove(struct pci_dev *pdev)
{
    int i;
    struct spec_dev *dev = pci_get_drvdata(pdev);
    unsigned int minor = MINOR(dev->cdev.dev);

    if (dev->bus_registered)
        wb_unregister_bus(&dev->wb_bus);

    device_destroy(spec_class, MKDEV(spec_major, minor));

    cdev_del(&dev->cdev);

    if (dev->flags & SPEC_FLAG_IRQREQUEST)
        free_irq(pdev->irq, dev);
    /* FIXME: Reenable if we are shared */

    for (i = 0; i < 3; i++)
        iounmap(dev->remap[i]);
    release_firmware(dev->fw);
    pci_release_regions(pdev);
    pci_disable_device(pdev);
    vfree(dev->dmabuf);
    kfree(dev);
}
Esempio n. 2
0
static void __exit fake_wb_bus_exit(void)
{
	wb_unregister_bus(&fake_wb_bus);
	release_firmware(wb_fw);
	device_unregister(&fake_wbbus_device);
}