summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorsmpatel <smpatel@FreeBSD.org>1996-04-08 19:40:57 +0000
committersmpatel <smpatel@FreeBSD.org>1996-04-08 19:40:57 +0000
commit9739208301bc36d96e6ef8313564ffab2b3f9672 (patch)
tree04abd4e981231946f91239e5c13892fc0164eae0 /sys
parent6b740ac6e985dfbea2d7e3601a151a088b4bb8c0 (diff)
downloadFreeBSD-src-9739208301bc36d96e6ef8313564ffab2b3f9672.zip
FreeBSD-src-9739208301bc36d96e6ef8313564ffab2b3f9672.tar.gz
Update drivers to use isa_dma_acquire() and isa_dma_release()
Reviewed by: bde
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/fdc/fdc.c4
-rw-r--r--sys/i386/isa/asc.c6
-rw-r--r--sys/i386/isa/fd.c4
-rw-r--r--sys/i386/isa/gsc.c5
-rw-r--r--sys/i386/isa/wt.c6
-rw-r--r--sys/isa/fd.c4
6 files changed, 24 insertions, 5 deletions
diff --git a/sys/dev/fdc/fdc.c b/sys/dev/fdc/fdc.c
index 7144602..10e38f9 100644
--- a/sys/dev/fdc/fdc.c
+++ b/sys/dev/fdc/fdc.c
@@ -43,7 +43,7 @@
* SUCH DAMAGE.
*
* from: @(#)fd.c 7.4 (Berkeley) 5/25/91
- * $Id: fd.c,v 1.85 1996/04/07 14:46:42 bde Exp $
+ * $Id: fd.c,v 1.86 1996/04/07 17:32:12 bde Exp $
*
*/
@@ -575,6 +575,8 @@ fdattach(struct isa_device *dev)
fdc->fdcu = fdcu;
fdc->flags |= FDC_ATTACHED;
fdc->dmachan = dev->id_drq;
+ /* Acquire the DMA channel forever, The driver will do the rest */
+ isa_dma_acquire(fdc->dmachan);
isa_dmainit(fdc->dmachan, 128 << 3 /* XXX max secsize */);
fdc->state = DEVIDLE;
/* reset controller, turn motor off, clear fdout mirror reg */
diff --git a/sys/i386/isa/asc.c b/sys/i386/isa/asc.c
index a6eca29..da8c7a2 100644
--- a/sys/i386/isa/asc.c
+++ b/sys/i386/isa/asc.c
@@ -34,7 +34,7 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
- * $Id: asc.c,v 1.16 1996/01/27 00:53:55 bde Exp $
+ * $Id: asc.c,v 1.17 1996/03/28 14:28:35 scrappy Exp $
*/
#include "asc.h"
@@ -604,6 +604,9 @@ ascopen(dev_t dev, int flags, int fmt, struct proc *p)
lprintf("asc%d.open: already open", unit);
return EBUSY;
}
+ if (isa_dma_acquire(scu->dma_num))
+ return(EBUSY);
+
scu->flags = ATTACHED | OPEN;
asc_reset(scu);
@@ -668,6 +671,7 @@ ascclose(dev_t dev, int flags, int fmt, struct proc *p)
scu->cfg_byte &= ~ scu->int_byte ; /* disable scanner int */
outb(ASC_CFG, scu->cfg_byte);
/* --- disable dma controller ? --- */
+ isa_dma_release(scu->dma_num);
/* --- disable interrupts on the controller (sub_24) --- */
scu->sbuf.base = NULL;
diff --git a/sys/i386/isa/fd.c b/sys/i386/isa/fd.c
index 7144602..10e38f9 100644
--- a/sys/i386/isa/fd.c
+++ b/sys/i386/isa/fd.c
@@ -43,7 +43,7 @@
* SUCH DAMAGE.
*
* from: @(#)fd.c 7.4 (Berkeley) 5/25/91
- * $Id: fd.c,v 1.85 1996/04/07 14:46:42 bde Exp $
+ * $Id: fd.c,v 1.86 1996/04/07 17:32:12 bde Exp $
*
*/
@@ -575,6 +575,8 @@ fdattach(struct isa_device *dev)
fdc->fdcu = fdcu;
fdc->flags |= FDC_ATTACHED;
fdc->dmachan = dev->id_drq;
+ /* Acquire the DMA channel forever, The driver will do the rest */
+ isa_dma_acquire(fdc->dmachan);
isa_dmainit(fdc->dmachan, 128 << 3 /* XXX max secsize */);
fdc->state = DEVIDLE;
/* reset controller, turn motor off, clear fdout mirror reg */
diff --git a/sys/i386/isa/gsc.c b/sys/i386/isa/gsc.c
index 3478f84..c92e3d0 100644
--- a/sys/i386/isa/gsc.c
+++ b/sys/i386/isa/gsc.c
@@ -600,6 +600,9 @@ gscopen (dev_t dev, int flags, int fmt, struct proc *p)
return EBUSY;
}
+ if (isa_dma_acquire(scu->channel))
+ return(EBUSY);
+
scu->flags |= OPEN;
return SUCCESS;
@@ -635,6 +638,8 @@ gscclose (dev_t dev, int flags, int fmt, struct proc *p)
scu->sbuf.size = INVALID;
scu->sbuf.poi = INVALID;
+ isa_dma_release(scu->channel);
+
scu->flags &= ~(FLAG_DEBUG | OPEN | READING);
return SUCCESS;
diff --git a/sys/i386/isa/wt.c b/sys/i386/isa/wt.c
index 26b3af6..dc4e6c9 100644
--- a/sys/i386/isa/wt.c
+++ b/sys/i386/isa/wt.c
@@ -20,7 +20,7 @@
* the original CMU copyright notice.
*
* Version 1.3, Thu Nov 11 12:09:13 MSK 1993
- * $Id: wt.c,v 1.30 1996/02/22 00:31:48 joerg Exp $
+ * $Id: wt.c,v 1.31 1996/03/28 14:28:55 scrappy Exp $
*
*/
@@ -392,6 +392,9 @@ wtopen (dev_t dev, int flag, int fmt, struct proc *p)
if (! t->buf)
return (EAGAIN);
+ if (isa_dma_acquire(t->chan))
+ return(EBUSY);
+
t->flags = TPINUSE;
kdc_wt[u].kdc_state = DC_BUSY;
@@ -445,6 +448,7 @@ done:
t->flags &= TPREW | TPRMARK | TPSTART | TPTIMER;
kdc_wt[u].kdc_state = DC_IDLE;
free (t->buf, M_TEMP);
+ isa_dma_release(t->chan);
return (0);
}
diff --git a/sys/isa/fd.c b/sys/isa/fd.c
index 7144602..10e38f9 100644
--- a/sys/isa/fd.c
+++ b/sys/isa/fd.c
@@ -43,7 +43,7 @@
* SUCH DAMAGE.
*
* from: @(#)fd.c 7.4 (Berkeley) 5/25/91
- * $Id: fd.c,v 1.85 1996/04/07 14:46:42 bde Exp $
+ * $Id: fd.c,v 1.86 1996/04/07 17:32:12 bde Exp $
*
*/
@@ -575,6 +575,8 @@ fdattach(struct isa_device *dev)
fdc->fdcu = fdcu;
fdc->flags |= FDC_ATTACHED;
fdc->dmachan = dev->id_drq;
+ /* Acquire the DMA channel forever, The driver will do the rest */
+ isa_dma_acquire(fdc->dmachan);
isa_dmainit(fdc->dmachan, 128 << 3 /* XXX max secsize */);
fdc->state = DEVIDLE;
/* reset controller, turn motor off, clear fdout mirror reg */
OpenPOWER on IntegriCloud