aic7xxx.seq (24634) | aic7xxx.seq (24662) |
---|---|
1/*+M*********************************************************************** 2 *Adaptec 274x/284x/294x device driver for Linux and FreeBSD. 3 * 4 *Copyright (c) 1994 John Aycock 5 * The University of Calgary Department of Computer Science. 6 * All rights reserved. 7 * 8 *FreeBSD, Twin, Wide, 2 command per target support, tagged queuing, --- 23 unchanged lines hidden (view full) --- 32 *FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 33 *DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 34 *OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 35 *HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 36 *LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 37 *OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 38 *SUCH DAMAGE. 39 * | 1/*+M*********************************************************************** 2 *Adaptec 274x/284x/294x device driver for Linux and FreeBSD. 3 * 4 *Copyright (c) 1994 John Aycock 5 * The University of Calgary Department of Computer Science. 6 * All rights reserved. 7 * 8 *FreeBSD, Twin, Wide, 2 command per target support, tagged queuing, --- 23 unchanged lines hidden (view full) --- 32 *FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 33 *DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 34 *OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 35 *HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 36 *LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 37 *OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 38 *SUCH DAMAGE. 39 * |
40 * $Id$ | 40 * $Id: aic7xxx.seq,v 1.68 1997/04/04 19:35:30 gibbs Exp $ |
41 * 42 *-M************************************************************************/ 43 44#include <dev/aic7xxx/aic7xxx.reg> 45#include <scsi/scsi_message.h> 46 47/* 48 * A few words on the waiting SCB list: --- 18 unchanged lines hidden (view full) --- 67 * middle of a DMA, so clear DFCNTRL too. 68 */ 69reset: 70 clr SCSISIGO; /* De-assert BSY */ 71 /* Always allow reselection */ 72 mvi SCSISEQ, ENRSELI|ENAUTOATNP; 73 call clear_target_state; 74poll_for_work: | 41 * 42 *-M************************************************************************/ 43 44#include <dev/aic7xxx/aic7xxx.reg> 45#include <scsi/scsi_message.h> 46 47/* 48 * A few words on the waiting SCB list: --- 18 unchanged lines hidden (view full) --- 67 * middle of a DMA, so clear DFCNTRL too. 68 */ 69reset: 70 clr SCSISIGO; /* De-assert BSY */ 71 /* Always allow reselection */ 72 mvi SCSISEQ, ENRSELI|ENAUTOATNP; 73 call clear_target_state; 74poll_for_work: |
75 test SSTAT0,SELDI|SELDO jnz selection; | 75 test SSTAT0,SELDO jnz select; 76 test SSTAT0,SELDI jnz reselect; |
76 test SCSISEQ, ENSELO jnz poll_for_work; 77.if ( TWIN_CHANNEL ) 78 /* 79 * Twin channel devices cannot handle things like SELTO 80 * interrupts on the "background" channel. So, if we 81 * are selecting, keep polling the current channel util 82 * either a selection or reselection occurs. 83 */ 84 xor SBLKCTL,SELBUSB; /* Toggle to the other bus */ | 77 test SCSISEQ, ENSELO jnz poll_for_work; 78.if ( TWIN_CHANNEL ) 79 /* 80 * Twin channel devices cannot handle things like SELTO 81 * interrupts on the "background" channel. So, if we 82 * are selecting, keep polling the current channel util 83 * either a selection or reselection occurs. 84 */ 85 xor SBLKCTL,SELBUSB; /* Toggle to the other bus */ |
85 test SSTAT0,SELDI|SELDO jnz selection; | 86 test SSTAT0,SELDO jnz select; 87 test SSTAT0,SELDI jnz reselect; |
86 test SCSISEQ, ENSELO jnz poll_for_work; 87 xor SBLKCTL,SELBUSB; /* Toggle back */ 88.endif 89 cmp WAITING_SCBH,SCB_LIST_NULL jne start_waiting; 90test_queue: 91 /* Has the driver posted any work for us? */ 92 mov A, QCNTMASK; 93 test QINCNT,A jz poll_for_work; --- 104 unchanged lines hidden (view full) --- 198 and A, TID, SCB_TCL; /* Get target ID */ 199 and SCSIID, OID; /* Clear old target */ 200 or SCSIID, A; 201 mvi SCSISEQ, ENSELO|ENAUTOATNO|ENRSELI|ENAUTOATNP ret; 202/* 203 * Reselection has been initiated by a target. Make a note that we've been 204 * reselected, but haven't seen an IDENTIFY message from the target yet. 205 */ | 88 test SCSISEQ, ENSELO jnz poll_for_work; 89 xor SBLKCTL,SELBUSB; /* Toggle back */ 90.endif 91 cmp WAITING_SCBH,SCB_LIST_NULL jne start_waiting; 92test_queue: 93 /* Has the driver posted any work for us? */ 94 mov A, QCNTMASK; 95 test QINCNT,A jz poll_for_work; --- 104 unchanged lines hidden (view full) --- 200 and A, TID, SCB_TCL; /* Get target ID */ 201 and SCSIID, OID; /* Clear old target */ 202 or SCSIID, A; 203 mvi SCSISEQ, ENSELO|ENAUTOATNO|ENRSELI|ENAUTOATNP ret; 204/* 205 * Reselection has been initiated by a target. Make a note that we've been 206 * reselected, but haven't seen an IDENTIFY message from the target yet. 207 */ |
206selection: 207 test SSTAT0, SELDI jz select; | |
208reselect: 209 clr MSG_LEN; /* Don't have anything in the mesg buffer */ 210 mvi CLRSINT0, CLRSELDI; 211 /* XXX test for and handle ONE BIT condition */ 212 and SAVED_TCL, SELID_MASK, SELID; 213 or SEQ_FLAGS,RESELECTED; 214 jmp select2; 215 --- 935 unchanged lines hidden --- | 208reselect: 209 clr MSG_LEN; /* Don't have anything in the mesg buffer */ 210 mvi CLRSINT0, CLRSELDI; 211 /* XXX test for and handle ONE BIT condition */ 212 and SAVED_TCL, SELID_MASK, SELID; 213 or SEQ_FLAGS,RESELECTED; 214 jmp select2; 215 --- 935 unchanged lines hidden --- |