don't know what reg points to, but it's not an mblok
[unix-history] / usr / src / sys / tahoe / vba / ik.c
index 72f839e..e6f59e5 100644 (file)
@@ -1,4 +1,4 @@
-/*     ik.c    1.3     86/12/11        */
+/*     ik.c    1.5     86/12/23        */
 
 #include "ik.h"
 #if NIK > 0
 
 #include "ik.h"
 #if NIK > 0
@@ -53,7 +53,7 @@ struct        ik_softc {
                u_short w[2];
                u_long  l;
        } is_nameaddr;          /* address of last symbol lookup */
                u_short w[2];
                u_long  l;
        } is_nameaddr;          /* address of last symbol lookup */
-       caddr_t is_buf;         /* i/o buffer XXX */
+       caddr_t is_buf[PS_MAXDMA];/* i/o buffer XXX */
 } ik_softc[NIK];
 
 struct buf iktab[NIK];         /* unit command queue headers */
 } ik_softc[NIK];
 
 struct buf iktab[NIK];         /* unit command queue headers */
@@ -73,15 +73,17 @@ ikprobe(reg, vi)
        register int br, cvec;          /* r12, r11 */
        register struct ikdevice *ik;
 
        register int br, cvec;          /* r12, r11 */
        register struct ikdevice *ik;
 
+#ifdef lint
+       br = 0; cvec = br; br = cvec;
+       ikintr(0);
+#endif
        if (badaddr(reg, 2))
                return (0);
        ik = (struct ikdevice *)reg;
        ik->ik_vec = --vi->ui_hd->vh_lastiv;
        /*
        if (badaddr(reg, 2))
                return (0);
        ik = (struct ikdevice *)reg;
        ik->ik_vec = --vi->ui_hd->vh_lastiv;
        /*
-        * Use extended non-privileged address modifier to
-        * insure DMA to/from intermediate buffer works when
-        * buffer is not in lower 16Mb of memory (also avoids
-        * other 24-bit devices mapped into overlapping regions).
+        * Use extended non-privileged address modifier
+        * to avoid address overlap with 24-bit devices.
         */
        ik->ik_mod = 0xf1;                      /* address modifier */
        /*
         */
        ik->ik_mod = 0xf1;                      /* address modifier */
        /*
@@ -137,14 +139,11 @@ ikopen(dev, flag)
        if (unit >= NIK || (vi = ikinfo[unit]) == 0 || vi->ui_alive == 0)
                return (ENXIO);
        sc = &ik_softc[unit];
        if (unit >= NIK || (vi = ikinfo[unit]) == 0 || vi->ui_alive == 0)
                return (ENXIO);
        sc = &ik_softc[unit];
-       if (sc->is_uid != -1 && sc->is_uid != u.u_uid)
+       if (sc->is_uid != (uid_t)-1 && sc->is_uid != u.u_uid)
                return (EBUSY);
                return (EBUSY);
-       if (sc->is_uid == -1) {
-               sc->is_buf = (caddr_t)wmemall(vmemall, PS_MAXDMA);
-               if (sc->is_buf == 0)
-                       return (ENOMEM);
+       if (sc->is_uid == (uid_t)-1) {
                sc->is_timeout = 0;
                sc->is_timeout = 0;
-               timeout(iktimer, unit, hz);
+               timeout(iktimer, (caddr_t)unit, hz);
                /*
                 * Perform PS300 attach for first process.
                 */
                /*
                 * Perform PS300 attach for first process.
                 */
@@ -159,9 +158,7 @@ ikopen(dev, flag)
                                ik = (struct ikdevice *)ikinfo[unit]->ui_addr;
                                if (!reset++ && psreset(ik, 0))
                                        goto again;
                                ik = (struct ikdevice *)ikinfo[unit]->ui_addr;
                                if (!reset++ && psreset(ik, 0))
                                        goto again;
-                               untimeout(iktimer, unit);
-                               wmemfree(sc->is_buf, PS_MAXDMA);
-                               sc->is_buf = 0;
+                               untimeout(iktimer, (caddr_t)unit);
                                return (EIO);
                        }
                }
                                return (EIO);
                        }
                }
@@ -181,11 +178,7 @@ ikclose(dev, flag)
        if (!IKDIAG(dev))
                (void) ikcommand(dev, PS_DETACH, 1);    /* auto detach */
        sc->is_uid = -1;
        if (!IKDIAG(dev))
                (void) ikcommand(dev, PS_DETACH, 1);    /* auto detach */
        sc->is_uid = -1;
-       if (sc->is_buf) {
-               wmemfree(sc->is_buf, PS_MAXDMA);
-               sc->is_buf = 0;
-       }
-       untimeout(iktimer, unit);
+       untimeout(iktimer, (caddr_t)unit);
 }
 
 ikread(dev, uio)
 }
 
 ikread(dev, uio)
@@ -264,7 +257,7 @@ ikrw(dev, uio, rw)
                ap->wc = (iov->iov_len + 1) >> 1;
                if (rw == B_WRITE) {
                        error = copyin(iov->iov_base, (caddr_t)&ap[1],
                ap->wc = (iov->iov_len + 1) >> 1;
                if (rw == B_WRITE) {
                        error = copyin(iov->iov_base, (caddr_t)&ap[1],
-                           iov->iov_len);
+                           (unsigned)iov->iov_len);
                        if (!error)
                                error = ikcommand(dev, wrcmd,
                                    iov->iov_len + sizeof (*ap));
                        if (!error)
                                error = ikcommand(dev, wrcmd,
                                    iov->iov_len + sizeof (*ap));
@@ -278,7 +271,7 @@ ikrw(dev, uio, rw)
                                mtpr(P1DC, cp);
                        if (!error)
                                error = copyout((caddr_t)&ap[1], iov->iov_base,
                                mtpr(P1DC, cp);
                        if (!error)
                                error = copyout((caddr_t)&ap[1], iov->iov_base,
-                                   iov->iov_len);
+                                   (unsigned)iov->iov_len);
                }
                (void) splbio();
                if (bp->b_flags&B_WANTED)
                }
                (void) splbio();
                if (bp->b_flags&B_WANTED)
@@ -355,7 +348,6 @@ ikstart(dp)
        register struct buf *bp;
        register struct ikdevice *ik;
        register struct ik_softc *sc;
        register struct buf *bp;
        register struct ikdevice *ik;
        register struct ik_softc *sc;
-       register struct psalist *ap;
        u_short bc, csr;
        u_int addr;
        int unit;
        u_short bc, csr;
        u_int addr;
        int unit;
@@ -375,7 +367,7 @@ loop:
        unit = IKUNIT(bp->b_dev);
        sc = &ik_softc[unit];
        ik = (struct ikdevice *)ikinfo[unit]->ui_addr;
        unit = IKUNIT(bp->b_dev);
        sc = &ik_softc[unit];
        ik = (struct ikdevice *)ikinfo[unit]->ui_addr;
-       switch (bp->b_command) {
+       switch ((int)bp->b_command) {
 
        case PS_ATTACH:         /* logical unit attach */
        case PS_DETACH:         /* logical unit detach */
 
        case PS_ATTACH:         /* logical unit attach */
        case PS_DETACH:         /* logical unit detach */
@@ -387,12 +379,12 @@ loop:
                 * Handshake command and, optionally,
                 * byte count and byte swap flag.
                 */
                 * Handshake command and, optionally,
                 * byte count and byte swap flag.
                 */
-               if (sc->is_error = diowrite(ik, bp->b_command))
+               if (sc->is_error = diowrite(ik, (u_short)bp->b_command))
                        goto bad;
                if (bp->b_command < PS_DETACH) {
                        goto bad;
                if (bp->b_command < PS_DETACH) {
-                       if (sc->is_error = diowrite(ik, bp->b_bcount))
+                       if (sc->is_error = diowrite(ik, (u_short)bp->b_bcount))
                                goto bad;
                                goto bad;
-                       if (sc->is_error = diowrite(ik, 0 /* !swab */))
+                       if (sc->is_error = diowrite(ik, (u_short)0 /* !swab */))
                                goto bad;
                }
                /*
                                goto bad;
                }
                /*
@@ -417,7 +409,7 @@ loop:
                goto bad;
        }
        /* initiate dma transfer */
                goto bad;
        }
        /* initiate dma transfer */
-       addr = vtoph((struct proc *)0, sc->is_buf);
+       addr = vtoph((struct proc *)0, (unsigned)sc->is_buf);
        ik->ik_bahi = addr >> 17;
        ik->ik_balo = (addr >> 1) & 0xffff;
        ik->ik_wc = ((bc + 1) >> 1) - 1;        /* round & convert */
        ik->ik_bahi = addr >> 17;
        ik->ik_balo = (addr >> 1) & 0xffff;
        ik->ik_wc = ((bc + 1) >> 1) - 1;        /* round & convert */
@@ -433,8 +425,6 @@ bad:
 }
 
 #define FETCHWORD(i) { \
 }
 
 #define FETCHWORD(i) { \
-       int v; \
-\
        v = dioread(ik); \
        if (v == -1) { \
                sc->is_error = PSERROR_NAMETIMO; \
        v = dioread(ik); \
        if (v == -1) { \
                sc->is_error = PSERROR_NAMETIMO; \
@@ -453,7 +443,7 @@ ikintr(ikon)
        register struct buf *bp, *dp;
        struct ik_softc *sc;
        register u_short data;
        register struct buf *bp, *dp;
        struct ik_softc *sc;
        register u_short data;
-       u_short i, v;
+       int v;
 
        /* should go by controller, but for now... */
        if (ikinfo[ikon] == 0)
 
        /* should go by controller, but for now... */
        if (ikinfo[ikon] == 0)
@@ -590,7 +580,7 @@ iktimer(unit)
                }
                splx(s);
        }
                }
                splx(s);
        }
-       timeout(iktimer, unit, hz);
+       timeout(iktimer, (caddr_t)unit, hz);
 }
 
 /*
 }
 
 /*
@@ -599,10 +589,10 @@ iktimer(unit)
 dioread(ik)
        register struct ikdevice *ik;
 {
 dioread(ik)
        register struct ikdevice *ik;
 {
-       register int timeout;
+       register int t;
        u_short data;
 
        u_short data;
 
-       for (timeout = ikdiotimo; timeout > 0; timeout--)
+       for (t = ikdiotimo; t > 0; t--)
                if ((ik->ik_csr&(IKCSR_ATTF|IKCSR_STATC)) == IKCSR_ATTF) {
                        data = ik->ik_data;
                        ik->ik_csr = IKCSR_RATTF|IKCSR_RDMAF|IKCSR_FNC1;
                if ((ik->ik_csr&(IKCSR_ATTF|IKCSR_STATC)) == IKCSR_ATTF) {
                        data = ik->ik_data;
                        ik->ik_csr = IKCSR_RATTF|IKCSR_RDMAF|IKCSR_FNC1;
@@ -623,7 +613,7 @@ diowrite(ik, v)
        register struct ikdevice *ik;
        u_short v;
 {
        register struct ikdevice *ik;
        u_short v;
 {
-       register int timeout;
+       register int t;
        register u_short csr;
 
 top:
        register u_short csr;
 
 top:
@@ -633,7 +623,7 @@ top:
        ik->ik_data = v;
        ik->ik_csr = IKCSR_RDMAF|IKCSR_RATTF;
        ik->ik_pulse = IKPULSE_FNC2;
        ik->ik_data = v;
        ik->ik_csr = IKCSR_RDMAF|IKCSR_RATTF;
        ik->ik_pulse = IKPULSE_FNC2;
-       for (timeout = ikdiotimo; timeout > 0; timeout--) {
+       for (t = ikdiotimo; t > 0; t--) {
                csr = ik->ik_csr;
 #define IKCSR_DONE     (IKCSR_STATA|IKCSR_STATC)
                if ((csr&IKCSR_DONE) == IKCSR_DONE) {
                csr = ik->ik_csr;
 #define IKCSR_DONE     (IKCSR_STATA|IKCSR_STATC)
                if ((csr&IKCSR_DONE) == IKCSR_DONE) {
@@ -682,7 +672,7 @@ ikioctl(dev, cmd, data, flag)
                }
                splx(s);
                bp->b_flags = B_BUSY | B_WRITE;
                }
                splx(s);
                bp->b_flags = B_BUSY | B_WRITE;
-               error = copyin(lp->pl_name, sc->is_buf, lp->pl_len);
+               error = copyin(lp->pl_name, sc->is_buf, (unsigned)lp->pl_len);
                if (error == 0) {
                        if (lp->pl_len&1)
                                sc->is_buf[lp->pl_len] = '\0';
                if (error == 0) {
                        if (lp->pl_len&1)
                                sc->is_buf[lp->pl_len] = '\0';