public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Doug Ledford <dledford@redhat.com>
To: Alan Cox <alan@redhat.com>
Cc: linux-kernel@vger.kernel.org
Subject: [Patch] aic7xxx update.
Date: Thu, 08 Feb 2001 02:25:18 -0500	[thread overview]
Message-ID: <3A8249DE.BA3B76A6@redhat.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 1255 bytes --]


This is relative to the 5.2.2 driver already in 2.4.1-ac4 and it fixes the
7880 (and similar) problems.  Alan, you'll need to make sure the little patch
I sent earlier is not already applied to your tree since it will conflict with
this patch.

This has been tested on a 7850, 7880, 7890, and 7892 chipset.  In general,
this covers two of the four classes of aic7xxx controller.  The 7890 and 7892
both fall in the class Ultra2 and if one works the other typically does as
well.  The 7850 and 7880 both fall in the class of legacy non-Ultra2
controller and if one works the other usually does.  The other two classes are
all 7770 based controllers (EISA/VLB controllers, which I don't have any
machines with these cards to test on any more) and 7895 controllers, which are
half way between a legacy controller and an Ultra2 controller and don't fit in
any class except their own.

So, what this driver really needs is someone with a 7895 and someone with a
VLB/EISA controller to test it out.  All the other controllers should be
working reliably at this point.

-- 

 Doug Ledford <dledford@redhat.com>  http://people.redhat.com/dledford
      Please check my web site for aic7xxx updates/answers before
                      e-mailing me about problems

[-- Attachment #2: aic7xxx-5.2.2-5.2.3.patch --]
[-- Type: text/plain, Size: 43149 bytes --]

diff -U3 -rN scsi.save/aic7xxx/aic7xxx.seq scsi/aic7xxx/aic7xxx.seq
--- scsi.save/aic7xxx/aic7xxx.seq	Wed Feb  7 15:07:28 2001
+++ scsi/aic7xxx/aic7xxx.seq	Thu Feb  8 01:52:38 2001
@@ -291,11 +291,7 @@
 
 	mov	A, LASTPHASE;
 
-	if ((p->features & AHC_ULTRA2) != 0) {
-		test	A, ~P_DATAIN	jz u2_p_data;
-	} else {
-		test	A, ~P_DATAIN	jz p_data;
-	}
+	test	A, ~P_DATAIN	jz p_data;
 	cmp	A,P_COMMAND	je p_command;
 	cmp	A,P_MESGOUT	je p_mesgout;
 	cmp	A,P_STATUS	je p_status;
@@ -336,73 +332,130 @@
 	/* clear target specific flags */
 	clr	SEQ_FLAGS ret;
 
- 	if ((p->features & AHC_ULTRA2) != 0) {
-
-
 
-u2_data_phase_reinit:
+data_phase_reinit:
 /*
  * If we re-enter the data phase after going through another phase, the
  * STCNT may have been cleared, so restore it from the residual field.
  * On Ultra2, we have to put it into the HCNT field because we have to
  * drop the data down into the shadow layer via the preload ability.
  */
+ 	if ((p->features & AHC_ULTRA2) != 0) {
 		bmov	HADDR, SHADDR, 4;
 		bmov    HCNT, SCB_RESID_DCNT, 3;
-		jmp	u2_data_phase_loop;
-u2_p_data:
+	}
+	if ((p->chip & AHC_CHIPID_MASK) == AHC_AIC7895) {
+		bmov    STCNT, SCB_RESID_DCNT, 3;
+	}
+	if ((p->features & AHC_CMD_CHAN) == 0) {
+		mvi	DINDEX, STCNT;
+		mvi	SCB_RESID_DCNT	call bcopy_3;
+	}
+	jmp	data_phase_loop;
+p_data:
+ 	if ((p->features & AHC_ULTRA2) != 0) {
 		mvi	DMAPARAMS, PRELOADEN|SCSIEN|HDMAEN;
-		test	LASTPHASE, IOI jnz . + 2;
-		or	DMAPARAMS, DIRECTION;
-		call	assert;		/*
-					 * Ensure entering a data
-					 * phase is okay - seen identify, etc.
-					 */
+	} else {
+		mvi	DMAPARAMS, WIDEODD|SCSIEN|SDMAEN|HDMAEN|FIFORESET;
+	}
+	test	LASTPHASE, IOI jnz . + 2;
+	or	DMAPARAMS, DIRECTION;
+	call	assert;		/*
+				 * Ensure entering a data
+				 * phase is okay - seen identify, etc.
+				 */
+	if ((p->features & AHC_CMD_CHAN) != 0) {
 		mvi	CCSGADDR, CCSGADDR_MAX;
-		test	SEQ_FLAGS, DPHASE	jnz u2_data_phase_reinit;
-		or	SEQ_FLAGS, DPHASE;	/* we've seen a data phase */
-		/*
-		 * Initialize the DMA address and counter from the SCB.
-		 * Also set SG_COUNT and SG_NEXT in memory since we cannot
-		 * modify the values in the SCB itself until we see a
-		 * save data pointers message.
-		 */
+	}
+
+	test	SEQ_FLAGS, DPHASE	jnz data_phase_reinit;
+	or	SEQ_FLAGS, DPHASE;	/* we've seen a data phase */
+	/*
+	 * Initialize the DMA address and counter from the SCB.
+	 * Also set SG_COUNT and SG_NEXT in memory since we cannot
+	 * modify the values in the SCB itself until we see a
+	 * save data pointers message.
+	 */
+	if ((p->features & AHC_CMD_CHAN) != 0) {
 		bmov	HADDR, SCB_DATAPTR, 7;
 		bmov    SG_COUNT, SCB_SGCOUNT, 5;
-u2_data_phase_loop:
-		/* Guard against overruns */
-		test	SG_COUNT, 0xff jnz u2_data_phase_inbounds;
+		if ((p->features & AHC_ULTRA2) == 0) {
+			bmov    STCNT, HCNT, 3;
+		}
+	} else {
+		mvi	DINDEX, HADDR;
+		mvi	SCB_DATAPTR	call bcopy_7;
+		call	set_stcnt_from_hcnt;
+		mvi	DINDEX, SG_COUNT;
+		mvi	SCB_SGCOUNT	call bcopy_5;
+	}
+data_phase_loop:
+	/* Guard against overruns */
+	test	SG_COUNT, 0xff jnz data_phase_inbounds;
 /*
  * Turn on 'Bit Bucket' mode, set the transfer count to
  * 16meg and let the target run until it changes phase.
  * When the transfer completes, notify the host that we
  * had an overrun.
  */
-		or	SXFRCTL1,BITBUCKET;
-		and	DMAPARAMS, DIRECTION;
+	or	SXFRCTL1,BITBUCKET;
+	and	DMAPARAMS, ~(HDMAEN|SDMAEN);
+	if ((p->features & AHC_ULTRA2) != 0) {
 		bmov	HCNT, ALLONES, 3;
-u2_data_phase_inbounds:
+	}
+	if ((p->chip & AHC_CHIPID_MASK) == AHC_AIC7895) {
+		bmov	STCNT, ALLONES, 3;
+	}
+	if ((p->features & AHC_CMD_CHAN) == 0) {
+		mvi	STCNT[0], 0xFF;
+		mvi	STCNT[1], 0xFF;
+		mvi	STCNT[2], 0xFF;
+	}
+
+data_phase_inbounds:
 /* If we are the last SG block, tell the hardware. */
+	if ((p->features & AHC_ULTRA2) != 0) {
 		shl	A, 2, SG_COUNT;
-		cmp	SG_COUNT,0x01 jne u2_data_phase_lastseg;
+		cmp	SG_COUNT,0x01 jne data_phase_wideodd;
 		or	A, LAST_SEG;
-u2_data_phase_lastseg:
+	} else {
+		cmp	SG_COUNT,0x01 jne data_phase_wideodd;
+		and	DMAPARAMS, ~WIDEODD;
+	}
+data_phase_wideodd:
+	if ((p->features & AHC_ULTRA2) != 0) {	
 		mov	SG_CACHEPTR, A;
 		mov	DFCNTRL, DMAPARAMS; /* start the operation */
-		test	SXFRCTL1, BITBUCKET jnz u2_data_phase_overrun;
+		test	SXFRCTL1, BITBUCKET jnz data_phase_overrun;
 u2_preload_wait:
 		test	SSTAT1, PHASEMIS jnz u2_phasemis;
 		test	DFSTATUS, PRELOAD_AVAIL jz u2_preload_wait;
+	} else {
+		mov	DMAPARAMS  call dma;
+data_phase_dma_done:
+/* Go tell the host about any overruns */
+		test	SXFRCTL1,BITBUCKET jnz data_phase_overrun;
+
+/* Exit if we had an underrun.  dma clears SINDEX in this case. */
+		test	SINDEX,0xff	jz data_phase_finish;
+	}
 /*
  * Advance the scatter-gather pointers 
  */
-u2_sg_advance:
+sg_advance:
+	if ((p->features & AHC_ULTRA2) != 0) {
 		cmp	SG_COUNT, 0x01	je u2_data_phase_finish;
+	} else {
+		dec	SG_COUNT;
+		test	SG_COUNT, 0xff	jz data_phase_finish;
+	}
+
+	if ((p->features & AHC_CMD_CHAN) != 0) {
 
 		/*
 		 * Do we have any prefetch left???
 		 */
-		cmp	CCSGADDR, CCSGADDR_MAX jne u2_prefetch_avail;
+		cmp	CCSGADDR, CCSGADDR_MAX jne prefetch_avail;
 
 		/*
 		 * Fetch MIN(CCSGADDR_MAX, (SG_COUNT * 8)) bytes.
@@ -418,18 +471,48 @@
 		and	CCSGCTL, ~CCSGEN;
 		test	CCSGCTL, CCSGEN jnz .;
 		mvi	CCSGCTL, CCSGRESET;
-u2_prefetch_avail:
-		/* Test for a phasemis before we drop the stuff into the
-		 * host regs.  We might have actually missed the phasemis
-		 * while doing the dma of the sg segs.
-		 */
-		test	SSTAT1, PHASEMIS jnz u2_phasemis;
-		dec	SG_COUNT;	      /* one less segment to go */
-		bmov 	HADDR, CCSGRAM, 8;    /* drop the address in place */
-		clr	A;		      /* Advance the SG pointer by */
-		add	SG_NEXT[0],SG_SIZEOF; /* adding SG_SIZEOF to addr0 */
-		adc	SG_NEXT[1],A;         /* and adding any carry to */
-		jmp	u2_data_phase_loop;   /* addr1 */
+prefetch_avail:
+		bmov 	HADDR, CCSGRAM, 8;
+		if ((p->features & AHC_ULTRA2) == 0) {
+			bmov    STCNT, HCNT, 3;
+		} else {
+			dec	SG_COUNT;
+		}
+	} else {
+		mvi	DINDEX, HADDR;
+		mvi	SG_NEXT	call bcopy_4;
+
+		mvi	HCNT[0],SG_SIZEOF;
+		clr	HCNT[1];
+		clr	HCNT[2];
+
+		or	DFCNTRL, HDMAEN|DIRECTION|FIFORESET;
+
+		call	dma_finish;
+
+/*
+ * Copy data from FIFO into SCB data pointer and data count.
+ * This assumes that the SG segments are of the form:
+ * struct ahc_dma_seg {
+ *	u_int32_t	addr;	four bytes, little-endian order
+ *	u_int32_t	len;	four bytes, little endian order
+ * };
+ */
+ 		mvi	DINDEX, HADDR;
+		call	dfdat_in_7;
+		call	set_stcnt_from_hcnt;
+	}
+/* Advance the SG pointer */
+	clr	A;		/* add sizeof(struct scatter) */
+	add	SG_NEXT[0],SG_SIZEOF;
+	adc	SG_NEXT[1],A;
+
+	if ((p->features & AHC_ULTRA2) != 0) {
+		jmp	data_phase_loop;
+	} else {
+		test    SSTAT1, REQINIT jz .;
+		test	SSTAT1,PHASEMIS	jz data_phase_loop;
+	}
 
 
 /*
@@ -438,23 +521,24 @@
  * we'll get a phasemis if we do finish, all we really need to do is wait
  * for a phasemis then check if we did actually complete all the segments.
  */
+	if ((p->features & AHC_ULTRA2) != 0) {
 u2_data_phase_finish:
 		test	SSTAT1, PHASEMIS jnz u2_phasemis;
 		test	SG_CACHEPTR, LAST_SEG_DONE jz u2_data_phase_finish;
 		clr	SG_COUNT;
 		test	SSTAT1, REQINIT	jz .;
-		test	SSTAT1, PHASEMIS jz u2_data_phase_loop;
+		test	SSTAT1, PHASEMIS jz data_phase_loop;
 u2_phasemis:
 		call	ultra2_dmafinish;
-		test	SG_CACHEPTR, LAST_SEG_DONE jnz u2_phasemis_end;
+		test	SG_CACHEPTR, LAST_SEG_DONE jnz data_phase_finish;
 		test	SSTAT2, SHVALID jnz u2_fixup_residual;
 		mvi	INTSTAT, SEQ_SG_FIXUP;
-		jmp	u2_phasemis_end;
+		jmp	data_phase_finish;
 u2_fixup_residual:
 		shr	ARG_1, 2, SG_CACHEPTR;
 u2_phasemis_loop:
 		and	A, 0x3f, SG_COUNT;
-		cmp	ARG_1, A je u2_phasemis_end;
+		cmp	ARG_1, A je data_phase_finish;
 /*
  * Subtract SG_SIZEOF from the SG_NEXT pointer and add 1 to the SG_COUNT
  */
@@ -463,11 +547,44 @@
 		adc	SG_NEXT[1], 0xff;
 		inc	SG_COUNT;
 		jmp	u2_phasemis_loop;
-u2_phasemis_end:
-		bmov	SCB_RESID_DCNT, STCNT, 3;
+	}
+
+data_phase_finish:
+/*
+ * After a DMA finishes, save the SG and STCNT residuals back into the SCB
+ * We use STCNT instead of HCNT, since it's a reflection of how many bytes 
+ * were transferred on the SCSI (as opposed to the host) bus.
+ */
+	if ((p->features & AHC_CMD_CHAN) != 0) {
+		bmov    SCB_RESID_DCNT, STCNT, 3;
 		mov	SCB_RESID_SGCNT, SG_COUNT;
-		or	SXFRCTL0, CLRSTCNT|CLRCHN;
-		jmp	ITloop;
+		if ((p->features & AHC_ULTRA2) != 0) {
+			or	SXFRCTL0, CLRSTCNT|CLRCHN;
+		}
+	} else {
+		mov	SCB_RESID_DCNT[0],STCNT[0];
+		mov	SCB_RESID_DCNT[1],STCNT[1];
+		mov	SCB_RESID_DCNT[2],STCNT[2];
+		mov	SCB_RESID_SGCNT, SG_COUNT;
+	}
+
+	jmp	ITloop;
+
+data_phase_overrun:
+/*
+ * Turn off BITBUCKET mode and notify the host
+ */
+	if ((p->features & AHC_ULTRA2) != 0) {
+/*
+ * Wait for the target to quit transferring data on the SCSI bus
+ */
+ 		test	SSTAT1, PHASEMIS jz .;
+		call	ultra2_dmafinish;
+	}
+	and	SXFRCTL1, ~BITBUCKET;
+	mvi	INTSTAT,DATA_OVERRUN;
+	jmp	ITloop;
+
 
 
 
@@ -478,6 +595,7 @@
  * brought into the data phase again (or are still in it after our last
  * segment) that we will properly signal an overrun to the kernel.
  */
+	if ((p->features & AHC_ULTRA2) != 0) {
 ultra2_dmafinish:
 		test	DFCNTRL, DIRECTION jnz ultra2_dmahalt;
 		and	DFCNTRL, ~SCSIEN;
@@ -515,196 +633,6 @@
 		and     DFCNTRL, ~(HDMAEN|SCSIEN);
 		test	DFCNTRL, (HDMAEN|SCSIEN) jnz .;
 		ret;
-
-u2_data_phase_overrun:
-/*
- * Wait for the target to quit transferring data on the SCSI bus
- */
- 		test	SSTAT1, PHASEMIS jz .;
-		call	ultra2_dmafinish;
-/*
- * Turn off BITBUCKET mode and notify the host
- */
-		and	SXFRCTL1, ~BITBUCKET;
-		mvi	INTSTAT,DATA_OVERRUN;
-		jmp	ITloop;
-
-
-
-	} else {  /* NOT Ultra2 */
-
-
-
-data_phase_reinit:
-/*
- * If we re-enter the data phase after going through another phase, the
- * STCNT may have been cleared, so restore it from the residual field.
- */
-		if ((p->features & AHC_CMD_CHAN) != 0) {
-			bmov    STCNT, SCB_RESID_DCNT, 3;
-		} else {
-			mvi	DINDEX, STCNT;
-			mvi	SCB_RESID_DCNT	call bcopy_3;
-		}
-		jmp	data_phase_loop;
-p_data:
-		mvi	DMAPARAMS, WIDEODD|SCSIEN|SDMAEN|HDMAEN|FIFORESET;
-		test	LASTPHASE, IOI jnz . + 2;
-		or	DMAPARAMS, DIRECTION;
-		call	assert;		/*
-					 * Ensure entering a data
-					 * phase is okay - seen identify, etc.
-					 */
-		if ((p->features & AHC_CMD_CHAN) != 0) {
-			mvi	CCSGADDR, CCSGADDR_MAX;
-		}
-		test	SEQ_FLAGS, DPHASE	jnz data_phase_reinit;
-		or	SEQ_FLAGS, DPHASE;	/* we've seen a data phase */
-		/*
-		 * Initialize the DMA address and counter from the SCB.
-		 * Also set SG_COUNT and SG_NEXT in memory since we cannot
-		 * modify the values in the SCB itself until we see a
-		 * save data pointers message.
-		 */
-		if ((p->features & AHC_CMD_CHAN) != 0) {
-			bmov	HADDR, SCB_DATAPTR, 7;
-			bmov    STCNT, HCNT, 3;
-			bmov    SG_COUNT, SCB_SGCOUNT, 5;
-		} else {
-			mvi	DINDEX, HADDR;
-			mvi	SCB_DATAPTR	call bcopy_7;
-			call	set_stcnt_from_hcnt;
-			mvi	DINDEX, SG_COUNT;
-			mvi	SCB_SGCOUNT	call bcopy_5;
-		}
-data_phase_loop:
-		/* Guard against overruns */
-		test	SG_COUNT, 0xff jnz data_phase_inbounds;
-/*
- * Turn on 'Bit Bucket' mode, set the transfer count to
- * 16meg and let the target run until it changes phase.
- * When the transfer completes, notify the host that we
- * had an overrun.
- */
-		or	SXFRCTL1,BITBUCKET;
-		and	DMAPARAMS, ~(HDMAEN|SDMAEN);
-		if ((p->features & AHC_CMD_CHAN) != 0) {
-			bmov	STCNT, ALLONES, 3;
-		} else {
-			mvi	STCNT[0], 0xFF;
-			mvi	STCNT[1], 0xFF;
-			mvi	STCNT[2], 0xFF;
-		}
-
-data_phase_inbounds:
-/* If we are the last SG block, tell the hardware. */
-		cmp	SG_COUNT,0x01 jne data_phase_wideodd;
-		and	DMAPARAMS, ~WIDEODD;
-data_phase_wideodd:
-		mov	DMAPARAMS  call dma;
-data_phase_dma_done:
-/* Go tell the host about any overruns */
-		test	SXFRCTL1,BITBUCKET jnz data_phase_overrun;
-
-/* Exit if we had an underrun.  dma clears SINDEX in this case. */
-		test	SINDEX,0xff	jz data_phase_finish;
-/*
- * Advance the scatter-gather pointers if needed 
- */
-sg_advance:
-		cmp	SG_COUNT, 0x01	je data_phase_finish; /* Are we done? */
-		dec	SG_COUNT;	/* one less segment to go */
-/*
- * Load a struct scatter and set up the data address and length.
- * If the working value of the SG count is nonzero, then
- * we need to load a new set of values.
- *
- * This, like all DMA's, assumes little-endian host data storage.
- */
-sg_load:
-		if ((p->features & AHC_CMD_CHAN) != 0) {
-			/*
-			 * Do we have any prefetch left???
-			 */
-			cmp	CCSGADDR, CCSGADDR_MAX jne prefetch_avail;
-
-			/*
-			 * Fetch MIN(CCSGADDR_MAX, (SG_COUNT * 8)) bytes.
-			 */
-			add	A, -(CCSGRAM_MAXSEGS + 1), SG_COUNT;
-			mvi	A, CCSGADDR_MAX;
-			jc	. + 2;
-			shl	A, 3, SG_COUNT;
-			mov	CCHCNT, A;
-			bmov	CCHADDR, SG_NEXT, 4;
-			mvi	CCSGCTL, CCSGEN|CCSGRESET;
-			test	CCSGCTL, CCSGDONE jz .;
-			and	CCSGCTL, ~CCSGEN;
-			test	CCSGCTL, CCSGEN jnz .;
-			mvi	CCSGCTL, CCSGRESET;
-prefetch_avail:
-			bmov 	HADDR, CCSGRAM, 8;
-			bmov    STCNT, HCNT, 3;
-		} else {
-			mvi	DINDEX, HADDR;
-			mvi	SG_NEXT	call bcopy_4;
-
-			mvi	HCNT[0],SG_SIZEOF;
-			clr	HCNT[1];
-			clr	HCNT[2];
-
-			or	DFCNTRL, HDMAEN|DIRECTION|FIFORESET;
-
-			call	dma_finish;
-
-/*
- * Copy data from FIFO into SCB data pointer and data count.
- * This assumes that the SG segments are of the form:
- * struct ahc_dma_seg {
- *	u_int32_t	addr;	four bytes, little-endian order
- *	u_int32_t	len;	four bytes, little endian order
- * };
- */
-			mvi	HADDR	call dfdat_in_7;
-			call	set_stcnt_from_hcnt;
-		}
-/* Advance the SG pointer */
-		clr	A;		/* add sizeof(struct scatter) */
-		add	SG_NEXT[0],SG_SIZEOF;
-		adc	SG_NEXT[1],A;
-
-		test    SSTAT1, REQINIT jz .;
-		test	SSTAT1,PHASEMIS	jz data_phase_loop;
-
-data_phase_finish:
-/*
- * After a DMA finishes, save the SG and STCNT residuals back into the SCB
- * We use STCNT instead of HCNT, since it's a reflection of how many bytes 
- * were transferred on the SCSI (as opposed to the host) bus.
- */
-		clr	SG_COUNT;
-		if ((p->features & AHC_CMD_CHAN) != 0) {
-			bmov    SCB_RESID_DCNT, STCNT, 3;
-			mov	SCB_RESID_SGCNT, SG_COUNT;
-		} else {
-			mov	SCB_RESID_DCNT[0],STCNT[0];
-			mov	SCB_RESID_DCNT[1],STCNT[1];
-			mov	SCB_RESID_DCNT[2],STCNT[2];
-			mov	SCB_RESID_SGCNT, SG_COUNT;
-		}
-
-		jmp	ITloop;
-
-data_phase_overrun:
-/*
- * Turn off BITBUCKET mode and notify the host
- */
-		and	SXFRCTL1, ~BITBUCKET;
-		mvi	INTSTAT,DATA_OVERRUN;
-		jmp	ITloop;
-
-
-
 	}
 
 /*
@@ -1437,21 +1365,25 @@
 			bmov	CCSCBRAM, SCB_CONTROL, 32;
 			or	CCSCBCTL, CCSCBEN|CCSCBRESET;
 			test	CCSCBCTL, CCSCBDONE jz .;
-		} else if ((p->bugs & AHC_BUG_SCBCHAN_UPLOAD) != 0) {
-                        mvi     CCSCBCTL, CCARREN|CCSCBRESET;
-			cmp     CCSCBCTL, ARRDONE|CCARREN jne .;
-                        mvi     CCHCNT, 32;
-			mvi     CCSCBCTL, CCSCBEN|CCSCBRESET;
-			cmp     CCSCBCTL, CCSCBDONE|CCSCBEN jne .;
-		} else {
-			mvi	CCSCBCTL, CCARREN|CCSCBEN|CCSCBRESET;
-			cmp	CCSCBCTL, CCSCBDONE|ARRDONE|CCARREN|CCSCBEN jne .;
+		}
+		if ((p->features & AHC_ULTRA2) != 0) {
+			if ((p->bugs & AHC_BUG_SCBCHAN_UPLOAD) != 0) {
+				mvi     CCSCBCTL, CCARREN|CCSCBRESET;
+				cmp     CCSCBCTL, ARRDONE|CCARREN jne .;
+                        	mvi     CCHCNT, 32;
+				mvi     CCSCBCTL, CCSCBEN|CCSCBRESET;
+				cmp     CCSCBCTL, CCSCBDONE|CCSCBEN jne .;
+			} else {
+				mvi	CCSCBCTL, CCARREN|CCSCBEN|CCSCBRESET;
+				cmp	CCSCBCTL, CCSCBDONE|ARRDONE|CCARREN|CCSCBEN jne .;
+			}
 		}
 dma_scb_finish:
 		clr	CCSCBCTL;
 		test	CCSCBCTL, CCARREN|CCSCBEN jnz .;
 		ret;
-	} else {
+	}
+	if ((p->features & AHC_CMD_CHAN) == 0) {
 		mvi	DINDEX, HADDR;
 		mvi	HSCB_ADDR call set_32byte_addr;
 		mvi	HCNT[0], 32;
diff -U3 -rN scsi.save/aic7xxx/aic7xxx_seq.c scsi/aic7xxx/aic7xxx_seq.c
--- scsi.save/aic7xxx/aic7xxx_seq.c	Wed Feb  7 15:07:28 2001
+++ scsi/aic7xxx/aic7xxx_seq.c	Thu Feb  8 01:52:38 2001
@@ -7,7 +7,7 @@
 	0x12, 0x6a, 0x00, 0x00,
 	0xff, 0x6a, 0xd6, 0x09,
 	0xff, 0x6a, 0xdc, 0x09,
-	0x00, 0x65, 0xcc, 0x58,
+	0x00, 0x65, 0xca, 0x58,
 	0xf7, 0x01, 0x02, 0x08,
 	0xff, 0x4e, 0xc8, 0x08,
 	0xbf, 0x60, 0xc0, 0x08,
@@ -25,12 +25,12 @@
 	0x00, 0x4d, 0x10, 0x70,
 	0x01, 0x4e, 0x9c, 0x18,
 	0xbf, 0x60, 0xc0, 0x08,
-	0x00, 0x6a, 0xce, 0x5c,
+	0x00, 0x6a, 0x86, 0x5c,
 	0xff, 0x4e, 0xc8, 0x18,
-	0x02, 0x6a, 0xb8, 0x5b,
+	0x02, 0x6a, 0x70, 0x5b,
 	0xff, 0x52, 0x20, 0x09,
 	0x0d, 0x6a, 0x6a, 0x00,
-	0x00, 0x52, 0x2e, 0x5c,
+	0x00, 0x52, 0xe6, 0x5b,
 	0x03, 0xb0, 0x52, 0x31,
 	0xff, 0xb0, 0x52, 0x09,
 	0xff, 0xb1, 0x54, 0x09,
@@ -87,21 +87,20 @@
 	0x08, 0x6a, 0x66, 0x58,
 	0x80, 0x6a, 0x68, 0x00,
 	0x80, 0x36, 0x6c, 0x00,
-	0x00, 0x65, 0x02, 0x5c,
+	0x00, 0x65, 0xba, 0x5b,
 	0xff, 0x3d, 0xc8, 0x08,
-	0xbf, 0x64, 0xde, 0x78,
-	0xbf, 0x64, 0x88, 0x79,
-	0x80, 0x64, 0x10, 0x72,
-	0xa0, 0x64, 0x40, 0x72,
-	0xc0, 0x64, 0x38, 0x72,
-	0xe0, 0x64, 0x80, 0x72,
+	0xbf, 0x64, 0xe2, 0x78,
+	0x80, 0x64, 0xc8, 0x71,
+	0xa0, 0x64, 0xf8, 0x71,
+	0xc0, 0x64, 0xf0, 0x71,
+	0xe0, 0x64, 0x38, 0x72,
 	0x01, 0x6a, 0x22, 0x01,
 	0x00, 0x65, 0xaa, 0x40,
 	0xf7, 0x11, 0x22, 0x08,
-	0x00, 0x65, 0xcc, 0x58,
+	0x00, 0x65, 0xca, 0x58,
 	0xff, 0x06, 0xd4, 0x08,
 	0xf7, 0x01, 0x02, 0x08,
-	0x09, 0x0c, 0xc6, 0x78,
+	0x09, 0x0c, 0xc4, 0x78,
 	0x08, 0x0c, 0x0c, 0x68,
 	0x01, 0x6a, 0x22, 0x01,
 	0xff, 0x6a, 0x26, 0x09,
@@ -112,411 +111,376 @@
 	0xff, 0x6a, 0x6c, 0x0c,
 	0x04, 0x14, 0x10, 0x31,
 	0x03, 0xa9, 0x18, 0x31,
-	0x00, 0x65, 0xf0, 0x40,
-	0xa8, 0x6a, 0x6a, 0x00,
-	0x40, 0x3d, 0xe4, 0x68,
-	0x04, 0x35, 0x6a, 0x00,
-	0x00, 0x65, 0x72, 0x5b,
-	0x80, 0x6a, 0xd4, 0x01,
-	0x10, 0x36, 0xd8, 0x68,
-	0x10, 0x36, 0x6c, 0x00,
-	0x07, 0xac, 0x10, 0x31,
-	0x05, 0xa3, 0x70, 0x30,
-	0xff, 0x38, 0xf8, 0x68,
-	0x80, 0x02, 0x04, 0x00,
-	0x04, 0x35, 0x6a, 0x08,
-	0x03, 0x69, 0x18, 0x31,
-	0x22, 0x38, 0xc8, 0x28,
-	0x01, 0x38, 0xfe, 0x60,
-	0x02, 0x64, 0xc8, 0x00,
-	0xff, 0x64, 0xf8, 0x09,
-	0xff, 0x35, 0x26, 0x09,
-	0x80, 0x02, 0x76, 0x69,
-	0x10, 0x0c, 0x3a, 0x69,
-	0x80, 0x94, 0x04, 0x79,
-	0x01, 0x38, 0x30, 0x71,
-	0x80, 0xea, 0x22, 0x61,
-	0xef, 0x38, 0xc8, 0x18,
-	0x80, 0x6a, 0xc8, 0x00,
-	0x00, 0x65, 0x14, 0x49,
-	0x33, 0x38, 0xc8, 0x28,
-	0xff, 0x64, 0xd0, 0x09,
-	0x04, 0x39, 0xc0, 0x31,
-	0x09, 0x6a, 0xd6, 0x01,
-	0x80, 0xeb, 0x1a, 0x79,
-	0xf7, 0xeb, 0xd6, 0x09,
-	0x08, 0xeb, 0x1e, 0x69,
-	0x01, 0x6a, 0xd6, 0x01,
-	0x10, 0x0c, 0x3a, 0x69,
-	0xff, 0x38, 0x70, 0x18,
-	0x08, 0xe9, 0x10, 0x31,
-	0xff, 0x6a, 0xc8, 0x08,
-	0x08, 0x39, 0x72, 0x18,
-	0x00, 0x3a, 0x74, 0x20,
-	0x00, 0x65, 0xf0, 0x40,
-	0x10, 0x0c, 0x3a, 0x69,
-	0x01, 0xfc, 0x30, 0x79,
-	0xff, 0x6a, 0x70, 0x08,
-	0x01, 0x0c, 0x36, 0x79,
-	0x10, 0x0c, 0xf0, 0x78,
-	0x00, 0x65, 0x5c, 0x59,
-	0x01, 0xfc, 0x54, 0x69,
-	0x40, 0x0d, 0x44, 0x69,
-	0xb1, 0x6a, 0x22, 0x01,
-	0x00, 0x65, 0x54, 0x41,
-	0x2e, 0xfc, 0xa2, 0x28,
-	0x3f, 0x38, 0xc8, 0x08,
-	0x00, 0x51, 0x54, 0x71,
-	0xff, 0x6a, 0xc8, 0x08,
-	0xf8, 0x39, 0x72, 0x18,
-	0xff, 0x3a, 0x74, 0x20,
-	0x01, 0x38, 0x70, 0x18,
-	0x00, 0x65, 0x46, 0x41,
-	0x03, 0x08, 0x52, 0x31,
-	0xff, 0x38, 0x50, 0x09,
-	0x12, 0x01, 0x02, 0x00,
-	0x00, 0x65, 0xaa, 0x40,
-	0x04, 0x93, 0x70, 0x69,
-	0xdf, 0x93, 0x26, 0x09,
-	0x20, 0x93, 0x60, 0x69,
-	0x02, 0x93, 0x26, 0x01,
-	0x01, 0x94, 0x64, 0x79,
-	0x01, 0x94, 0x64, 0x79,
-	0x01, 0x94, 0x64, 0x79,
-	0x01, 0x94, 0x64, 0x79,
-	0x01, 0x94, 0x64, 0x79,
-	0x10, 0x94, 0x6e, 0x69,
-	0xd7, 0x93, 0x26, 0x09,
-	0x28, 0x93, 0x72, 0x69,
-	0xff, 0x6a, 0xd4, 0x0c,
-	0x10, 0x0c, 0x76, 0x79,
-	0x00, 0x65, 0x5c, 0x59,
-	0x7f, 0x02, 0x04, 0x08,
-	0xe1, 0x6a, 0x22, 0x01,
-	0x00, 0x65, 0xaa, 0x40,
 	0x03, 0xa9, 0x10, 0x30,
 	0x08, 0x6a, 0xcc, 0x00,
-	0xa9, 0x6a, 0x18, 0x5c,
-	0x00, 0x65, 0xa6, 0x41,
+	0xa9, 0x6a, 0xd0, 0x5b,
+	0x00, 0x65, 0x02, 0x41,
+	0xa8, 0x6a, 0x6a, 0x00,
 	0x79, 0x6a, 0x6a, 0x00,
-	0x40, 0x3d, 0x8e, 0x69,
+	0x40, 0x3d, 0xea, 0x68,
 	0x04, 0x35, 0x6a, 0x00,
-	0x00, 0x65, 0x72, 0x5b,
+	0x00, 0x65, 0x2a, 0x5b,
 	0x80, 0x6a, 0xd4, 0x01,
-	0x10, 0x36, 0x80, 0x69,
+	0x10, 0x36, 0xd6, 0x68,
 	0x10, 0x36, 0x6c, 0x00,
 	0x07, 0xac, 0x10, 0x31,
-	0x03, 0x8c, 0x10, 0x30,
 	0x05, 0xa3, 0x70, 0x30,
+	0x03, 0x8c, 0x10, 0x30,
 	0x88, 0x6a, 0xcc, 0x00,
-	0xac, 0x6a, 0x10, 0x5c,
-	0x00, 0x65, 0x0a, 0x5c,
+	0xac, 0x6a, 0xc8, 0x5b,
+	0x00, 0x65, 0xc2, 0x5b,
 	0x38, 0x6a, 0xcc, 0x00,
-	0xa3, 0x6a, 0x14, 0x5c,
-	0xff, 0x38, 0xb4, 0x69,
+	0xa3, 0x6a, 0xcc, 0x5b,
+	0xff, 0x38, 0x12, 0x69,
 	0x80, 0x02, 0x04, 0x00,
 	0xe7, 0x35, 0x6a, 0x08,
+	0x03, 0x69, 0x18, 0x31,
 	0x03, 0x69, 0x10, 0x30,
 	0xff, 0x6a, 0x10, 0x00,
 	0xff, 0x6a, 0x12, 0x00,
 	0xff, 0x6a, 0x14, 0x00,
-	0x01, 0x38, 0xb8, 0x61,
+	0x22, 0x38, 0xc8, 0x28,
+	0x01, 0x38, 0x1c, 0x61,
+	0x02, 0x64, 0xc8, 0x00,
+	0x01, 0x38, 0x1c, 0x61,
 	0xbf, 0x35, 0x6a, 0x08,
-	0x00, 0x35, 0x52, 0x5b,
-	0x80, 0x02, 0x0a, 0x6a,
-	0xff, 0x65, 0xfa, 0x79,
-	0x01, 0x38, 0xfa, 0x71,
+	0xff, 0x64, 0xf8, 0x09,
+	0xff, 0x35, 0x26, 0x09,
+	0x80, 0x02, 0xa4, 0x69,
+	0x10, 0x0c, 0x7a, 0x69,
+	0x80, 0x94, 0x22, 0x79,
+	0x00, 0x35, 0x0a, 0x5b,
+	0x80, 0x02, 0xa4, 0x69,
+	0xff, 0x65, 0x94, 0x79,
+	0x01, 0x38, 0x70, 0x71,
 	0xff, 0x38, 0x70, 0x18,
-	0x80, 0xea, 0xda, 0x61,
+	0xff, 0x38, 0x94, 0x79,
+	0x80, 0xea, 0x4a, 0x61,
 	0xef, 0x38, 0xc8, 0x18,
 	0x80, 0x6a, 0xc8, 0x00,
-	0x00, 0x65, 0xcc, 0x49,
+	0x00, 0x65, 0x3c, 0x49,
 	0x33, 0x38, 0xc8, 0x28,
 	0xff, 0x64, 0xd0, 0x09,
 	0x04, 0x39, 0xc0, 0x31,
 	0x09, 0x6a, 0xd6, 0x01,
-	0x80, 0xeb, 0xd2, 0x79,
+	0x80, 0xeb, 0x42, 0x79,
 	0xf7, 0xeb, 0xd6, 0x09,
-	0x08, 0xeb, 0xd6, 0x69,
+	0x08, 0xeb, 0x46, 0x69,
 	0x01, 0x6a, 0xd6, 0x01,
 	0x08, 0xe9, 0x10, 0x31,
 	0x03, 0x8c, 0x10, 0x30,
+	0xff, 0x38, 0x70, 0x18,
 	0x88, 0x6a, 0xcc, 0x00,
-	0x39, 0x6a, 0x16, 0x5c,
+	0x39, 0x6a, 0xce, 0x5b,
 	0x08, 0x6a, 0x18, 0x01,
 	0xff, 0x6a, 0x1a, 0x09,
 	0xff, 0x6a, 0x1c, 0x09,
 	0x0d, 0x93, 0x26, 0x01,
-	0x00, 0x65, 0xc0, 0x5c,
-	0x88, 0x6a, 0xb2, 0x5c,
-	0x00, 0x65, 0x0a, 0x5c,
+	0x00, 0x65, 0x78, 0x5c,
+	0x88, 0x6a, 0xcc, 0x00,
+	0x00, 0x65, 0x6a, 0x5c,
+	0x00, 0x65, 0xc2, 0x5b,
 	0xff, 0x6a, 0xc8, 0x08,
 	0x08, 0x39, 0x72, 0x18,
 	0x00, 0x3a, 0x74, 0x20,
-	0x01, 0x0c, 0xf6, 0x79,
-	0x10, 0x0c, 0xa6, 0x79,
+	0x00, 0x65, 0x02, 0x41,
+	0x01, 0x0c, 0x6c, 0x79,
+	0x10, 0x0c, 0x02, 0x79,
+	0x10, 0x0c, 0x7a, 0x69,
+	0x01, 0xfc, 0x70, 0x79,
 	0xff, 0x6a, 0x70, 0x08,
+	0x01, 0x0c, 0x76, 0x79,
+	0x10, 0x0c, 0x02, 0x79,
+	0x00, 0x65, 0xae, 0x59,
+	0x01, 0xfc, 0x94, 0x69,
+	0x40, 0x0d, 0x84, 0x69,
+	0xb1, 0x6a, 0x22, 0x01,
+	0x00, 0x65, 0x94, 0x41,
+	0x2e, 0xfc, 0xa2, 0x28,
+	0x3f, 0x38, 0xc8, 0x08,
+	0x00, 0x51, 0x94, 0x71,
+	0xff, 0x6a, 0xc8, 0x08,
+	0xf8, 0x39, 0x72, 0x18,
+	0xff, 0x3a, 0x74, 0x20,
+	0x01, 0x38, 0x70, 0x18,
+	0x00, 0x65, 0x86, 0x41,
 	0x03, 0x08, 0x52, 0x31,
 	0xff, 0x38, 0x50, 0x09,
+	0x12, 0x01, 0x02, 0x00,
 	0xff, 0x08, 0x52, 0x09,
 	0xff, 0x09, 0x54, 0x09,
 	0xff, 0x0a, 0x56, 0x09,
 	0xff, 0x38, 0x50, 0x09,
 	0x00, 0x65, 0xaa, 0x40,
+	0x10, 0x0c, 0xa4, 0x79,
+	0x00, 0x65, 0xae, 0x59,
 	0x7f, 0x02, 0x04, 0x08,
 	0xe1, 0x6a, 0x22, 0x01,
 	0x00, 0x65, 0xaa, 0x40,
-	0x00, 0x65, 0x72, 0x5b,
+	0x04, 0x93, 0xc2, 0x69,
+	0xdf, 0x93, 0x26, 0x09,
+	0x20, 0x93, 0xb2, 0x69,
+	0x02, 0x93, 0x26, 0x01,
+	0x01, 0x94, 0xb6, 0x79,
+	0x01, 0x94, 0xb6, 0x79,
+	0x01, 0x94, 0xb6, 0x79,
+	0x01, 0x94, 0xb6, 0x79,
+	0x01, 0x94, 0xb6, 0x79,
+	0x10, 0x94, 0xc0, 0x69,
+	0xd7, 0x93, 0x26, 0x09,
+	0x28, 0x93, 0xc4, 0x69,
+	0xff, 0x6a, 0xd4, 0x0c,
+	0x00, 0x65, 0x2a, 0x5b,
 	0x05, 0xb4, 0x10, 0x31,
 	0x02, 0x6a, 0x1a, 0x31,
 	0x03, 0x8c, 0x10, 0x30,
 	0x88, 0x6a, 0xcc, 0x00,
-	0xb4, 0x6a, 0x14, 0x5c,
+	0xb4, 0x6a, 0xcc, 0x5b,
 	0xff, 0x6a, 0x1a, 0x09,
 	0xff, 0x6a, 0x1c, 0x09,
-	0x00, 0x65, 0x0a, 0x5c,
-	0x3d, 0x6a, 0x52, 0x5b,
+	0x00, 0x65, 0xc2, 0x5b,
+	0x3d, 0x6a, 0x0a, 0x5b,
 	0xac, 0x6a, 0x26, 0x01,
-	0x04, 0x0b, 0x26, 0x6a,
-	0x04, 0x0b, 0x2c, 0x6a,
-	0x10, 0x0c, 0x28, 0x7a,
-	0x02, 0x03, 0x30, 0x7a,
-	0x11, 0x0c, 0x2c, 0x7a,
+	0x04, 0x0b, 0xde, 0x69,
+	0x04, 0x0b, 0xe4, 0x69,
+	0x10, 0x0c, 0xe0, 0x79,
+	0x02, 0x03, 0xe8, 0x79,
+	0x11, 0x0c, 0xe4, 0x79,
 	0xd7, 0x93, 0x26, 0x09,
-	0x28, 0x93, 0x32, 0x6a,
+	0x28, 0x93, 0xea, 0x69,
 	0x12, 0x01, 0x02, 0x00,
 	0x00, 0x65, 0xaa, 0x40,
-	0x00, 0x65, 0x72, 0x5b,
+	0x00, 0x65, 0x2a, 0x5b,
 	0xff, 0x06, 0x44, 0x09,
 	0x00, 0x65, 0xaa, 0x40,
 	0x10, 0x3d, 0x06, 0x00,
 	0xff, 0x34, 0xca, 0x08,
-	0x80, 0x65, 0x64, 0x62,
+	0x80, 0x65, 0x1c, 0x62,
 	0x0f, 0xa1, 0xca, 0x08,
 	0x07, 0xa1, 0xca, 0x08,
 	0x40, 0xa0, 0xc8, 0x08,
 	0x00, 0x65, 0xca, 0x00,
 	0x80, 0x65, 0xca, 0x00,
-	0x80, 0xa0, 0x54, 0x7a,
+	0x80, 0xa0, 0x0c, 0x7a,
 	0xff, 0x65, 0x0c, 0x08,
-	0x00, 0x65, 0x66, 0x42,
-	0x20, 0xa0, 0x6c, 0x7a,
+	0x00, 0x65, 0x1e, 0x42,
+	0x20, 0xa0, 0x24, 0x7a,
 	0xff, 0x65, 0x0c, 0x08,
-	0x00, 0x65, 0x02, 0x5c,
-	0xa0, 0x3d, 0x74, 0x62,
+	0x00, 0x65, 0xba, 0x5b,
+	0xa0, 0x3d, 0x2c, 0x62,
 	0x23, 0xa0, 0x0c, 0x08,
-	0x00, 0x65, 0x02, 0x5c,
-	0xa0, 0x3d, 0x74, 0x62,
-	0x00, 0xb9, 0x6c, 0x42,
-	0xff, 0x65, 0x6c, 0x62,
+	0x00, 0x65, 0xba, 0x5b,
+	0xa0, 0x3d, 0x2c, 0x62,
+	0x00, 0xb9, 0x24, 0x42,
+	0xff, 0x65, 0x24, 0x62,
 	0xa1, 0x6a, 0x22, 0x01,
 	0xff, 0x6a, 0xd4, 0x08,
-	0x10, 0x51, 0x74, 0x72,
+	0x10, 0x51, 0x2c, 0x72,
 	0x40, 0x6a, 0x18, 0x00,
 	0xff, 0x65, 0x0c, 0x08,
-	0x00, 0x65, 0x02, 0x5c,
-	0xa0, 0x3d, 0x3e, 0x72,
+	0x00, 0x65, 0xba, 0x5b,
+	0xa0, 0x3d, 0xf6, 0x71,
 	0x40, 0x6a, 0x18, 0x00,
 	0xff, 0x34, 0xa6, 0x08,
-	0x80, 0x34, 0x7c, 0x62,
+	0x80, 0x34, 0x34, 0x62,
 	0x7f, 0xa0, 0x40, 0x09,
 	0x08, 0x6a, 0x68, 0x00,
 	0x00, 0x65, 0xaa, 0x40,
-	0x64, 0x6a, 0x48, 0x5b,
-	0x80, 0x64, 0xf2, 0x6a,
-	0x04, 0x64, 0xd4, 0x72,
-	0x02, 0x64, 0xda, 0x72,
-	0x00, 0x6a, 0x9c, 0x72,
-	0x03, 0x64, 0xee, 0x72,
-	0x01, 0x64, 0xd0, 0x72,
-	0x07, 0x64, 0x30, 0x73,
-	0x08, 0x64, 0x98, 0x72,
-	0x23, 0x64, 0x34, 0x73,
+	0x64, 0x6a, 0x00, 0x5b,
+	0x80, 0x64, 0xaa, 0x6a,
+	0x04, 0x64, 0x8c, 0x72,
+	0x02, 0x64, 0x92, 0x72,
+	0x00, 0x6a, 0x54, 0x72,
+	0x03, 0x64, 0xa6, 0x72,
+	0x01, 0x64, 0x88, 0x72,
+	0x07, 0x64, 0xe8, 0x72,
+	0x08, 0x64, 0x50, 0x72,
+	0x23, 0x64, 0xec, 0x72,
 	0x11, 0x6a, 0x22, 0x01,
-	0x07, 0x6a, 0x3a, 0x5b,
+	0x07, 0x6a, 0xf2, 0x5a,
 	0xff, 0x06, 0xd4, 0x08,
 	0x00, 0x65, 0xaa, 0x40,
-	0xff, 0xa8, 0xa0, 0x6a,
-	0xff, 0xa2, 0xb8, 0x7a,
+	0xff, 0xa8, 0x58, 0x6a,
+	0xff, 0xa2, 0x70, 0x7a,
 	0x01, 0x6a, 0x6a, 0x00,
-	0x00, 0xb9, 0x2e, 0x5c,
-	0xff, 0xa2, 0xb8, 0x7a,
+	0x00, 0xb9, 0xe6, 0x5b,
+	0xff, 0xa2, 0x70, 0x7a,
 	0x71, 0x6a, 0x22, 0x01,
 	0xff, 0x6a, 0xd4, 0x08,
-	0x40, 0x51, 0xb8, 0x62,
+	0x40, 0x51, 0x70, 0x62,
 	0x0d, 0x6a, 0x6a, 0x00,
-	0x00, 0xb9, 0x2e, 0x5c,
+	0x00, 0xb9, 0xe6, 0x5b,
 	0xff, 0x3e, 0x74, 0x09,
 	0xff, 0x90, 0x7c, 0x08,
 	0x00, 0x65, 0x4e, 0x58,
-	0x00, 0x65, 0xbe, 0x40,
-	0x20, 0xa0, 0xc0, 0x6a,
+	0x00, 0x65, 0xbc, 0x40,
+	0x20, 0xa0, 0x78, 0x6a,
 	0xff, 0x37, 0xc8, 0x08,
-	0x00, 0x6a, 0xd8, 0x5b,
-	0xff, 0x6a, 0xee, 0x5b,
+	0x00, 0x6a, 0x90, 0x5b,
+	0xff, 0x6a, 0xa6, 0x5b,
 	0xff, 0xf8, 0xc8, 0x08,
 	0xff, 0x4f, 0xc8, 0x08,
-	0x01, 0x6a, 0xd8, 0x5b,
-	0x00, 0xb9, 0xee, 0x5b,
+	0x01, 0x6a, 0x90, 0x5b,
+	0x00, 0xb9, 0xa6, 0x5b,
 	0x01, 0x4f, 0x9e, 0x18,
 	0x02, 0x6a, 0x22, 0x01,
-	0x00, 0x65, 0xc8, 0x5c,
-	0x00, 0x65, 0xbe, 0x40,
+	0x00, 0x65, 0x80, 0x5c,
+	0x00, 0x65, 0xbc, 0x40,
 	0x41, 0x6a, 0x22, 0x01,
 	0x00, 0x65, 0xaa, 0x40,
 	0x04, 0xa0, 0x40, 0x01,
-	0x00, 0x65, 0xe0, 0x5c,
-	0x00, 0x65, 0xbe, 0x40,
-	0x10, 0x36, 0x98, 0x7a,
+	0x00, 0x65, 0x98, 0x5c,
+	0x00, 0x65, 0xbc, 0x40,
+	0x10, 0x36, 0x50, 0x7a,
 	0x05, 0x38, 0x46, 0x31,
 	0x04, 0x14, 0x58, 0x31,
 	0x03, 0xa9, 0x60, 0x31,
 	0xa3, 0x6a, 0xcc, 0x00,
-	0x38, 0x6a, 0x14, 0x5c,
+	0x38, 0x6a, 0xcc, 0x5b,
 	0xac, 0x6a, 0xcc, 0x00,
-	0x14, 0x6a, 0x16, 0x5c,
-	0xa9, 0x6a, 0x18, 0x5c,
-	0x00, 0x65, 0x98, 0x42,
+	0x14, 0x6a, 0xce, 0x5b,
+	0xa9, 0x6a, 0xd0, 0x5b,
+	0x00, 0x65, 0x50, 0x42,
 	0xef, 0x36, 0x6c, 0x08,
-	0x00, 0x65, 0x98, 0x42,
+	0x00, 0x65, 0x50, 0x42,
 	0x0f, 0x64, 0xc8, 0x08,
 	0x07, 0x64, 0xc8, 0x08,
 	0x00, 0x37, 0x6e, 0x00,
 	0xff, 0x6a, 0xa4, 0x00,
-	0x00, 0x65, 0xa8, 0x5b,
-	0xff, 0x51, 0x04, 0x73,
-	0x20, 0x36, 0x0e, 0x7b,
-	0x00, 0x90, 0x96, 0x5b,
-	0x00, 0x65, 0x10, 0x43,
+	0x00, 0x65, 0x60, 0x5b,
+	0xff, 0x51, 0xbc, 0x72,
+	0x20, 0x36, 0xc6, 0x7a,
+	0x00, 0x90, 0x4e, 0x5b,
+	0x00, 0x65, 0xc8, 0x42,
 	0xff, 0x06, 0xd4, 0x08,
-	0x00, 0x65, 0x02, 0x5c,
-	0xe0, 0x3d, 0x2a, 0x63,
-	0x20, 0x12, 0x2a, 0x63,
-	0x51, 0x6a, 0x3e, 0x5b,
-	0x00, 0x65, 0x90, 0x5b,
+	0x00, 0x65, 0xba, 0x5b,
+	0xe0, 0x3d, 0xe2, 0x62,
+	0x20, 0x12, 0xe2, 0x62,
+	0x51, 0x6a, 0xf6, 0x5a,
+	0x00, 0x65, 0x48, 0x5b,
 	0xff, 0x37, 0xc8, 0x08,
-	0x00, 0xa1, 0x22, 0x63,
-	0x04, 0xa0, 0x22, 0x7b,
+	0x00, 0xa1, 0xda, 0x62,
+	0x04, 0xa0, 0xda, 0x7a,
 	0xfb, 0xa0, 0x40, 0x09,
 	0x80, 0x36, 0x6c, 0x00,
-	0x80, 0xa0, 0x98, 0x7a,
+	0x80, 0xa0, 0x50, 0x7a,
 	0x7f, 0xa0, 0x40, 0x09,
-	0xff, 0x6a, 0x3a, 0x5b,
-	0x00, 0x65, 0x98, 0x42,
-	0x04, 0xa0, 0x28, 0x7b,
-	0x00, 0x65, 0xe0, 0x5c,
-	0x00, 0x65, 0x2a, 0x43,
-	0x00, 0x65, 0xc8, 0x5c,
+	0xff, 0x6a, 0xf2, 0x5a,
+	0x00, 0x65, 0x50, 0x42,
+	0x04, 0xa0, 0xe0, 0x7a,
+	0x00, 0x65, 0x98, 0x5c,
+	0x00, 0x65, 0xe2, 0x42,
+	0x00, 0x65, 0x80, 0x5c,
 	0x31, 0x6a, 0x22, 0x01,
-	0x0c, 0x6a, 0x3a, 0x5b,
-	0x00, 0x65, 0x98, 0x42,
+	0x0c, 0x6a, 0xf2, 0x5a,
+	0x00, 0x65, 0x50, 0x42,
 	0x61, 0x6a, 0x22, 0x01,
-	0x00, 0x65, 0x98, 0x42,
-	0x51, 0x6a, 0x3e, 0x5b,
+	0x00, 0x65, 0x50, 0x42,
+	0x51, 0x6a, 0xf6, 0x5a,
 	0x51, 0x6a, 0x22, 0x01,
-	0x00, 0x65, 0x98, 0x42,
+	0x00, 0x65, 0x50, 0x42,
 	0x10, 0x3d, 0x06, 0x00,
 	0xff, 0x65, 0x68, 0x0c,
 	0xff, 0x06, 0xd4, 0x08,
-	0x01, 0x0c, 0x40, 0x7b,
-	0x04, 0x0c, 0x42, 0x6b,
+	0x01, 0x0c, 0xf8, 0x7a,
+	0x04, 0x0c, 0xfa, 0x6a,
 	0xe0, 0x03, 0x7a, 0x08,
-	0xe0, 0x3d, 0x4e, 0x63,
+	0xe0, 0x3d, 0x06, 0x63,
 	0xff, 0x65, 0xcc, 0x08,
 	0xff, 0x12, 0xda, 0x0c,
 	0xff, 0x06, 0xd4, 0x0c,
 	0xd1, 0x6a, 0x22, 0x01,
 	0x00, 0x65, 0xaa, 0x40,
 	0xff, 0x65, 0x26, 0x09,
-	0x01, 0x0b, 0x62, 0x6b,
-	0x10, 0x0c, 0x54, 0x7b,
-	0x04, 0x0b, 0x5c, 0x6b,
+	0x01, 0x0b, 0x1a, 0x6b,
+	0x10, 0x0c, 0x0c, 0x7b,
+	0x04, 0x0b, 0x14, 0x6b,
 	0xff, 0x6a, 0xca, 0x08,
-	0x04, 0x93, 0x60, 0x6b,
-	0x01, 0x94, 0x5e, 0x7b,
-	0x10, 0x94, 0x60, 0x6b,
-	0x80, 0x3d, 0x66, 0x73,
-	0x0f, 0x04, 0x6a, 0x6b,
-	0x02, 0x03, 0x6a, 0x7b,
-	0x11, 0x0c, 0x66, 0x7b,
+	0x04, 0x93, 0x18, 0x6b,
+	0x01, 0x94, 0x16, 0x7b,
+	0x10, 0x94, 0x18, 0x6b,
+	0x80, 0x3d, 0x1e, 0x73,
+	0x0f, 0x04, 0x22, 0x6b,
+	0x02, 0x03, 0x22, 0x7b,
+	0x11, 0x0c, 0x1e, 0x7b,
 	0xc7, 0x93, 0x26, 0x09,
 	0xff, 0x99, 0xd4, 0x08,
-	0x38, 0x93, 0x6c, 0x6b,
+	0x38, 0x93, 0x24, 0x6b,
 	0xff, 0x6a, 0xd4, 0x0c,
-	0x80, 0x36, 0x70, 0x6b,
+	0x80, 0x36, 0x28, 0x6b,
 	0x21, 0x6a, 0x22, 0x05,
 	0xff, 0x65, 0x20, 0x09,
-	0xff, 0x51, 0x7e, 0x63,
+	0xff, 0x51, 0x36, 0x63,
 	0xff, 0x37, 0xc8, 0x08,
-	0xa1, 0x6a, 0x8a, 0x43,
+	0xa1, 0x6a, 0x42, 0x43,
 	0xff, 0x51, 0xc8, 0x08,
-	0xb9, 0x6a, 0x8a, 0x43,
+	0xb9, 0x6a, 0x42, 0x43,
 	0xff, 0x90, 0xa4, 0x08,
-	0xff, 0xba, 0x8e, 0x73,
+	0xff, 0xba, 0x46, 0x73,
 	0xff, 0xba, 0x20, 0x09,
 	0xff, 0x65, 0xca, 0x18,
-	0x00, 0x6c, 0x82, 0x63,
+	0x00, 0x6c, 0x3a, 0x63,
 	0xff, 0x90, 0xca, 0x0c,
 	0xff, 0x6a, 0xca, 0x04,
-	0x20, 0x36, 0xa2, 0x7b,
-	0x00, 0x90, 0x76, 0x5b,
-	0xff, 0x65, 0xa2, 0x73,
-	0xff, 0x52, 0xa0, 0x73,
+	0x20, 0x36, 0x5a, 0x7b,
+	0x00, 0x90, 0x2e, 0x5b,
+	0xff, 0x65, 0x5a, 0x73,
+	0xff, 0x52, 0x58, 0x73,
 	0xff, 0xba, 0xcc, 0x08,
 	0xff, 0x52, 0x20, 0x09,
 	0xff, 0x66, 0x74, 0x09,
 	0xff, 0x65, 0x20, 0x0d,
 	0xff, 0xba, 0x7e, 0x0c,
-	0x00, 0x6a, 0xce, 0x5c,
+	0x00, 0x6a, 0x86, 0x5c,
 	0x0d, 0x6a, 0x6a, 0x00,
-	0x00, 0x51, 0x2e, 0x44,
-	0xff, 0x3f, 0xfc, 0x73,
+	0x00, 0x51, 0xe6, 0x43,
+	0xff, 0x3f, 0xb4, 0x73,
 	0xff, 0x6a, 0xa2, 0x00,
-	0x00, 0x3f, 0x76, 0x5b,
-	0xff, 0x65, 0xfc, 0x73,
+	0x00, 0x3f, 0x2e, 0x5b,
+	0xff, 0x65, 0xb4, 0x73,
 	0x20, 0x36, 0x6c, 0x00,
-	0x20, 0xa0, 0xb6, 0x6b,
+	0x20, 0xa0, 0x6e, 0x6b,
 	0xff, 0xb9, 0xa2, 0x0c,
 	0xff, 0x6a, 0xa2, 0x04,
 	0xff, 0x65, 0xa4, 0x08,
 	0xe0, 0x6a, 0xcc, 0x00,
-	0x45, 0x6a, 0x22, 0x5c,
+	0x45, 0x6a, 0xda, 0x5b,
 	0x01, 0x6a, 0xd0, 0x01,
 	0x09, 0x6a, 0xd6, 0x01,
-	0x80, 0xeb, 0xc2, 0x7b,
+	0x80, 0xeb, 0x7a, 0x7b,
 	0x01, 0x6a, 0xd6, 0x01,
 	0x01, 0xe9, 0xa4, 0x34,
 	0x88, 0x6a, 0xcc, 0x00,
-	0x45, 0x6a, 0x22, 0x5c,
+	0x45, 0x6a, 0xda, 0x5b,
 	0x01, 0x6a, 0x18, 0x01,
 	0xff, 0x6a, 0x1a, 0x09,
 	0xff, 0x6a, 0x1c, 0x09,
 	0x0d, 0x6a, 0x26, 0x01,
-	0x00, 0x65, 0xc0, 0x5c,
+	0x00, 0x65, 0x78, 0x5c,
 	0xff, 0x99, 0xa4, 0x0c,
 	0xff, 0x65, 0xa4, 0x08,
 	0xe0, 0x6a, 0xcc, 0x00,
-	0x45, 0x6a, 0x22, 0x5c,
+	0x45, 0x6a, 0xda, 0x5b,
 	0x01, 0x6a, 0xd0, 0x01,
 	0x01, 0x6a, 0xdc, 0x05,
 	0x88, 0x6a, 0xcc, 0x00,
-	0x45, 0x6a, 0x22, 0x5c,
+	0x45, 0x6a, 0xda, 0x5b,
 	0x01, 0x6a, 0x18, 0x01,
 	0xff, 0x6a, 0x1a, 0x09,
 	0xff, 0x6a, 0x1c, 0x09,
 	0x01, 0x6a, 0x26, 0x05,
 	0x01, 0x65, 0xd8, 0x31,
 	0x09, 0xee, 0xdc, 0x01,
-	0x80, 0xee, 0xf2, 0x7b,
+	0x80, 0xee, 0xaa, 0x7b,
 	0xff, 0x6a, 0xdc, 0x0d,
 	0xff, 0x65, 0x32, 0x09,
 	0x0a, 0x93, 0x26, 0x01,
-	0x00, 0x65, 0xc0, 0x44,
+	0x00, 0x65, 0x78, 0x44,
 	0xff, 0x37, 0xc8, 0x08,
-	0x00, 0x6a, 0xb8, 0x5b,
+	0x00, 0x6a, 0x70, 0x5b,
 	0xff, 0x52, 0xa2, 0x0c,
-	0x01, 0x0c, 0x02, 0x7c,
-	0x04, 0x0c, 0x02, 0x6c,
+	0x01, 0x0c, 0xba, 0x7b,
+	0x04, 0x0c, 0xba, 0x6b,
 	0xe0, 0x03, 0x06, 0x08,
 	0xe0, 0x03, 0x7a, 0x0c,
 	0xff, 0x8c, 0x10, 0x08,
@@ -539,34 +503,34 @@
 	0x00, 0x6c, 0xda, 0x24,
 	0xff, 0x65, 0xc8, 0x08,
 	0xe0, 0x6a, 0xcc, 0x00,
-	0x41, 0x6a, 0x1e, 0x5c,
+	0x41, 0x6a, 0xd6, 0x5b,
 	0xff, 0x90, 0xe2, 0x09,
 	0x20, 0x6a, 0xd0, 0x01,
-	0x04, 0x35, 0x40, 0x7c,
+	0x04, 0x35, 0xf8, 0x7b,
 	0x1d, 0x6a, 0xdc, 0x01,
-	0xdc, 0xee, 0x3c, 0x64,
-	0x00, 0x65, 0x56, 0x44,
+	0xdc, 0xee, 0xf4, 0x63,
+	0x00, 0x65, 0x0e, 0x44,
 	0x01, 0x6a, 0xdc, 0x01,
 	0x20, 0xa0, 0xd8, 0x31,
 	0x09, 0xee, 0xdc, 0x01,
-	0x80, 0xee, 0x46, 0x7c,
+	0x80, 0xee, 0xfe, 0x7b,
 	0x11, 0x6a, 0xdc, 0x01,
-	0x50, 0xee, 0x4a, 0x64,
+	0x50, 0xee, 0x02, 0x64,
 	0x20, 0x6a, 0xd0, 0x01,
 	0x09, 0x6a, 0xdc, 0x01,
-	0x88, 0xee, 0x50, 0x64,
+	0x88, 0xee, 0x08, 0x64,
 	0x19, 0x6a, 0xdc, 0x01,
-	0xd8, 0xee, 0x54, 0x64,
+	0xd8, 0xee, 0x0c, 0x64,
 	0xff, 0x6a, 0xdc, 0x09,
-	0x18, 0xee, 0x58, 0x6c,
+	0x18, 0xee, 0x10, 0x6c,
 	0xff, 0x6a, 0xd4, 0x0c,
 	0x88, 0x6a, 0xcc, 0x00,
-	0x41, 0x6a, 0x1e, 0x5c,
+	0x41, 0x6a, 0xd6, 0x5b,
 	0x20, 0x6a, 0x18, 0x01,
 	0xff, 0x6a, 0x1a, 0x09,
 	0xff, 0x6a, 0x1c, 0x09,
 	0xff, 0x35, 0x26, 0x09,
-	0x04, 0x35, 0x84, 0x6c,
+	0x04, 0x35, 0x3c, 0x6c,
 	0xa0, 0x6a, 0xca, 0x00,
 	0x20, 0x65, 0xc8, 0x18,
 	0xff, 0x6c, 0x32, 0x09,
@@ -577,31 +541,31 @@
 	0xff, 0x6c, 0x32, 0x09,
 	0xff, 0x6c, 0x32, 0x09,
 	0xff, 0x6c, 0x32, 0x09,
-	0x00, 0x65, 0x6e, 0x64,
+	0x00, 0x65, 0x26, 0x64,
 	0x0a, 0x93, 0x26, 0x01,
-	0x00, 0x65, 0xc0, 0x44,
+	0x00, 0x65, 0x78, 0x44,
 	0xa0, 0x6a, 0xcc, 0x00,
 	0xe8, 0x6a, 0xc8, 0x00,
-	0x01, 0x94, 0x88, 0x6c,
-	0x10, 0x94, 0x8a, 0x6c,
-	0x08, 0x94, 0x9c, 0x6c,
-	0x08, 0x94, 0x9c, 0x6c,
-	0x08, 0x94, 0x9c, 0x6c,
-	0x00, 0x65, 0xb0, 0x5c,
+	0x01, 0x94, 0x40, 0x6c,
+	0x10, 0x94, 0x42, 0x6c,
+	0x08, 0x94, 0x54, 0x6c,
+	0x08, 0x94, 0x54, 0x6c,
+	0x08, 0x94, 0x54, 0x6c,
+	0x00, 0x65, 0x68, 0x5c,
 	0x08, 0x64, 0xc8, 0x18,
 	0x00, 0x8c, 0xca, 0x18,
-	0x00, 0x65, 0x92, 0x4c,
-	0x00, 0x65, 0x88, 0x44,
+	0x00, 0x65, 0x4a, 0x4c,
+	0x00, 0x65, 0x40, 0x44,
 	0xf7, 0x93, 0x26, 0x09,
-	0x08, 0x93, 0x9e, 0x6c,
-	0x00, 0x65, 0xb0, 0x5c,
+	0x08, 0x93, 0x56, 0x6c,
+	0x00, 0x65, 0x68, 0x5c,
 	0x08, 0x64, 0xc8, 0x18,
-	0x08, 0x64, 0xa0, 0x64,
+	0x08, 0x64, 0x58, 0x64,
 	0xff, 0x6a, 0xd4, 0x0c,
-	0x00, 0x65, 0xc0, 0x5c,
-	0x00, 0x65, 0xb0, 0x5c,
-	0x00, 0x65, 0xb0, 0x5c,
-	0x00, 0x65, 0xb0, 0x5c,
+	0x00, 0x65, 0x78, 0x5c,
+	0x00, 0x65, 0x68, 0x5c,
+	0x00, 0x65, 0x68, 0x5c,
+	0x00, 0x65, 0x68, 0x5c,
 	0xff, 0x99, 0xda, 0x08,
 	0xff, 0x99, 0xda, 0x08,
 	0xff, 0x99, 0xda, 0x08,
@@ -610,19 +574,19 @@
 	0xff, 0x99, 0xda, 0x08,
 	0xff, 0x99, 0xda, 0x08,
 	0xff, 0x99, 0xda, 0x0c,
-	0x08, 0x94, 0xc0, 0x7c,
+	0x08, 0x94, 0x78, 0x7c,
 	0xf7, 0x93, 0x26, 0x09,
-	0x08, 0x93, 0xc4, 0x6c,
+	0x08, 0x93, 0x7c, 0x6c,
 	0xff, 0x6a, 0xd4, 0x0c,
 	0xff, 0x40, 0x74, 0x09,
 	0xff, 0x90, 0x80, 0x08,
 	0xff, 0x6a, 0x72, 0x05,
-	0xff, 0x40, 0xdc, 0x64,
-	0xff, 0x3f, 0xd4, 0x64,
+	0xff, 0x40, 0x94, 0x64,
+	0xff, 0x3f, 0x8c, 0x64,
 	0xff, 0x6a, 0xca, 0x04,
 	0xff, 0x3f, 0x20, 0x09,
 	0x01, 0x6a, 0x6a, 0x00,
-	0x00, 0xb9, 0x2e, 0x5c,
+	0x00, 0xb9, 0xe6, 0x5b,
 	0xff, 0xba, 0x7e, 0x0c,
 	0xff, 0x40, 0x20, 0x09,
 	0xff, 0xba, 0x80, 0x0c,
@@ -630,12 +594,20 @@
 	0xff, 0x90, 0x7e, 0x0c,
 };
 
+static int aic7xxx_patch15_func(struct aic7xxx_host *p);
+
+static int
+aic7xxx_patch15_func(struct aic7xxx_host *p)
+{
+	return ((p->bugs & AHC_BUG_SCBCHAN_UPLOAD) != 0);
+}
+
 static int aic7xxx_patch14_func(struct aic7xxx_host *p);
 
 static int
 aic7xxx_patch14_func(struct aic7xxx_host *p)
 {
-	return ((p->bugs & AHC_BUG_SCBCHAN_UPLOAD) != 0);
+	return ((p->bugs & AHC_BUG_PCI_2_1_RETRY) != 0);
 }
 
 static int aic7xxx_patch13_func(struct aic7xxx_host *p);
@@ -643,7 +615,7 @@
 static int
 aic7xxx_patch13_func(struct aic7xxx_host *p)
 {
-	return ((p->features & AHC_CMD_CHAN) == 0);
+	return ((p->features & AHC_WIDE) != 0);
 }
 
 static int aic7xxx_patch12_func(struct aic7xxx_host *p);
@@ -651,7 +623,7 @@
 static int
 aic7xxx_patch12_func(struct aic7xxx_host *p)
 {
-	return ((p->bugs & AHC_BUG_PCI_2_1_RETRY) != 0);
+	return ((p->bugs & AHC_BUG_AUTOFLUSH) != 0);
 }
 
 static int aic7xxx_patch11_func(struct aic7xxx_host *p);
@@ -659,7 +631,7 @@
 static int
 aic7xxx_patch11_func(struct aic7xxx_host *p)
 {
-	return ((p->features & AHC_WIDE) != 0);
+	return ((p->features & AHC_ULTRA2) == 0);
 }
 
 static int aic7xxx_patch10_func(struct aic7xxx_host *p);
@@ -667,7 +639,7 @@
 static int
 aic7xxx_patch10_func(struct aic7xxx_host *p)
 {
-	return ((p->features & AHC_ULTRA2) == 0);
+	return ((p->features & AHC_CMD_CHAN) == 0);
 }
 
 static int aic7xxx_patch9_func(struct aic7xxx_host *p);
@@ -675,7 +647,7 @@
 static int
 aic7xxx_patch9_func(struct aic7xxx_host *p)
 {
-	return ((p->bugs & AHC_BUG_AUTOFLUSH) != 0);
+	return ((p->chip & AHC_CHIPID_MASK) == AHC_AIC7895);
 }
 
 static int aic7xxx_patch8_func(struct aic7xxx_host *p);
@@ -772,59 +744,74 @@
 	{ aic7xxx_patch8_func, 52, 7, 1 },
 	{ aic7xxx_patch3_func, 60, 3, 1 },
 	{ aic7xxx_patch7_func, 63, 2, 1 },
-	{ aic7xxx_patch7_func, 87, 1, 2 },
-	{ aic7xxx_patch0_func, 88, 1, 1 },
-	{ aic7xxx_patch7_func, 103, 1, 2 },
-	{ aic7xxx_patch0_func, 104, 2, 1 },
-	{ aic7xxx_patch7_func, 108, 84, 15 },
-	{ aic7xxx_patch9_func, 177, 1, 1 },
-	{ aic7xxx_patch9_func, 178, 4, 1 },
-	{ aic7xxx_patch0_func, 192, 72, 12 },
-	{ aic7xxx_patch1_func, 192, 1, 2 },
-	{ aic7xxx_patch0_func, 193, 2, 1 },
-	{ aic7xxx_patch1_func, 200, 1, 1 },
-	{ aic7xxx_patch1_func, 203, 3, 2 },
-	{ aic7xxx_patch0_func, 206, 5, 1 },
-	{ aic7xxx_patch1_func, 214, 1, 2 },
-	{ aic7xxx_patch0_func, 215, 3, 1 },
-	{ aic7xxx_patch1_func, 225, 14, 2 },
-	{ aic7xxx_patch0_func, 239, 9, 1 },
-	{ aic7xxx_patch1_func, 254, 2, 2 },
-	{ aic7xxx_patch0_func, 256, 4, 1 },
-	{ aic7xxx_patch1_func, 265, 3, 3 },
-	{ aic7xxx_patch10_func, 267, 1, 1 },
-	{ aic7xxx_patch0_func, 268, 5, 1 },
-	{ aic7xxx_patch10_func, 273, 1, 2 },
-	{ aic7xxx_patch0_func, 274, 9, 1 },
-	{ aic7xxx_patch11_func, 290, 1, 2 },
-	{ aic7xxx_patch0_func, 291, 1, 1 },
-	{ aic7xxx_patch4_func, 352, 1, 2 },
-	{ aic7xxx_patch0_func, 353, 1, 1 },
-	{ aic7xxx_patch2_func, 356, 1, 1 },
-	{ aic7xxx_patch1_func, 366, 3, 2 },
-	{ aic7xxx_patch0_func, 369, 5, 1 },
-	{ aic7xxx_patch11_func, 377, 1, 2 },
-	{ aic7xxx_patch0_func, 378, 1, 1 },
-	{ aic7xxx_patch5_func, 383, 1, 1 },
-	{ aic7xxx_patch10_func, 425, 15, 2 },
-	{ aic7xxx_patch12_func, 438, 1, 1 },
-	{ aic7xxx_patch1_func, 477, 7, 2 },
-	{ aic7xxx_patch0_func, 484, 8, 1 },
-	{ aic7xxx_patch1_func, 493, 4, 2 },
-	{ aic7xxx_patch0_func, 497, 6, 1 },
-	{ aic7xxx_patch1_func, 503, 4, 2 },
-	{ aic7xxx_patch0_func, 507, 3, 1 },
-	{ aic7xxx_patch13_func, 517, 10, 1 },
-	{ aic7xxx_patch1_func, 536, 22, 8 },
-	{ aic7xxx_patch10_func, 544, 4, 4 },
-	{ aic7xxx_patch0_func, 548, 7, 3 },
-	{ aic7xxx_patch14_func, 548, 5, 2 },
-	{ aic7xxx_patch0_func, 553, 2, 1 },
-	{ aic7xxx_patch0_func, 558, 50, 3 },
-	{ aic7xxx_patch12_func, 579, 17, 2 },
-	{ aic7xxx_patch0_func, 596, 4, 1 },
-	{ aic7xxx_patch13_func, 608, 4, 1 },
-	{ aic7xxx_patch5_func, 612, 2, 1 },
-	{ aic7xxx_patch5_func, 615, 9, 1 },
+	{ aic7xxx_patch7_func, 102, 1, 2 },
+	{ aic7xxx_patch0_func, 103, 2, 1 },
+	{ aic7xxx_patch7_func, 107, 2, 1 },
+	{ aic7xxx_patch9_func, 109, 1, 1 },
+	{ aic7xxx_patch10_func, 110, 2, 1 },
+	{ aic7xxx_patch7_func, 113, 1, 2 },
+	{ aic7xxx_patch0_func, 114, 1, 1 },
+	{ aic7xxx_patch1_func, 118, 1, 1 },
+	{ aic7xxx_patch1_func, 121, 3, 3 },
+	{ aic7xxx_patch11_func, 123, 1, 1 },
+	{ aic7xxx_patch0_func, 124, 5, 1 },
+	{ aic7xxx_patch7_func, 132, 1, 1 },
+	{ aic7xxx_patch9_func, 133, 1, 1 },
+	{ aic7xxx_patch10_func, 134, 3, 1 },
+	{ aic7xxx_patch7_func, 137, 3, 2 },
+	{ aic7xxx_patch0_func, 140, 2, 1 },
+	{ aic7xxx_patch7_func, 142, 5, 2 },
+	{ aic7xxx_patch0_func, 147, 3, 1 },
+	{ aic7xxx_patch7_func, 150, 1, 2 },
+	{ aic7xxx_patch0_func, 151, 2, 1 },
+	{ aic7xxx_patch1_func, 153, 15, 4 },
+	{ aic7xxx_patch11_func, 166, 1, 2 },
+	{ aic7xxx_patch0_func, 167, 1, 1 },
+	{ aic7xxx_patch0_func, 168, 10, 1 },
+	{ aic7xxx_patch7_func, 181, 1, 2 },
+	{ aic7xxx_patch0_func, 182, 2, 1 },
+	{ aic7xxx_patch7_func, 184, 18, 1 },
+	{ aic7xxx_patch1_func, 202, 3, 3 },
+	{ aic7xxx_patch7_func, 204, 1, 1 },
+	{ aic7xxx_patch0_func, 205, 4, 1 },
+	{ aic7xxx_patch7_func, 210, 2, 1 },
+	{ aic7xxx_patch7_func, 215, 13, 3 },
+	{ aic7xxx_patch12_func, 218, 1, 1 },
+	{ aic7xxx_patch12_func, 219, 4, 1 },
+	{ aic7xxx_patch1_func, 229, 3, 3 },
+	{ aic7xxx_patch11_func, 231, 1, 1 },
+	{ aic7xxx_patch0_func, 232, 5, 1 },
+	{ aic7xxx_patch11_func, 237, 1, 2 },
+	{ aic7xxx_patch0_func, 238, 9, 1 },
+	{ aic7xxx_patch13_func, 254, 1, 2 },
+	{ aic7xxx_patch0_func, 255, 1, 1 },
+	{ aic7xxx_patch4_func, 316, 1, 2 },
+	{ aic7xxx_patch0_func, 317, 1, 1 },
+	{ aic7xxx_patch2_func, 320, 1, 1 },
+	{ aic7xxx_patch1_func, 330, 3, 2 },
+	{ aic7xxx_patch0_func, 333, 5, 1 },
+	{ aic7xxx_patch13_func, 341, 1, 2 },
+	{ aic7xxx_patch0_func, 342, 1, 1 },
+	{ aic7xxx_patch5_func, 347, 1, 1 },
+	{ aic7xxx_patch11_func, 389, 15, 2 },
+	{ aic7xxx_patch14_func, 402, 1, 1 },
+	{ aic7xxx_patch1_func, 441, 7, 2 },
+	{ aic7xxx_patch0_func, 448, 8, 1 },
+	{ aic7xxx_patch1_func, 457, 4, 2 },
+	{ aic7xxx_patch0_func, 461, 6, 1 },
+	{ aic7xxx_patch1_func, 467, 4, 2 },
+	{ aic7xxx_patch0_func, 471, 3, 1 },
+	{ aic7xxx_patch10_func, 481, 10, 1 },
+	{ aic7xxx_patch1_func, 500, 22, 5 },
+	{ aic7xxx_patch11_func, 508, 4, 1 },
+	{ aic7xxx_patch7_func, 512, 7, 3 },
+	{ aic7xxx_patch15_func, 512, 5, 2 },
+	{ aic7xxx_patch0_func, 517, 2, 1 },
+	{ aic7xxx_patch10_func, 522, 50, 3 },
+	{ aic7xxx_patch14_func, 543, 17, 2 },
+	{ aic7xxx_patch0_func, 560, 4, 1 },
+	{ aic7xxx_patch10_func, 572, 4, 1 },
+	{ aic7xxx_patch5_func, 576, 2, 1 },
+	{ aic7xxx_patch5_func, 579, 9, 1 },
 
 };
diff -U3 -rN scsi.save/aic7xxx.c scsi/aic7xxx.c
--- scsi.save/aic7xxx.c	Wed Feb  7 15:07:22 2001
+++ scsi/aic7xxx.c	Wed Feb  7 23:18:29 2001
@@ -270,7 +270,7 @@
     0, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL
 };
 
-#define AIC7XXX_C_VERSION  "5.2.2"
+#define AIC7XXX_C_VERSION  "5.2.3"
 
 #define NUMBER(arr)     (sizeof(arr) / sizeof(arr[0]))
 #define MIN(a,b)        (((a) < (b)) ? (a) : (b))

                 reply	other threads:[~2001-02-08  7:26 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3A8249DE.BA3B76A6@redhat.com \
    --to=dledford@redhat.com \
    --cc=alan@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox