((1<<SCptr->device->id) & esp->targets_present) && 
((1<<scmd_id(SCptr)) & esp->targets_present) && 
static int esp_do_freebus(struct NCR_ESP *esp, struct ESP_regs *eregs){	Scsi_Cmnd *SCptr = esp->current_SC;	int rval;	rval = skipahead2(esp, eregs, SCptr, in_status, in_msgindone, in_freeing);	if(rval)		return rval;	if(esp->ireg != ESP_INTR_DC) {		ESPLOG(("esp%d: Target will not disconnect\n", esp->esp_id));		return do_reset_bus; /* target will not drop BSY... */	}	esp->msgout_len = 0;	esp->prevmsgout = NOP;	if(esp->prevmsgin == COMMAND_COMPLETE) {		struct esp_device *esp_dev = SCptr->device->hostdata;		/* Normal end of nexus. */		if(esp->disconnected_SC)			esp_cmd(esp, eregs, ESP_CMD_ESEL);		if(SCptr->SCp.Status != GOOD &&		   SCptr->SCp.Status != CONDITION_GOOD &&		   ((1<<SCptr->device->id) & esp->targets_present) &&		   esp_dev->sync && esp_dev->sync_max_offset) {			/* SCSI standard says that the synchronous capabilities			 * should be renegotiated at this point.  Most likely			 * we are about to request sense from this target			 * in which case we want to avoid using sync			 * transfers until we are sure of the current target			 * state.			 */			ESPMISC(("esp: Status <%d> for target %d lun %d\n",				 SCptr->SCp.Status, SCptr->device->id, SCptr->device->lun));			/* But don't do this when spinning up a disk at			 * boot time while we poll for completion as it			 * fills up the console with messages.  Also, tapes			 * can report not ready many times right after			 * loading up a tape.			 */			if(esp_should_clear_sync(SCptr) != 0)				esp_dev->sync = 0;		}		ESPDISC(("F<%02x,%02x>", SCptr->device->id, SCptr->device->lun));		esp_done(esp, ((SCptr->SCp.Status & 0xff) |			       ((SCptr->SCp.Message & 0xff)<<8) |			       (DID_OK << 16)));	} else if(esp->prevmsgin == DISCONNECT) {		/* Normal disconnect. */		esp_cmd(esp, eregs, ESP_CMD_ESEL);		ESPDISC(("D<%02x,%02x>", SCptr->device->id, SCptr->device->lun));		append_SC(&esp->disconnected_SC, SCptr);		esp->current_SC = NULL;		if(esp->issue_SC)			esp_exec_cmd(esp);	} else {		/* Driver bug, we do not expect a disconnect here		 * and should not have advanced the state engine		 * to in_freeing.		 */		ESPLOG(("esp%d: last msg not disc and not cmd cmplt.\n",			esp->esp_id));		return do_reset_bus;	}	return do_intr_end;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/422c0d61d591cbfb70f029e13505fb437e169d68/NCR53C9x.c/clean/drivers/scsi/NCR53C9x.c