Deleted Added
full compact
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 ---