static void wd33c93Disconnect(WD33C93* wd33c93) { if (wd33c93->phase != BusFree) { if ((wd33c93->targetId >= 0) && (wd33c93->targetId < wd33c93->maxDev)) { scsiDeviceDisconnect(TARGET); } if (wd33c93->regs[REG_SCSI_STATUS] != SS_XFER_END) { wd33c93->regs[REG_SCSI_STATUS] = SS_DISCONNECT; } wd33c93->regs[REG_AUX_STATUS] = AS_INT; wd33c93->phase = BusFree; //wd33c93->nextPhase = -1; } //wd33c93->mci = -1; wd33c93->tc = 0; //wd33c93->atn = 0; SCSILOG("busfree()\n\n"); scsiDeviceLogFlush(); }
static void mb89352Disconnect(MB89352* spc) { if (spc->phase != BusFree) { if ((spc->targetId >= 0) && (spc->targetId < 8)) { scsiDeviceDisconnect(TARGET); } spc->regs[REG_INTS] |= INTS_Disconnected; spc->phase = BusFree; spc->nextPhase = -1; } spc->regs[REG_PSNS] = 0; spc->isBusy = 0; spc->isTransfer = 0; spc->counter = 0; spc->tc = 0; spc->atn = 0; SCSILOG("busfree()\n\n"); scsiDeviceLogFlush(); }
void wd33c93Reset(WD33C93* wd33c93, int scsireset) { int i; SCSILOG("wd33c93 reset\n"); scsiDeviceLogFlush(); // initialized register memset(wd33c93->regs, 0, 0x1b); memset(wd33c93->regs + 0x1b, 0xff, 4); wd33c93->regs[REG_AUX_STATUS] = AS_INT; wd33c93->myId = 0; wd33c93->latch = 0; wd33c93->tc = 0; wd33c93->phase = BusFree; wd33c93->pBuf = wd33c93->buffer; if (scsireset) { for (i = 0; i < wd33c93->maxDev; ++i) { scsiDeviceReset(wd33c93->dev[i]); } } }