summaryrefslogtreecommitdiffstats
path: root/sys/dev/sound/pci/emu10k1.c
diff options
context:
space:
mode:
authorcg <cg@FreeBSD.org>2000-09-09 19:21:04 +0000
committercg <cg@FreeBSD.org>2000-09-09 19:21:04 +0000
commita081b436a34dc6b7c3f1418e1429edbd7a31c3ff (patch)
tree916a90fe682463a47c2285b9f4bc874b6720fce7 /sys/dev/sound/pci/emu10k1.c
parentf80149566df17edb15598b2d33d559f831c5edb5 (diff)
downloadFreeBSD-src-a081b436a34dc6b7c3f1418e1429edbd7a31c3ff.zip
FreeBSD-src-a081b436a34dc6b7c3f1418e1429edbd7a31c3ff.tar.gz
detach support
remove un-needed setdir functions add bus_teardown_intr calls where necessary destroy our dma tags where necessary destroy ac97 before releasing resources
Diffstat (limited to 'sys/dev/sound/pci/emu10k1.c')
-rw-r--r--sys/dev/sound/pci/emu10k1.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/dev/sound/pci/emu10k1.c b/sys/dev/sound/pci/emu10k1.c
index d0f73d2..98d55c7 100644
--- a/sys/dev/sound/pci/emu10k1.c
+++ b/sys/dev/sound/pci/emu10k1.c
@@ -1410,7 +1410,7 @@ emu_pci_attach(device_t dev)
{
u_int32_t data;
struct sc_info *sc;
- struct ac97_info *codec;
+ struct ac97_info *codec = NULL;
int i, mapped;
char status[SND_STATUSLEN];
@@ -1496,9 +1496,11 @@ emu_pci_attach(device_t dev)
return 0;
bad:
+ if (codec) ac97_destroy(codec);
if (sc->reg) bus_release_resource(dev, sc->regtype, sc->regid, sc->reg);
if (sc->ih) bus_teardown_intr(dev, sc->irq, sc->ih);
if (sc->irq) bus_release_resource(dev, SYS_RES_IRQ, sc->irqid, sc->irq);
+ if (sc->parent_dmat) bus_dma_tag_destroy(sc->parent_dmat);
free(sc, M_DEVBUF);
return ENXIO;
}
@@ -1520,6 +1522,7 @@ emu_pci_detach(device_t dev)
bus_release_resource(dev, sc->regtype, sc->regid, sc->reg);
bus_teardown_intr(dev, sc->irq, sc->ih);
bus_release_resource(dev, SYS_RES_IRQ, sc->irqid, sc->irq);
+ bus_dma_tag_destroy(sc->parent_dmat);
free(sc, M_DEVBUF);
return 0;
OpenPOWER on IntegriCloud