BSD 4_4_Lite1 release
[unix-history] / usr / src / sys / pmax / dev / scc.c
index 6b299c6..0fca1ca 100644 (file)
@@ -33,7 +33,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- *     @(#)scc.c       8.1 (Berkeley) 6/10/93
+ *     @(#)scc.c       8.2 (Berkeley) 11/30/93
  */
 
 /* 
  */
 
 /* 
@@ -199,7 +199,6 @@ sccprobe(cp)
                pdp->p_addr = (void *)cp->pmax_addr;
                pdp->p_arg = (int)tp;
                pdp->p_fcn = (void (*)())0;
                pdp->p_addr = (void *)cp->pmax_addr;
                pdp->p_arg = (int)tp;
                pdp->p_fcn = (void (*)())0;
-               tp->t_addr = (caddr_t)pdp;
                tp->t_dev = (dev_t)((cp->pmax_unit << 1) | cntr);
                pdp++, tp++;
        }
                tp->t_dev = (dev_t)((cp->pmax_unit << 1) | cntr);
                pdp++, tp++;
        }
@@ -337,7 +336,6 @@ sccopen(dev, flag, mode, p)
        if (sc->scc_pdma[line].p_addr == (void *)0)
                return (ENXIO);
        tp = &scc_tty[minor(dev)];
        if (sc->scc_pdma[line].p_addr == (void *)0)
                return (ENXIO);
        tp = &scc_tty[minor(dev)];
-       tp->t_addr = (caddr_t)&sc->scc_pdma[line];
        tp->t_oproc = sccstart;
        tp->t_param = sccparam;
        tp->t_dev = dev;
        tp->t_oproc = sccstart;
        tp->t_param = sccparam;
        tp->t_dev = dev;
@@ -637,7 +635,7 @@ sccintr(unit)
                chan = (rr2 == SCC_RR2_A_XMIT_DONE) ?
                        SCC_CHANNEL_A : SCC_CHANNEL_B;
                tp = &scc_tty[unit | chan];
                chan = (rr2 == SCC_RR2_A_XMIT_DONE) ?
                        SCC_CHANNEL_A : SCC_CHANNEL_B;
                tp = &scc_tty[unit | chan];
-               dp = (struct pdma *)tp->t_addr;
+               dp = &sc->scc_pdma[chan];
                if (dp->p_mem < dp->p_end) {
                        SCC_WRITE_DATA(regs, chan, *dp->p_mem++);
                        MachEmptyWriteBuffer();
                if (dp->p_mem < dp->p_end) {
                        SCC_WRITE_DATA(regs, chan, *dp->p_mem++);
                        MachEmptyWriteBuffer();
@@ -776,9 +774,9 @@ sccstart(tp)
        u_char temp;
        int s, sendone;
 
        u_char temp;
        int s, sendone;
 
-       dp = (struct pdma *)tp->t_addr;
-       regs = (scc_regmap_t *)dp->p_addr;
        sc = &scc_softc[SCCUNIT(tp->t_dev)];
        sc = &scc_softc[SCCUNIT(tp->t_dev)];
+       dp = &sc->scc_pdma[SCCLINE(tp->t_dev)];
+       regs = (scc_regmap_t *)dp->p_addr;
        s = spltty();
        if (tp->t_state & (TS_TIMEOUT|TS_BUSY|TS_TTSTOP))
                goto out;
        s = spltty();
        if (tp->t_state & (TS_TIMEOUT|TS_BUSY|TS_TTSTOP))
                goto out;
@@ -857,9 +855,11 @@ sccstop(tp, flag)
        register struct tty *tp;
 {
        register struct pdma *dp;
        register struct tty *tp;
 {
        register struct pdma *dp;
+       register struct scc_softc *sc;
        register int s;
 
        register int s;
 
-       dp = (struct pdma *)tp->t_addr;
+       sc = &scc_softc[SCCUNIT(tp->t_dev)];
+       dp = &sc->scc_pdma[SCCLINE(tp->t_dev)];
        s = spltty();
        if (tp->t_state & TS_BUSY) {
                dp->p_end = dp->p_mem;
        s = spltty();
        if (tp->t_state & TS_BUSY) {
                dp->p_end = dp->p_mem;
@@ -945,8 +945,8 @@ scc_modem_intr(dev)
 
        sc = &scc_softc[SCCUNIT(dev)];
        tp = &scc_tty[minor(dev)];
 
        sc = &scc_softc[SCCUNIT(dev)];
        tp = &scc_tty[minor(dev)];
-       regs = (scc_regmap_t *)((struct pdma *)tp->t_addr)->p_addr;
        chan = SCCLINE(dev);
        chan = SCCLINE(dev);
+       regs = (scc_regmap_t *)sc->scc_pdma[chan].p_addr;
        if (chan == SCC_CHANNEL_A)
                return;
        s = spltty();
        if (chan == SCC_CHANNEL_A)
                return;
        s = spltty();