diff options
author | mav <mav@FreeBSD.org> | 2009-02-18 21:12:48 +0000 |
---|---|---|
committer | mav <mav@FreeBSD.org> | 2009-02-18 21:12:48 +0000 |
commit | d65edba75b0491010c980ca1f916473970fd0a6c (patch) | |
tree | 44270e1ad0da644763c3bb04a7f42172e8bdfec3 /sys/dev/ata | |
parent | 06c33a48b84173fe2b0b5f18a3505bf0f0d9ec04 (diff) | |
download | FreeBSD-src-d65edba75b0491010c980ca1f916473970fd0a6c.zip FreeBSD-src-d65edba75b0491010c980ca1f916473970fd0a6c.tar.gz |
Make ch->dma.free() called symmetrically to ch->dma.alloc().
Diffstat (limited to 'sys/dev/ata')
-rw-r--r-- | sys/dev/ata/ata-all.c | 5 | ||||
-rw-r--r-- | sys/dev/ata/ata-pci.c | 3 |
2 files changed, 5 insertions, 3 deletions
diff --git a/sys/dev/ata/ata-all.c b/sys/dev/ata/ata-all.c index 228ee1d..0bda321 100644 --- a/sys/dev/ata/ata-all.c +++ b/sys/dev/ata/ata-all.c @@ -186,6 +186,11 @@ ata_detach(device_t dev) bus_teardown_intr(dev, ch->r_irq, ch->ih); bus_release_resource(dev, SYS_RES_IRQ, ATA_IRQ_RID, ch->r_irq); ch->r_irq = NULL; + + /* free DMA resources if DMA HW present*/ + if (ch->dma.free) + ch->dma.free(dev); + mtx_destroy(&ch->state_mtx); mtx_destroy(&ch->queue_mtx); return 0; diff --git a/sys/dev/ata/ata-pci.c b/sys/dev/ata/ata-pci.c index 68c209f..cbec410 100644 --- a/sys/dev/ata/ata-pci.c +++ b/sys/dev/ata/ata-pci.c @@ -544,14 +544,11 @@ ata_pcichannel_attach(device_t dev) static int ata_pcichannel_detach(device_t dev) { - struct ata_channel *ch = device_get_softc(dev); int error; if ((error = ata_detach(dev))) return error; - ch->dma.free(dev); - /* XXX SOS free resources for io and ctlio ?? */ return 0; |