+tmreset(uban)
+ int uban;
+{
+ int printed = 0;
+ register struct uba_minfo *um;
+ register tm11, unit;
+ register struct uba_dinfo *ui;
+ register struct buf *dp;
+
+ for (tm11 = 0; tm11 < NTM; tm11++) {
+ if ((um = tmminfo[tm11]) == 0 || um->um_alive == 0 ||
+ um->um_ubanum != uban)
+ continue;
+ if (printed == 0) {
+ printf(" tm");
+ DELAY(2000000); /* time to self test */
+ printed = 1;
+ }
+ um->um_tab.b_active = 0;
+ um->um_tab.b_actf = um->um_tab.b_actl = 0;
+ if (um->um_ubinfo) {
+ printf("<%d>", (um->um_ubinfo>>28)&0xf);
+ ubadone(um);
+ }
+ ((struct device *)(um->um_addr))->tmcs = TM_DCLR;
+ for (unit = 0; unit < NTE; unit++) {
+ if ((ui = tmdinfo[unit]) == 0)
+ continue;
+ if (ui->ui_alive == 0)
+ continue;
+ dp = &tmutab[unit];
+ dp->b_active = 0;
+ dp->b_forw = 0;
+ if (um->um_tab.b_actf == NULL)
+ um->um_tab.b_actf = dp;
+ else
+ um->um_tab.b_actl->b_forw = dp;
+ um->um_tab.b_actl = dp;
+ tm_softc[unit].sc_openf = -1;
+ }
+ tmstart(um);
+ }
+}
+