aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/tws
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2014-07-01 18:24:54 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2014-07-01 18:24:54 +0000
commit30a13db0c5109550a85e8a7e19d0d886748739cb (patch)
treeb8bec4c3a9e71c9b6e1b325dca7296977f7f87e9 /sys/dev/tws
parent81a99d38e92b6fd4db17847ef5a020c01de60e2a (diff)
Notes
Diffstat (limited to 'sys/dev/tws')
-rw-r--r--sys/dev/tws/tws.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/sys/dev/tws/tws.c b/sys/dev/tws/tws.c
index 6ebde75744484..11013cbc2b552 100644
--- a/sys/dev/tws/tws.c
+++ b/sys/dev/tws/tws.c
@@ -310,6 +310,12 @@ tws_attach(device_t dev)
attach_fail_4:
tws_teardown_intr(sc);
destroy_dev(sc->tws_cdev);
+ if (sc->dma_mem_phys)
+ bus_dmamap_unload(sc->cmd_tag, sc->cmd_map);
+ if (sc->dma_mem)
+ bus_dmamem_free(sc->cmd_tag, sc->dma_mem, sc->cmd_map);
+ if (sc->cmd_tag)
+ bus_dma_tag_destroy(sc->cmd_tag);
attach_fail_3:
for(i=0;i<sc->irqs;i++) {
if ( sc->irq_res[i] ){
@@ -383,6 +389,13 @@ tws_detach(device_t dev)
tws_cam_detach(sc);
+ if (sc->dma_mem_phys)
+ bus_dmamap_unload(sc->cmd_tag, sc->cmd_map);
+ if (sc->dma_mem)
+ bus_dmamem_free(sc->cmd_tag, sc->dma_mem, sc->cmd_map);
+ if (sc->cmd_tag)
+ bus_dma_tag_destroy(sc->cmd_tag);
+
/* Release memory resource */
if ( sc->mfa_res ){
if (bus_release_resource(sc->tws_dev,