コード例 #1
0
ファイル: iicoc.c プロジェクト: cyrilmagsuci/freebsd
static int
iicoc_detach(device_t dev)
{
	bus_generic_detach(dev);
	device_delete_children(dev);

	return (0);
}
コード例 #2
0
ファイル: avila_gpio.c プロジェクト: Alkzndr/freebsd
static int
avila_gpio_detach(device_t dev)
{

	bus_generic_detach(dev);

	return(0);
}
コード例 #3
0
ファイル: intel_iic.c プロジェクト: kwitaszczyk/freebsd
static int
intel_iicbb_detach(device_t idev)
{

	bus_generic_detach(idev);
	device_delete_children(idev);

	return (0);
}
コード例 #4
0
ファイル: isa_pci.c プロジェクト: MarginC/kame
static int
isab_detach(device_t dev)
{
    struct isab_softc *sc = device_get_softc(dev);

    if (sc->elcr_res != NULL)
        bus_release_resource(dev, SYS_RES_IOPORT, 0, sc->elcr_res);

    return (bus_generic_detach(dev));
}
コード例 #5
0
ファイル: pst-pci.c プロジェクト: Alkzndr/freebsd
static int
iop_pci_detach(device_t dev)
{
    struct iop_softc *sc = device_get_softc(dev);

    bus_teardown_intr(dev, sc->r_irq, sc->handle);
    bus_release_resource(dev, SYS_RES_IRQ, 0x00, sc->r_irq);
    bus_release_resource(dev, SYS_RES_MEMORY, 0x10, sc->r_mem);
    return bus_generic_detach(dev);
}
コード例 #6
0
ファイル: iicbus.c プロジェクト: JabirTech/Source
static int
iicbus_detach(device_t dev)
{
	struct iicbus_softc *sc = IICBUS_SOFTC(dev);

	iicbus_reset(dev, IIC_FASTEST, 0, NULL);
	bus_generic_detach(dev);
	mtx_destroy(&sc->lock);
	return (0);
}
コード例 #7
0
ファイル: atombios_i2c.c プロジェクト: coyizumi/cs111
static int
radeon_atom_hw_i2c_detach(device_t dev)
{
	/* detach bit-banding code. */
	bus_generic_detach(dev);

	/* delete bit-banding code. */
	device_delete_children(dev);
	return (0);
}
コード例 #8
0
ファイル: gpiobus.c プロジェクト: fengsi/freebsd
int
gpiobus_detach_bus(device_t dev)
{

#ifdef FDT
	ofw_gpiobus_unregister_provider(dev);
#endif

	return (bus_generic_detach(dev));
}
コード例 #9
0
ファイル: if_kr.c プロジェクト: edgar-pek/PerspicuOS
static int
kr_detach(device_t dev)
{
	struct kr_softc		*sc = device_get_softc(dev);
	struct ifnet		*ifp = sc->kr_ifp;

	KASSERT(mtx_initialized(&sc->kr_mtx), ("vr mutex not initialized"));

	/* These should only be active if attach succeeded */
	if (device_is_attached(dev)) {
		KR_LOCK(sc);
		sc->kr_detach = 1;
		kr_stop(sc);
		KR_UNLOCK(sc);
		taskqueue_drain(taskqueue_swi, &sc->kr_link_task);
		ether_ifdetach(ifp);
	}
	if (sc->kr_miibus)
		device_delete_child(dev, sc->kr_miibus);
	bus_generic_detach(dev);

	if (sc->kr_rx_intrhand)
		bus_teardown_intr(dev, sc->kr_rx_irq, sc->kr_rx_intrhand);
	if (sc->kr_rx_irq)
		bus_release_resource(dev, SYS_RES_IRQ, 0, sc->kr_rx_irq);
	if (sc->kr_tx_intrhand)
		bus_teardown_intr(dev, sc->kr_tx_irq, sc->kr_tx_intrhand);
	if (sc->kr_tx_irq)
		bus_release_resource(dev, SYS_RES_IRQ, 0, sc->kr_tx_irq);
	if (sc->kr_rx_und_intrhand)
		bus_teardown_intr(dev, sc->kr_rx_und_irq, 
		    sc->kr_rx_und_intrhand);
	if (sc->kr_rx_und_irq)
		bus_release_resource(dev, SYS_RES_IRQ, 0, sc->kr_rx_und_irq);
	if (sc->kr_tx_ovr_intrhand)
		bus_teardown_intr(dev, sc->kr_tx_ovr_irq, 
		    sc->kr_tx_ovr_intrhand);
	if (sc->kr_tx_ovr_irq)
		bus_release_resource(dev, SYS_RES_IRQ, 0, sc->kr_tx_ovr_irq);

	if (sc->kr_res)
		bus_release_resource(dev, SYS_RES_MEMORY, sc->kr_rid, 
		    sc->kr_res);

	if (ifp)
		if_free(ifp);

	kr_dma_free(sc);

	mtx_destroy(&sc->kr_mtx);

	return (0);

}
コード例 #10
0
ファイル: smbus.c プロジェクト: Gwenio/DragonFlyBSD
static int
smbus_detach(device_t dev)
{
	int error;

	error = bus_generic_detach(dev);
	if (error)
		return (error);

	return (0);
}
コード例 #11
0
ファイル: mii.c プロジェクト: AhmadTux/DragonFlyBSD
int
miibus_detach(device_t dev)
{
	struct mii_data		*mii;

	bus_generic_detach(dev);
	mii = device_get_softc(dev);
	ifmedia_removeall(&mii->mii_media);
	mii->mii_ifp = NULL;

	return(0);
}
コード例 #12
0
static int cuda_detach(device_t dev) {
	struct cuda_softc *sc;

	sc = device_get_softc(dev);

	bus_teardown_intr(dev, sc->sc_irq, sc->sc_ih);
	bus_release_resource(dev, SYS_RES_IRQ, sc->sc_irqrid, sc->sc_irq);
	bus_release_resource(dev, SYS_RES_MEMORY, sc->sc_memrid, sc->sc_memr);
	mtx_destroy(&sc->sc_mutex);

	return (bus_generic_detach(dev));
}
コード例 #13
0
ファイル: rt305x_ic.c プロジェクト: coyizumi/cs111
static int
rt305x_ic_detach(device_t dev)
{
	struct rt305x_ic_softc *sc = device_get_softc(dev);

	bus_generic_detach(dev);

	if (sc->mem_res)
		bus_release_resource(dev, SYS_RES_MEMORY, sc->mem_rid,
		    sc->mem_res);
	return(0);
}
コード例 #14
0
ファイル: fwohci_pci.c プロジェクト: edgar-pek/PerspicuOS
static int
fwohci_pci_detach(device_t self)
{
	fwohci_softc_t *sc = device_get_softc(self);
	int s;


	s = splfw();

	if (sc->bsr)
		fwohci_stop(sc, self);

	bus_generic_detach(self);
	if (sc->fc.bdev) {
		device_delete_child(self, sc->fc.bdev);
		sc->fc.bdev = NULL;
	}

	/* disable interrupts that might have been switched on */
	if (sc->bst && sc->bsh)
		bus_space_write_4(sc->bst, sc->bsh,
				  FWOHCI_INTMASKCLR, OHCI_INT_EN);

	if (sc->irq_res) {
		int err;
		if (sc->ih) {
			err = bus_teardown_intr(self, sc->irq_res, sc->ih);
			if (err)
				device_printf(self,
					 "Could not tear down irq, %d\n", err);
#if defined(__DragonFly__) || __FreeBSD_version < 500000
			bus_teardown_intr(self, sc->irq_res, sc->ih_cam);
			bus_teardown_intr(self, sc->irq_res, sc->ih_bio);
#endif
			sc->ih = NULL;
		}
		bus_release_resource(self, SYS_RES_IRQ, 0, sc->irq_res);
		sc->irq_res = NULL;
	}

	if (sc->bsr) {
		bus_release_resource(self, SYS_RES_MEMORY,PCI_CBMEM,sc->bsr);
		sc->bsr = NULL;
		sc->bst = 0;
		sc->bsh = 0;
	}

	fwohci_detach(sc, self);
	mtx_destroy(FW_GMTX(&sc->fc));
	splx(s);

	return 0;
}
コード例 #15
0
ファイル: sbc.c プロジェクト: edgar-pek/PerspicuOS
static int
sbc_detach(device_t dev)
{
	struct sbc_softc *scp = device_get_softc(dev);

	sbc_lock(scp);
	device_delete_child(dev, scp->child_midi2);
	device_delete_child(dev, scp->child_midi1);
	device_delete_child(dev, scp->child_pcm);
	release_resource(scp);
	sbc_lockdestroy(scp);
	return bus_generic_detach(dev);
}
コード例 #16
0
ファイル: ips.c プロジェクト: FreeBSDFoundation/freebsd
static int ips_diskdev_free(ips_softc_t *sc)
{
	int i;
	int error = 0;
	for(i = 0; i < IPS_MAX_NUM_DRIVES; i++){
		if(sc->diskdev[i])
			error = device_delete_child(sc->dev, sc->diskdev[i]);
			if(error)
				return error;
	}
	bus_generic_detach(sc->dev);
	return 0;
}
コード例 #17
0
ファイル: cambria_gpio.c プロジェクト: BillTheBest/libuinet
static int
cambria_gpio_detach(device_t dev)
{
	struct cambria_gpio_softc *sc = device_get_softc(dev);

	KASSERT(mtx_initialized(&sc->sc_mtx), ("gpio mutex not initialized"));

	bus_generic_detach(dev);

	mtx_destroy(&sc->sc_mtx);

	return(0);
}
コード例 #18
0
static int
smbus_detach(device_t dev)
{
	struct smbus_softc *sc = device_get_softc(dev);
	int error;

	error = bus_generic_detach(dev);
	if (error)
		return (error);
	mtx_destroy(&sc->lock);

	return (0);
}
コード例 #19
0
ファイル: gpioc.c プロジェクト: 2asoft/freebsd
static int
gpioc_detach(device_t dev)
{
	struct gpioc_softc *sc = device_get_softc(dev);
	int err;

	if (sc->sc_ctl_dev)
		destroy_dev(sc->sc_ctl_dev);

	if ((err = bus_generic_detach(dev)) != 0)
		return (err);

	return (0);
}
コード例 #20
0
static int
at91_cfata_detach(device_t dev)
{
	struct at91_cfata_softc *sc;

	sc = device_get_softc(dev);
	bus_generic_detach(sc->dev);
	if (sc->mem_res != NULL) {
		bus_release_resource(dev, SYS_RES_MEMORY,
		    rman_get_rid(sc->mem_res), sc->mem_res);
		sc->mem_res = NULL;
	}
	return (0);
}
コード例 #21
0
ファイル: gpiobus.c プロジェクト: jp629/freebsd
int
gpiobus_detach_bus(device_t dev)
{
	int err;

#ifdef FDT
	ofw_gpiobus_unregister_provider(dev);
#endif
	err = bus_generic_detach(dev);
	if (err != 0)
		return (err);

	return (device_delete_children(dev));
}
コード例 #22
0
ファイル: nandbus.c プロジェクト: ele7enxxh/dtrace-pf
static int
nandbus_detach(device_t dev)
{
	struct nandbus_softc *sc;

	sc = device_get_softc(dev);

	bus_generic_detach(dev);

	mtx_destroy(&sc->nandbus_mtx);
	cv_destroy(&sc->nandbus_cv);

	return (0);
}
コード例 #23
0
ファイル: intpm.c プロジェクト: RichardsonAlex/cheribsd
static int
intsmb_detach(device_t dev)
{
	int error;

	error = bus_generic_detach(dev);
	if (error) {
		device_printf(dev, "bus detach failed\n");
		return (error);
	}

	intsmb_release_resources(dev);
	return (0);
}
コード例 #24
0
ファイル: ichsmb.c プロジェクト: JabirTech/Source
int
ichsmb_detach(device_t dev)
{
	const sc_p sc = device_get_softc(dev);
	int error;

	error = bus_generic_detach(dev);
	if (error)
		return (error);
	device_delete_child(dev, sc->smb);
	ichsmb_release_resources(sc);
	mtx_destroy(&sc->mutex);
	
	return 0;
}
コード例 #25
0
ファイル: cardbus.c プロジェクト: 2asoft/freebsd
static int
cardbus_detach_card(device_t cbdev)
{
	int err = 0;

	err = bus_generic_detach(cbdev);
	if (err)
		return (err);
	err = device_delete_children(cbdev);
	if (err)
		return (err);

	POWER_DISABLE_SOCKET(device_get_parent(cbdev), cbdev);
	return (err);
}
コード例 #26
0
static int
coremctl_detach(device_t dev)
{
    struct coremctl_softc *sc = device_get_softc(dev);

    if (sc->sc_ecc != NULL)
        device_delete_child(dev, sc->sc_ecc);
    if (sc->sc_temp != NULL)
        device_delete_child(dev, sc->sc_temp);
    bus_generic_detach(dev);

    if (sc->sc_mch != NULL)
        pmap_unmapdev((vm_offset_t)sc->sc_mch, MCH_CORE_SIZE);
    return 0;
}
コード例 #27
0
ファイル: ismt.c プロジェクト: 2asoft/freebsd
static int
ismt_detach(device_t dev)
{
	struct ismt_softc	*sc;
	int			error;

	ISMT_DEBUG(dev, "%s\n", __func__);
	sc = device_get_softc(dev);

	error = bus_generic_detach(dev);
	if (error)
		return (error);

	device_delete_child(dev, sc->smbdev);

	if (sc->intr_handle != NULL) {
		bus_teardown_intr(dev, sc->intr_res, sc->intr_handle);
		sc->intr_handle = NULL;
	}
	if (sc->intr_res != NULL) {
		bus_release_resource(dev,
		    SYS_RES_IRQ, sc->intr_rid, sc->intr_res);
		sc->intr_res = NULL;
	}
	if (sc->using_msi == 1)
		pci_release_msi(dev);

	if (sc->mmio_res != NULL) {
		bus_release_resource(dev,
		    SYS_RES_MEMORY, sc->mmio_rid, sc->mmio_res);
		sc->mmio_res = NULL;
	}

	bus_dmamap_unload(sc->desc_dma_tag, sc->desc_dma_map);
	bus_dmamap_unload(sc->dma_buffer_dma_tag, sc->dma_buffer_dma_map);

	bus_dmamem_free(sc->desc_dma_tag, sc->desc,
	    sc->desc_dma_map);
	bus_dmamem_free(sc->dma_buffer_dma_tag, sc->dma_buffer,
	    sc->dma_buffer_dma_map);

	bus_dma_tag_destroy(sc->desc_dma_tag);
	bus_dma_tag_destroy(sc->dma_buffer_dma_tag);

	pci_disable_busmaster(dev);

	return 0;
}
コード例 #28
0
ファイル: spibus.c プロジェクト: Digital-Chaos/freebsd
/*
 * Since this is not a self-enumerating bus, and since we always add
 * children in attach, we have to always delete children here.
 */
static int
spibus_detach(device_t dev)
{
	int err, ndevs, i;
	device_t *devlist;

	if ((err = bus_generic_detach(dev)) != 0)
		return (err);
	if ((err = device_get_children(dev, &devlist, &ndevs)) != 0)
		return (err);
	for (i = 0; i < ndevs; i++)
		device_delete_child(dev, devlist[i]);
	free(devlist, M_TEMP);

	return (0);
}
コード例 #29
0
ファイル: tegra_rtc.c プロジェクト: 2trill2spill/freebsd
static int
tegra_rtc_detach(device_t dev)
{
	struct tegra_rtc_softc *sc;

	sc = device_get_softc(dev);
	if (sc->irq_h != NULL)
		bus_teardown_intr(dev, sc->irq_res, sc->irq_h);
	if (sc->irq_res != NULL)
		bus_release_resource(dev, SYS_RES_IRQ, 0, sc->irq_res);
	if (sc->mem_res != NULL)
		bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->mem_res);

	LOCK_DESTROY(sc);
	return (bus_generic_detach(dev));
}
コード例 #30
0
static int
lebuffer_detach(device_t dev)
{
	device_t *children;
	int i, nchildren;

	bus_generic_detach(dev);
	if (device_get_children(dev, &children, &nchildren) == 0) {
		for (i = 0; i < nchildren; i++) {
			lebuffer_destroy_dinfo(device_get_ivars(children[i]));
			device_delete_child(dev, children[i]);
		}
		free(children, M_TEMP);
	}
	return (0);
}