summaryrefslogtreecommitdiffstats
path: root/sys/amd64
diff options
context:
space:
mode:
authorbde <bde@FreeBSD.org>1998-07-19 04:22:55 +0000
committerbde <bde@FreeBSD.org>1998-07-19 04:22:55 +0000
commit39d6cd07510cbf302ddec744ac2c83e4f62e63c8 (patch)
tree15805b91f1e13757f092ef35d76e4702ee5df92c /sys/amd64
parent769444bdb4af6d54e79fb5d2e3b1fb9764bb1c80 (diff)
downloadFreeBSD-src-39d6cd07510cbf302ddec744ac2c83e4f62e63c8.zip
FreeBSD-src-39d6cd07510cbf302ddec744ac2c83e4f62e63c8.tar.gz
Stop physical DMA for the non-auto case in isa_dmadone(). This fixes a
small part of a bug suite beginning in the SLICE probes but mostly in the floppy driver. This is a quick fix: the auto case shouldn't be special; DMA should also be stopped in isa_dma_release(); isa_dmastop() probably shouldn't exist; common DMA registers should not be accessed without locking.
Diffstat (limited to 'sys/amd64')
-rw-r--r--sys/amd64/isa/isa.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/amd64/isa/isa.c b/sys/amd64/isa/isa.c
index 9e67efc..f878655 100644
--- a/sys/amd64/isa/isa.c
+++ b/sys/amd64/isa/isa.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)isa.c 7.2 (Berkeley) 5/13/91
- * $Id: isa.c,v 1.111 1998/02/06 12:13:17 eivind Exp $
+ * $Id: isa.c,v 1.112 1998/04/17 22:36:36 des Exp $
*/
/*
@@ -868,6 +868,8 @@ isa_dmadone(int flags, caddr_t addr, int nbytes, int chan)
(dma_auto_mode & (1 << chan)) == 0 )
printf("isa_dmadone: channel %d not busy\n", chan);
+ if ((dma_auto_mode & (1 << chan)) == 0)
+ outb(chan & 4 ? DMA2_SMSK : DMA1_SMSK, (chan & 3) | 4);
if (dma_bounced & (1 << chan)) {
/* copy bounce buffer on read */
OpenPOWER on IntegriCloud