+ if (mi == NULL || mi->mi_alive == 0) {
+ struct mba_device fnd;
+ struct mba_slave *ms;
+ struct mba_drv *mbd = &mhp->mh_mba->mba_drv[drive];
+ int dt = mbd->mbd_dt & 0xffff;
+
+ if (dt == 0 || dt == MBDT_MOH)
+ continue;
+ fnd.mi_mba = mhp->mh_mba;
+ fnd.mi_mbanum = mbanum;
+ fnd.mi_drive = drive;
+ if ((mi = mbaconfig(&fnd, dt)) == NULL)
+ continue;
+ if (dt & MBDT_TAP) {
+ for (ms = mbsinit; ms->ms_driver; ms++)
+ if (ms->ms_driver == mi->mi_driver &&
+ ms->ms_alive == 0 &&
+ (ms->ms_ctlr == mi->mi_unit ||
+ ms->ms_ctlr == '?')) {
+ if ((*ms->ms_driver->md_slave)(mi, ms)) {
+ printf("%s%d at %s%d slave %d\n",
+ ms->ms_driver->md_sname,
+ ms->ms_unit,
+ mi->mi_driver->md_dname,
+ mi->mi_unit,
+ ms->ms_slave);
+ ms->ms_alive = 1;
+ ms->ms_ctlr = mi->mi_unit;
+ }
+ }
+ }
+ }