currSCCB = BL_Card[p_card].currentSCCB; 
currSCCB = FPT_BL_Card[p_card].currentSCCB; 
void schkdd(ULONG port, UCHAR p_card)#endif{   USHORT TimeOutLoop;	UCHAR sPhase;   PSCCB currSCCB;   currSCCB = BL_Card[p_card].currentSCCB;   if ((currSCCB->Sccb_scsistat != DATA_OUT_ST) &&       (currSCCB->Sccb_scsistat != DATA_IN_ST)) {      return;      }   if (currSCCB->Sccb_XferState & F_ODD_BALL_CNT)      {      currSCCB->Sccb_ATC += (currSCCB->Sccb_XferCnt-1);      currSCCB->Sccb_XferCnt = 1;      currSCCB->Sccb_XferState &= ~F_ODD_BALL_CNT;      WRW_HARPOON((port+hp_fiforead), (USHORT) 0x00);      WR_HARPOON(port+hp_xferstat, 0x00);      }   else      {      currSCCB->Sccb_ATC += currSCCB->Sccb_XferCnt;      currSCCB->Sccb_XferCnt = 0;      }   if ((RDW_HARPOON((port+hp_intstat)) & PARITY) &&      (currSCCB->HostStatus == SCCB_COMPLETE)) {      currSCCB->HostStatus = SCCB_PARITY_ERR;      WRW_HARPOON((port+hp_intstat), PARITY);      }   hostDataXferAbort(port,p_card,currSCCB);   while (RD_HARPOON(port+hp_scsisig) & SCSI_ACK) {}   TimeOutLoop = 0;   while(RD_HARPOON(port+hp_xferstat) & FIFO_EMPTY)      {      if (RDW_HARPOON((port+hp_intstat)) & BUS_FREE) {	      return;   	   }      if (RD_HARPOON(port+hp_offsetctr) & (UCHAR)0x1F) {	      break;   	   }      if (RDW_HARPOON((port+hp_intstat)) & RESET) {	      return;   	   }      if ((RD_HARPOON(port+hp_scsisig) & SCSI_REQ) || (TimeOutLoop++>0x3000) )   	   break;      }	sPhase = RD_HARPOON(port+hp_scsisig) & (SCSI_BSY | S_SCSI_PHZ);   if ((!(RD_HARPOON(port+hp_xferstat) & FIFO_EMPTY))                     ||      (RD_HARPOON(port+hp_offsetctr) & (UCHAR)0x1F)                       ||      (sPhase == (SCSI_BSY | S_DATAO_PH)) ||      (sPhase == (SCSI_BSY | S_DATAI_PH)))      {	   WR_HARPOON(port+hp_portctrl_0, SCSI_PORT);	   if (!(currSCCB->Sccb_XferState & F_ALL_XFERRED))         {	      if (currSCCB->Sccb_XferState & F_HOST_XFER_DIR) {	         phaseDataIn(port,p_card);	      	}	   	else {	       phaseDataOut(port,p_card);	       	}	   	}		else      	{	   	sxfrp(port,p_card);	   	if (!(RDW_HARPOON((port+hp_intstat)) &		      (BUS_FREE | ICMD_COMP | ITAR_DISC | RESET)))         {   		WRW_HARPOON((port+hp_intstat), AUTO_INT);		   phaseDecode(port,p_card);		   }	   }   }   else {      WR_HARPOON(port+hp_portctrl_0, 0x00);      }}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/47b5d69c4aa753fcfc9b2b8d28c0660a1e25c129/FlashPoint.c/buggy/drivers/scsi/FlashPoint.c