static int ig4iic_pci_detach(device_t dev) { ig4iic_softc_t *sc = device_get_softc(dev); int error; if (sc->pci_attached) { error = ig4iic_detach(sc); if (error) return error; sc->pci_attached = 0; } if (sc->intr_res) { bus_release_resource(dev, SYS_RES_IRQ, sc->intr_rid, sc->intr_res); sc->intr_res = NULL; } if (sc->intr_type == PCI_INTR_TYPE_MSI) pci_release_msi(dev); if (sc->regs_res) { bus_release_resource(dev, SYS_RES_MEMORY, sc->regs_rid, sc->regs_res); sc->regs_res = NULL; } sc->regs_t = 0; sc->regs_h = 0; lockuninit(&sc->lk); return 0; }
static int ig4iic_acpi_detach(device_t dev) { ig4iic_softc_t *sc = device_get_softc(dev); int error; if (sc->pci_attached) { error = ig4iic_detach(sc); if (error) return error; sc->pci_attached = 0; } if (sc->intr_res) { bus_release_resource(dev, SYS_RES_IRQ, sc->intr_rid, sc->intr_res); sc->intr_res = NULL; } if (sc->regs_res) { bus_release_resource(dev, SYS_RES_MEMORY, sc->regs_rid, sc->regs_res); sc->regs_res = NULL; } sc->regs_t = 0; sc->regs_h = 0; pci_set_powerstate(dev, PCI_POWERSTATE_D3); return 0; }