int pgt_cardbus_detach(struct device *self, int flags) { struct pgt_cardbus_softc *csc = (struct pgt_cardbus_softc *)self; struct pgt_softc *sc = &csc->sc_pgt; cardbus_devfunc_t ct = csc->sc_ct; cardbus_chipset_tag_t cc = ct->ct_cc; cardbus_function_tag_t cf = ct->ct_cf; int error; error = pgt_detach(sc); if (error != 0) return (error); /* unhook the interrupt handler */ if (csc->sc_ih != NULL) { cardbus_intr_disestablish(cc, cf, csc->sc_ih); csc->sc_ih = NULL; } /* release bus space and close window */ Cardbus_mapreg_unmap(ct, CARDBUS_BASE0_REG, sc->sc_iotag, sc->sc_iohandle, csc->sc_mapsize); return (0); }
int pgt_pci_detach(struct device *self, int flags) { struct pgt_pci_softc *psc = (struct pgt_pci_softc *)self; struct pgt_softc *sc = &psc->sc_pgt; if (psc->sc_ih != NULL) { pgt_detach(sc); pci_intr_disestablish(psc->sc_pc, psc->sc_ih); } if (psc->sc_mapsize > 0) bus_space_unmap(sc->sc_iotag, sc->sc_iohandle, psc->sc_mapsize); return (0); }