diff options
author | smpatel <smpatel@FreeBSD.org> | 1996-04-08 19:40:57 +0000 |
---|---|---|
committer | smpatel <smpatel@FreeBSD.org> | 1996-04-08 19:40:57 +0000 |
commit | 9739208301bc36d96e6ef8313564ffab2b3f9672 (patch) | |
tree | 04abd4e981231946f91239e5c13892fc0164eae0 /sys/i386/isa | |
parent | 6b740ac6e985dfbea2d7e3601a151a088b4bb8c0 (diff) | |
download | FreeBSD-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/i386/isa')
-rw-r--r-- | sys/i386/isa/asc.c | 6 | ||||
-rw-r--r-- | sys/i386/isa/fd.c | 4 | ||||
-rw-r--r-- | sys/i386/isa/gsc.c | 5 | ||||
-rw-r--r-- | sys/i386/isa/wt.c | 6 |
4 files changed, 18 insertions, 3 deletions
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); } |