From:	EVMS::S_SOMMER     25-SEP-1995 11:42:33.51
To:	STAR::EVERHART
CC:	
Subj:	Scanner (& TLZ04?) fix for Alpha V6.2 PKCDRIVER

************
File WORK1:[S_SOMMER.SCSI.SRC]PKCDRIVER.MAR;70
    2   	.IDENT	'X-14'
    3   ;
******
File X61Q_RESD$:[SCSI.SRC]PKCDRIVER.MAR;1
    2   	.IDENT	'X-13'
    3   ;
************
************
File WORK1:[S_SOMMER.SCSI.SRC]PKCDRIVER.MAR;70
   58   ;	X-14	SCS		Sue Sommer			7-Sep-1995
   59   ;		Workaround fix for scanner:
   60   ;		Modify pk$negotiate_synch to bypass renegotiation for 
   61   ;		ID 0 on port A (eg. GKA0).  Also modify the setup of
   62   ;		asynchronous transfers in setup_53c94_for_selection,
   63   ;		so that the Identify message is sent via the SAS command. 
   64   ;
******
File X61Q_RESD$:[SCSI.SRC]PKCDRIVER.MAR;1
   58   ;
************
************
File WORK1:[S_SOMMER.SCSI.SRC]PKCDRIVER.MAR;70
 2902   ;;;
 2903   
 2904   ; Exempt ID 0 on port A from doing any synchronous renegotiation.  In particular this implies
 2905   ; that GKA0 will not be sent any SDTR messages.  (Scanner workaround)
 2906   
 2907   	CMPL	SPDT$L_SCSI_PORT_ID(R4),#0			; Is this the special hardcoded port (port A)?
 2908   	BNEQ	10$                                             ; No, go on to renegotiate
 2909   
 2910   ; If here, the device resides on port "A".  Now check whether ID equals 0.
 2911   
 2912   	CMPL	STDT$IS_SCSI_ID_NUM(R10),#0			; Is this SCSI ID 0?
 2913   	BNEQ	10$				                ; No, go on to renegotiate
 2914   
 2915   ; If here, the device should not renegotiate;  instead, set it to asynch mode and exit now.
 2916   
 2917   8$:	CLRL	STDT$IS_REQACK_OFFSET(R10)	                ; Set to asynch mode
 2918   	MOVL	#SS$_NORMAL, R0	  				; Return success				
 2919   	RET							; (And bypass renegotiate)
 2920   
 2921   10$:
 2922   
 2923   ;;;
 2924   	BISL	#STDT$M_DFLG_RENEGOTIATE_SYNC,-			;AFQ DS; The operating mode should be re-negotiated.
******
File X61Q_RESD$:[SCSI.SRC]PKCDRIVER.MAR;1
 2896   	BISL	#STDT$M_DFLG_RENEGOTIATE_SYNC,-			;AFQ DS; The operating mode should be re-negotiated.
************
************
File WORK1:[S_SOMMER.SCSI.SRC]PKCDRIVER.MAR;70
 3385   
 3386   ; Workaround for certain async devices:  When autoconfiguring the nonexistent
 3387   ; nonzero Luns, the device may send back a Reject msg (and corrupt the FIFO) after
 3388   ; the FIFO is loaded with both the Identify message and the command bytes and a
 3389   ; SELATN command is sent.
 3390   ; When only the Identify is sent, and a Selection w/ Atn and Stop (SAS) command
 3391   ; follows, the Identify is not rejected, and Autoconfigure can proceed without
 3392   ; a gross error.  
 3393   
 3394   
 3395   	TSTL	STDT$IS_REQACK_OFFSET(R10)	;Q DFS; Is this async mode? 
 3396        	BNEQ	125$				;Q DFS; It's sync, so skip SAS
 3397   	BBC	#SCDRP$V_FLAG_QUEUED_IO,-	;Q DFS; Is this a queued I/O?
 3398   		SCDRP$L_SCSI_FLAGS(R5), -	;Q DFS; Br if no
 3399   		122$
 3400   	BUG_CHECK INCONSTATE,FATAL		;Q DFS; Device should not be both async and TCQ
 3401   122$:	MOVL	#CMD$K_SAS, R6			;Q DFS; Send the SAS command
 3402   	BRW	140$	
 3403   
 3404   
 3405   ;
 3406   ; Case of synchronous data transfer, when there is no need to renegotiate.
 3407   ;
 3408   
 3409   125$:
 3410   ;
******
File X61Q_RESD$:[SCSI.SRC]PKCDRIVER.MAR;1
 3357   ;
************

Number of difference sections found: 4
Number of difference records found: 54

DIFFERENCES /IGNORE=()/MERGED=1/OUTPUT=WORK1:[S_SOMMER.SCSI.SRC]PK.DIFF;2-
    WORK1:[S_SOMMER.SCSI.SRC]PKCDRIVER.MAR;70-
    X61Q_RESD$:[SCSI.SRC]PKCDRIVER.MAR;1
