static int espdetach(struct esp_softc *esc) { struct ncr53c9x_softc *sc = &esc->sc_ncr53c9x; int error; bus_teardown_intr(esc->sc_dev, esc->sc_irqres, esc->sc_irq); error = ncr53c9x_detach(sc); if (error != 0) return (error); error = lsi64854_detach(esc->sc_dma); if (error != 0) return (error); NCR_LOCK_DESTROY(sc); bus_release_resource(esc->sc_dev, SYS_RES_IRQ, rman_get_rid(esc->sc_irqres), esc->sc_irqres); return (0); }
static int esp_pci_detach(device_t dev) { struct ncr53c9x_softc *sc; struct esp_pci_softc *esc; int error; esc = device_get_softc(dev); sc = &esc->sc_ncr53c9x; bus_teardown_intr(esc->sc_dev, esc->sc_res[ESP_PCI_RES_INTR], esc->sc_ih); error = ncr53c9x_detach(sc); if (error != 0) return (error); bus_dmamap_destroy(esc->sc_xferdmat, esc->sc_xferdmam); bus_dma_tag_destroy(esc->sc_xferdmat); bus_dma_tag_destroy(esc->sc_pdmat); bus_release_resources(dev, esp_pci_res_spec, esc->sc_res); NCR_LOCK_DESTROY(sc); return (0); }