name changes
[unix-history] / usr / src / sys / vax / uba / dz.c
index f5fe161..5456799 100644 (file)
@@ -1,4 +1,4 @@
-/*     dz.c    4.14    %G%     */
+/*     dz.c    4.16    %G%     */
 
 #include "dz.h"
 #if NDZ11 > 0
 
 #include "dz.h"
 #if NDZ11 > 0
 /*
  * Driver information for auto-configuration stuff.
  */
 /*
  * Driver information for auto-configuration stuff.
  */
-int    dzcntrlr(), dzslave(), dzrint();
+int    dzprobe(), dzattach(), dzrint();
 struct uba_dinfo *dzinfo[NDZ11];
 u_short        dzstd[] = { 0 };
 struct uba_driver dzdriver =
 struct uba_dinfo *dzinfo[NDZ11];
 u_short        dzstd[] = { 0 };
 struct uba_driver dzdriver =
-       { dzcntrlr, dzslave, 0, 0, dzstd, "dz", dzinfo };
+       { dzprobe, 0, dzattach, 0, dzstd, "dz", dzinfo };
 
 #define        NDZ     (NDZ11*8)
  
 
 #define        NDZ     (NDZ11*8)
  
@@ -99,13 +99,15 @@ struct      pdma dzpdma[NDZ];
 char   dz_speeds[] =
        { 0,020,021,022,023,024,0,025,026,027,030,032,034,036,0,0 };
  
 char   dz_speeds[] =
        { 0,020,021,022,023,024,0,025,026,027,030,032,034,036,0,0 };
  
-dzcntrlr(ui, reg)
-       struct uba_dinfo *ui;
+dzprobe(reg)
        caddr_t reg;
 {
        register int br, cvec;
        register struct device *dzaddr = (struct device *)reg;
 
        caddr_t reg;
 {
        register int br, cvec;
        register struct device *dzaddr = (struct device *)reg;
 
+#ifdef lint
+       br = 0; br = cvec; cvec = br;
+#endif
        dzaddr->dzcsr = DZ_TIE|DZ_MSE;
        dzaddr->dztcr = 1;              /* enable any line */
        DELAY(100000);
        dzaddr->dzcsr = DZ_TIE|DZ_MSE;
        dzaddr->dztcr = 1;              /* enable any line */
        DELAY(100000);
@@ -115,25 +117,24 @@ dzcntrlr(ui, reg)
        return (1);
 }
 
        return (1);
 }
 
-/*
- * Called by auto-configure to initialize good dz's;
- * set up pdma structures.
- */
-dzslave(ui, reg)
+dzattach(ui)
        register struct uba_dinfo *ui;
        register struct uba_dinfo *ui;
-       caddr_t reg;
 {
        register struct pdma *pdp = &dzpdma[ui->ui_unit*8];
        register struct tty *tp = &dz_tty[ui->ui_unit*8];
 {
        register struct pdma *pdp = &dzpdma[ui->ui_unit*8];
        register struct tty *tp = &dz_tty[ui->ui_unit*8];
-       register int cnt;
+       register int cntr;
 
 
-       for (cnt = 0; cnt < 8; cnt++) {
-               pdp->p_addr = (struct device *)reg;
+       for (cntr = 0; cntr < 8; cntr++) {
+               pdp->p_addr = (struct device *)ui->ui_addr;
                pdp->p_arg = (int)tp;
                pdp->p_fcn = dzxint;
                pdp++, tp++;
        }
        dzsoftCAR[ui->ui_unit] = ui->ui_flags;
                pdp->p_arg = (int)tp;
                pdp->p_fcn = dzxint;
                pdp++, tp++;
        }
        dzsoftCAR[ui->ui_unit] = ui->ui_flags;
+       if (dz_timer == 0) {
+               dz_timer++;
+               timeout(dzscan, (caddr_t)0, HZ);
+       }
        return (1);
 }
 
        return (1);
 }
 
@@ -150,10 +151,6 @@ dzopen(dev, flag)
                u.u_error = ENXIO;
                return;
        }
                u.u_error = ENXIO;
                return;
        }
-       if (dz_timer == 0) {
-               dz_timer++;
-               timeout(dzscan, (caddr_t)0, HZ);
-       }
        tp = &dz_tty[unit];
        tp->t_addr = (caddr_t)&dzpdma[unit];
        tp->t_oproc = dzstart;
        tp = &dz_tty[unit];
        tp->t_addr = (caddr_t)&dzpdma[unit];
        tp->t_oproc = dzstart;
@@ -225,7 +222,6 @@ dzrint(dz)
        register struct device *dzaddr;
        register struct tty *tp0;
        register int unit;
        register struct device *dzaddr;
        register struct tty *tp0;
        register int unit;
-       int s;
  
        if ((dzact & (1<<dz)) == 0)
                return;
  
        if ((dzact & (1<<dz)) == 0)
                return;
@@ -429,9 +425,11 @@ dzscan()
  
        for (i = 0; i < dz_cnt ; i++) {
                dzaddr = dzpdma[i].p_addr;
  
        for (i = 0; i < dz_cnt ; i++) {
                dzaddr = dzpdma[i].p_addr;
+               if (dzaddr == 0)
+                       continue;
                tp = &dz_tty[i];
                bit = 1<<(i&07);
                tp = &dz_tty[i];
                bit = 1<<(i&07);
-               if ((dzsoftCAR[i]&bit) || (dzaddr->dzmsr&bit)) {
+               if ((dzsoftCAR[i>>3]&bit) || (dzaddr->dzmsr&bit)) {
                        /* carrier present */
                        if ((tp->t_state & CARR_ON) == 0) {
                                wakeup((caddr_t)&tp->t_rawq);
                        /* carrier present */
                        if ((tp->t_state & CARR_ON) == 0) {
                                wakeup((caddr_t)&tp->t_rawq);