public inbox for linux-scsi@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] aic7xxx: upport all sequencer and core fixes from adaptec version 6.3.9
@ 2005-08-04 22:33 James Bottomley
  2005-08-05 13:25 ` SCSI Mailing List
  0 siblings, 1 reply; 3+ messages in thread
From: James Bottomley @ 2005-08-04 22:33 UTC (permalink / raw)
  To: SCSI Mailing List

This patch upports all relevant code fixes and bumps the driver version
to 7.0 to signify starting a new tree.

James

diff --git a/Documentation/scsi/aic7xxx.txt b/Documentation/scsi/aic7xxx.txt
--- a/Documentation/scsi/aic7xxx.txt
+++ b/Documentation/scsi/aic7xxx.txt
@@ -1,5 +1,5 @@
 ====================================================================
-=    Adaptec Aic7xxx Fast -> Ultra160 Family Manager Set v6.2.28   =
+=    Adaptec Aic7xxx Fast -> Ultra160 Family Manager Set v7.0      =
 =                            README for                            =
 =                     The Linux Operating System                   =
 ====================================================================
@@ -131,6 +131,10 @@ The following information is available i
       SCSI "stub" effects.
 
 2. Version History
+   7.0	  (4th August, 2005)
+	- Updated driver to use SCSI transport class infrastructure
+	- Upported sequencer and core fixes from last adaptec released
+	  version of the driver.
    6.2.36 (June 3rd, 2003)
         - Correct code that disables PCI parity error checking.
         - Correct and simplify handling of the ignore wide residue
diff --git a/drivers/scsi/aic7xxx/aic7xxx.h b/drivers/scsi/aic7xxx/aic7xxx.h
--- a/drivers/scsi/aic7xxx/aic7xxx.h
+++ b/drivers/scsi/aic7xxx/aic7xxx.h
@@ -37,7 +37,7 @@
  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGES.
  *
- * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.h#79 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.h#85 $
  *
  * $FreeBSD$
  */
@@ -243,7 +243,7 @@ typedef enum {
 	 */
 	AHC_AIC7850_FE	= AHC_SPIOCAP|AHC_AUTOPAUSE|AHC_TARGETMODE|AHC_ULTRA,
 	AHC_AIC7860_FE	= AHC_AIC7850_FE,
-	AHC_AIC7870_FE	= AHC_TARGETMODE,
+	AHC_AIC7870_FE	= AHC_TARGETMODE|AHC_AUTOPAUSE,
 	AHC_AIC7880_FE	= AHC_AIC7870_FE|AHC_ULTRA,
 	/*
 	 * Although we have space for both the initiator and
diff --git a/drivers/scsi/aic7xxx/aic7xxx.reg b/drivers/scsi/aic7xxx/aic7xxx.reg
--- a/drivers/scsi/aic7xxx/aic7xxx.reg
+++ b/drivers/scsi/aic7xxx/aic7xxx.reg
@@ -39,7 +39,7 @@
  *
  * $FreeBSD$
  */
-VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic7xxx.reg#39 $"
+VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic7xxx.reg#40 $"
 
 /*
  * This file is processed by the aic7xxx_asm utility for use in assembling
@@ -1306,7 +1306,6 @@ scratch_ram {
 	 */
 	MWI_RESIDUAL {
 		size		1
-		alias	TARG_IMMEDIATE_SCB
 	}
 	/*
 	 * SCBID of the next SCB to be started by the controller.
@@ -1461,6 +1460,7 @@ scratch_ram {
 	 */
 	LAST_MSG {
 		size		1
+		alias	TARG_IMMEDIATE_SCB
 	}
 
 	/*
diff --git a/drivers/scsi/aic7xxx/aic7xxx.seq b/drivers/scsi/aic7xxx/aic7xxx.seq
--- a/drivers/scsi/aic7xxx/aic7xxx.seq
+++ b/drivers/scsi/aic7xxx/aic7xxx.seq
@@ -40,7 +40,7 @@
  * $FreeBSD$
  */
 
-VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic7xxx.seq#56 $"
+VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic7xxx.seq#58 $"
 PATCH_ARG_LIST = "struct ahc_softc *ahc"
 PREFIX = "ahc_"
 
@@ -679,6 +679,7 @@ await_busfree:
 		clr	SCSIBUSL;	/* Prevent bit leakage durint SELTO */
 	}
 	and	SXFRCTL0, ~SPIOEN;
+	mvi	SEQ_FLAGS, NOT_IDENTIFIED|NO_CDB_SENT;
 	test	SSTAT1,REQINIT|BUSFREE	jz .;
 	test	SSTAT1, BUSFREE jnz poll_for_work;
 	mvi	MISSED_BUSFREE call set_seqint;
@@ -1097,7 +1098,7 @@ ultra2_dmahalt:
 		test	SCB_RESIDUAL_DATACNT[3], SG_LAST_SEG jz dma_mid_sg;
 		if ((ahc->flags & AHC_TARGETROLE) != 0) {
 			test	SSTAT0, TARGET jz dma_last_sg;
-			if ((ahc->flags & AHC_TMODE_WIDEODD_BUG) != 0) {
+			if ((ahc->bugs & AHC_TMODE_WIDEODD_BUG) != 0) {
 				test	DMAPARAMS, DIRECTION jz dma_mid_sg;
 			}
 		}
diff --git a/drivers/scsi/aic7xxx/aic7xxx_93cx6.c b/drivers/scsi/aic7xxx/aic7xxx_93cx6.c
--- a/drivers/scsi/aic7xxx/aic7xxx_93cx6.c
+++ b/drivers/scsi/aic7xxx/aic7xxx_93cx6.c
@@ -28,9 +28,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Id: //depot/aic7xxx/aic7xxx/aic7xxx_93cx6.c#17 $
- *
- * $FreeBSD$
+ * $Id: //depot/aic7xxx/aic7xxx/aic7xxx_93cx6.c#19 $
  */
 
 /*
@@ -64,7 +62,6 @@
  *   is preceded by an initial zero (leading 0, followed by 16-bits, MSB
  *   first).  The clock cycling from low to high initiates the next data
  *   bit to be sent from the chip.
- *
  */
 
 #ifdef __linux__
@@ -81,14 +78,22 @@
  * Right now, we only have to read the SEEPROM.  But we make it easier to
  * add other 93Cx6 functions.
  */
-static struct seeprom_cmd {
+struct seeprom_cmd {
   	uint8_t len;
- 	uint8_t bits[9];
-} seeprom_read = {3, {1, 1, 0}};
+ 	uint8_t bits[11];
+};
 
+/* Short opcodes for the c46 */
 static struct seeprom_cmd seeprom_ewen = {9, {1, 0, 0, 1, 1, 0, 0, 0, 0}};
 static struct seeprom_cmd seeprom_ewds = {9, {1, 0, 0, 0, 0, 0, 0, 0, 0}};
+
+/* Long opcodes for the C56/C66 */
+static struct seeprom_cmd seeprom_long_ewen = {11, {1, 0, 0, 1, 1, 0, 0, 0, 0}};
+static struct seeprom_cmd seeprom_long_ewds = {11, {1, 0, 0, 0, 0, 0, 0, 0, 0}};
+
+/* Common opcodes */
 static struct seeprom_cmd seeprom_write = {3, {1, 0, 1}};
+static struct seeprom_cmd seeprom_read  = {3, {1, 1, 0}};
 
 /*
  * Wait for the SEERDY to go high; about 800 ns.
@@ -222,12 +227,25 @@ int
 ahc_write_seeprom(struct seeprom_descriptor *sd, uint16_t *buf,
 		  u_int start_addr, u_int count)
 {
+	struct seeprom_cmd *ewen, *ewds;
 	uint16_t v;
 	uint8_t temp;
 	int i, k;
 
 	/* Place the chip into write-enable mode */
-	send_seeprom_cmd(sd, &seeprom_ewen);
+	if (sd->sd_chip == C46) {
+		ewen = &seeprom_ewen;
+		ewds = &seeprom_ewds;
+	} else if (sd->sd_chip == C56_66) {
+		ewen = &seeprom_long_ewen;
+		ewds = &seeprom_long_ewds;
+	} else {
+		printf("ahc_write_seeprom: unsupported seeprom type %d\n",
+		       sd->sd_chip);
+		return (0);
+	}
+
+	send_seeprom_cmd(sd, ewen);
 	reset_seeprom(sd);
 
 	/* Write all requested data out to the seeprom. */
@@ -277,7 +295,7 @@ ahc_write_seeprom(struct seeprom_descrip
 	}
 
 	/* Put the chip back into write-protect mode */
-	send_seeprom_cmd(sd, &seeprom_ewds);
+	send_seeprom_cmd(sd, ewds);
 	reset_seeprom(sd);
 
 	return (1);
diff --git a/drivers/scsi/aic7xxx/aic7xxx_core.c b/drivers/scsi/aic7xxx/aic7xxx_core.c
--- a/drivers/scsi/aic7xxx/aic7xxx_core.c
+++ b/drivers/scsi/aic7xxx/aic7xxx_core.c
@@ -37,9 +37,7 @@
  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGES.
  *
- * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.c#134 $
- *
- * $FreeBSD$
+ * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.c#155 $
  */
 
 #ifdef __linux__
@@ -287,10 +285,19 @@ ahc_restart(struct ahc_softc *ahc)
 		ahc_outb(ahc, SEQ_FLAGS2,
 			 ahc_inb(ahc, SEQ_FLAGS2) & ~SCB_DMA);
 	}
+
+	/*
+	 * Clear any pending sequencer interrupt.  It is no
+	 * longer relevant since we're resetting the Program
+	 * Counter.
+	 */
+	ahc_outb(ahc, CLRINT, CLRSEQINT);
+
 	ahc_outb(ahc, MWI_RESIDUAL, 0);
 	ahc_outb(ahc, SEQCTL, ahc->seqctl);
 	ahc_outb(ahc, SEQADDR0, 0);
 	ahc_outb(ahc, SEQADDR1, 0);
+
 	ahc_unpause(ahc);
 }
 
@@ -1174,19 +1181,20 @@ ahc_handle_scsiint(struct ahc_softc *ahc
 				       scb_index);
 			}
 #endif
-			/*
-			 * Force a renegotiation with this target just in
-			 * case the cable was pulled and will later be
-			 * re-attached.  The target may forget its negotiation
-			 * settings with us should it attempt to reselect
-			 * during the interruption.  The target will not issue
-			 * a unit attention in this case, so we must always
-			 * renegotiate.
-			 */
 			ahc_scb_devinfo(ahc, &devinfo, scb);
-			ahc_force_renegotiation(ahc, &devinfo);
 			ahc_set_transaction_status(scb, CAM_SEL_TIMEOUT);
 			ahc_freeze_devq(ahc, scb);
+
+			/*
+			 * Cancel any pending transactions on the device
+			 * now that it seems to be missing.  This will
+			 * also revert us to async/narrow transfers until
+			 * we can renegotiate with the device.
+			 */
+			ahc_handle_devreset(ahc, &devinfo,
+					    CAM_SEL_TIMEOUT,
+					    "Selection Timeout",
+					    /*verbose_level*/1);
 		}
 		ahc_outb(ahc, CLRINT, CLRSCSIINT);
 		ahc_restart(ahc);
@@ -3763,8 +3771,9 @@ ahc_handle_devreset(struct ahc_softc *ah
 			 /*period*/0, /*offset*/0, /*ppr_options*/0,
 			 AHC_TRANS_CUR, /*paused*/TRUE);
 	
-	ahc_send_async(ahc, devinfo->channel, devinfo->target,
-		       CAM_LUN_WILDCARD, AC_SENT_BDR, NULL);
+	if (status != CAM_SEL_TIMEOUT)
+		ahc_send_async(ahc, devinfo->channel, devinfo->target,
+			       CAM_LUN_WILDCARD, AC_SENT_BDR, NULL);
 
 	if (message != NULL
 	 && (verbose_level <= bootverbose))
@@ -4003,14 +4012,6 @@ ahc_reset(struct ahc_softc *ahc, int rei
 	 * to disturb the integrity of the bus.
 	 */
 	ahc_pause(ahc);
-	if ((ahc_inb(ahc, HCNTRL) & CHIPRST) != 0) {
-		/*
-		 * The chip has not been initialized since
-		 * PCI/EISA/VLB bus reset.  Don't trust
-		 * "left over BIOS data".
-		 */
-		ahc->flags |= AHC_NO_BIOS_INIT;
-	}
 	sxfrctl1_b = 0;
 	if ((ahc->chip & AHC_CHIPID_MASK) == AHC_AIC7770) {
 		u_int sblkctl;
@@ -5036,14 +5037,23 @@ ahc_pause_and_flushwork(struct ahc_softc
 	ahc->flags |= AHC_ALL_INTERRUPTS;
 	paused = FALSE;
 	do {
-		if (paused)
+		if (paused) {
 			ahc_unpause(ahc);
+			/*
+			 * Give the sequencer some time to service
+			 * any active selections.
+			 */
+			ahc_delay(500);
+		}
 		ahc_intr(ahc);
 		ahc_pause(ahc);
 		paused = TRUE;
 		ahc_outb(ahc, SCSISEQ, ahc_inb(ahc, SCSISEQ) & ~ENSELO);
-		ahc_clear_critical_section(ahc);
 		intstat = ahc_inb(ahc, INTSTAT);
+		if ((intstat & INT_PEND) == 0) {
+			ahc_clear_critical_section(ahc);
+			intstat = ahc_inb(ahc, INTSTAT);
+		}
 	} while (--maxloops
 	      && (intstat != 0xFF || (ahc->features & AHC_REMOVABLE) == 0)
 	      && ((intstat & INT_PEND) != 0
diff --git a/drivers/scsi/aic7xxx/aic7xxx_osm.c b/drivers/scsi/aic7xxx/aic7xxx_osm.c
--- a/drivers/scsi/aic7xxx/aic7xxx_osm.c
+++ b/drivers/scsi/aic7xxx/aic7xxx_osm.c
@@ -635,6 +635,8 @@ ahc_linux_slave_alloc(struct scsi_device
 	
 	targ->sdev[sdev->lun] = sdev;
 
+	spi_period(starget) = 0;
+
 	return 0;
 }
 
diff --git a/drivers/scsi/aic7xxx/aic7xxx_osm.h b/drivers/scsi/aic7xxx/aic7xxx_osm.h
--- a/drivers/scsi/aic7xxx/aic7xxx_osm.h
+++ b/drivers/scsi/aic7xxx/aic7xxx_osm.h
@@ -265,7 +265,7 @@ ahc_scb_timer_reset(struct scb *scb, u_i
 /***************************** SMP support ************************************/
 #include <linux/spinlock.h>
 
-#define AIC7XXX_DRIVER_VERSION "6.2.36"
+#define AIC7XXX_DRIVER_VERSION "7.0"
 
 /*************************** Device Data Structures ***************************/
 /*
diff --git a/drivers/scsi/aic7xxx/aic7xxx_reg.h_shipped b/drivers/scsi/aic7xxx/aic7xxx_reg.h_shipped
--- a/drivers/scsi/aic7xxx/aic7xxx_reg.h_shipped
+++ b/drivers/scsi/aic7xxx/aic7xxx_reg.h_shipped
@@ -2,8 +2,8 @@
  * DO NOT EDIT - This file is automatically generated
  *		 from the following source files:
  *
- * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.seq#56 $
- * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.reg#39 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.seq#58 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.reg#40 $
  */
 typedef int (ahc_reg_print_t)(u_int, u_int *, u_int);
 typedef struct ahc_reg_parse_entry {
@@ -1298,7 +1298,6 @@ ahc_reg_print_t ahc_sg_cache_pre_print;
 #define	CMDSIZE_TABLE_TAIL		0x34
 
 #define	MWI_RESIDUAL    		0x38
-#define	TARG_IMMEDIATE_SCB		0x38
 
 #define	NEXT_QUEUED_SCB 		0x39
 
@@ -1380,6 +1379,7 @@ ahc_reg_print_t ahc_sg_cache_pre_print;
 #define	RETURN_2        		0x52
 
 #define	LAST_MSG        		0x53
+#define	TARG_IMMEDIATE_SCB		0x53
 
 #define	SCSISEQ_TEMPLATE		0x54
 #define		ENSELO          	0x40
diff --git a/drivers/scsi/aic7xxx/aic7xxx_reg_print.c_shipped b/drivers/scsi/aic7xxx/aic7xxx_reg_print.c_shipped
--- a/drivers/scsi/aic7xxx/aic7xxx_reg_print.c_shipped
+++ b/drivers/scsi/aic7xxx/aic7xxx_reg_print.c_shipped
@@ -2,8 +2,8 @@
  * DO NOT EDIT - This file is automatically generated
  *		 from the following source files:
  *
- * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.seq#56 $
- * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.reg#39 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.seq#58 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.reg#40 $
  */
 
 #include "aic7xxx_osm.h"
diff --git a/drivers/scsi/aic7xxx/aic7xxx_seq.h_shipped b/drivers/scsi/aic7xxx/aic7xxx_seq.h_shipped
--- a/drivers/scsi/aic7xxx/aic7xxx_seq.h_shipped
+++ b/drivers/scsi/aic7xxx/aic7xxx_seq.h_shipped
@@ -2,13 +2,13 @@
  * DO NOT EDIT - This file is automatically generated
  *		 from the following source files:
  *
- * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.seq#56 $
- * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.reg#39 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.seq#58 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.reg#40 $
  */
 static uint8_t seqprog[] = {
 	0xb2, 0x00, 0x00, 0x08,
 	0xf7, 0x11, 0x22, 0x08,
-	0x00, 0x65, 0xec, 0x59,
+	0x00, 0x65, 0xee, 0x59,
 	0xf7, 0x01, 0x02, 0x08,
 	0xff, 0x6a, 0x24, 0x08,
 	0x40, 0x00, 0x40, 0x68,
@@ -21,15 +21,15 @@ static uint8_t seqprog[] = {
 	0x01, 0x4d, 0xc8, 0x30,
 	0x00, 0x4c, 0x12, 0x70,
 	0x01, 0x39, 0xa2, 0x30,
-	0x00, 0x6a, 0xc0, 0x5e,
+	0x00, 0x6a, 0xc2, 0x5e,
 	0x01, 0x51, 0x20, 0x31,
 	0x01, 0x57, 0xae, 0x00,
 	0x0d, 0x6a, 0x76, 0x00,
-	0x00, 0x51, 0x12, 0x5e,
+	0x00, 0x51, 0x14, 0x5e,
 	0x01, 0x51, 0xc8, 0x30,
 	0x00, 0x39, 0xc8, 0x60,
 	0x00, 0xbb, 0x30, 0x70,
-	0xc1, 0x6a, 0xd8, 0x5e,
+	0xc1, 0x6a, 0xda, 0x5e,
 	0x01, 0xbf, 0x72, 0x30,
 	0x01, 0x40, 0x7e, 0x31,
 	0x01, 0x90, 0x80, 0x30,
@@ -49,10 +49,10 @@ static uint8_t seqprog[] = {
 	0x08, 0x6a, 0x78, 0x00,
 	0x01, 0x50, 0xc8, 0x30,
 	0xe0, 0x6a, 0xcc, 0x00,
-	0x48, 0x6a, 0xfc, 0x5d,
+	0x48, 0x6a, 0xfe, 0x5d,
 	0x01, 0x6a, 0xdc, 0x01,
 	0x88, 0x6a, 0xcc, 0x00,
-	0x48, 0x6a, 0xfc, 0x5d,
+	0x48, 0x6a, 0xfe, 0x5d,
 	0x01, 0x6a, 0x26, 0x01,
 	0xf0, 0x19, 0x7a, 0x08,
 	0x0f, 0x18, 0xc8, 0x08,
@@ -93,7 +93,7 @@ static uint8_t seqprog[] = {
 	0x00, 0x65, 0x20, 0x41,
 	0x02, 0x57, 0xae, 0x00,
 	0x00, 0x65, 0x9e, 0x40,
-	0x61, 0x6a, 0xd8, 0x5e,
+	0x61, 0x6a, 0xda, 0x5e,
 	0x08, 0x51, 0x20, 0x71,
 	0x02, 0x0b, 0xb2, 0x78,
 	0x00, 0x65, 0xae, 0x40,
@@ -106,7 +106,7 @@ static uint8_t seqprog[] = {
 	0x80, 0x3d, 0x7a, 0x00,
 	0x20, 0x6a, 0x16, 0x00,
 	0x00, 0x65, 0xcc, 0x41,
-	0x00, 0x65, 0xb2, 0x5e,
+	0x00, 0x65, 0xb4, 0x5e,
 	0x00, 0x65, 0x12, 0x40,
 	0x20, 0x11, 0xd2, 0x68,
 	0x20, 0x6a, 0x18, 0x00,
@@ -140,27 +140,27 @@ static uint8_t seqprog[] = {
 	0x80, 0x0b, 0xc4, 0x79,
 	0x12, 0x01, 0x02, 0x00,
 	0x01, 0xab, 0xac, 0x30,
-	0xe4, 0x6a, 0x6e, 0x5d,
+	0xe4, 0x6a, 0x70, 0x5d,
 	0x40, 0x6a, 0x16, 0x00,
-	0x80, 0x3e, 0x84, 0x5d,
+	0x80, 0x3e, 0x86, 0x5d,
 	0x20, 0xb8, 0x18, 0x79,
-	0x20, 0x6a, 0x84, 0x5d,
-	0x00, 0xab, 0x84, 0x5d,
+	0x20, 0x6a, 0x86, 0x5d,
+	0x00, 0xab, 0x86, 0x5d,
 	0x01, 0xa9, 0x78, 0x30,
 	0x10, 0xb8, 0x20, 0x79,
-	0xe4, 0x6a, 0x6e, 0x5d,
+	0xe4, 0x6a, 0x70, 0x5d,
 	0x00, 0x65, 0xae, 0x40,
 	0x10, 0x03, 0x3c, 0x69,
 	0x08, 0x3c, 0x5a, 0x69,
 	0x04, 0x3c, 0x92, 0x69,
 	0x02, 0x3c, 0x98, 0x69,
 	0x01, 0x3c, 0x44, 0x79,
-	0xff, 0x6a, 0x70, 0x00,
+	0xff, 0x6a, 0xa6, 0x00,
 	0x00, 0x65, 0xa4, 0x59,
-	0x00, 0x6a, 0xc0, 0x5e,
-	0xff, 0x38, 0x30, 0x71,
+	0x00, 0x6a, 0xc2, 0x5e,
+	0xff, 0x53, 0x30, 0x71,
 	0x0d, 0x6a, 0x76, 0x00,
-	0x00, 0x38, 0x12, 0x5e,
+	0x00, 0x53, 0x14, 0x5e,
 	0x00, 0x65, 0xea, 0x58,
 	0x12, 0x01, 0x02, 0x00,
 	0x00, 0x65, 0x18, 0x41,
@@ -168,10 +168,10 @@ static uint8_t seqprog[] = {
 	0x00, 0x65, 0xf2, 0x58,
 	0xfd, 0x57, 0xae, 0x08,
 	0x00, 0x65, 0xae, 0x40,
-	0xe4, 0x6a, 0x6e, 0x5d,
+	0xe4, 0x6a, 0x70, 0x5d,
 	0x20, 0x3c, 0x4a, 0x79,
-	0x02, 0x6a, 0x84, 0x5d,
-	0x04, 0x6a, 0x84, 0x5d,
+	0x02, 0x6a, 0x86, 0x5d,
+	0x04, 0x6a, 0x86, 0x5d,
 	0x01, 0x03, 0x4c, 0x69,
 	0xf7, 0x11, 0x22, 0x08,
 	0xff, 0x6a, 0x24, 0x08,
@@ -182,13 +182,13 @@ static uint8_t seqprog[] = {
 	0x80, 0x86, 0xc8, 0x08,
 	0x01, 0x4f, 0xc8, 0x30,
 	0x00, 0x50, 0x6c, 0x61,
-	0xc4, 0x6a, 0x6e, 0x5d,
+	0xc4, 0x6a, 0x70, 0x5d,
 	0x40, 0x3c, 0x68, 0x79,
-	0x28, 0x6a, 0x84, 0x5d,
+	0x28, 0x6a, 0x86, 0x5d,
 	0x00, 0x65, 0x4c, 0x41,
-	0x08, 0x6a, 0x84, 0x5d,
+	0x08, 0x6a, 0x86, 0x5d,
 	0x00, 0x65, 0x4c, 0x41,
-	0x84, 0x6a, 0x6e, 0x5d,
+	0x84, 0x6a, 0x70, 0x5d,
 	0x00, 0x65, 0xf2, 0x58,
 	0x01, 0x66, 0xc8, 0x30,
 	0x01, 0x64, 0xd8, 0x31,
@@ -208,16 +208,16 @@ static uint8_t seqprog[] = {
 	0xf7, 0x3c, 0x78, 0x08,
 	0x00, 0x65, 0x20, 0x41,
 	0x40, 0xaa, 0x7e, 0x10,
-	0x04, 0xaa, 0x6e, 0x5d,
-	0x00, 0x65, 0x56, 0x42,
-	0xc4, 0x6a, 0x6e, 0x5d,
+	0x04, 0xaa, 0x70, 0x5d,
+	0x00, 0x65, 0x58, 0x42,
+	0xc4, 0x6a, 0x70, 0x5d,
 	0xc0, 0x6a, 0x7e, 0x00,
-	0x00, 0xa8, 0x84, 0x5d,
+	0x00, 0xa8, 0x86, 0x5d,
 	0xe4, 0x6a, 0x06, 0x00,
-	0x00, 0x6a, 0x84, 0x5d,
+	0x00, 0x6a, 0x86, 0x5d,
 	0x00, 0x65, 0x4c, 0x41,
 	0x10, 0x3c, 0xa8, 0x69,
-	0x00, 0xbb, 0x8a, 0x44,
+	0x00, 0xbb, 0x8c, 0x44,
 	0x18, 0x6a, 0xda, 0x01,
 	0x01, 0x69, 0xd8, 0x31,
 	0x1c, 0x6a, 0xd0, 0x01,
@@ -227,31 +227,32 @@ static uint8_t seqprog[] = {
 	0x01, 0x93, 0x26, 0x01,
 	0x03, 0x6a, 0x2a, 0x01,
 	0x01, 0x69, 0x32, 0x31,
-	0x1c, 0x6a, 0xe0, 0x5d,
+	0x1c, 0x6a, 0xe2, 0x5d,
 	0x0a, 0x93, 0x26, 0x01,
-	0x00, 0x65, 0xa8, 0x5e,
+	0x00, 0x65, 0xaa, 0x5e,
 	0x01, 0x50, 0xa0, 0x18,
 	0x02, 0x6a, 0x22, 0x05,
 	0x1a, 0x01, 0x02, 0x00,
 	0x80, 0x6a, 0x74, 0x00,
 	0x40, 0x6a, 0x78, 0x00,
 	0x40, 0x6a, 0x16, 0x00,
-	0x00, 0x65, 0xd8, 0x5d,
+	0x00, 0x65, 0xda, 0x5d,
 	0x01, 0x3f, 0xc8, 0x30,
-	0xbf, 0x64, 0x56, 0x7a,
-	0x80, 0x64, 0x9e, 0x73,
-	0xa0, 0x64, 0x00, 0x74,
-	0xc0, 0x64, 0xf4, 0x73,
-	0xe0, 0x64, 0x30, 0x74,
-	0x01, 0x6a, 0xd8, 0x5e,
+	0xbf, 0x64, 0x58, 0x7a,
+	0x80, 0x64, 0xa0, 0x73,
+	0xa0, 0x64, 0x02, 0x74,
+	0xc0, 0x64, 0xf6, 0x73,
+	0xe0, 0x64, 0x32, 0x74,
+	0x01, 0x6a, 0xda, 0x5e,
 	0x00, 0x65, 0xcc, 0x41,
 	0xf7, 0x11, 0x22, 0x08,
 	0x01, 0x06, 0xd4, 0x30,
 	0xff, 0x6a, 0x24, 0x08,
 	0xf7, 0x01, 0x02, 0x08,
-	0x09, 0x0c, 0xe6, 0x79,
+	0xc0, 0x6a, 0x78, 0x00,
+	0x09, 0x0c, 0xe8, 0x79,
 	0x08, 0x0c, 0x04, 0x68,
-	0xb1, 0x6a, 0xd8, 0x5e,
+	0xb1, 0x6a, 0xda, 0x5e,
 	0xff, 0x6a, 0x26, 0x09,
 	0x12, 0x01, 0x02, 0x00,
 	0x02, 0x6a, 0x08, 0x30,
@@ -264,29 +265,29 @@ static uint8_t seqprog[] = {
 	0x00, 0xa5, 0x4a, 0x21,
 	0x00, 0xa6, 0x4c, 0x21,
 	0x00, 0xa7, 0x4e, 0x25,
-	0x08, 0xeb, 0xdc, 0x7e,
-	0x80, 0xeb, 0x06, 0x7a,
+	0x08, 0xeb, 0xde, 0x7e,
+	0x80, 0xeb, 0x08, 0x7a,
 	0xff, 0x6a, 0xd6, 0x09,
-	0x08, 0xeb, 0x0a, 0x6a,
+	0x08, 0xeb, 0x0c, 0x6a,
 	0xff, 0x6a, 0xd4, 0x0c,
-	0x80, 0xa3, 0xdc, 0x6e,
-	0x88, 0xeb, 0x20, 0x72,
-	0x08, 0xeb, 0xdc, 0x6e,
-	0x04, 0xea, 0x24, 0xe2,
-	0x08, 0xee, 0xdc, 0x6e,
+	0x80, 0xa3, 0xde, 0x6e,
+	0x88, 0xeb, 0x22, 0x72,
+	0x08, 0xeb, 0xde, 0x6e,
+	0x04, 0xea, 0x26, 0xe2,
+	0x08, 0xee, 0xde, 0x6e,
 	0x04, 0x6a, 0xd0, 0x81,
 	0x05, 0xa4, 0xc0, 0x89,
 	0x03, 0xa5, 0xc2, 0x31,
 	0x09, 0x6a, 0xd6, 0x05,
-	0x00, 0x65, 0x08, 0x5a,
+	0x00, 0x65, 0x0a, 0x5a,
 	0x06, 0xa4, 0xd4, 0x89,
-	0x80, 0x94, 0xdc, 0x7e,
+	0x80, 0x94, 0xde, 0x7e,
 	0x07, 0xe9, 0x10, 0x31,
 	0x01, 0xe9, 0x46, 0x31,
-	0x00, 0xa3, 0xba, 0x5e,
-	0x00, 0x65, 0xfa, 0x59,
+	0x00, 0xa3, 0xbc, 0x5e,
+	0x00, 0x65, 0xfc, 0x59,
 	0x01, 0xa4, 0xca, 0x30,
-	0x80, 0xa3, 0x34, 0x7a,
+	0x80, 0xa3, 0x36, 0x7a,
 	0x02, 0x65, 0xca, 0x00,
 	0x01, 0x65, 0xf8, 0x31,
 	0x80, 0x93, 0x26, 0x01,
@@ -294,162 +295,162 @@ static uint8_t seqprog[] = {
 	0x01, 0x8c, 0xc8, 0x30,
 	0x00, 0x88, 0xc8, 0x18,
 	0x02, 0x64, 0xc8, 0x88,
-	0xff, 0x64, 0xdc, 0x7e,
-	0xff, 0x8d, 0x4a, 0x6a,
-	0xff, 0x8e, 0x4a, 0x6a,
+	0xff, 0x64, 0xde, 0x7e,
+	0xff, 0x8d, 0x4c, 0x6a,
+	0xff, 0x8e, 0x4c, 0x6a,
 	0x03, 0x8c, 0xd4, 0x98,
-	0x00, 0x65, 0xdc, 0x56,
+	0x00, 0x65, 0xde, 0x56,
 	0x01, 0x64, 0x70, 0x30,
 	0xff, 0x64, 0xc8, 0x10,
 	0x01, 0x64, 0xc8, 0x18,
 	0x00, 0x8c, 0x18, 0x19,
 	0xff, 0x8d, 0x1a, 0x21,
 	0xff, 0x8e, 0x1c, 0x25,
-	0xc0, 0x3c, 0x5a, 0x7a,
-	0x21, 0x6a, 0xd8, 0x5e,
+	0xc0, 0x3c, 0x5c, 0x7a,
+	0x21, 0x6a, 0xda, 0x5e,
 	0xa8, 0x6a, 0x76, 0x00,
 	0x79, 0x6a, 0x76, 0x00,
-	0x40, 0x3f, 0x62, 0x6a,
+	0x40, 0x3f, 0x64, 0x6a,
 	0x04, 0x3b, 0x76, 0x00,
 	0x04, 0x6a, 0xd4, 0x81,
-	0x20, 0x3c, 0x6a, 0x7a,
-	0x51, 0x6a, 0xd8, 0x5e,
-	0x00, 0x65, 0x82, 0x42,
+	0x20, 0x3c, 0x6c, 0x7a,
+	0x51, 0x6a, 0xda, 0x5e,
+	0x00, 0x65, 0x84, 0x42,
 	0x20, 0x3c, 0x78, 0x00,
-	0x00, 0xb3, 0xba, 0x5e,
+	0x00, 0xb3, 0xbc, 0x5e,
 	0x07, 0xac, 0x10, 0x31,
 	0x05, 0xb3, 0x46, 0x31,
 	0x88, 0x6a, 0xcc, 0x00,
-	0xac, 0x6a, 0xee, 0x5d,
+	0xac, 0x6a, 0xf0, 0x5d,
 	0xa3, 0x6a, 0xcc, 0x00,
-	0xb3, 0x6a, 0xf2, 0x5d,
-	0x00, 0x65, 0x3a, 0x5a,
+	0xb3, 0x6a, 0xf4, 0x5d,
+	0x00, 0x65, 0x3c, 0x5a,
 	0xfd, 0xa4, 0x48, 0x09,
 	0x03, 0x8c, 0x10, 0x30,
-	0x00, 0x65, 0xe6, 0x5d,
-	0x01, 0xa4, 0x94, 0x7a,
+	0x00, 0x65, 0xe8, 0x5d,
+	0x01, 0xa4, 0x96, 0x7a,
 	0x04, 0x3b, 0x76, 0x08,
 	0x01, 0x3b, 0x26, 0x31,
 	0x80, 0x02, 0x04, 0x00,
-	0x10, 0x0c, 0x8a, 0x7a,
-	0x03, 0x9e, 0x8c, 0x6a,
+	0x10, 0x0c, 0x8c, 0x7a,
+	0x03, 0x9e, 0x8e, 0x6a,
 	0x7f, 0x02, 0x04, 0x08,
-	0x91, 0x6a, 0xd8, 0x5e,
+	0x91, 0x6a, 0xda, 0x5e,
 	0x00, 0x65, 0xcc, 0x41,
 	0x01, 0xa4, 0xca, 0x30,
-	0x80, 0xa3, 0x9a, 0x7a,
+	0x80, 0xa3, 0x9c, 0x7a,
 	0x02, 0x65, 0xca, 0x00,
 	0x01, 0x65, 0xf8, 0x31,
 	0x01, 0x3b, 0x26, 0x31,
-	0x00, 0x65, 0x0e, 0x5a,
-	0x01, 0xfc, 0xa8, 0x6a,
-	0x80, 0x0b, 0x9e, 0x6a,
-	0x10, 0x0c, 0x9e, 0x7a,
-	0x20, 0x93, 0x9e, 0x6a,
+	0x00, 0x65, 0x10, 0x5a,
+	0x01, 0xfc, 0xaa, 0x6a,
+	0x80, 0x0b, 0xa0, 0x6a,
+	0x10, 0x0c, 0xa0, 0x7a,
+	0x20, 0x93, 0xa0, 0x6a,
 	0x02, 0x93, 0x26, 0x01,
-	0x02, 0xfc, 0xb2, 0x7a,
-	0x40, 0x0d, 0xc6, 0x6a,
+	0x02, 0xfc, 0xb4, 0x7a,
+	0x40, 0x0d, 0xc8, 0x6a,
 	0x01, 0xa4, 0x48, 0x01,
-	0x00, 0x65, 0xc6, 0x42,
-	0x40, 0x0d, 0xb8, 0x6a,
-	0x00, 0x65, 0x0e, 0x5a,
-	0x00, 0x65, 0xaa, 0x42,
-	0x80, 0xfc, 0xc2, 0x7a,
-	0x80, 0xa4, 0xc2, 0x6a,
+	0x00, 0x65, 0xc8, 0x42,
+	0x40, 0x0d, 0xba, 0x6a,
+	0x00, 0x65, 0x10, 0x5a,
+	0x00, 0x65, 0xac, 0x42,
+	0x80, 0xfc, 0xc4, 0x7a,
+	0x80, 0xa4, 0xc4, 0x6a,
 	0xff, 0xa5, 0x4a, 0x19,
 	0xff, 0xa6, 0x4c, 0x21,
 	0xff, 0xa7, 0x4e, 0x21,
 	0xf8, 0xfc, 0x48, 0x09,
 	0x7f, 0xa3, 0x46, 0x09,
-	0x04, 0x3b, 0xe2, 0x6a,
+	0x04, 0x3b, 0xe4, 0x6a,
 	0x02, 0x93, 0x26, 0x01,
-	0x01, 0x94, 0xc8, 0x7a,
-	0x01, 0x94, 0xc8, 0x7a,
-	0x01, 0x94, 0xc8, 0x7a,
-	0x01, 0x94, 0xc8, 0x7a,
-	0x01, 0x94, 0xc8, 0x7a,
-	0x01, 0xa4, 0xe0, 0x7a,
-	0x01, 0xfc, 0xd6, 0x7a,
-	0x01, 0x94, 0xe2, 0x6a,
-	0x01, 0x94, 0xe2, 0x6a,
-	0x01, 0x94, 0xe2, 0x6a,
-	0x00, 0x65, 0x82, 0x42,
-	0x01, 0x94, 0xe0, 0x7a,
-	0x10, 0x94, 0xe2, 0x6a,
+	0x01, 0x94, 0xca, 0x7a,
+	0x01, 0x94, 0xca, 0x7a,
+	0x01, 0x94, 0xca, 0x7a,
+	0x01, 0x94, 0xca, 0x7a,
+	0x01, 0x94, 0xca, 0x7a,
+	0x01, 0xa4, 0xe2, 0x7a,
+	0x01, 0xfc, 0xd8, 0x7a,
+	0x01, 0x94, 0xe4, 0x6a,
+	0x01, 0x94, 0xe4, 0x6a,
+	0x01, 0x94, 0xe4, 0x6a,
+	0x00, 0x65, 0x84, 0x42,
+	0x01, 0x94, 0xe2, 0x7a,
+	0x10, 0x94, 0xe4, 0x6a,
 	0xd7, 0x93, 0x26, 0x09,
-	0x28, 0x93, 0xe6, 0x6a,
+	0x28, 0x93, 0xe8, 0x6a,
 	0x01, 0x85, 0x0a, 0x01,
-	0x02, 0xfc, 0xee, 0x6a,
+	0x02, 0xfc, 0xf0, 0x6a,
 	0x01, 0x14, 0x46, 0x31,
 	0xff, 0x6a, 0x10, 0x09,
 	0xfe, 0x85, 0x0a, 0x09,
-	0xff, 0x38, 0xfc, 0x6a,
-	0x80, 0xa3, 0xfc, 0x7a,
-	0x80, 0x0b, 0xfa, 0x7a,
-	0x04, 0x3b, 0xfc, 0x7a,
+	0xff, 0x38, 0xfe, 0x6a,
+	0x80, 0xa3, 0xfe, 0x7a,
+	0x80, 0x0b, 0xfc, 0x7a,
+	0x04, 0x3b, 0xfe, 0x7a,
 	0xbf, 0x3b, 0x76, 0x08,
 	0x01, 0x3b, 0x26, 0x31,
-	0x00, 0x65, 0x0e, 0x5a,
-	0x01, 0x0b, 0x0a, 0x6b,
-	0x10, 0x0c, 0xfe, 0x7a,
-	0x04, 0x93, 0x08, 0x6b,
-	0x01, 0x94, 0x06, 0x7b,
-	0x10, 0x94, 0x08, 0x6b,
+	0x00, 0x65, 0x10, 0x5a,
+	0x01, 0x0b, 0x0c, 0x6b,
+	0x10, 0x0c, 0x00, 0x7b,
+	0x04, 0x93, 0x0a, 0x6b,
+	0x01, 0x94, 0x08, 0x7b,
+	0x10, 0x94, 0x0a, 0x6b,
 	0xc7, 0x93, 0x26, 0x09,
 	0x01, 0x99, 0xd4, 0x30,
-	0x38, 0x93, 0x0c, 0x6b,
-	0xff, 0x08, 0x5a, 0x6b,
-	0xff, 0x09, 0x5a, 0x6b,
-	0xff, 0x0a, 0x5a, 0x6b,
-	0xff, 0x38, 0x28, 0x7b,
+	0x38, 0x93, 0x0e, 0x6b,
+	0xff, 0x08, 0x5c, 0x6b,
+	0xff, 0x09, 0x5c, 0x6b,
+	0xff, 0x0a, 0x5c, 0x6b,
+	0xff, 0x38, 0x2a, 0x7b,
 	0x04, 0x14, 0x10, 0x31,
 	0x01, 0x38, 0x18, 0x31,
 	0x02, 0x6a, 0x1a, 0x31,
 	0x88, 0x6a, 0xcc, 0x00,
-	0x14, 0x6a, 0xf4, 0x5d,
-	0x00, 0x38, 0xe0, 0x5d,
+	0x14, 0x6a, 0xf6, 0x5d,
+	0x00, 0x38, 0xe2, 0x5d,
 	0xff, 0x6a, 0x70, 0x08,
-	0x00, 0x65, 0x54, 0x43,
-	0x80, 0xa3, 0x2e, 0x7b,
+	0x00, 0x65, 0x56, 0x43,
+	0x80, 0xa3, 0x30, 0x7b,
 	0x01, 0xa4, 0x48, 0x01,
-	0x00, 0x65, 0x5a, 0x43,
-	0x08, 0xeb, 0x34, 0x7b,
-	0x00, 0x65, 0x0e, 0x5a,
-	0x08, 0xeb, 0x30, 0x6b,
+	0x00, 0x65, 0x5c, 0x43,
+	0x08, 0xeb, 0x36, 0x7b,
+	0x00, 0x65, 0x10, 0x5a,
+	0x08, 0xeb, 0x32, 0x6b,
 	0x07, 0xe9, 0x10, 0x31,
 	0x01, 0xe9, 0xca, 0x30,
 	0x01, 0x65, 0x46, 0x31,
-	0x00, 0x6a, 0xba, 0x5e,
+	0x00, 0x6a, 0xbc, 0x5e,
 	0x88, 0x6a, 0xcc, 0x00,
-	0xa4, 0x6a, 0xf4, 0x5d,
-	0x08, 0x6a, 0xe0, 0x5d,
+	0xa4, 0x6a, 0xf6, 0x5d,
+	0x08, 0x6a, 0xe2, 0x5d,
 	0x0d, 0x93, 0x26, 0x01,
-	0x00, 0x65, 0xa8, 0x5e,
+	0x00, 0x65, 0xaa, 0x5e,
 	0x88, 0x6a, 0xcc, 0x00,
-	0x00, 0x65, 0x8a, 0x5e,
+	0x00, 0x65, 0x8c, 0x5e,
 	0x01, 0x99, 0x46, 0x31,
-	0x00, 0xa3, 0xba, 0x5e,
+	0x00, 0xa3, 0xbc, 0x5e,
 	0x01, 0x88, 0x10, 0x31,
-	0x00, 0x65, 0x3a, 0x5a,
-	0x00, 0x65, 0xfa, 0x59,
+	0x00, 0x65, 0x3c, 0x5a,
+	0x00, 0x65, 0xfc, 0x59,
 	0x03, 0x8c, 0x10, 0x30,
-	0x00, 0x65, 0xe6, 0x5d,
-	0x80, 0x0b, 0x82, 0x6a,
-	0x80, 0x0b, 0x62, 0x6b,
-	0x01, 0x0c, 0x5c, 0x7b,
-	0x10, 0x0c, 0x82, 0x7a,
-	0x03, 0x9e, 0x82, 0x6a,
-	0x00, 0x65, 0x04, 0x5a,
-	0x00, 0x6a, 0xba, 0x5e,
-	0x01, 0xa4, 0x82, 0x6b,
-	0xff, 0x38, 0x78, 0x7b,
+	0x00, 0x65, 0xe8, 0x5d,
+	0x80, 0x0b, 0x84, 0x6a,
+	0x80, 0x0b, 0x64, 0x6b,
+	0x01, 0x0c, 0x5e, 0x7b,
+	0x10, 0x0c, 0x84, 0x7a,
+	0x03, 0x9e, 0x84, 0x6a,
+	0x00, 0x65, 0x06, 0x5a,
+	0x00, 0x6a, 0xbc, 0x5e,
+	0x01, 0xa4, 0x84, 0x6b,
+	0xff, 0x38, 0x7a, 0x7b,
 	0x01, 0x38, 0xc8, 0x30,
 	0x00, 0x08, 0x40, 0x19,
 	0xff, 0x6a, 0xc8, 0x08,
 	0x00, 0x09, 0x42, 0x21,
 	0x00, 0x0a, 0x44, 0x21,
 	0xff, 0x6a, 0x70, 0x08,
-	0x00, 0x65, 0x7a, 0x43,
+	0x00, 0x65, 0x7c, 0x43,
 	0x03, 0x08, 0x40, 0x31,
 	0x03, 0x08, 0x40, 0x31,
 	0x01, 0x08, 0x40, 0x31,
@@ -461,16 +462,16 @@ static uint8_t seqprog[] = {
 	0x04, 0x3c, 0xcc, 0x79,
 	0xfb, 0x3c, 0x78, 0x08,
 	0x04, 0x93, 0x20, 0x79,
-	0x01, 0x0c, 0x8e, 0x6b,
+	0x01, 0x0c, 0x90, 0x6b,
 	0x80, 0xba, 0x20, 0x79,
 	0x80, 0x04, 0x20, 0x79,
-	0xe4, 0x6a, 0x6e, 0x5d,
-	0x23, 0x6a, 0x84, 0x5d,
-	0x01, 0x6a, 0x84, 0x5d,
+	0xe4, 0x6a, 0x70, 0x5d,
+	0x23, 0x6a, 0x86, 0x5d,
+	0x01, 0x6a, 0x86, 0x5d,
 	0x00, 0x65, 0x20, 0x41,
 	0x00, 0x65, 0xcc, 0x41,
-	0x80, 0x3c, 0xa2, 0x7b,
-	0x21, 0x6a, 0xd8, 0x5e,
+	0x80, 0x3c, 0xa4, 0x7b,
+	0x21, 0x6a, 0xda, 0x5e,
 	0x01, 0xbc, 0x18, 0x31,
 	0x02, 0x6a, 0x1a, 0x31,
 	0x02, 0x6a, 0xf8, 0x01,
@@ -480,16 +481,16 @@ static uint8_t seqprog[] = {
 	0xff, 0x6a, 0x12, 0x08,
 	0xff, 0x6a, 0x14, 0x08,
 	0xf3, 0xbc, 0xd4, 0x18,
-	0xa0, 0x6a, 0xc8, 0x53,
+	0xa0, 0x6a, 0xca, 0x53,
 	0x04, 0xa0, 0x10, 0x31,
 	0xac, 0x6a, 0x26, 0x01,
 	0x04, 0xa0, 0x10, 0x31,
 	0x03, 0x08, 0x18, 0x31,
 	0x88, 0x6a, 0xcc, 0x00,
-	0xa0, 0x6a, 0xf4, 0x5d,
-	0x00, 0xbc, 0xe0, 0x5d,
+	0xa0, 0x6a, 0xf6, 0x5d,
+	0x00, 0xbc, 0xe2, 0x5d,
 	0x3d, 0x6a, 0x26, 0x01,
-	0x00, 0x65, 0xe0, 0x43,
+	0x00, 0x65, 0xe2, 0x43,
 	0xff, 0x6a, 0x10, 0x09,
 	0xa4, 0x6a, 0x26, 0x01,
 	0x0c, 0xa0, 0x32, 0x31,
@@ -499,128 +500,128 @@ static uint8_t seqprog[] = {
 	0x36, 0x6a, 0x26, 0x01,
 	0x02, 0x93, 0x26, 0x01,
 	0x35, 0x6a, 0x26, 0x01,
-	0x00, 0x65, 0x9c, 0x5e,
-	0x00, 0x65, 0x9c, 0x5e,
+	0x00, 0x65, 0x9e, 0x5e,
+	0x00, 0x65, 0x9e, 0x5e,
 	0x02, 0x93, 0x26, 0x01,
 	0xbf, 0x3c, 0x78, 0x08,
-	0x04, 0x0b, 0xe6, 0x6b,
-	0x10, 0x0c, 0xe2, 0x7b,
-	0x01, 0x03, 0xe6, 0x6b,
-	0x20, 0x93, 0xe8, 0x6b,
-	0x04, 0x0b, 0xee, 0x6b,
+	0x04, 0x0b, 0xe8, 0x6b,
+	0x10, 0x0c, 0xe4, 0x7b,
+	0x01, 0x03, 0xe8, 0x6b,
+	0x20, 0x93, 0xea, 0x6b,
+	0x04, 0x0b, 0xf0, 0x6b,
 	0x40, 0x3c, 0x78, 0x00,
 	0xc7, 0x93, 0x26, 0x09,
-	0x38, 0x93, 0xf0, 0x6b,
+	0x38, 0x93, 0xf2, 0x6b,
 	0x00, 0x65, 0xcc, 0x41,
-	0x80, 0x3c, 0x56, 0x6c,
+	0x80, 0x3c, 0x58, 0x6c,
 	0x01, 0x06, 0x50, 0x31,
 	0x80, 0xb8, 0x70, 0x01,
 	0x00, 0x65, 0xcc, 0x41,
 	0x10, 0x3f, 0x06, 0x00,
 	0x10, 0x6a, 0x06, 0x00,
 	0x01, 0x3a, 0xca, 0x30,
-	0x80, 0x65, 0x1c, 0x64,
-	0x10, 0xb8, 0x40, 0x6c,
+	0x80, 0x65, 0x1e, 0x64,
+	0x10, 0xb8, 0x42, 0x6c,
 	0xc0, 0x3e, 0xca, 0x00,
-	0x40, 0xb8, 0x0c, 0x6c,
+	0x40, 0xb8, 0x0e, 0x6c,
 	0xbf, 0x65, 0xca, 0x08,
-	0x20, 0xb8, 0x20, 0x7c,
+	0x20, 0xb8, 0x22, 0x7c,
 	0x01, 0x65, 0x0c, 0x30,
-	0x00, 0x65, 0xd8, 0x5d,
-	0xa0, 0x3f, 0x28, 0x64,
+	0x00, 0x65, 0xda, 0x5d,
+	0xa0, 0x3f, 0x2a, 0x64,
 	0x23, 0xb8, 0x0c, 0x08,
-	0x00, 0x65, 0xd8, 0x5d,
-	0xa0, 0x3f, 0x28, 0x64,
-	0x00, 0xbb, 0x20, 0x44,
-	0xff, 0x65, 0x20, 0x64,
-	0x00, 0x65, 0x40, 0x44,
+	0x00, 0x65, 0xda, 0x5d,
+	0xa0, 0x3f, 0x2a, 0x64,
+	0x00, 0xbb, 0x22, 0x44,
+	0xff, 0x65, 0x22, 0x64,
+	0x00, 0x65, 0x42, 0x44,
 	0x40, 0x6a, 0x18, 0x00,
 	0x01, 0x65, 0x0c, 0x30,
-	0x00, 0x65, 0xd8, 0x5d,
-	0xa0, 0x3f, 0xfc, 0x73,
+	0x00, 0x65, 0xda, 0x5d,
+	0xa0, 0x3f, 0xfe, 0x73,
 	0x40, 0x6a, 0x18, 0x00,
 	0x01, 0x3a, 0xa6, 0x30,
 	0x08, 0x6a, 0x74, 0x00,
 	0x00, 0x65, 0xcc, 0x41,
-	0x64, 0x6a, 0x68, 0x5d,
-	0x80, 0x64, 0xd8, 0x6c,
-	0x04, 0x64, 0x9a, 0x74,
-	0x02, 0x64, 0xaa, 0x74,
-	0x00, 0x6a, 0x60, 0x74,
-	0x03, 0x64, 0xc8, 0x74,
-	0x23, 0x64, 0x48, 0x74,
-	0x08, 0x64, 0x5c, 0x74,
-	0x61, 0x6a, 0xd8, 0x5e,
-	0x00, 0x65, 0xd8, 0x5d,
+	0x64, 0x6a, 0x6a, 0x5d,
+	0x80, 0x64, 0xda, 0x6c,
+	0x04, 0x64, 0x9c, 0x74,
+	0x02, 0x64, 0xac, 0x74,
+	0x00, 0x6a, 0x62, 0x74,
+	0x03, 0x64, 0xca, 0x74,
+	0x23, 0x64, 0x4a, 0x74,
+	0x08, 0x64, 0x5e, 0x74,
+	0x61, 0x6a, 0xda, 0x5e,
+	0x00, 0x65, 0xda, 0x5d,
 	0x08, 0x51, 0xce, 0x71,
-	0x00, 0x65, 0x40, 0x44,
-	0x80, 0x04, 0x5a, 0x7c,
-	0x51, 0x6a, 0x5e, 0x5d,
-	0x01, 0x51, 0x5a, 0x64,
-	0x01, 0xa4, 0x52, 0x7c,
-	0x80, 0xba, 0x5c, 0x6c,
-	0x41, 0x6a, 0xd8, 0x5e,
-	0x00, 0x65, 0x5c, 0x44,
-	0x21, 0x6a, 0xd8, 0x5e,
-	0x00, 0x65, 0x5c, 0x44,
-	0x07, 0x6a, 0x54, 0x5d,
+	0x00, 0x65, 0x42, 0x44,
+	0x80, 0x04, 0x5c, 0x7c,
+	0x51, 0x6a, 0x60, 0x5d,
+	0x01, 0x51, 0x5c, 0x64,
+	0x01, 0xa4, 0x54, 0x7c,
+	0x80, 0xba, 0x5e, 0x6c,
+	0x41, 0x6a, 0xda, 0x5e,
+	0x00, 0x65, 0x5e, 0x44,
+	0x21, 0x6a, 0xda, 0x5e,
+	0x00, 0x65, 0x5e, 0x44,
+	0x07, 0x6a, 0x56, 0x5d,
 	0x01, 0x06, 0xd4, 0x30,
 	0x00, 0x65, 0xcc, 0x41,
-	0x80, 0xb8, 0x56, 0x7c,
-	0xc0, 0x3c, 0x6a, 0x7c,
-	0x80, 0x3c, 0x56, 0x6c,
-	0xff, 0xa8, 0x6a, 0x6c,
-	0x40, 0x3c, 0x56, 0x6c,
-	0x10, 0xb8, 0x6e, 0x7c,
-	0xa1, 0x6a, 0xd8, 0x5e,
-	0x01, 0xb4, 0x74, 0x6c,
-	0x02, 0xb4, 0x76, 0x6c,
-	0x01, 0xa4, 0x76, 0x7c,
-	0xff, 0xa8, 0x86, 0x7c,
+	0x80, 0xb8, 0x58, 0x7c,
+	0xc0, 0x3c, 0x6c, 0x7c,
+	0x80, 0x3c, 0x58, 0x6c,
+	0xff, 0xa8, 0x6c, 0x6c,
+	0x40, 0x3c, 0x58, 0x6c,
+	0x10, 0xb8, 0x70, 0x7c,
+	0xa1, 0x6a, 0xda, 0x5e,
+	0x01, 0xb4, 0x76, 0x6c,
+	0x02, 0xb4, 0x78, 0x6c,
+	0x01, 0xa4, 0x78, 0x7c,
+	0xff, 0xa8, 0x88, 0x7c,
 	0x04, 0xb4, 0x68, 0x01,
 	0x01, 0x6a, 0x76, 0x00,
-	0x00, 0xbb, 0x12, 0x5e,
-	0xff, 0xa8, 0x86, 0x7c,
-	0x71, 0x6a, 0xd8, 0x5e,
-	0x40, 0x51, 0x86, 0x64,
-	0x00, 0x65, 0xb2, 0x5e,
+	0x00, 0xbb, 0x14, 0x5e,
+	0xff, 0xa8, 0x88, 0x7c,
+	0x71, 0x6a, 0xda, 0x5e,
+	0x40, 0x51, 0x88, 0x64,
+	0x00, 0x65, 0xb4, 0x5e,
 	0x00, 0x65, 0xde, 0x41,
-	0x00, 0xbb, 0x8a, 0x5c,
+	0x00, 0xbb, 0x8c, 0x5c,
 	0x00, 0x65, 0xde, 0x41,
-	0x00, 0x65, 0xb2, 0x5e,
+	0x00, 0x65, 0xb4, 0x5e,
 	0x01, 0x65, 0xa2, 0x30,
 	0x01, 0xf8, 0xc8, 0x30,
 	0x01, 0x4e, 0xc8, 0x30,
-	0x00, 0x6a, 0xb6, 0xdd,
-	0x00, 0x51, 0xc8, 0x5d,
+	0x00, 0x6a, 0xb8, 0xdd,
+	0x00, 0x51, 0xca, 0x5d,
 	0x01, 0x4e, 0x9c, 0x18,
 	0x02, 0x6a, 0x22, 0x05,
-	0xc0, 0x3c, 0x56, 0x6c,
+	0xc0, 0x3c, 0x58, 0x6c,
 	0x04, 0xb8, 0x70, 0x01,
-	0x00, 0x65, 0xd4, 0x5e,
+	0x00, 0x65, 0xd6, 0x5e,
 	0x20, 0xb8, 0xde, 0x69,
 	0x01, 0xbb, 0xa2, 0x30,
 	0x3f, 0xba, 0x7c, 0x08,
-	0x00, 0xb9, 0xce, 0x5c,
+	0x00, 0xb9, 0xd0, 0x5c,
 	0x00, 0x65, 0xde, 0x41,
 	0x01, 0x06, 0xd4, 0x30,
 	0x20, 0x3c, 0xcc, 0x79,
-	0x20, 0x3c, 0x5c, 0x7c,
-	0x01, 0xa4, 0xb8, 0x7c,
+	0x20, 0x3c, 0x5e, 0x7c,
+	0x01, 0xa4, 0xba, 0x7c,
 	0x01, 0xb4, 0x68, 0x01,
 	0x00, 0x65, 0xcc, 0x41,
-	0x00, 0x65, 0x5c, 0x44,
+	0x00, 0x65, 0x5e, 0x44,
 	0x04, 0x14, 0x58, 0x31,
 	0x01, 0x06, 0xd4, 0x30,
 	0x08, 0xa0, 0x60, 0x31,
 	0xac, 0x6a, 0xcc, 0x00,
-	0x14, 0x6a, 0xf4, 0x5d,
+	0x14, 0x6a, 0xf6, 0x5d,
 	0x01, 0x06, 0xd4, 0x30,
-	0xa0, 0x6a, 0xec, 0x5d,
+	0xa0, 0x6a, 0xee, 0x5d,
 	0x00, 0x65, 0xcc, 0x41,
 	0xdf, 0x3c, 0x78, 0x08,
 	0x12, 0x01, 0x02, 0x00,
-	0x00, 0x65, 0x5c, 0x44,
+	0x00, 0x65, 0x5e, 0x44,
 	0x4c, 0x65, 0xcc, 0x28,
 	0x01, 0x3e, 0x20, 0x31,
 	0xd0, 0x66, 0xcc, 0x18,
@@ -631,102 +632,102 @@ static uint8_t seqprog[] = {
 	0xd0, 0x65, 0xca, 0x18,
 	0x01, 0x3e, 0x20, 0x31,
 	0x30, 0x65, 0xd4, 0x18,
-	0x00, 0x65, 0xe6, 0x4c,
+	0x00, 0x65, 0xe8, 0x4c,
 	0xe1, 0x6a, 0x22, 0x01,
 	0xff, 0x6a, 0xd4, 0x08,
 	0x20, 0x65, 0xd4, 0x18,
-	0x00, 0x65, 0xee, 0x54,
+	0x00, 0x65, 0xf0, 0x54,
 	0xe1, 0x6a, 0x22, 0x01,
 	0xff, 0x6a, 0xd4, 0x08,
 	0x20, 0x65, 0xca, 0x18,
 	0xe0, 0x65, 0xd4, 0x18,
-	0x00, 0x65, 0xf8, 0x4c,
+	0x00, 0x65, 0xfa, 0x4c,
 	0xe1, 0x6a, 0x22, 0x01,
 	0xff, 0x6a, 0xd4, 0x08,
 	0xd0, 0x65, 0xd4, 0x18,
-	0x00, 0x65, 0x00, 0x55,
+	0x00, 0x65, 0x02, 0x55,
 	0xe1, 0x6a, 0x22, 0x01,
 	0xff, 0x6a, 0xd4, 0x08,
 	0x01, 0x6c, 0xa2, 0x30,
-	0xff, 0x51, 0x12, 0x75,
-	0x00, 0x51, 0x8e, 0x5d,
+	0xff, 0x51, 0x14, 0x75,
+	0x00, 0x51, 0x90, 0x5d,
 	0x01, 0x51, 0x20, 0x31,
-	0x00, 0x65, 0x34, 0x45,
+	0x00, 0x65, 0x36, 0x45,
 	0x3f, 0xba, 0xc8, 0x08,
-	0x00, 0x3e, 0x34, 0x75,
-	0x00, 0x65, 0xb0, 0x5e,
+	0x00, 0x3e, 0x36, 0x75,
+	0x00, 0x65, 0xb2, 0x5e,
 	0x80, 0x3c, 0x78, 0x00,
 	0x01, 0x06, 0xd4, 0x30,
-	0x00, 0x65, 0xd8, 0x5d,
+	0x00, 0x65, 0xda, 0x5d,
 	0x01, 0x3c, 0x78, 0x00,
-	0xe0, 0x3f, 0x50, 0x65,
+	0xe0, 0x3f, 0x52, 0x65,
 	0x02, 0x3c, 0x78, 0x00,
-	0x20, 0x12, 0x50, 0x65,
-	0x51, 0x6a, 0x5e, 0x5d,
-	0x00, 0x51, 0x8e, 0x5d,
-	0x51, 0x6a, 0x5e, 0x5d,
+	0x20, 0x12, 0x52, 0x65,
+	0x51, 0x6a, 0x60, 0x5d,
+	0x00, 0x51, 0x90, 0x5d,
+	0x51, 0x6a, 0x60, 0x5d,
 	0x01, 0x51, 0x20, 0x31,
 	0x04, 0x3c, 0x78, 0x00,
 	0x01, 0xb9, 0xc8, 0x30,
-	0x00, 0x3d, 0x4e, 0x65,
+	0x00, 0x3d, 0x50, 0x65,
 	0x08, 0x3c, 0x78, 0x00,
 	0x3f, 0xba, 0xc8, 0x08,
-	0x00, 0x3e, 0x4e, 0x65,
+	0x00, 0x3e, 0x50, 0x65,
 	0x10, 0x3c, 0x78, 0x00,
-	0x04, 0xb8, 0x4e, 0x7d,
+	0x04, 0xb8, 0x50, 0x7d,
 	0xfb, 0xb8, 0x70, 0x09,
-	0x20, 0xb8, 0x44, 0x6d,
+	0x20, 0xb8, 0x46, 0x6d,
 	0x01, 0x90, 0xc8, 0x30,
 	0xff, 0x6a, 0xa2, 0x00,
-	0x00, 0x3d, 0xce, 0x5c,
+	0x00, 0x3d, 0xd0, 0x5c,
 	0x01, 0x64, 0x20, 0x31,
 	0xff, 0x6a, 0x78, 0x08,
 	0x00, 0x65, 0xea, 0x58,
-	0x10, 0xb8, 0x5c, 0x7c,
-	0xff, 0x6a, 0x54, 0x5d,
-	0x00, 0x65, 0x5c, 0x44,
-	0x00, 0x65, 0xb0, 0x5e,
-	0x31, 0x6a, 0xd8, 0x5e,
-	0x00, 0x65, 0x5c, 0x44,
+	0x10, 0xb8, 0x5e, 0x7c,
+	0xff, 0x6a, 0x56, 0x5d,
+	0x00, 0x65, 0x5e, 0x44,
+	0x00, 0x65, 0xb2, 0x5e,
+	0x31, 0x6a, 0xda, 0x5e,
+	0x00, 0x65, 0x5e, 0x44,
 	0x10, 0x3f, 0x06, 0x00,
 	0x10, 0x6a, 0x06, 0x00,
 	0x01, 0x65, 0x74, 0x34,
-	0x81, 0x6a, 0xd8, 0x5e,
-	0x00, 0x65, 0x60, 0x45,
+	0x81, 0x6a, 0xda, 0x5e,
+	0x00, 0x65, 0x62, 0x45,
 	0x01, 0x06, 0xd4, 0x30,
-	0x01, 0x0c, 0x60, 0x7d,
-	0x04, 0x0c, 0x5a, 0x6d,
+	0x01, 0x0c, 0x62, 0x7d,
+	0x04, 0x0c, 0x5c, 0x6d,
 	0xe0, 0x03, 0x7e, 0x08,
 	0xe0, 0x3f, 0xcc, 0x61,
 	0x01, 0x65, 0xcc, 0x30,
 	0x01, 0x12, 0xda, 0x34,
 	0x01, 0x06, 0xd4, 0x34,
-	0x01, 0x03, 0x6e, 0x6d,
+	0x01, 0x03, 0x70, 0x6d,
 	0x40, 0x03, 0xcc, 0x08,
 	0x01, 0x65, 0x06, 0x30,
 	0x40, 0x65, 0xc8, 0x08,
-	0x00, 0x66, 0x7c, 0x75,
-	0x40, 0x65, 0x7c, 0x7d,
-	0x00, 0x65, 0x7c, 0x5d,
+	0x00, 0x66, 0x7e, 0x75,
+	0x40, 0x65, 0x7e, 0x7d,
+	0x00, 0x65, 0x7e, 0x5d,
 	0xff, 0x6a, 0xd4, 0x08,
 	0xff, 0x6a, 0xd4, 0x08,
 	0xff, 0x6a, 0xd4, 0x08,
 	0xff, 0x6a, 0xd4, 0x0c,
 	0x08, 0x01, 0x02, 0x00,
-	0x02, 0x0b, 0x86, 0x7d,
+	0x02, 0x0b, 0x88, 0x7d,
 	0x01, 0x65, 0x0c, 0x30,
-	0x02, 0x0b, 0x8a, 0x7d,
+	0x02, 0x0b, 0x8c, 0x7d,
 	0xf7, 0x01, 0x02, 0x0c,
 	0x01, 0x65, 0xc8, 0x30,
-	0xff, 0x41, 0xae, 0x75,
+	0xff, 0x41, 0xb0, 0x75,
 	0x01, 0x41, 0x20, 0x31,
 	0xff, 0x6a, 0xa4, 0x00,
-	0x00, 0x65, 0x9e, 0x45,
-	0xff, 0xbf, 0xae, 0x75,
+	0x00, 0x65, 0xa0, 0x45,
+	0xff, 0xbf, 0xb0, 0x75,
 	0x01, 0x90, 0xa4, 0x30,
 	0x01, 0xbf, 0x20, 0x31,
-	0x00, 0xbb, 0x98, 0x65,
-	0xff, 0x52, 0xac, 0x75,
+	0x00, 0xbb, 0x9a, 0x65,
+	0xff, 0x52, 0xae, 0x75,
 	0x01, 0xbf, 0xcc, 0x30,
 	0x01, 0x90, 0xca, 0x30,
 	0x01, 0x52, 0x20, 0x31,
@@ -734,28 +735,28 @@ static uint8_t seqprog[] = {
 	0x01, 0x65, 0x20, 0x35,
 	0x01, 0xbf, 0x82, 0x34,
 	0x01, 0x64, 0xa2, 0x30,
-	0x00, 0x6a, 0xc0, 0x5e,
+	0x00, 0x6a, 0xc2, 0x5e,
 	0x0d, 0x6a, 0x76, 0x00,
-	0x00, 0x51, 0x12, 0x46,
+	0x00, 0x51, 0x14, 0x46,
 	0x01, 0x65, 0xa4, 0x30,
 	0xe0, 0x6a, 0xcc, 0x00,
-	0x48, 0x6a, 0x06, 0x5e,
+	0x48, 0x6a, 0x08, 0x5e,
 	0x01, 0x6a, 0xd0, 0x01,
 	0x01, 0x6a, 0xdc, 0x05,
 	0x88, 0x6a, 0xcc, 0x00,
-	0x48, 0x6a, 0x06, 0x5e,
-	0x01, 0x6a, 0xe0, 0x5d,
+	0x48, 0x6a, 0x08, 0x5e,
+	0x01, 0x6a, 0xe2, 0x5d,
 	0x01, 0x6a, 0x26, 0x05,
 	0x01, 0x65, 0xd8, 0x31,
 	0x09, 0xee, 0xdc, 0x01,
-	0x80, 0xee, 0xcc, 0x7d,
+	0x80, 0xee, 0xce, 0x7d,
 	0xff, 0x6a, 0xdc, 0x0d,
 	0x01, 0x65, 0x32, 0x31,
 	0x0a, 0x93, 0x26, 0x01,
-	0x00, 0x65, 0xa8, 0x46,
-	0x81, 0x6a, 0xd8, 0x5e,
-	0x01, 0x0c, 0xd8, 0x7d,
-	0x04, 0x0c, 0xd6, 0x6d,
+	0x00, 0x65, 0xaa, 0x46,
+	0x81, 0x6a, 0xda, 0x5e,
+	0x01, 0x0c, 0xda, 0x7d,
+	0x04, 0x0c, 0xd8, 0x6d,
 	0xe0, 0x03, 0x06, 0x08,
 	0xe0, 0x03, 0x7e, 0x0c,
 	0x01, 0x65, 0x18, 0x31,
@@ -774,7 +775,7 @@ static uint8_t seqprog[] = {
 	0x01, 0x6c, 0xda, 0x34,
 	0x3d, 0x64, 0xa4, 0x28,
 	0x55, 0x64, 0xc8, 0x28,
-	0x00, 0x65, 0x06, 0x46,
+	0x00, 0x65, 0x08, 0x46,
 	0x2e, 0x64, 0xa4, 0x28,
 	0x66, 0x64, 0xc8, 0x28,
 	0x00, 0x6c, 0xda, 0x18,
@@ -785,63 +786,63 @@ static uint8_t seqprog[] = {
 	0x00, 0x6c, 0xda, 0x24,
 	0x01, 0x65, 0xc8, 0x30,
 	0xe0, 0x6a, 0xcc, 0x00,
-	0x44, 0x6a, 0x02, 0x5e,
+	0x44, 0x6a, 0x04, 0x5e,
 	0x01, 0x90, 0xe2, 0x31,
-	0x04, 0x3b, 0x26, 0x7e,
+	0x04, 0x3b, 0x28, 0x7e,
 	0x30, 0x6a, 0xd0, 0x01,
 	0x20, 0x6a, 0xd0, 0x01,
 	0x1d, 0x6a, 0xdc, 0x01,
-	0xdc, 0xee, 0x22, 0x66,
-	0x00, 0x65, 0x3e, 0x46,
+	0xdc, 0xee, 0x24, 0x66,
+	0x00, 0x65, 0x40, 0x46,
 	0x20, 0x6a, 0xd0, 0x01,
 	0x01, 0x6a, 0xdc, 0x01,
 	0x20, 0xa0, 0xd8, 0x31,
 	0x09, 0xee, 0xdc, 0x01,
-	0x80, 0xee, 0x2e, 0x7e,
+	0x80, 0xee, 0x30, 0x7e,
 	0x11, 0x6a, 0xdc, 0x01,
-	0x50, 0xee, 0x32, 0x66,
+	0x50, 0xee, 0x34, 0x66,
 	0x20, 0x6a, 0xd0, 0x01,
 	0x09, 0x6a, 0xdc, 0x01,
-	0x88, 0xee, 0x38, 0x66,
+	0x88, 0xee, 0x3a, 0x66,
 	0x19, 0x6a, 0xdc, 0x01,
-	0xd8, 0xee, 0x3c, 0x66,
+	0xd8, 0xee, 0x3e, 0x66,
 	0xff, 0x6a, 0xdc, 0x09,
-	0x18, 0xee, 0x40, 0x6e,
+	0x18, 0xee, 0x42, 0x6e,
 	0xff, 0x6a, 0xd4, 0x0c,
 	0x88, 0x6a, 0xcc, 0x00,
-	0x44, 0x6a, 0x02, 0x5e,
-	0x20, 0x6a, 0xe0, 0x5d,
+	0x44, 0x6a, 0x04, 0x5e,
+	0x20, 0x6a, 0xe2, 0x5d,
 	0x01, 0x3b, 0x26, 0x31,
-	0x04, 0x3b, 0x5a, 0x6e,
+	0x04, 0x3b, 0x5c, 0x6e,
 	0xa0, 0x6a, 0xca, 0x00,
 	0x20, 0x65, 0xc8, 0x18,
-	0x00, 0x65, 0x98, 0x5e,
-	0x00, 0x65, 0x52, 0x66,
+	0x00, 0x65, 0x9a, 0x5e,
+	0x00, 0x65, 0x54, 0x66,
 	0x0a, 0x93, 0x26, 0x01,
-	0x00, 0x65, 0xa8, 0x46,
+	0x00, 0x65, 0xaa, 0x46,
 	0xa0, 0x6a, 0xcc, 0x00,
 	0xff, 0x6a, 0xc8, 0x08,
-	0x20, 0x94, 0x5e, 0x6e,
-	0x10, 0x94, 0x60, 0x6e,
-	0x08, 0x94, 0x7a, 0x6e,
-	0x08, 0x94, 0x7a, 0x6e,
-	0x08, 0x94, 0x7a, 0x6e,
+	0x20, 0x94, 0x60, 0x6e,
+	0x10, 0x94, 0x62, 0x6e,
+	0x08, 0x94, 0x7c, 0x6e,
+	0x08, 0x94, 0x7c, 0x6e,
+	0x08, 0x94, 0x7c, 0x6e,
 	0xff, 0x8c, 0xc8, 0x10,
 	0xc1, 0x64, 0xc8, 0x18,
 	0xf8, 0x64, 0xc8, 0x08,
 	0x01, 0x99, 0xda, 0x30,
-	0x00, 0x66, 0x6e, 0x66,
-	0xc0, 0x66, 0xaa, 0x76,
+	0x00, 0x66, 0x70, 0x66,
+	0xc0, 0x66, 0xac, 0x76,
 	0x60, 0x66, 0xc8, 0x18,
 	0x3d, 0x64, 0xc8, 0x28,
-	0x00, 0x65, 0x5e, 0x46,
+	0x00, 0x65, 0x60, 0x46,
 	0xf7, 0x93, 0x26, 0x09,
-	0x08, 0x93, 0x7c, 0x6e,
+	0x08, 0x93, 0x7e, 0x6e,
 	0x00, 0x62, 0xc4, 0x18,
-	0x00, 0x65, 0xa8, 0x5e,
-	0x00, 0x65, 0x88, 0x5e,
-	0x00, 0x65, 0x88, 0x5e,
-	0x00, 0x65, 0x88, 0x5e,
+	0x00, 0x65, 0xaa, 0x5e,
+	0x00, 0x65, 0x8a, 0x5e,
+	0x00, 0x65, 0x8a, 0x5e,
+	0x00, 0x65, 0x8a, 0x5e,
 	0x01, 0x99, 0xda, 0x30,
 	0x01, 0x99, 0xda, 0x30,
 	0x01, 0x99, 0xda, 0x30,
@@ -858,11 +859,11 @@ static uint8_t seqprog[] = {
 	0x01, 0x6c, 0x32, 0x31,
 	0x01, 0x6c, 0x32, 0x31,
 	0x01, 0x6c, 0x32, 0x35,
-	0x08, 0x94, 0xa8, 0x7e,
+	0x08, 0x94, 0xaa, 0x7e,
 	0xf7, 0x93, 0x26, 0x09,
-	0x08, 0x93, 0xac, 0x6e,
+	0x08, 0x93, 0xae, 0x6e,
 	0xff, 0x6a, 0xd4, 0x0c,
-	0x04, 0xb8, 0xd4, 0x6e,
+	0x04, 0xb8, 0xd6, 0x6e,
 	0x01, 0x42, 0x7e, 0x31,
 	0xff, 0x6a, 0x76, 0x01,
 	0x01, 0x90, 0x84, 0x34,
@@ -870,14 +871,14 @@ static uint8_t seqprog[] = {
 	0x01, 0x85, 0x0a, 0x01,
 	0x7f, 0x65, 0x10, 0x09,
 	0xfe, 0x85, 0x0a, 0x0d,
-	0xff, 0x42, 0xd0, 0x66,
-	0xff, 0x41, 0xc8, 0x66,
-	0xd1, 0x6a, 0xd8, 0x5e,
+	0xff, 0x42, 0xd2, 0x66,
+	0xff, 0x41, 0xca, 0x66,
+	0xd1, 0x6a, 0xda, 0x5e,
 	0xff, 0x6a, 0xca, 0x04,
 	0x01, 0x41, 0x20, 0x31,
 	0x01, 0xbf, 0x82, 0x30,
 	0x01, 0x6a, 0x76, 0x00,
-	0x00, 0xbb, 0x12, 0x46,
+	0x00, 0xbb, 0x14, 0x46,
 	0x01, 0x42, 0x20, 0x31,
 	0x01, 0xbf, 0x84, 0x34,
 	0x01, 0x41, 0x7e, 0x31,
@@ -941,7 +942,7 @@ static ahc_patch_func_t ahc_patch17_func
 static int
 ahc_patch17_func(struct ahc_softc *ahc)
 {
-	return ((ahc->flags & AHC_TMODE_WIDEODD_BUG) != 0);
+	return ((ahc->bugs & AHC_TMODE_WIDEODD_BUG) != 0);
 }
 
 static ahc_patch_func_t ahc_patch16_func;
@@ -1142,152 +1143,152 @@ static struct patch {
 	{ ahc_patch0_func, 196, 1, 1 },
 	{ ahc_patch9_func, 212, 6, 2 },
 	{ ahc_patch0_func, 218, 6, 1 },
-	{ ahc_patch8_func, 226, 20, 2 },
+	{ ahc_patch8_func, 226, 21, 2 },
 	{ ahc_patch1_func, 241, 1, 1 },
-	{ ahc_patch1_func, 248, 1, 2 },
-	{ ahc_patch0_func, 249, 2, 2 },
-	{ ahc_patch11_func, 250, 1, 1 },
-	{ ahc_patch9_func, 258, 27, 3 },
-	{ ahc_patch1_func, 274, 10, 2 },
-	{ ahc_patch13_func, 277, 1, 1 },
-	{ ahc_patch14_func, 285, 14, 1 },
-	{ ahc_patch1_func, 301, 1, 2 },
-	{ ahc_patch0_func, 302, 1, 1 },
-	{ ahc_patch9_func, 305, 1, 1 },
-	{ ahc_patch13_func, 310, 1, 1 },
-	{ ahc_patch9_func, 311, 2, 2 },
-	{ ahc_patch0_func, 313, 4, 1 },
-	{ ahc_patch14_func, 317, 1, 1 },
-	{ ahc_patch15_func, 319, 2, 3 },
-	{ ahc_patch9_func, 319, 1, 2 },
-	{ ahc_patch0_func, 320, 1, 1 },
-	{ ahc_patch6_func, 325, 1, 2 },
-	{ ahc_patch0_func, 326, 1, 1 },
-	{ ahc_patch1_func, 330, 47, 11 },
-	{ ahc_patch6_func, 337, 2, 4 },
-	{ ahc_patch7_func, 337, 1, 1 },
-	{ ahc_patch8_func, 338, 1, 1 },
-	{ ahc_patch0_func, 339, 1, 1 },
-	{ ahc_patch16_func, 340, 1, 1 },
-	{ ahc_patch6_func, 356, 6, 3 },
-	{ ahc_patch16_func, 356, 5, 1 },
-	{ ahc_patch0_func, 362, 7, 1 },
-	{ ahc_patch13_func, 372, 5, 1 },
-	{ ahc_patch0_func, 377, 52, 17 },
-	{ ahc_patch14_func, 377, 1, 1 },
-	{ ahc_patch7_func, 379, 2, 2 },
-	{ ahc_patch17_func, 380, 1, 1 },
-	{ ahc_patch9_func, 383, 1, 1 },
-	{ ahc_patch18_func, 390, 1, 1 },
-	{ ahc_patch14_func, 395, 9, 3 },
-	{ ahc_patch9_func, 396, 3, 2 },
-	{ ahc_patch0_func, 399, 3, 1 },
-	{ ahc_patch9_func, 407, 6, 2 },
-	{ ahc_patch0_func, 413, 9, 2 },
-	{ ahc_patch13_func, 413, 1, 1 },
-	{ ahc_patch13_func, 422, 2, 1 },
-	{ ahc_patch14_func, 424, 1, 1 },
-	{ ahc_patch9_func, 426, 1, 2 },
-	{ ahc_patch0_func, 427, 1, 1 },
-	{ ahc_patch7_func, 428, 1, 1 },
+	{ ahc_patch1_func, 249, 1, 2 },
+	{ ahc_patch0_func, 250, 2, 2 },
+	{ ahc_patch11_func, 251, 1, 1 },
+	{ ahc_patch9_func, 259, 27, 3 },
+	{ ahc_patch1_func, 275, 10, 2 },
+	{ ahc_patch13_func, 278, 1, 1 },
+	{ ahc_patch14_func, 286, 14, 1 },
+	{ ahc_patch1_func, 302, 1, 2 },
+	{ ahc_patch0_func, 303, 1, 1 },
+	{ ahc_patch9_func, 306, 1, 1 },
+	{ ahc_patch13_func, 311, 1, 1 },
+	{ ahc_patch9_func, 312, 2, 2 },
+	{ ahc_patch0_func, 314, 4, 1 },
+	{ ahc_patch14_func, 318, 1, 1 },
+	{ ahc_patch15_func, 320, 2, 3 },
+	{ ahc_patch9_func, 320, 1, 2 },
+	{ ahc_patch0_func, 321, 1, 1 },
+	{ ahc_patch6_func, 326, 1, 2 },
+	{ ahc_patch0_func, 327, 1, 1 },
+	{ ahc_patch1_func, 331, 47, 11 },
+	{ ahc_patch6_func, 338, 2, 4 },
+	{ ahc_patch7_func, 338, 1, 1 },
+	{ ahc_patch8_func, 339, 1, 1 },
+	{ ahc_patch0_func, 340, 1, 1 },
+	{ ahc_patch16_func, 341, 1, 1 },
+	{ ahc_patch6_func, 357, 6, 3 },
+	{ ahc_patch16_func, 357, 5, 1 },
+	{ ahc_patch0_func, 363, 7, 1 },
+	{ ahc_patch13_func, 373, 5, 1 },
+	{ ahc_patch0_func, 378, 52, 17 },
+	{ ahc_patch14_func, 378, 1, 1 },
+	{ ahc_patch7_func, 380, 2, 2 },
+	{ ahc_patch17_func, 381, 1, 1 },
+	{ ahc_patch9_func, 384, 1, 1 },
+	{ ahc_patch18_func, 391, 1, 1 },
+	{ ahc_patch14_func, 396, 9, 3 },
+	{ ahc_patch9_func, 397, 3, 2 },
+	{ ahc_patch0_func, 400, 3, 1 },
+	{ ahc_patch9_func, 408, 6, 2 },
+	{ ahc_patch0_func, 414, 9, 2 },
+	{ ahc_patch13_func, 414, 1, 1 },
+	{ ahc_patch13_func, 423, 2, 1 },
+	{ ahc_patch14_func, 425, 1, 1 },
+	{ ahc_patch9_func, 427, 1, 2 },
+	{ ahc_patch0_func, 428, 1, 1 },
 	{ ahc_patch7_func, 429, 1, 1 },
-	{ ahc_patch8_func, 430, 3, 3 },
-	{ ahc_patch6_func, 431, 1, 2 },
-	{ ahc_patch0_func, 432, 1, 1 },
-	{ ahc_patch9_func, 433, 1, 1 },
-	{ ahc_patch15_func, 434, 1, 2 },
-	{ ahc_patch13_func, 434, 1, 1 },
-	{ ahc_patch14_func, 436, 9, 4 },
-	{ ahc_patch9_func, 436, 1, 1 },
-	{ ahc_patch9_func, 443, 2, 1 },
-	{ ahc_patch0_func, 445, 4, 3 },
-	{ ahc_patch9_func, 445, 1, 2 },
-	{ ahc_patch0_func, 446, 3, 1 },
-	{ ahc_patch1_func, 450, 2, 1 },
-	{ ahc_patch7_func, 452, 10, 2 },
-	{ ahc_patch0_func, 462, 1, 1 },
-	{ ahc_patch8_func, 463, 118, 22 },
-	{ ahc_patch1_func, 465, 3, 2 },
-	{ ahc_patch0_func, 468, 5, 3 },
-	{ ahc_patch9_func, 468, 2, 2 },
-	{ ahc_patch0_func, 470, 3, 1 },
-	{ ahc_patch1_func, 475, 2, 2 },
-	{ ahc_patch0_func, 477, 6, 3 },
-	{ ahc_patch9_func, 477, 2, 2 },
-	{ ahc_patch0_func, 479, 3, 1 },
-	{ ahc_patch1_func, 485, 2, 2 },
-	{ ahc_patch0_func, 487, 9, 7 },
-	{ ahc_patch9_func, 487, 5, 6 },
-	{ ahc_patch19_func, 487, 1, 2 },
-	{ ahc_patch0_func, 488, 1, 1 },
-	{ ahc_patch19_func, 490, 1, 2 },
-	{ ahc_patch0_func, 491, 1, 1 },
-	{ ahc_patch0_func, 492, 4, 1 },
-	{ ahc_patch6_func, 497, 3, 2 },
-	{ ahc_patch0_func, 500, 1, 1 },
-	{ ahc_patch6_func, 510, 1, 2 },
-	{ ahc_patch0_func, 511, 1, 1 },
-	{ ahc_patch20_func, 548, 7, 1 },
-	{ ahc_patch3_func, 583, 1, 2 },
-	{ ahc_patch0_func, 584, 1, 1 },
-	{ ahc_patch21_func, 587, 1, 1 },
-	{ ahc_patch8_func, 589, 106, 33 },
-	{ ahc_patch4_func, 591, 1, 1 },
-	{ ahc_patch1_func, 597, 2, 2 },
-	{ ahc_patch0_func, 599, 1, 1 },
-	{ ahc_patch1_func, 602, 1, 2 },
-	{ ahc_patch0_func, 603, 1, 1 },
-	{ ahc_patch9_func, 604, 3, 3 },
-	{ ahc_patch15_func, 605, 1, 1 },
-	{ ahc_patch0_func, 607, 4, 1 },
-	{ ahc_patch19_func, 616, 2, 2 },
-	{ ahc_patch0_func, 618, 1, 1 },
-	{ ahc_patch19_func, 622, 10, 3 },
-	{ ahc_patch5_func, 624, 8, 1 },
-	{ ahc_patch0_func, 632, 9, 2 },
-	{ ahc_patch5_func, 633, 8, 1 },
-	{ ahc_patch4_func, 643, 1, 2 },
-	{ ahc_patch0_func, 644, 1, 1 },
-	{ ahc_patch19_func, 645, 1, 2 },
-	{ ahc_patch0_func, 646, 3, 2 },
-	{ ahc_patch4_func, 648, 1, 1 },
-	{ ahc_patch5_func, 649, 1, 1 },
-	{ ahc_patch5_func, 652, 1, 1 },
-	{ ahc_patch5_func, 654, 1, 1 },
-	{ ahc_patch4_func, 656, 2, 2 },
-	{ ahc_patch0_func, 658, 2, 1 },
-	{ ahc_patch5_func, 660, 1, 1 },
-	{ ahc_patch5_func, 663, 1, 1 },
-	{ ahc_patch5_func, 666, 1, 1 },
-	{ ahc_patch19_func, 670, 1, 1 },
-	{ ahc_patch19_func, 673, 1, 1 },
-	{ ahc_patch4_func, 679, 1, 1 },
-	{ ahc_patch6_func, 682, 1, 2 },
-	{ ahc_patch0_func, 683, 1, 1 },
-	{ ahc_patch7_func, 695, 16, 1 },
-	{ ahc_patch4_func, 711, 20, 1 },
-	{ ahc_patch9_func, 732, 4, 2 },
-	{ ahc_patch0_func, 736, 4, 1 },
-	{ ahc_patch9_func, 740, 4, 2 },
-	{ ahc_patch0_func, 744, 3, 1 },
-	{ ahc_patch6_func, 750, 1, 1 },
-	{ ahc_patch22_func, 752, 14, 1 },
-	{ ahc_patch7_func, 766, 3, 1 },
-	{ ahc_patch9_func, 778, 24, 8 },
-	{ ahc_patch19_func, 782, 1, 2 },
-	{ ahc_patch0_func, 783, 1, 1 },
-	{ ahc_patch15_func, 788, 4, 2 },
-	{ ahc_patch0_func, 792, 7, 3 },
-	{ ahc_patch23_func, 792, 5, 2 },
-	{ ahc_patch0_func, 797, 2, 1 },
-	{ ahc_patch0_func, 802, 42, 3 },
-	{ ahc_patch18_func, 814, 18, 2 },
-	{ ahc_patch0_func, 832, 1, 1 },
-	{ ahc_patch4_func, 856, 1, 1 },
-	{ ahc_patch4_func, 857, 3, 2 },
-	{ ahc_patch0_func, 860, 1, 1 },
-	{ ahc_patch13_func, 861, 3, 1 },
-	{ ahc_patch4_func, 864, 12, 1 }
+	{ ahc_patch7_func, 430, 1, 1 },
+	{ ahc_patch8_func, 431, 3, 3 },
+	{ ahc_patch6_func, 432, 1, 2 },
+	{ ahc_patch0_func, 433, 1, 1 },
+	{ ahc_patch9_func, 434, 1, 1 },
+	{ ahc_patch15_func, 435, 1, 2 },
+	{ ahc_patch13_func, 435, 1, 1 },
+	{ ahc_patch14_func, 437, 9, 4 },
+	{ ahc_patch9_func, 437, 1, 1 },
+	{ ahc_patch9_func, 444, 2, 1 },
+	{ ahc_patch0_func, 446, 4, 3 },
+	{ ahc_patch9_func, 446, 1, 2 },
+	{ ahc_patch0_func, 447, 3, 1 },
+	{ ahc_patch1_func, 451, 2, 1 },
+	{ ahc_patch7_func, 453, 10, 2 },
+	{ ahc_patch0_func, 463, 1, 1 },
+	{ ahc_patch8_func, 464, 118, 22 },
+	{ ahc_patch1_func, 466, 3, 2 },
+	{ ahc_patch0_func, 469, 5, 3 },
+	{ ahc_patch9_func, 469, 2, 2 },
+	{ ahc_patch0_func, 471, 3, 1 },
+	{ ahc_patch1_func, 476, 2, 2 },
+	{ ahc_patch0_func, 478, 6, 3 },
+	{ ahc_patch9_func, 478, 2, 2 },
+	{ ahc_patch0_func, 480, 3, 1 },
+	{ ahc_patch1_func, 486, 2, 2 },
+	{ ahc_patch0_func, 488, 9, 7 },
+	{ ahc_patch9_func, 488, 5, 6 },
+	{ ahc_patch19_func, 488, 1, 2 },
+	{ ahc_patch0_func, 489, 1, 1 },
+	{ ahc_patch19_func, 491, 1, 2 },
+	{ ahc_patch0_func, 492, 1, 1 },
+	{ ahc_patch0_func, 493, 4, 1 },
+	{ ahc_patch6_func, 498, 3, 2 },
+	{ ahc_patch0_func, 501, 1, 1 },
+	{ ahc_patch6_func, 511, 1, 2 },
+	{ ahc_patch0_func, 512, 1, 1 },
+	{ ahc_patch20_func, 549, 7, 1 },
+	{ ahc_patch3_func, 584, 1, 2 },
+	{ ahc_patch0_func, 585, 1, 1 },
+	{ ahc_patch21_func, 588, 1, 1 },
+	{ ahc_patch8_func, 590, 106, 33 },
+	{ ahc_patch4_func, 592, 1, 1 },
+	{ ahc_patch1_func, 598, 2, 2 },
+	{ ahc_patch0_func, 600, 1, 1 },
+	{ ahc_patch1_func, 603, 1, 2 },
+	{ ahc_patch0_func, 604, 1, 1 },
+	{ ahc_patch9_func, 605, 3, 3 },
+	{ ahc_patch15_func, 606, 1, 1 },
+	{ ahc_patch0_func, 608, 4, 1 },
+	{ ahc_patch19_func, 617, 2, 2 },
+	{ ahc_patch0_func, 619, 1, 1 },
+	{ ahc_patch19_func, 623, 10, 3 },
+	{ ahc_patch5_func, 625, 8, 1 },
+	{ ahc_patch0_func, 633, 9, 2 },
+	{ ahc_patch5_func, 634, 8, 1 },
+	{ ahc_patch4_func, 644, 1, 2 },
+	{ ahc_patch0_func, 645, 1, 1 },
+	{ ahc_patch19_func, 646, 1, 2 },
+	{ ahc_patch0_func, 647, 3, 2 },
+	{ ahc_patch4_func, 649, 1, 1 },
+	{ ahc_patch5_func, 650, 1, 1 },
+	{ ahc_patch5_func, 653, 1, 1 },
+	{ ahc_patch5_func, 655, 1, 1 },
+	{ ahc_patch4_func, 657, 2, 2 },
+	{ ahc_patch0_func, 659, 2, 1 },
+	{ ahc_patch5_func, 661, 1, 1 },
+	{ ahc_patch5_func, 664, 1, 1 },
+	{ ahc_patch5_func, 667, 1, 1 },
+	{ ahc_patch19_func, 671, 1, 1 },
+	{ ahc_patch19_func, 674, 1, 1 },
+	{ ahc_patch4_func, 680, 1, 1 },
+	{ ahc_patch6_func, 683, 1, 2 },
+	{ ahc_patch0_func, 684, 1, 1 },
+	{ ahc_patch7_func, 696, 16, 1 },
+	{ ahc_patch4_func, 712, 20, 1 },
+	{ ahc_patch9_func, 733, 4, 2 },
+	{ ahc_patch0_func, 737, 4, 1 },
+	{ ahc_patch9_func, 741, 4, 2 },
+	{ ahc_patch0_func, 745, 3, 1 },
+	{ ahc_patch6_func, 751, 1, 1 },
+	{ ahc_patch22_func, 753, 14, 1 },
+	{ ahc_patch7_func, 767, 3, 1 },
+	{ ahc_patch9_func, 779, 24, 8 },
+	{ ahc_patch19_func, 783, 1, 2 },
+	{ ahc_patch0_func, 784, 1, 1 },
+	{ ahc_patch15_func, 789, 4, 2 },
+	{ ahc_patch0_func, 793, 7, 3 },
+	{ ahc_patch23_func, 793, 5, 2 },
+	{ ahc_patch0_func, 798, 2, 1 },
+	{ ahc_patch0_func, 803, 42, 3 },
+	{ ahc_patch18_func, 815, 18, 2 },
+	{ ahc_patch0_func, 833, 1, 1 },
+	{ ahc_patch4_func, 857, 1, 1 },
+	{ ahc_patch4_func, 858, 3, 2 },
+	{ ahc_patch0_func, 861, 1, 1 },
+	{ ahc_patch13_func, 862, 3, 1 },
+	{ ahc_patch4_func, 865, 12, 1 }
 };
 
 static struct cs {
@@ -1296,11 +1297,11 @@ static struct cs {
 } critical_sections[] = {
 	{ 11, 18 },
 	{ 21, 30 },
-	{ 711, 727 },
-	{ 857, 860 },
-	{ 864, 870 },
-	{ 872, 874 },
-	{ 874, 876 }
+	{ 712, 728 },
+	{ 858, 861 },
+	{ 865, 871 },
+	{ 873, 875 },
+	{ 875, 877 }
 };
 
 static const int num_critical_sections = sizeof(critical_sections)



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] aic7xxx: upport all sequencer and core fixes from adaptec version 6.3.9
  2005-08-04 22:33 [PATCH] aic7xxx: upport all sequencer and core fixes from adaptec version 6.3.9 James Bottomley
@ 2005-08-05 13:25 ` SCSI Mailing List
  2005-08-05 18:16   ` James Bottomley
  0 siblings, 1 reply; 3+ messages in thread
From: SCSI Mailing List @ 2005-08-05 13:25 UTC (permalink / raw)
  To: James Bottomley; +Cc: SCSI Mailing List

On 08/04/05 18:33, James Bottomley wrote:
> This patch upports all relevant code fixes and bumps the driver version
> to 7.0 to signify starting a new tree.

Tremendously good work!

	Luben

 
> James
> 
> diff --git a/Documentation/scsi/aic7xxx.txt b/Documentation/scsi/aic7xxx.txt
> --- a/Documentation/scsi/aic7xxx.txt
> +++ b/Documentation/scsi/aic7xxx.txt
> @@ -1,5 +1,5 @@
>  ====================================================================
> -=    Adaptec Aic7xxx Fast -> Ultra160 Family Manager Set v6.2.28   =
> +=    Adaptec Aic7xxx Fast -> Ultra160 Family Manager Set v7.0      =
>  =                            README for                            =
>  =                     The Linux Operating System                   =
>  ====================================================================
> @@ -131,6 +131,10 @@ The following information is available i
>        SCSI "stub" effects.
>  
>  2. Version History
> +   7.0	  (4th August, 2005)
> +	- Updated driver to use SCSI transport class infrastructure
> +	- Upported sequencer and core fixes from last adaptec released
> +	  version of the driver.
>     6.2.36 (June 3rd, 2003)
>          - Correct code that disables PCI parity error checking.
>          - Correct and simplify handling of the ignore wide residue
> diff --git a/drivers/scsi/aic7xxx/aic7xxx.h b/drivers/scsi/aic7xxx/aic7xxx.h
> --- a/drivers/scsi/aic7xxx/aic7xxx.h
> +++ b/drivers/scsi/aic7xxx/aic7xxx.h
> @@ -37,7 +37,7 @@
>   * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
>   * POSSIBILITY OF SUCH DAMAGES.
>   *
> - * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.h#79 $
> + * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.h#85 $
>   *
>   * $FreeBSD$
>   */
> @@ -243,7 +243,7 @@ typedef enum {
>  	 */
>  	AHC_AIC7850_FE	= AHC_SPIOCAP|AHC_AUTOPAUSE|AHC_TARGETMODE|AHC_ULTRA,
>  	AHC_AIC7860_FE	= AHC_AIC7850_FE,
> -	AHC_AIC7870_FE	= AHC_TARGETMODE,
> +	AHC_AIC7870_FE	= AHC_TARGETMODE|AHC_AUTOPAUSE,
>  	AHC_AIC7880_FE	= AHC_AIC7870_FE|AHC_ULTRA,
>  	/*
>  	 * Although we have space for both the initiator and
> diff --git a/drivers/scsi/aic7xxx/aic7xxx.reg b/drivers/scsi/aic7xxx/aic7xxx.reg
> --- a/drivers/scsi/aic7xxx/aic7xxx.reg
> +++ b/drivers/scsi/aic7xxx/aic7xxx.reg
> @@ -39,7 +39,7 @@
>   *
>   * $FreeBSD$
>   */
> -VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic7xxx.reg#39 $"
> +VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic7xxx.reg#40 $"
>  
>  /*
>   * This file is processed by the aic7xxx_asm utility for use in assembling
> @@ -1306,7 +1306,6 @@ scratch_ram {
>  	 */
>  	MWI_RESIDUAL {
>  		size		1
> -		alias	TARG_IMMEDIATE_SCB
>  	}
>  	/*
>  	 * SCBID of the next SCB to be started by the controller.
> @@ -1461,6 +1460,7 @@ scratch_ram {
>  	 */
>  	LAST_MSG {
>  		size		1
> +		alias	TARG_IMMEDIATE_SCB
>  	}
>  
>  	/*
> diff --git a/drivers/scsi/aic7xxx/aic7xxx.seq b/drivers/scsi/aic7xxx/aic7xxx.seq
> --- a/drivers/scsi/aic7xxx/aic7xxx.seq
> +++ b/drivers/scsi/aic7xxx/aic7xxx.seq
> @@ -40,7 +40,7 @@
>   * $FreeBSD$
>   */
>  
> -VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic7xxx.seq#56 $"
> +VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic7xxx.seq#58 $"
>  PATCH_ARG_LIST = "struct ahc_softc *ahc"
>  PREFIX = "ahc_"
>  
> @@ -679,6 +679,7 @@ await_busfree:
>  		clr	SCSIBUSL;	/* Prevent bit leakage durint SELTO */
>  	}
>  	and	SXFRCTL0, ~SPIOEN;
> +	mvi	SEQ_FLAGS, NOT_IDENTIFIED|NO_CDB_SENT;
>  	test	SSTAT1,REQINIT|BUSFREE	jz .;
>  	test	SSTAT1, BUSFREE jnz poll_for_work;
>  	mvi	MISSED_BUSFREE call set_seqint;
> @@ -1097,7 +1098,7 @@ ultra2_dmahalt:
>  		test	SCB_RESIDUAL_DATACNT[3], SG_LAST_SEG jz dma_mid_sg;
>  		if ((ahc->flags & AHC_TARGETROLE) != 0) {
>  			test	SSTAT0, TARGET jz dma_last_sg;
> -			if ((ahc->flags & AHC_TMODE_WIDEODD_BUG) != 0) {
> +			if ((ahc->bugs & AHC_TMODE_WIDEODD_BUG) != 0) {
>  				test	DMAPARAMS, DIRECTION jz dma_mid_sg;
>  			}
>  		}
> diff --git a/drivers/scsi/aic7xxx/aic7xxx_93cx6.c b/drivers/scsi/aic7xxx/aic7xxx_93cx6.c
> --- a/drivers/scsi/aic7xxx/aic7xxx_93cx6.c
> +++ b/drivers/scsi/aic7xxx/aic7xxx_93cx6.c
> @@ -28,9 +28,7 @@
>   * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
>   * SUCH DAMAGE.
>   *
> - * $Id: //depot/aic7xxx/aic7xxx/aic7xxx_93cx6.c#17 $
> - *
> - * $FreeBSD$
> + * $Id: //depot/aic7xxx/aic7xxx/aic7xxx_93cx6.c#19 $
>   */
>  
>  /*
> @@ -64,7 +62,6 @@
>   *   is preceded by an initial zero (leading 0, followed by 16-bits, MSB
>   *   first).  The clock cycling from low to high initiates the next data
>   *   bit to be sent from the chip.
> - *
>   */
>  
>  #ifdef __linux__
> @@ -81,14 +78,22 @@
>   * Right now, we only have to read the SEEPROM.  But we make it easier to
>   * add other 93Cx6 functions.
>   */
> -static struct seeprom_cmd {
> +struct seeprom_cmd {
>    	uint8_t len;
> - 	uint8_t bits[9];
> -} seeprom_read = {3, {1, 1, 0}};
> + 	uint8_t bits[11];
> +};
>  
> +/* Short opcodes for the c46 */
>  static struct seeprom_cmd seeprom_ewen = {9, {1, 0, 0, 1, 1, 0, 0, 0, 0}};
>  static struct seeprom_cmd seeprom_ewds = {9, {1, 0, 0, 0, 0, 0, 0, 0, 0}};
> +
> +/* Long opcodes for the C56/C66 */
> +static struct seeprom_cmd seeprom_long_ewen = {11, {1, 0, 0, 1, 1, 0, 0, 0, 0}};
> +static struct seeprom_cmd seeprom_long_ewds = {11, {1, 0, 0, 0, 0, 0, 0, 0, 0}};
> +
> +/* Common opcodes */
>  static struct seeprom_cmd seeprom_write = {3, {1, 0, 1}};
> +static struct seeprom_cmd seeprom_read  = {3, {1, 1, 0}};
>  
>  /*
>   * Wait for the SEERDY to go high; about 800 ns.
> @@ -222,12 +227,25 @@ int
>  ahc_write_seeprom(struct seeprom_descriptor *sd, uint16_t *buf,
>  		  u_int start_addr, u_int count)
>  {
> +	struct seeprom_cmd *ewen, *ewds;
>  	uint16_t v;
>  	uint8_t temp;
>  	int i, k;
>  
>  	/* Place the chip into write-enable mode */
> -	send_seeprom_cmd(sd, &seeprom_ewen);
> +	if (sd->sd_chip == C46) {
> +		ewen = &seeprom_ewen;
> +		ewds = &seeprom_ewds;
> +	} else if (sd->sd_chip == C56_66) {
> +		ewen = &seeprom_long_ewen;
> +		ewds = &seeprom_long_ewds;
> +	} else {
> +		printf("ahc_write_seeprom: unsupported seeprom type %d\n",
> +		       sd->sd_chip);
> +		return (0);
> +	}
> +
> +	send_seeprom_cmd(sd, ewen);
>  	reset_seeprom(sd);
>  
>  	/* Write all requested data out to the seeprom. */
> @@ -277,7 +295,7 @@ ahc_write_seeprom(struct seeprom_descrip
>  	}
>  
>  	/* Put the chip back into write-protect mode */
> -	send_seeprom_cmd(sd, &seeprom_ewds);
> +	send_seeprom_cmd(sd, ewds);
>  	reset_seeprom(sd);
>  
>  	return (1);
> diff --git a/drivers/scsi/aic7xxx/aic7xxx_core.c b/drivers/scsi/aic7xxx/aic7xxx_core.c
> --- a/drivers/scsi/aic7xxx/aic7xxx_core.c
> +++ b/drivers/scsi/aic7xxx/aic7xxx_core.c
> @@ -37,9 +37,7 @@
>   * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
>   * POSSIBILITY OF SUCH DAMAGES.
>   *
> - * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.c#134 $
> - *
> - * $FreeBSD$
> + * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.c#155 $
>   */
>  
>  #ifdef __linux__
> @@ -287,10 +285,19 @@ ahc_restart(struct ahc_softc *ahc)
>  		ahc_outb(ahc, SEQ_FLAGS2,
>  			 ahc_inb(ahc, SEQ_FLAGS2) & ~SCB_DMA);
>  	}
> +
> +	/*
> +	 * Clear any pending sequencer interrupt.  It is no
> +	 * longer relevant since we're resetting the Program
> +	 * Counter.
> +	 */
> +	ahc_outb(ahc, CLRINT, CLRSEQINT);
> +
>  	ahc_outb(ahc, MWI_RESIDUAL, 0);
>  	ahc_outb(ahc, SEQCTL, ahc->seqctl);
>  	ahc_outb(ahc, SEQADDR0, 0);
>  	ahc_outb(ahc, SEQADDR1, 0);
> +
>  	ahc_unpause(ahc);
>  }
>  
> @@ -1174,19 +1181,20 @@ ahc_handle_scsiint(struct ahc_softc *ahc
>  				       scb_index);
>  			}
>  #endif
> -			/*
> -			 * Force a renegotiation with this target just in
> -			 * case the cable was pulled and will later be
> -			 * re-attached.  The target may forget its negotiation
> -			 * settings with us should it attempt to reselect
> -			 * during the interruption.  The target will not issue
> -			 * a unit attention in this case, so we must always
> -			 * renegotiate.
> -			 */
>  			ahc_scb_devinfo(ahc, &devinfo, scb);
> -			ahc_force_renegotiation(ahc, &devinfo);
>  			ahc_set_transaction_status(scb, CAM_SEL_TIMEOUT);
>  			ahc_freeze_devq(ahc, scb);
> +
> +			/*
> +			 * Cancel any pending transactions on the device
> +			 * now that it seems to be missing.  This will
> +			 * also revert us to async/narrow transfers until
> +			 * we can renegotiate with the device.
> +			 */
> +			ahc_handle_devreset(ahc, &devinfo,
> +					    CAM_SEL_TIMEOUT,
> +					    "Selection Timeout",
> +					    /*verbose_level*/1);
>  		}
>  		ahc_outb(ahc, CLRINT, CLRSCSIINT);
>  		ahc_restart(ahc);
> @@ -3763,8 +3771,9 @@ ahc_handle_devreset(struct ahc_softc *ah
>  			 /*period*/0, /*offset*/0, /*ppr_options*/0,
>  			 AHC_TRANS_CUR, /*paused*/TRUE);
>  	
> -	ahc_send_async(ahc, devinfo->channel, devinfo->target,
> -		       CAM_LUN_WILDCARD, AC_SENT_BDR, NULL);
> +	if (status != CAM_SEL_TIMEOUT)
> +		ahc_send_async(ahc, devinfo->channel, devinfo->target,
> +			       CAM_LUN_WILDCARD, AC_SENT_BDR, NULL);
>  
>  	if (message != NULL
>  	 && (verbose_level <= bootverbose))
> @@ -4003,14 +4012,6 @@ ahc_reset(struct ahc_softc *ahc, int rei
>  	 * to disturb the integrity of the bus.
>  	 */
>  	ahc_pause(ahc);
> -	if ((ahc_inb(ahc, HCNTRL) & CHIPRST) != 0) {
> -		/*
> -		 * The chip has not been initialized since
> -		 * PCI/EISA/VLB bus reset.  Don't trust
> -		 * "left over BIOS data".
> -		 */
> -		ahc->flags |= AHC_NO_BIOS_INIT;
> -	}
>  	sxfrctl1_b = 0;
>  	if ((ahc->chip & AHC_CHIPID_MASK) == AHC_AIC7770) {
>  		u_int sblkctl;
> @@ -5036,14 +5037,23 @@ ahc_pause_and_flushwork(struct ahc_softc
>  	ahc->flags |= AHC_ALL_INTERRUPTS;
>  	paused = FALSE;
>  	do {
> -		if (paused)
> +		if (paused) {
>  			ahc_unpause(ahc);
> +			/*
> +			 * Give the sequencer some time to service
> +			 * any active selections.
> +			 */
> +			ahc_delay(500);
> +		}
>  		ahc_intr(ahc);
>  		ahc_pause(ahc);
>  		paused = TRUE;
>  		ahc_outb(ahc, SCSISEQ, ahc_inb(ahc, SCSISEQ) & ~ENSELO);
> -		ahc_clear_critical_section(ahc);
>  		intstat = ahc_inb(ahc, INTSTAT);
> +		if ((intstat & INT_PEND) == 0) {
> +			ahc_clear_critical_section(ahc);
> +			intstat = ahc_inb(ahc, INTSTAT);
> +		}
>  	} while (--maxloops
>  	      && (intstat != 0xFF || (ahc->features & AHC_REMOVABLE) == 0)
>  	      && ((intstat & INT_PEND) != 0
> diff --git a/drivers/scsi/aic7xxx/aic7xxx_osm.c b/drivers/scsi/aic7xxx/aic7xxx_osm.c
> --- a/drivers/scsi/aic7xxx/aic7xxx_osm.c
> +++ b/drivers/scsi/aic7xxx/aic7xxx_osm.c
> @@ -635,6 +635,8 @@ ahc_linux_slave_alloc(struct scsi_device
>  	
>  	targ->sdev[sdev->lun] = sdev;
>  
> +	spi_period(starget) = 0;
> +
>  	return 0;
>  }
>  
> diff --git a/drivers/scsi/aic7xxx/aic7xxx_osm.h b/drivers/scsi/aic7xxx/aic7xxx_osm.h
> --- a/drivers/scsi/aic7xxx/aic7xxx_osm.h
> +++ b/drivers/scsi/aic7xxx/aic7xxx_osm.h
> @@ -265,7 +265,7 @@ ahc_scb_timer_reset(struct scb *scb, u_i
>  /***************************** SMP support ************************************/
>  #include <linux/spinlock.h>
>  
> -#define AIC7XXX_DRIVER_VERSION "6.2.36"
> +#define AIC7XXX_DRIVER_VERSION "7.0"
>  
>  /*************************** Device Data Structures ***************************/
>  /*
> diff --git a/drivers/scsi/aic7xxx/aic7xxx_reg.h_shipped b/drivers/scsi/aic7xxx/aic7xxx_reg.h_shipped
> --- a/drivers/scsi/aic7xxx/aic7xxx_reg.h_shipped
> +++ b/drivers/scsi/aic7xxx/aic7xxx_reg.h_shipped
> @@ -2,8 +2,8 @@
>   * DO NOT EDIT - This file is automatically generated
>   *		 from the following source files:
>   *
> - * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.seq#56 $
> - * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.reg#39 $
> + * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.seq#58 $
> + * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.reg#40 $
>   */
>  typedef int (ahc_reg_print_t)(u_int, u_int *, u_int);
>  typedef struct ahc_reg_parse_entry {
> @@ -1298,7 +1298,6 @@ ahc_reg_print_t ahc_sg_cache_pre_print;
>  #define	CMDSIZE_TABLE_TAIL		0x34
>  
>  #define	MWI_RESIDUAL    		0x38
> -#define	TARG_IMMEDIATE_SCB		0x38
>  
>  #define	NEXT_QUEUED_SCB 		0x39
>  
> @@ -1380,6 +1379,7 @@ ahc_reg_print_t ahc_sg_cache_pre_print;
>  #define	RETURN_2        		0x52
>  
>  #define	LAST_MSG        		0x53
> +#define	TARG_IMMEDIATE_SCB		0x53
>  
>  #define	SCSISEQ_TEMPLATE		0x54
>  #define		ENSELO          	0x40
> diff --git a/drivers/scsi/aic7xxx/aic7xxx_reg_print.c_shipped b/drivers/scsi/aic7xxx/aic7xxx_reg_print.c_shipped
> --- a/drivers/scsi/aic7xxx/aic7xxx_reg_print.c_shipped
> +++ b/drivers/scsi/aic7xxx/aic7xxx_reg_print.c_shipped
> @@ -2,8 +2,8 @@
>   * DO NOT EDIT - This file is automatically generated
>   *		 from the following source files:
>   *
> - * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.seq#56 $
> - * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.reg#39 $
> + * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.seq#58 $
> + * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.reg#40 $
>   */
>  
>  #include "aic7xxx_osm.h"
> diff --git a/drivers/scsi/aic7xxx/aic7xxx_seq.h_shipped b/drivers/scsi/aic7xxx/aic7xxx_seq.h_shipped
> --- a/drivers/scsi/aic7xxx/aic7xxx_seq.h_shipped
> +++ b/drivers/scsi/aic7xxx/aic7xxx_seq.h_shipped
> @@ -2,13 +2,13 @@
>   * DO NOT EDIT - This file is automatically generated
>   *		 from the following source files:
>   *
> - * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.seq#56 $
> - * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.reg#39 $
> + * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.seq#58 $
> + * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.reg#40 $
>   */
>  static uint8_t seqprog[] = {
>  	0xb2, 0x00, 0x00, 0x08,
>  	0xf7, 0x11, 0x22, 0x08,
> -	0x00, 0x65, 0xec, 0x59,
> +	0x00, 0x65, 0xee, 0x59,
>  	0xf7, 0x01, 0x02, 0x08,
>  	0xff, 0x6a, 0x24, 0x08,
>  	0x40, 0x00, 0x40, 0x68,
> @@ -21,15 +21,15 @@ static uint8_t seqprog[] = {
>  	0x01, 0x4d, 0xc8, 0x30,
>  	0x00, 0x4c, 0x12, 0x70,
>  	0x01, 0x39, 0xa2, 0x30,
> -	0x00, 0x6a, 0xc0, 0x5e,
> +	0x00, 0x6a, 0xc2, 0x5e,
>  	0x01, 0x51, 0x20, 0x31,
>  	0x01, 0x57, 0xae, 0x00,
>  	0x0d, 0x6a, 0x76, 0x00,
> -	0x00, 0x51, 0x12, 0x5e,
> +	0x00, 0x51, 0x14, 0x5e,
>  	0x01, 0x51, 0xc8, 0x30,
>  	0x00, 0x39, 0xc8, 0x60,
>  	0x00, 0xbb, 0x30, 0x70,
> -	0xc1, 0x6a, 0xd8, 0x5e,
> +	0xc1, 0x6a, 0xda, 0x5e,
>  	0x01, 0xbf, 0x72, 0x30,
>  	0x01, 0x40, 0x7e, 0x31,
>  	0x01, 0x90, 0x80, 0x30,
> @@ -49,10 +49,10 @@ static uint8_t seqprog[] = {
>  	0x08, 0x6a, 0x78, 0x00,
>  	0x01, 0x50, 0xc8, 0x30,
>  	0xe0, 0x6a, 0xcc, 0x00,
> -	0x48, 0x6a, 0xfc, 0x5d,
> +	0x48, 0x6a, 0xfe, 0x5d,
>  	0x01, 0x6a, 0xdc, 0x01,
>  	0x88, 0x6a, 0xcc, 0x00,
> -	0x48, 0x6a, 0xfc, 0x5d,
> +	0x48, 0x6a, 0xfe, 0x5d,
>  	0x01, 0x6a, 0x26, 0x01,
>  	0xf0, 0x19, 0x7a, 0x08,
>  	0x0f, 0x18, 0xc8, 0x08,
> @@ -93,7 +93,7 @@ static uint8_t seqprog[] = {
>  	0x00, 0x65, 0x20, 0x41,
>  	0x02, 0x57, 0xae, 0x00,
>  	0x00, 0x65, 0x9e, 0x40,
> -	0x61, 0x6a, 0xd8, 0x5e,
> +	0x61, 0x6a, 0xda, 0x5e,
>  	0x08, 0x51, 0x20, 0x71,
>  	0x02, 0x0b, 0xb2, 0x78,
>  	0x00, 0x65, 0xae, 0x40,
> @@ -106,7 +106,7 @@ static uint8_t seqprog[] = {
>  	0x80, 0x3d, 0x7a, 0x00,
>  	0x20, 0x6a, 0x16, 0x00,
>  	0x00, 0x65, 0xcc, 0x41,
> -	0x00, 0x65, 0xb2, 0x5e,
> +	0x00, 0x65, 0xb4, 0x5e,
>  	0x00, 0x65, 0x12, 0x40,
>  	0x20, 0x11, 0xd2, 0x68,
>  	0x20, 0x6a, 0x18, 0x00,
> @@ -140,27 +140,27 @@ static uint8_t seqprog[] = {
>  	0x80, 0x0b, 0xc4, 0x79,
>  	0x12, 0x01, 0x02, 0x00,
>  	0x01, 0xab, 0xac, 0x30,
> -	0xe4, 0x6a, 0x6e, 0x5d,
> +	0xe4, 0x6a, 0x70, 0x5d,
>  	0x40, 0x6a, 0x16, 0x00,
> -	0x80, 0x3e, 0x84, 0x5d,
> +	0x80, 0x3e, 0x86, 0x5d,
>  	0x20, 0xb8, 0x18, 0x79,
> -	0x20, 0x6a, 0x84, 0x5d,
> -	0x00, 0xab, 0x84, 0x5d,
> +	0x20, 0x6a, 0x86, 0x5d,
> +	0x00, 0xab, 0x86, 0x5d,
>  	0x01, 0xa9, 0x78, 0x30,
>  	0x10, 0xb8, 0x20, 0x79,
> -	0xe4, 0x6a, 0x6e, 0x5d,
> +	0xe4, 0x6a, 0x70, 0x5d,
>  	0x00, 0x65, 0xae, 0x40,
>  	0x10, 0x03, 0x3c, 0x69,
>  	0x08, 0x3c, 0x5a, 0x69,
>  	0x04, 0x3c, 0x92, 0x69,
>  	0x02, 0x3c, 0x98, 0x69,
>  	0x01, 0x3c, 0x44, 0x79,
> -	0xff, 0x6a, 0x70, 0x00,
> +	0xff, 0x6a, 0xa6, 0x00,
>  	0x00, 0x65, 0xa4, 0x59,
> -	0x00, 0x6a, 0xc0, 0x5e,
> -	0xff, 0x38, 0x30, 0x71,
> +	0x00, 0x6a, 0xc2, 0x5e,
> +	0xff, 0x53, 0x30, 0x71,
>  	0x0d, 0x6a, 0x76, 0x00,
> -	0x00, 0x38, 0x12, 0x5e,
> +	0x00, 0x53, 0x14, 0x5e,
>  	0x00, 0x65, 0xea, 0x58,
>  	0x12, 0x01, 0x02, 0x00,
>  	0x00, 0x65, 0x18, 0x41,
> @@ -168,10 +168,10 @@ static uint8_t seqprog[] = {
>  	0x00, 0x65, 0xf2, 0x58,
>  	0xfd, 0x57, 0xae, 0x08,
>  	0x00, 0x65, 0xae, 0x40,
> -	0xe4, 0x6a, 0x6e, 0x5d,
> +	0xe4, 0x6a, 0x70, 0x5d,
>  	0x20, 0x3c, 0x4a, 0x79,
> -	0x02, 0x6a, 0x84, 0x5d,
> -	0x04, 0x6a, 0x84, 0x5d,
> +	0x02, 0x6a, 0x86, 0x5d,
> +	0x04, 0x6a, 0x86, 0x5d,
>  	0x01, 0x03, 0x4c, 0x69,
>  	0xf7, 0x11, 0x22, 0x08,
>  	0xff, 0x6a, 0x24, 0x08,
> @@ -182,13 +182,13 @@ static uint8_t seqprog[] = {
>  	0x80, 0x86, 0xc8, 0x08,
>  	0x01, 0x4f, 0xc8, 0x30,
>  	0x00, 0x50, 0x6c, 0x61,
> -	0xc4, 0x6a, 0x6e, 0x5d,
> +	0xc4, 0x6a, 0x70, 0x5d,
>  	0x40, 0x3c, 0x68, 0x79,
> -	0x28, 0x6a, 0x84, 0x5d,
> +	0x28, 0x6a, 0x86, 0x5d,
>  	0x00, 0x65, 0x4c, 0x41,
> -	0x08, 0x6a, 0x84, 0x5d,
> +	0x08, 0x6a, 0x86, 0x5d,
>  	0x00, 0x65, 0x4c, 0x41,
> -	0x84, 0x6a, 0x6e, 0x5d,
> +	0x84, 0x6a, 0x70, 0x5d,
>  	0x00, 0x65, 0xf2, 0x58,
>  	0x01, 0x66, 0xc8, 0x30,
>  	0x01, 0x64, 0xd8, 0x31,
> @@ -208,16 +208,16 @@ static uint8_t seqprog[] = {
>  	0xf7, 0x3c, 0x78, 0x08,
>  	0x00, 0x65, 0x20, 0x41,
>  	0x40, 0xaa, 0x7e, 0x10,
> -	0x04, 0xaa, 0x6e, 0x5d,
> -	0x00, 0x65, 0x56, 0x42,
> -	0xc4, 0x6a, 0x6e, 0x5d,
> +	0x04, 0xaa, 0x70, 0x5d,
> +	0x00, 0x65, 0x58, 0x42,
> +	0xc4, 0x6a, 0x70, 0x5d,
>  	0xc0, 0x6a, 0x7e, 0x00,
> -	0x00, 0xa8, 0x84, 0x5d,
> +	0x00, 0xa8, 0x86, 0x5d,
>  	0xe4, 0x6a, 0x06, 0x00,
> -	0x00, 0x6a, 0x84, 0x5d,
> +	0x00, 0x6a, 0x86, 0x5d,
>  	0x00, 0x65, 0x4c, 0x41,
>  	0x10, 0x3c, 0xa8, 0x69,
> -	0x00, 0xbb, 0x8a, 0x44,
> +	0x00, 0xbb, 0x8c, 0x44,
>  	0x18, 0x6a, 0xda, 0x01,
>  	0x01, 0x69, 0xd8, 0x31,
>  	0x1c, 0x6a, 0xd0, 0x01,
> @@ -227,31 +227,32 @@ static uint8_t seqprog[] = {
>  	0x01, 0x93, 0x26, 0x01,
>  	0x03, 0x6a, 0x2a, 0x01,
>  	0x01, 0x69, 0x32, 0x31,
> -	0x1c, 0x6a, 0xe0, 0x5d,
> +	0x1c, 0x6a, 0xe2, 0x5d,
>  	0x0a, 0x93, 0x26, 0x01,
> -	0x00, 0x65, 0xa8, 0x5e,
> +	0x00, 0x65, 0xaa, 0x5e,
>  	0x01, 0x50, 0xa0, 0x18,
>  	0x02, 0x6a, 0x22, 0x05,
>  	0x1a, 0x01, 0x02, 0x00,
>  	0x80, 0x6a, 0x74, 0x00,
>  	0x40, 0x6a, 0x78, 0x00,
>  	0x40, 0x6a, 0x16, 0x00,
> -	0x00, 0x65, 0xd8, 0x5d,
> +	0x00, 0x65, 0xda, 0x5d,
>  	0x01, 0x3f, 0xc8, 0x30,
> -	0xbf, 0x64, 0x56, 0x7a,
> -	0x80, 0x64, 0x9e, 0x73,
> -	0xa0, 0x64, 0x00, 0x74,
> -	0xc0, 0x64, 0xf4, 0x73,
> -	0xe0, 0x64, 0x30, 0x74,
> -	0x01, 0x6a, 0xd8, 0x5e,
> +	0xbf, 0x64, 0x58, 0x7a,
> +	0x80, 0x64, 0xa0, 0x73,
> +	0xa0, 0x64, 0x02, 0x74,
> +	0xc0, 0x64, 0xf6, 0x73,
> +	0xe0, 0x64, 0x32, 0x74,
> +	0x01, 0x6a, 0xda, 0x5e,
>  	0x00, 0x65, 0xcc, 0x41,
>  	0xf7, 0x11, 0x22, 0x08,
>  	0x01, 0x06, 0xd4, 0x30,
>  	0xff, 0x6a, 0x24, 0x08,
>  	0xf7, 0x01, 0x02, 0x08,
> -	0x09, 0x0c, 0xe6, 0x79,
> +	0xc0, 0x6a, 0x78, 0x00,
> +	0x09, 0x0c, 0xe8, 0x79,
>  	0x08, 0x0c, 0x04, 0x68,
> -	0xb1, 0x6a, 0xd8, 0x5e,
> +	0xb1, 0x6a, 0xda, 0x5e,
>  	0xff, 0x6a, 0x26, 0x09,
>  	0x12, 0x01, 0x02, 0x00,
>  	0x02, 0x6a, 0x08, 0x30,
> @@ -264,29 +265,29 @@ static uint8_t seqprog[] = {
>  	0x00, 0xa5, 0x4a, 0x21,
>  	0x00, 0xa6, 0x4c, 0x21,
>  	0x00, 0xa7, 0x4e, 0x25,
> -	0x08, 0xeb, 0xdc, 0x7e,
> -	0x80, 0xeb, 0x06, 0x7a,
> +	0x08, 0xeb, 0xde, 0x7e,
> +	0x80, 0xeb, 0x08, 0x7a,
>  	0xff, 0x6a, 0xd6, 0x09,
> -	0x08, 0xeb, 0x0a, 0x6a,
> +	0x08, 0xeb, 0x0c, 0x6a,
>  	0xff, 0x6a, 0xd4, 0x0c,
> -	0x80, 0xa3, 0xdc, 0x6e,
> -	0x88, 0xeb, 0x20, 0x72,
> -	0x08, 0xeb, 0xdc, 0x6e,
> -	0x04, 0xea, 0x24, 0xe2,
> -	0x08, 0xee, 0xdc, 0x6e,
> +	0x80, 0xa3, 0xde, 0x6e,
> +	0x88, 0xeb, 0x22, 0x72,
> +	0x08, 0xeb, 0xde, 0x6e,
> +	0x04, 0xea, 0x26, 0xe2,
> +	0x08, 0xee, 0xde, 0x6e,
>  	0x04, 0x6a, 0xd0, 0x81,
>  	0x05, 0xa4, 0xc0, 0x89,
>  	0x03, 0xa5, 0xc2, 0x31,
>  	0x09, 0x6a, 0xd6, 0x05,
> -	0x00, 0x65, 0x08, 0x5a,
> +	0x00, 0x65, 0x0a, 0x5a,
>  	0x06, 0xa4, 0xd4, 0x89,
> -	0x80, 0x94, 0xdc, 0x7e,
> +	0x80, 0x94, 0xde, 0x7e,
>  	0x07, 0xe9, 0x10, 0x31,
>  	0x01, 0xe9, 0x46, 0x31,
> -	0x00, 0xa3, 0xba, 0x5e,
> -	0x00, 0x65, 0xfa, 0x59,
> +	0x00, 0xa3, 0xbc, 0x5e,
> +	0x00, 0x65, 0xfc, 0x59,
>  	0x01, 0xa4, 0xca, 0x30,
> -	0x80, 0xa3, 0x34, 0x7a,
> +	0x80, 0xa3, 0x36, 0x7a,
>  	0x02, 0x65, 0xca, 0x00,
>  	0x01, 0x65, 0xf8, 0x31,
>  	0x80, 0x93, 0x26, 0x01,
> @@ -294,162 +295,162 @@ static uint8_t seqprog[] = {
>  	0x01, 0x8c, 0xc8, 0x30,
>  	0x00, 0x88, 0xc8, 0x18,
>  	0x02, 0x64, 0xc8, 0x88,
> -	0xff, 0x64, 0xdc, 0x7e,
> -	0xff, 0x8d, 0x4a, 0x6a,
> -	0xff, 0x8e, 0x4a, 0x6a,
> +	0xff, 0x64, 0xde, 0x7e,
> +	0xff, 0x8d, 0x4c, 0x6a,
> +	0xff, 0x8e, 0x4c, 0x6a,
>  	0x03, 0x8c, 0xd4, 0x98,
> -	0x00, 0x65, 0xdc, 0x56,
> +	0x00, 0x65, 0xde, 0x56,
>  	0x01, 0x64, 0x70, 0x30,
>  	0xff, 0x64, 0xc8, 0x10,
>  	0x01, 0x64, 0xc8, 0x18,
>  	0x00, 0x8c, 0x18, 0x19,
>  	0xff, 0x8d, 0x1a, 0x21,
>  	0xff, 0x8e, 0x1c, 0x25,
> -	0xc0, 0x3c, 0x5a, 0x7a,
> -	0x21, 0x6a, 0xd8, 0x5e,
> +	0xc0, 0x3c, 0x5c, 0x7a,
> +	0x21, 0x6a, 0xda, 0x5e,
>  	0xa8, 0x6a, 0x76, 0x00,
>  	0x79, 0x6a, 0x76, 0x00,
> -	0x40, 0x3f, 0x62, 0x6a,
> +	0x40, 0x3f, 0x64, 0x6a,
>  	0x04, 0x3b, 0x76, 0x00,
>  	0x04, 0x6a, 0xd4, 0x81,
> -	0x20, 0x3c, 0x6a, 0x7a,
> -	0x51, 0x6a, 0xd8, 0x5e,
> -	0x00, 0x65, 0x82, 0x42,
> +	0x20, 0x3c, 0x6c, 0x7a,
> +	0x51, 0x6a, 0xda, 0x5e,
> +	0x00, 0x65, 0x84, 0x42,
>  	0x20, 0x3c, 0x78, 0x00,
> -	0x00, 0xb3, 0xba, 0x5e,
> +	0x00, 0xb3, 0xbc, 0x5e,
>  	0x07, 0xac, 0x10, 0x31,
>  	0x05, 0xb3, 0x46, 0x31,
>  	0x88, 0x6a, 0xcc, 0x00,
> -	0xac, 0x6a, 0xee, 0x5d,
> +	0xac, 0x6a, 0xf0, 0x5d,
>  	0xa3, 0x6a, 0xcc, 0x00,
> -	0xb3, 0x6a, 0xf2, 0x5d,
> -	0x00, 0x65, 0x3a, 0x5a,
> +	0xb3, 0x6a, 0xf4, 0x5d,
> +	0x00, 0x65, 0x3c, 0x5a,
>  	0xfd, 0xa4, 0x48, 0x09,
>  	0x03, 0x8c, 0x10, 0x30,
> -	0x00, 0x65, 0xe6, 0x5d,
> -	0x01, 0xa4, 0x94, 0x7a,
> +	0x00, 0x65, 0xe8, 0x5d,
> +	0x01, 0xa4, 0x96, 0x7a,
>  	0x04, 0x3b, 0x76, 0x08,
>  	0x01, 0x3b, 0x26, 0x31,
>  	0x80, 0x02, 0x04, 0x00,
> -	0x10, 0x0c, 0x8a, 0x7a,
> -	0x03, 0x9e, 0x8c, 0x6a,
> +	0x10, 0x0c, 0x8c, 0x7a,
> +	0x03, 0x9e, 0x8e, 0x6a,
>  	0x7f, 0x02, 0x04, 0x08,
> -	0x91, 0x6a, 0xd8, 0x5e,
> +	0x91, 0x6a, 0xda, 0x5e,
>  	0x00, 0x65, 0xcc, 0x41,
>  	0x01, 0xa4, 0xca, 0x30,
> -	0x80, 0xa3, 0x9a, 0x7a,
> +	0x80, 0xa3, 0x9c, 0x7a,
>  	0x02, 0x65, 0xca, 0x00,
>  	0x01, 0x65, 0xf8, 0x31,
>  	0x01, 0x3b, 0x26, 0x31,
> -	0x00, 0x65, 0x0e, 0x5a,
> -	0x01, 0xfc, 0xa8, 0x6a,
> -	0x80, 0x0b, 0x9e, 0x6a,
> -	0x10, 0x0c, 0x9e, 0x7a,
> -	0x20, 0x93, 0x9e, 0x6a,
> +	0x00, 0x65, 0x10, 0x5a,
> +	0x01, 0xfc, 0xaa, 0x6a,
> +	0x80, 0x0b, 0xa0, 0x6a,
> +	0x10, 0x0c, 0xa0, 0x7a,
> +	0x20, 0x93, 0xa0, 0x6a,
>  	0x02, 0x93, 0x26, 0x01,
> -	0x02, 0xfc, 0xb2, 0x7a,
> -	0x40, 0x0d, 0xc6, 0x6a,
> +	0x02, 0xfc, 0xb4, 0x7a,
> +	0x40, 0x0d, 0xc8, 0x6a,
>  	0x01, 0xa4, 0x48, 0x01,
> -	0x00, 0x65, 0xc6, 0x42,
> -	0x40, 0x0d, 0xb8, 0x6a,
> -	0x00, 0x65, 0x0e, 0x5a,
> -	0x00, 0x65, 0xaa, 0x42,
> -	0x80, 0xfc, 0xc2, 0x7a,
> -	0x80, 0xa4, 0xc2, 0x6a,
> +	0x00, 0x65, 0xc8, 0x42,
> +	0x40, 0x0d, 0xba, 0x6a,
> +	0x00, 0x65, 0x10, 0x5a,
> +	0x00, 0x65, 0xac, 0x42,
> +	0x80, 0xfc, 0xc4, 0x7a,
> +	0x80, 0xa4, 0xc4, 0x6a,
>  	0xff, 0xa5, 0x4a, 0x19,
>  	0xff, 0xa6, 0x4c, 0x21,
>  	0xff, 0xa7, 0x4e, 0x21,
>  	0xf8, 0xfc, 0x48, 0x09,
>  	0x7f, 0xa3, 0x46, 0x09,
> -	0x04, 0x3b, 0xe2, 0x6a,
> +	0x04, 0x3b, 0xe4, 0x6a,
>  	0x02, 0x93, 0x26, 0x01,
> -	0x01, 0x94, 0xc8, 0x7a,
> -	0x01, 0x94, 0xc8, 0x7a,
> -	0x01, 0x94, 0xc8, 0x7a,
> -	0x01, 0x94, 0xc8, 0x7a,
> -	0x01, 0x94, 0xc8, 0x7a,
> -	0x01, 0xa4, 0xe0, 0x7a,
> -	0x01, 0xfc, 0xd6, 0x7a,
> -	0x01, 0x94, 0xe2, 0x6a,
> -	0x01, 0x94, 0xe2, 0x6a,
> -	0x01, 0x94, 0xe2, 0x6a,
> -	0x00, 0x65, 0x82, 0x42,
> -	0x01, 0x94, 0xe0, 0x7a,
> -	0x10, 0x94, 0xe2, 0x6a,
> +	0x01, 0x94, 0xca, 0x7a,
> +	0x01, 0x94, 0xca, 0x7a,
> +	0x01, 0x94, 0xca, 0x7a,
> +	0x01, 0x94, 0xca, 0x7a,
> +	0x01, 0x94, 0xca, 0x7a,
> +	0x01, 0xa4, 0xe2, 0x7a,
> +	0x01, 0xfc, 0xd8, 0x7a,
> +	0x01, 0x94, 0xe4, 0x6a,
> +	0x01, 0x94, 0xe4, 0x6a,
> +	0x01, 0x94, 0xe4, 0x6a,
> +	0x00, 0x65, 0x84, 0x42,
> +	0x01, 0x94, 0xe2, 0x7a,
> +	0x10, 0x94, 0xe4, 0x6a,
>  	0xd7, 0x93, 0x26, 0x09,
> -	0x28, 0x93, 0xe6, 0x6a,
> +	0x28, 0x93, 0xe8, 0x6a,
>  	0x01, 0x85, 0x0a, 0x01,
> -	0x02, 0xfc, 0xee, 0x6a,
> +	0x02, 0xfc, 0xf0, 0x6a,
>  	0x01, 0x14, 0x46, 0x31,
>  	0xff, 0x6a, 0x10, 0x09,
>  	0xfe, 0x85, 0x0a, 0x09,
> -	0xff, 0x38, 0xfc, 0x6a,
> -	0x80, 0xa3, 0xfc, 0x7a,
> -	0x80, 0x0b, 0xfa, 0x7a,
> -	0x04, 0x3b, 0xfc, 0x7a,
> +	0xff, 0x38, 0xfe, 0x6a,
> +	0x80, 0xa3, 0xfe, 0x7a,
> +	0x80, 0x0b, 0xfc, 0x7a,
> +	0x04, 0x3b, 0xfe, 0x7a,
>  	0xbf, 0x3b, 0x76, 0x08,
>  	0x01, 0x3b, 0x26, 0x31,
> -	0x00, 0x65, 0x0e, 0x5a,
> -	0x01, 0x0b, 0x0a, 0x6b,
> -	0x10, 0x0c, 0xfe, 0x7a,
> -	0x04, 0x93, 0x08, 0x6b,
> -	0x01, 0x94, 0x06, 0x7b,
> -	0x10, 0x94, 0x08, 0x6b,
> +	0x00, 0x65, 0x10, 0x5a,
> +	0x01, 0x0b, 0x0c, 0x6b,
> +	0x10, 0x0c, 0x00, 0x7b,
> +	0x04, 0x93, 0x0a, 0x6b,
> +	0x01, 0x94, 0x08, 0x7b,
> +	0x10, 0x94, 0x0a, 0x6b,
>  	0xc7, 0x93, 0x26, 0x09,
>  	0x01, 0x99, 0xd4, 0x30,
> -	0x38, 0x93, 0x0c, 0x6b,
> -	0xff, 0x08, 0x5a, 0x6b,
> -	0xff, 0x09, 0x5a, 0x6b,
> -	0xff, 0x0a, 0x5a, 0x6b,
> -	0xff, 0x38, 0x28, 0x7b,
> +	0x38, 0x93, 0x0e, 0x6b,
> +	0xff, 0x08, 0x5c, 0x6b,
> +	0xff, 0x09, 0x5c, 0x6b,
> +	0xff, 0x0a, 0x5c, 0x6b,
> +	0xff, 0x38, 0x2a, 0x7b,
>  	0x04, 0x14, 0x10, 0x31,
>  	0x01, 0x38, 0x18, 0x31,
>  	0x02, 0x6a, 0x1a, 0x31,
>  	0x88, 0x6a, 0xcc, 0x00,
> -	0x14, 0x6a, 0xf4, 0x5d,
> -	0x00, 0x38, 0xe0, 0x5d,
> +	0x14, 0x6a, 0xf6, 0x5d,
> +	0x00, 0x38, 0xe2, 0x5d,
>  	0xff, 0x6a, 0x70, 0x08,
> -	0x00, 0x65, 0x54, 0x43,
> -	0x80, 0xa3, 0x2e, 0x7b,
> +	0x00, 0x65, 0x56, 0x43,
> +	0x80, 0xa3, 0x30, 0x7b,
>  	0x01, 0xa4, 0x48, 0x01,
> -	0x00, 0x65, 0x5a, 0x43,
> -	0x08, 0xeb, 0x34, 0x7b,
> -	0x00, 0x65, 0x0e, 0x5a,
> -	0x08, 0xeb, 0x30, 0x6b,
> +	0x00, 0x65, 0x5c, 0x43,
> +	0x08, 0xeb, 0x36, 0x7b,
> +	0x00, 0x65, 0x10, 0x5a,
> +	0x08, 0xeb, 0x32, 0x6b,
>  	0x07, 0xe9, 0x10, 0x31,
>  	0x01, 0xe9, 0xca, 0x30,
>  	0x01, 0x65, 0x46, 0x31,
> -	0x00, 0x6a, 0xba, 0x5e,
> +	0x00, 0x6a, 0xbc, 0x5e,
>  	0x88, 0x6a, 0xcc, 0x00,
> -	0xa4, 0x6a, 0xf4, 0x5d,
> -	0x08, 0x6a, 0xe0, 0x5d,
> +	0xa4, 0x6a, 0xf6, 0x5d,
> +	0x08, 0x6a, 0xe2, 0x5d,
>  	0x0d, 0x93, 0x26, 0x01,
> -	0x00, 0x65, 0xa8, 0x5e,
> +	0x00, 0x65, 0xaa, 0x5e,
>  	0x88, 0x6a, 0xcc, 0x00,
> -	0x00, 0x65, 0x8a, 0x5e,
> +	0x00, 0x65, 0x8c, 0x5e,
>  	0x01, 0x99, 0x46, 0x31,
> -	0x00, 0xa3, 0xba, 0x5e,
> +	0x00, 0xa3, 0xbc, 0x5e,
>  	0x01, 0x88, 0x10, 0x31,
> -	0x00, 0x65, 0x3a, 0x5a,
> -	0x00, 0x65, 0xfa, 0x59,
> +	0x00, 0x65, 0x3c, 0x5a,
> +	0x00, 0x65, 0xfc, 0x59,
>  	0x03, 0x8c, 0x10, 0x30,
> -	0x00, 0x65, 0xe6, 0x5d,
> -	0x80, 0x0b, 0x82, 0x6a,
> -	0x80, 0x0b, 0x62, 0x6b,
> -	0x01, 0x0c, 0x5c, 0x7b,
> -	0x10, 0x0c, 0x82, 0x7a,
> -	0x03, 0x9e, 0x82, 0x6a,
> -	0x00, 0x65, 0x04, 0x5a,
> -	0x00, 0x6a, 0xba, 0x5e,
> -	0x01, 0xa4, 0x82, 0x6b,
> -	0xff, 0x38, 0x78, 0x7b,
> +	0x00, 0x65, 0xe8, 0x5d,
> +	0x80, 0x0b, 0x84, 0x6a,
> +	0x80, 0x0b, 0x64, 0x6b,
> +	0x01, 0x0c, 0x5e, 0x7b,
> +	0x10, 0x0c, 0x84, 0x7a,
> +	0x03, 0x9e, 0x84, 0x6a,
> +	0x00, 0x65, 0x06, 0x5a,
> +	0x00, 0x6a, 0xbc, 0x5e,
> +	0x01, 0xa4, 0x84, 0x6b,
> +	0xff, 0x38, 0x7a, 0x7b,
>  	0x01, 0x38, 0xc8, 0x30,
>  	0x00, 0x08, 0x40, 0x19,
>  	0xff, 0x6a, 0xc8, 0x08,
>  	0x00, 0x09, 0x42, 0x21,
>  	0x00, 0x0a, 0x44, 0x21,
>  	0xff, 0x6a, 0x70, 0x08,
> -	0x00, 0x65, 0x7a, 0x43,
> +	0x00, 0x65, 0x7c, 0x43,
>  	0x03, 0x08, 0x40, 0x31,
>  	0x03, 0x08, 0x40, 0x31,
>  	0x01, 0x08, 0x40, 0x31,
> @@ -461,16 +462,16 @@ static uint8_t seqprog[] = {
>  	0x04, 0x3c, 0xcc, 0x79,
>  	0xfb, 0x3c, 0x78, 0x08,
>  	0x04, 0x93, 0x20, 0x79,
> -	0x01, 0x0c, 0x8e, 0x6b,
> +	0x01, 0x0c, 0x90, 0x6b,
>  	0x80, 0xba, 0x20, 0x79,
>  	0x80, 0x04, 0x20, 0x79,
> -	0xe4, 0x6a, 0x6e, 0x5d,
> -	0x23, 0x6a, 0x84, 0x5d,
> -	0x01, 0x6a, 0x84, 0x5d,
> +	0xe4, 0x6a, 0x70, 0x5d,
> +	0x23, 0x6a, 0x86, 0x5d,
> +	0x01, 0x6a, 0x86, 0x5d,
>  	0x00, 0x65, 0x20, 0x41,
>  	0x00, 0x65, 0xcc, 0x41,
> -	0x80, 0x3c, 0xa2, 0x7b,
> -	0x21, 0x6a, 0xd8, 0x5e,
> +	0x80, 0x3c, 0xa4, 0x7b,
> +	0x21, 0x6a, 0xda, 0x5e,
>  	0x01, 0xbc, 0x18, 0x31,
>  	0x02, 0x6a, 0x1a, 0x31,
>  	0x02, 0x6a, 0xf8, 0x01,
> @@ -480,16 +481,16 @@ static uint8_t seqprog[] = {
>  	0xff, 0x6a, 0x12, 0x08,
>  	0xff, 0x6a, 0x14, 0x08,
>  	0xf3, 0xbc, 0xd4, 0x18,
> -	0xa0, 0x6a, 0xc8, 0x53,
> +	0xa0, 0x6a, 0xca, 0x53,
>  	0x04, 0xa0, 0x10, 0x31,
>  	0xac, 0x6a, 0x26, 0x01,
>  	0x04, 0xa0, 0x10, 0x31,
>  	0x03, 0x08, 0x18, 0x31,
>  	0x88, 0x6a, 0xcc, 0x00,
> -	0xa0, 0x6a, 0xf4, 0x5d,
> -	0x00, 0xbc, 0xe0, 0x5d,
> +	0xa0, 0x6a, 0xf6, 0x5d,
> +	0x00, 0xbc, 0xe2, 0x5d,
>  	0x3d, 0x6a, 0x26, 0x01,
> -	0x00, 0x65, 0xe0, 0x43,
> +	0x00, 0x65, 0xe2, 0x43,
>  	0xff, 0x6a, 0x10, 0x09,
>  	0xa4, 0x6a, 0x26, 0x01,
>  	0x0c, 0xa0, 0x32, 0x31,
> @@ -499,128 +500,128 @@ static uint8_t seqprog[] = {
>  	0x36, 0x6a, 0x26, 0x01,
>  	0x02, 0x93, 0x26, 0x01,
>  	0x35, 0x6a, 0x26, 0x01,
> -	0x00, 0x65, 0x9c, 0x5e,
> -	0x00, 0x65, 0x9c, 0x5e,
> +	0x00, 0x65, 0x9e, 0x5e,
> +	0x00, 0x65, 0x9e, 0x5e,
>  	0x02, 0x93, 0x26, 0x01,
>  	0xbf, 0x3c, 0x78, 0x08,
> -	0x04, 0x0b, 0xe6, 0x6b,
> -	0x10, 0x0c, 0xe2, 0x7b,
> -	0x01, 0x03, 0xe6, 0x6b,
> -	0x20, 0x93, 0xe8, 0x6b,
> -	0x04, 0x0b, 0xee, 0x6b,
> +	0x04, 0x0b, 0xe8, 0x6b,
> +	0x10, 0x0c, 0xe4, 0x7b,
> +	0x01, 0x03, 0xe8, 0x6b,
> +	0x20, 0x93, 0xea, 0x6b,
> +	0x04, 0x0b, 0xf0, 0x6b,
>  	0x40, 0x3c, 0x78, 0x00,
>  	0xc7, 0x93, 0x26, 0x09,
> -	0x38, 0x93, 0xf0, 0x6b,
> +	0x38, 0x93, 0xf2, 0x6b,
>  	0x00, 0x65, 0xcc, 0x41,
> -	0x80, 0x3c, 0x56, 0x6c,
> +	0x80, 0x3c, 0x58, 0x6c,
>  	0x01, 0x06, 0x50, 0x31,
>  	0x80, 0xb8, 0x70, 0x01,
>  	0x00, 0x65, 0xcc, 0x41,
>  	0x10, 0x3f, 0x06, 0x00,
>  	0x10, 0x6a, 0x06, 0x00,
>  	0x01, 0x3a, 0xca, 0x30,
> -	0x80, 0x65, 0x1c, 0x64,
> -	0x10, 0xb8, 0x40, 0x6c,
> +	0x80, 0x65, 0x1e, 0x64,
> +	0x10, 0xb8, 0x42, 0x6c,
>  	0xc0, 0x3e, 0xca, 0x00,
> -	0x40, 0xb8, 0x0c, 0x6c,
> +	0x40, 0xb8, 0x0e, 0x6c,
>  	0xbf, 0x65, 0xca, 0x08,
> -	0x20, 0xb8, 0x20, 0x7c,
> +	0x20, 0xb8, 0x22, 0x7c,
>  	0x01, 0x65, 0x0c, 0x30,
> -	0x00, 0x65, 0xd8, 0x5d,
> -	0xa0, 0x3f, 0x28, 0x64,
> +	0x00, 0x65, 0xda, 0x5d,
> +	0xa0, 0x3f, 0x2a, 0x64,
>  	0x23, 0xb8, 0x0c, 0x08,
> -	0x00, 0x65, 0xd8, 0x5d,
> -	0xa0, 0x3f, 0x28, 0x64,
> -	0x00, 0xbb, 0x20, 0x44,
> -	0xff, 0x65, 0x20, 0x64,
> -	0x00, 0x65, 0x40, 0x44,
> +	0x00, 0x65, 0xda, 0x5d,
> +	0xa0, 0x3f, 0x2a, 0x64,
> +	0x00, 0xbb, 0x22, 0x44,
> +	0xff, 0x65, 0x22, 0x64,
> +	0x00, 0x65, 0x42, 0x44,
>  	0x40, 0x6a, 0x18, 0x00,
>  	0x01, 0x65, 0x0c, 0x30,
> -	0x00, 0x65, 0xd8, 0x5d,
> -	0xa0, 0x3f, 0xfc, 0x73,
> +	0x00, 0x65, 0xda, 0x5d,
> +	0xa0, 0x3f, 0xfe, 0x73,
>  	0x40, 0x6a, 0x18, 0x00,
>  	0x01, 0x3a, 0xa6, 0x30,
>  	0x08, 0x6a, 0x74, 0x00,
>  	0x00, 0x65, 0xcc, 0x41,
> -	0x64, 0x6a, 0x68, 0x5d,
> -	0x80, 0x64, 0xd8, 0x6c,
> -	0x04, 0x64, 0x9a, 0x74,
> -	0x02, 0x64, 0xaa, 0x74,
> -	0x00, 0x6a, 0x60, 0x74,
> -	0x03, 0x64, 0xc8, 0x74,
> -	0x23, 0x64, 0x48, 0x74,
> -	0x08, 0x64, 0x5c, 0x74,
> -	0x61, 0x6a, 0xd8, 0x5e,
> -	0x00, 0x65, 0xd8, 0x5d,
> +	0x64, 0x6a, 0x6a, 0x5d,
> +	0x80, 0x64, 0xda, 0x6c,
> +	0x04, 0x64, 0x9c, 0x74,
> +	0x02, 0x64, 0xac, 0x74,
> +	0x00, 0x6a, 0x62, 0x74,
> +	0x03, 0x64, 0xca, 0x74,
> +	0x23, 0x64, 0x4a, 0x74,
> +	0x08, 0x64, 0x5e, 0x74,
> +	0x61, 0x6a, 0xda, 0x5e,
> +	0x00, 0x65, 0xda, 0x5d,
>  	0x08, 0x51, 0xce, 0x71,
> -	0x00, 0x65, 0x40, 0x44,
> -	0x80, 0x04, 0x5a, 0x7c,
> -	0x51, 0x6a, 0x5e, 0x5d,
> -	0x01, 0x51, 0x5a, 0x64,
> -	0x01, 0xa4, 0x52, 0x7c,
> -	0x80, 0xba, 0x5c, 0x6c,
> -	0x41, 0x6a, 0xd8, 0x5e,
> -	0x00, 0x65, 0x5c, 0x44,
> -	0x21, 0x6a, 0xd8, 0x5e,
> -	0x00, 0x65, 0x5c, 0x44,
> -	0x07, 0x6a, 0x54, 0x5d,
> +	0x00, 0x65, 0x42, 0x44,
> +	0x80, 0x04, 0x5c, 0x7c,
> +	0x51, 0x6a, 0x60, 0x5d,
> +	0x01, 0x51, 0x5c, 0x64,
> +	0x01, 0xa4, 0x54, 0x7c,
> +	0x80, 0xba, 0x5e, 0x6c,
> +	0x41, 0x6a, 0xda, 0x5e,
> +	0x00, 0x65, 0x5e, 0x44,
> +	0x21, 0x6a, 0xda, 0x5e,
> +	0x00, 0x65, 0x5e, 0x44,
> +	0x07, 0x6a, 0x56, 0x5d,
>  	0x01, 0x06, 0xd4, 0x30,
>  	0x00, 0x65, 0xcc, 0x41,
> -	0x80, 0xb8, 0x56, 0x7c,
> -	0xc0, 0x3c, 0x6a, 0x7c,
> -	0x80, 0x3c, 0x56, 0x6c,
> -	0xff, 0xa8, 0x6a, 0x6c,
> -	0x40, 0x3c, 0x56, 0x6c,
> -	0x10, 0xb8, 0x6e, 0x7c,
> -	0xa1, 0x6a, 0xd8, 0x5e,
> -	0x01, 0xb4, 0x74, 0x6c,
> -	0x02, 0xb4, 0x76, 0x6c,
> -	0x01, 0xa4, 0x76, 0x7c,
> -	0xff, 0xa8, 0x86, 0x7c,
> +	0x80, 0xb8, 0x58, 0x7c,
> +	0xc0, 0x3c, 0x6c, 0x7c,
> +	0x80, 0x3c, 0x58, 0x6c,
> +	0xff, 0xa8, 0x6c, 0x6c,
> +	0x40, 0x3c, 0x58, 0x6c,
> +	0x10, 0xb8, 0x70, 0x7c,
> +	0xa1, 0x6a, 0xda, 0x5e,
> +	0x01, 0xb4, 0x76, 0x6c,
> +	0x02, 0xb4, 0x78, 0x6c,
> +	0x01, 0xa4, 0x78, 0x7c,
> +	0xff, 0xa8, 0x88, 0x7c,
>  	0x04, 0xb4, 0x68, 0x01,
>  	0x01, 0x6a, 0x76, 0x00,
> -	0x00, 0xbb, 0x12, 0x5e,
> -	0xff, 0xa8, 0x86, 0x7c,
> -	0x71, 0x6a, 0xd8, 0x5e,
> -	0x40, 0x51, 0x86, 0x64,
> -	0x00, 0x65, 0xb2, 0x5e,
> +	0x00, 0xbb, 0x14, 0x5e,
> +	0xff, 0xa8, 0x88, 0x7c,
> +	0x71, 0x6a, 0xda, 0x5e,
> +	0x40, 0x51, 0x88, 0x64,
> +	0x00, 0x65, 0xb4, 0x5e,
>  	0x00, 0x65, 0xde, 0x41,
> -	0x00, 0xbb, 0x8a, 0x5c,
> +	0x00, 0xbb, 0x8c, 0x5c,
>  	0x00, 0x65, 0xde, 0x41,
> -	0x00, 0x65, 0xb2, 0x5e,
> +	0x00, 0x65, 0xb4, 0x5e,
>  	0x01, 0x65, 0xa2, 0x30,
>  	0x01, 0xf8, 0xc8, 0x30,
>  	0x01, 0x4e, 0xc8, 0x30,
> -	0x00, 0x6a, 0xb6, 0xdd,
> -	0x00, 0x51, 0xc8, 0x5d,
> +	0x00, 0x6a, 0xb8, 0xdd,
> +	0x00, 0x51, 0xca, 0x5d,
>  	0x01, 0x4e, 0x9c, 0x18,
>  	0x02, 0x6a, 0x22, 0x05,
> -	0xc0, 0x3c, 0x56, 0x6c,
> +	0xc0, 0x3c, 0x58, 0x6c,
>  	0x04, 0xb8, 0x70, 0x01,
> -	0x00, 0x65, 0xd4, 0x5e,
> +	0x00, 0x65, 0xd6, 0x5e,
>  	0x20, 0xb8, 0xde, 0x69,
>  	0x01, 0xbb, 0xa2, 0x30,
>  	0x3f, 0xba, 0x7c, 0x08,
> -	0x00, 0xb9, 0xce, 0x5c,
> +	0x00, 0xb9, 0xd0, 0x5c,
>  	0x00, 0x65, 0xde, 0x41,
>  	0x01, 0x06, 0xd4, 0x30,
>  	0x20, 0x3c, 0xcc, 0x79,
> -	0x20, 0x3c, 0x5c, 0x7c,
> -	0x01, 0xa4, 0xb8, 0x7c,
> +	0x20, 0x3c, 0x5e, 0x7c,
> +	0x01, 0xa4, 0xba, 0x7c,
>  	0x01, 0xb4, 0x68, 0x01,
>  	0x00, 0x65, 0xcc, 0x41,
> -	0x00, 0x65, 0x5c, 0x44,
> +	0x00, 0x65, 0x5e, 0x44,
>  	0x04, 0x14, 0x58, 0x31,
>  	0x01, 0x06, 0xd4, 0x30,
>  	0x08, 0xa0, 0x60, 0x31,
>  	0xac, 0x6a, 0xcc, 0x00,
> -	0x14, 0x6a, 0xf4, 0x5d,
> +	0x14, 0x6a, 0xf6, 0x5d,
>  	0x01, 0x06, 0xd4, 0x30,
> -	0xa0, 0x6a, 0xec, 0x5d,
> +	0xa0, 0x6a, 0xee, 0x5d,
>  	0x00, 0x65, 0xcc, 0x41,
>  	0xdf, 0x3c, 0x78, 0x08,
>  	0x12, 0x01, 0x02, 0x00,
> -	0x00, 0x65, 0x5c, 0x44,
> +	0x00, 0x65, 0x5e, 0x44,
>  	0x4c, 0x65, 0xcc, 0x28,
>  	0x01, 0x3e, 0x20, 0x31,
>  	0xd0, 0x66, 0xcc, 0x18,
> @@ -631,102 +632,102 @@ static uint8_t seqprog[] = {
>  	0xd0, 0x65, 0xca, 0x18,
>  	0x01, 0x3e, 0x20, 0x31,
>  	0x30, 0x65, 0xd4, 0x18,
> -	0x00, 0x65, 0xe6, 0x4c,
> +	0x00, 0x65, 0xe8, 0x4c,
>  	0xe1, 0x6a, 0x22, 0x01,
>  	0xff, 0x6a, 0xd4, 0x08,
>  	0x20, 0x65, 0xd4, 0x18,
> -	0x00, 0x65, 0xee, 0x54,
> +	0x00, 0x65, 0xf0, 0x54,
>  	0xe1, 0x6a, 0x22, 0x01,
>  	0xff, 0x6a, 0xd4, 0x08,
>  	0x20, 0x65, 0xca, 0x18,
>  	0xe0, 0x65, 0xd4, 0x18,
> -	0x00, 0x65, 0xf8, 0x4c,
> +	0x00, 0x65, 0xfa, 0x4c,
>  	0xe1, 0x6a, 0x22, 0x01,
>  	0xff, 0x6a, 0xd4, 0x08,
>  	0xd0, 0x65, 0xd4, 0x18,
> -	0x00, 0x65, 0x00, 0x55,
> +	0x00, 0x65, 0x02, 0x55,
>  	0xe1, 0x6a, 0x22, 0x01,
>  	0xff, 0x6a, 0xd4, 0x08,
>  	0x01, 0x6c, 0xa2, 0x30,
> -	0xff, 0x51, 0x12, 0x75,
> -	0x00, 0x51, 0x8e, 0x5d,
> +	0xff, 0x51, 0x14, 0x75,
> +	0x00, 0x51, 0x90, 0x5d,
>  	0x01, 0x51, 0x20, 0x31,
> -	0x00, 0x65, 0x34, 0x45,
> +	0x00, 0x65, 0x36, 0x45,
>  	0x3f, 0xba, 0xc8, 0x08,
> -	0x00, 0x3e, 0x34, 0x75,
> -	0x00, 0x65, 0xb0, 0x5e,
> +	0x00, 0x3e, 0x36, 0x75,
> +	0x00, 0x65, 0xb2, 0x5e,
>  	0x80, 0x3c, 0x78, 0x00,
>  	0x01, 0x06, 0xd4, 0x30,
> -	0x00, 0x65, 0xd8, 0x5d,
> +	0x00, 0x65, 0xda, 0x5d,
>  	0x01, 0x3c, 0x78, 0x00,
> -	0xe0, 0x3f, 0x50, 0x65,
> +	0xe0, 0x3f, 0x52, 0x65,
>  	0x02, 0x3c, 0x78, 0x00,
> -	0x20, 0x12, 0x50, 0x65,
> -	0x51, 0x6a, 0x5e, 0x5d,
> -	0x00, 0x51, 0x8e, 0x5d,
> -	0x51, 0x6a, 0x5e, 0x5d,
> +	0x20, 0x12, 0x52, 0x65,
> +	0x51, 0x6a, 0x60, 0x5d,
> +	0x00, 0x51, 0x90, 0x5d,
> +	0x51, 0x6a, 0x60, 0x5d,
>  	0x01, 0x51, 0x20, 0x31,
>  	0x04, 0x3c, 0x78, 0x00,
>  	0x01, 0xb9, 0xc8, 0x30,
> -	0x00, 0x3d, 0x4e, 0x65,
> +	0x00, 0x3d, 0x50, 0x65,
>  	0x08, 0x3c, 0x78, 0x00,
>  	0x3f, 0xba, 0xc8, 0x08,
> -	0x00, 0x3e, 0x4e, 0x65,
> +	0x00, 0x3e, 0x50, 0x65,
>  	0x10, 0x3c, 0x78, 0x00,
> -	0x04, 0xb8, 0x4e, 0x7d,
> +	0x04, 0xb8, 0x50, 0x7d,
>  	0xfb, 0xb8, 0x70, 0x09,
> -	0x20, 0xb8, 0x44, 0x6d,
> +	0x20, 0xb8, 0x46, 0x6d,
>  	0x01, 0x90, 0xc8, 0x30,
>  	0xff, 0x6a, 0xa2, 0x00,
> -	0x00, 0x3d, 0xce, 0x5c,
> +	0x00, 0x3d, 0xd0, 0x5c,
>  	0x01, 0x64, 0x20, 0x31,
>  	0xff, 0x6a, 0x78, 0x08,
>  	0x00, 0x65, 0xea, 0x58,
> -	0x10, 0xb8, 0x5c, 0x7c,
> -	0xff, 0x6a, 0x54, 0x5d,
> -	0x00, 0x65, 0x5c, 0x44,
> -	0x00, 0x65, 0xb0, 0x5e,
> -	0x31, 0x6a, 0xd8, 0x5e,
> -	0x00, 0x65, 0x5c, 0x44,
> +	0x10, 0xb8, 0x5e, 0x7c,
> +	0xff, 0x6a, 0x56, 0x5d,
> +	0x00, 0x65, 0x5e, 0x44,
> +	0x00, 0x65, 0xb2, 0x5e,
> +	0x31, 0x6a, 0xda, 0x5e,
> +	0x00, 0x65, 0x5e, 0x44,
>  	0x10, 0x3f, 0x06, 0x00,
>  	0x10, 0x6a, 0x06, 0x00,
>  	0x01, 0x65, 0x74, 0x34,
> -	0x81, 0x6a, 0xd8, 0x5e,
> -	0x00, 0x65, 0x60, 0x45,
> +	0x81, 0x6a, 0xda, 0x5e,
> +	0x00, 0x65, 0x62, 0x45,
>  	0x01, 0x06, 0xd4, 0x30,
> -	0x01, 0x0c, 0x60, 0x7d,
> -	0x04, 0x0c, 0x5a, 0x6d,
> +	0x01, 0x0c, 0x62, 0x7d,
> +	0x04, 0x0c, 0x5c, 0x6d,
>  	0xe0, 0x03, 0x7e, 0x08,
>  	0xe0, 0x3f, 0xcc, 0x61,
>  	0x01, 0x65, 0xcc, 0x30,
>  	0x01, 0x12, 0xda, 0x34,
>  	0x01, 0x06, 0xd4, 0x34,
> -	0x01, 0x03, 0x6e, 0x6d,
> +	0x01, 0x03, 0x70, 0x6d,
>  	0x40, 0x03, 0xcc, 0x08,
>  	0x01, 0x65, 0x06, 0x30,
>  	0x40, 0x65, 0xc8, 0x08,
> -	0x00, 0x66, 0x7c, 0x75,
> -	0x40, 0x65, 0x7c, 0x7d,
> -	0x00, 0x65, 0x7c, 0x5d,
> +	0x00, 0x66, 0x7e, 0x75,
> +	0x40, 0x65, 0x7e, 0x7d,
> +	0x00, 0x65, 0x7e, 0x5d,
>  	0xff, 0x6a, 0xd4, 0x08,
>  	0xff, 0x6a, 0xd4, 0x08,
>  	0xff, 0x6a, 0xd4, 0x08,
>  	0xff, 0x6a, 0xd4, 0x0c,
>  	0x08, 0x01, 0x02, 0x00,
> -	0x02, 0x0b, 0x86, 0x7d,
> +	0x02, 0x0b, 0x88, 0x7d,
>  	0x01, 0x65, 0x0c, 0x30,
> -	0x02, 0x0b, 0x8a, 0x7d,
> +	0x02, 0x0b, 0x8c, 0x7d,
>  	0xf7, 0x01, 0x02, 0x0c,
>  	0x01, 0x65, 0xc8, 0x30,
> -	0xff, 0x41, 0xae, 0x75,
> +	0xff, 0x41, 0xb0, 0x75,
>  	0x01, 0x41, 0x20, 0x31,
>  	0xff, 0x6a, 0xa4, 0x00,
> -	0x00, 0x65, 0x9e, 0x45,
> -	0xff, 0xbf, 0xae, 0x75,
> +	0x00, 0x65, 0xa0, 0x45,
> +	0xff, 0xbf, 0xb0, 0x75,
>  	0x01, 0x90, 0xa4, 0x30,
>  	0x01, 0xbf, 0x20, 0x31,
> -	0x00, 0xbb, 0x98, 0x65,
> -	0xff, 0x52, 0xac, 0x75,
> +	0x00, 0xbb, 0x9a, 0x65,
> +	0xff, 0x52, 0xae, 0x75,
>  	0x01, 0xbf, 0xcc, 0x30,
>  	0x01, 0x90, 0xca, 0x30,
>  	0x01, 0x52, 0x20, 0x31,
> @@ -734,28 +735,28 @@ static uint8_t seqprog[] = {
>  	0x01, 0x65, 0x20, 0x35,
>  	0x01, 0xbf, 0x82, 0x34,
>  	0x01, 0x64, 0xa2, 0x30,
> -	0x00, 0x6a, 0xc0, 0x5e,
> +	0x00, 0x6a, 0xc2, 0x5e,
>  	0x0d, 0x6a, 0x76, 0x00,
> -	0x00, 0x51, 0x12, 0x46,
> +	0x00, 0x51, 0x14, 0x46,
>  	0x01, 0x65, 0xa4, 0x30,
>  	0xe0, 0x6a, 0xcc, 0x00,
> -	0x48, 0x6a, 0x06, 0x5e,
> +	0x48, 0x6a, 0x08, 0x5e,
>  	0x01, 0x6a, 0xd0, 0x01,
>  	0x01, 0x6a, 0xdc, 0x05,
>  	0x88, 0x6a, 0xcc, 0x00,
> -	0x48, 0x6a, 0x06, 0x5e,
> -	0x01, 0x6a, 0xe0, 0x5d,
> +	0x48, 0x6a, 0x08, 0x5e,
> +	0x01, 0x6a, 0xe2, 0x5d,
>  	0x01, 0x6a, 0x26, 0x05,
>  	0x01, 0x65, 0xd8, 0x31,
>  	0x09, 0xee, 0xdc, 0x01,
> -	0x80, 0xee, 0xcc, 0x7d,
> +	0x80, 0xee, 0xce, 0x7d,
>  	0xff, 0x6a, 0xdc, 0x0d,
>  	0x01, 0x65, 0x32, 0x31,
>  	0x0a, 0x93, 0x26, 0x01,
> -	0x00, 0x65, 0xa8, 0x46,
> -	0x81, 0x6a, 0xd8, 0x5e,
> -	0x01, 0x0c, 0xd8, 0x7d,
> -	0x04, 0x0c, 0xd6, 0x6d,
> +	0x00, 0x65, 0xaa, 0x46,
> +	0x81, 0x6a, 0xda, 0x5e,
> +	0x01, 0x0c, 0xda, 0x7d,
> +	0x04, 0x0c, 0xd8, 0x6d,
>  	0xe0, 0x03, 0x06, 0x08,
>  	0xe0, 0x03, 0x7e, 0x0c,
>  	0x01, 0x65, 0x18, 0x31,
> @@ -774,7 +775,7 @@ static uint8_t seqprog[] = {
>  	0x01, 0x6c, 0xda, 0x34,
>  	0x3d, 0x64, 0xa4, 0x28,
>  	0x55, 0x64, 0xc8, 0x28,
> -	0x00, 0x65, 0x06, 0x46,
> +	0x00, 0x65, 0x08, 0x46,
>  	0x2e, 0x64, 0xa4, 0x28,
>  	0x66, 0x64, 0xc8, 0x28,
>  	0x00, 0x6c, 0xda, 0x18,
> @@ -785,63 +786,63 @@ static uint8_t seqprog[] = {
>  	0x00, 0x6c, 0xda, 0x24,
>  	0x01, 0x65, 0xc8, 0x30,
>  	0xe0, 0x6a, 0xcc, 0x00,
> -	0x44, 0x6a, 0x02, 0x5e,
> +	0x44, 0x6a, 0x04, 0x5e,
>  	0x01, 0x90, 0xe2, 0x31,
> -	0x04, 0x3b, 0x26, 0x7e,
> +	0x04, 0x3b, 0x28, 0x7e,
>  	0x30, 0x6a, 0xd0, 0x01,
>  	0x20, 0x6a, 0xd0, 0x01,
>  	0x1d, 0x6a, 0xdc, 0x01,
> -	0xdc, 0xee, 0x22, 0x66,
> -	0x00, 0x65, 0x3e, 0x46,
> +	0xdc, 0xee, 0x24, 0x66,
> +	0x00, 0x65, 0x40, 0x46,
>  	0x20, 0x6a, 0xd0, 0x01,
>  	0x01, 0x6a, 0xdc, 0x01,
>  	0x20, 0xa0, 0xd8, 0x31,
>  	0x09, 0xee, 0xdc, 0x01,
> -	0x80, 0xee, 0x2e, 0x7e,
> +	0x80, 0xee, 0x30, 0x7e,
>  	0x11, 0x6a, 0xdc, 0x01,
> -	0x50, 0xee, 0x32, 0x66,
> +	0x50, 0xee, 0x34, 0x66,
>  	0x20, 0x6a, 0xd0, 0x01,
>  	0x09, 0x6a, 0xdc, 0x01,
> -	0x88, 0xee, 0x38, 0x66,
> +	0x88, 0xee, 0x3a, 0x66,
>  	0x19, 0x6a, 0xdc, 0x01,
> -	0xd8, 0xee, 0x3c, 0x66,
> +	0xd8, 0xee, 0x3e, 0x66,
>  	0xff, 0x6a, 0xdc, 0x09,
> -	0x18, 0xee, 0x40, 0x6e,
> +	0x18, 0xee, 0x42, 0x6e,
>  	0xff, 0x6a, 0xd4, 0x0c,
>  	0x88, 0x6a, 0xcc, 0x00,
> -	0x44, 0x6a, 0x02, 0x5e,
> -	0x20, 0x6a, 0xe0, 0x5d,
> +	0x44, 0x6a, 0x04, 0x5e,
> +	0x20, 0x6a, 0xe2, 0x5d,
>  	0x01, 0x3b, 0x26, 0x31,
> -	0x04, 0x3b, 0x5a, 0x6e,
> +	0x04, 0x3b, 0x5c, 0x6e,
>  	0xa0, 0x6a, 0xca, 0x00,
>  	0x20, 0x65, 0xc8, 0x18,
> -	0x00, 0x65, 0x98, 0x5e,
> -	0x00, 0x65, 0x52, 0x66,
> +	0x00, 0x65, 0x9a, 0x5e,
> +	0x00, 0x65, 0x54, 0x66,
>  	0x0a, 0x93, 0x26, 0x01,
> -	0x00, 0x65, 0xa8, 0x46,
> +	0x00, 0x65, 0xaa, 0x46,
>  	0xa0, 0x6a, 0xcc, 0x00,
>  	0xff, 0x6a, 0xc8, 0x08,
> -	0x20, 0x94, 0x5e, 0x6e,
> -	0x10, 0x94, 0x60, 0x6e,
> -	0x08, 0x94, 0x7a, 0x6e,
> -	0x08, 0x94, 0x7a, 0x6e,
> -	0x08, 0x94, 0x7a, 0x6e,
> +	0x20, 0x94, 0x60, 0x6e,
> +	0x10, 0x94, 0x62, 0x6e,
> +	0x08, 0x94, 0x7c, 0x6e,
> +	0x08, 0x94, 0x7c, 0x6e,
> +	0x08, 0x94, 0x7c, 0x6e,
>  	0xff, 0x8c, 0xc8, 0x10,
>  	0xc1, 0x64, 0xc8, 0x18,
>  	0xf8, 0x64, 0xc8, 0x08,
>  	0x01, 0x99, 0xda, 0x30,
> -	0x00, 0x66, 0x6e, 0x66,
> -	0xc0, 0x66, 0xaa, 0x76,
> +	0x00, 0x66, 0x70, 0x66,
> +	0xc0, 0x66, 0xac, 0x76,
>  	0x60, 0x66, 0xc8, 0x18,
>  	0x3d, 0x64, 0xc8, 0x28,
> -	0x00, 0x65, 0x5e, 0x46,
> +	0x00, 0x65, 0x60, 0x46,
>  	0xf7, 0x93, 0x26, 0x09,
> -	0x08, 0x93, 0x7c, 0x6e,
> +	0x08, 0x93, 0x7e, 0x6e,
>  	0x00, 0x62, 0xc4, 0x18,
> -	0x00, 0x65, 0xa8, 0x5e,
> -	0x00, 0x65, 0x88, 0x5e,
> -	0x00, 0x65, 0x88, 0x5e,
> -	0x00, 0x65, 0x88, 0x5e,
> +	0x00, 0x65, 0xaa, 0x5e,
> +	0x00, 0x65, 0x8a, 0x5e,
> +	0x00, 0x65, 0x8a, 0x5e,
> +	0x00, 0x65, 0x8a, 0x5e,
>  	0x01, 0x99, 0xda, 0x30,
>  	0x01, 0x99, 0xda, 0x30,
>  	0x01, 0x99, 0xda, 0x30,
> @@ -858,11 +859,11 @@ static uint8_t seqprog[] = {
>  	0x01, 0x6c, 0x32, 0x31,
>  	0x01, 0x6c, 0x32, 0x31,
>  	0x01, 0x6c, 0x32, 0x35,
> -	0x08, 0x94, 0xa8, 0x7e,
> +	0x08, 0x94, 0xaa, 0x7e,
>  	0xf7, 0x93, 0x26, 0x09,
> -	0x08, 0x93, 0xac, 0x6e,
> +	0x08, 0x93, 0xae, 0x6e,
>  	0xff, 0x6a, 0xd4, 0x0c,
> -	0x04, 0xb8, 0xd4, 0x6e,
> +	0x04, 0xb8, 0xd6, 0x6e,
>  	0x01, 0x42, 0x7e, 0x31,
>  	0xff, 0x6a, 0x76, 0x01,
>  	0x01, 0x90, 0x84, 0x34,
> @@ -870,14 +871,14 @@ static uint8_t seqprog[] = {
>  	0x01, 0x85, 0x0a, 0x01,
>  	0x7f, 0x65, 0x10, 0x09,
>  	0xfe, 0x85, 0x0a, 0x0d,
> -	0xff, 0x42, 0xd0, 0x66,
> -	0xff, 0x41, 0xc8, 0x66,
> -	0xd1, 0x6a, 0xd8, 0x5e,
> +	0xff, 0x42, 0xd2, 0x66,
> +	0xff, 0x41, 0xca, 0x66,
> +	0xd1, 0x6a, 0xda, 0x5e,
>  	0xff, 0x6a, 0xca, 0x04,
>  	0x01, 0x41, 0x20, 0x31,
>  	0x01, 0xbf, 0x82, 0x30,
>  	0x01, 0x6a, 0x76, 0x00,
> -	0x00, 0xbb, 0x12, 0x46,
> +	0x00, 0xbb, 0x14, 0x46,
>  	0x01, 0x42, 0x20, 0x31,
>  	0x01, 0xbf, 0x84, 0x34,
>  	0x01, 0x41, 0x7e, 0x31,
> @@ -941,7 +942,7 @@ static ahc_patch_func_t ahc_patch17_func
>  static int
>  ahc_patch17_func(struct ahc_softc *ahc)
>  {
> -	return ((ahc->flags & AHC_TMODE_WIDEODD_BUG) != 0);
> +	return ((ahc->bugs & AHC_TMODE_WIDEODD_BUG) != 0);
>  }
>  
>  static ahc_patch_func_t ahc_patch16_func;
> @@ -1142,152 +1143,152 @@ static struct patch {
>  	{ ahc_patch0_func, 196, 1, 1 },
>  	{ ahc_patch9_func, 212, 6, 2 },
>  	{ ahc_patch0_func, 218, 6, 1 },
> -	{ ahc_patch8_func, 226, 20, 2 },
> +	{ ahc_patch8_func, 226, 21, 2 },
>  	{ ahc_patch1_func, 241, 1, 1 },
> -	{ ahc_patch1_func, 248, 1, 2 },
> -	{ ahc_patch0_func, 249, 2, 2 },
> -	{ ahc_patch11_func, 250, 1, 1 },
> -	{ ahc_patch9_func, 258, 27, 3 },
> -	{ ahc_patch1_func, 274, 10, 2 },
> -	{ ahc_patch13_func, 277, 1, 1 },
> -	{ ahc_patch14_func, 285, 14, 1 },
> -	{ ahc_patch1_func, 301, 1, 2 },
> -	{ ahc_patch0_func, 302, 1, 1 },
> -	{ ahc_patch9_func, 305, 1, 1 },
> -	{ ahc_patch13_func, 310, 1, 1 },
> -	{ ahc_patch9_func, 311, 2, 2 },
> -	{ ahc_patch0_func, 313, 4, 1 },
> -	{ ahc_patch14_func, 317, 1, 1 },
> -	{ ahc_patch15_func, 319, 2, 3 },
> -	{ ahc_patch9_func, 319, 1, 2 },
> -	{ ahc_patch0_func, 320, 1, 1 },
> -	{ ahc_patch6_func, 325, 1, 2 },
> -	{ ahc_patch0_func, 326, 1, 1 },
> -	{ ahc_patch1_func, 330, 47, 11 },
> -	{ ahc_patch6_func, 337, 2, 4 },
> -	{ ahc_patch7_func, 337, 1, 1 },
> -	{ ahc_patch8_func, 338, 1, 1 },
> -	{ ahc_patch0_func, 339, 1, 1 },
> -	{ ahc_patch16_func, 340, 1, 1 },
> -	{ ahc_patch6_func, 356, 6, 3 },
> -	{ ahc_patch16_func, 356, 5, 1 },
> -	{ ahc_patch0_func, 362, 7, 1 },
> -	{ ahc_patch13_func, 372, 5, 1 },
> -	{ ahc_patch0_func, 377, 52, 17 },
> -	{ ahc_patch14_func, 377, 1, 1 },
> -	{ ahc_patch7_func, 379, 2, 2 },
> -	{ ahc_patch17_func, 380, 1, 1 },
> -	{ ahc_patch9_func, 383, 1, 1 },
> -	{ ahc_patch18_func, 390, 1, 1 },
> -	{ ahc_patch14_func, 395, 9, 3 },
> -	{ ahc_patch9_func, 396, 3, 2 },
> -	{ ahc_patch0_func, 399, 3, 1 },
> -	{ ahc_patch9_func, 407, 6, 2 },
> -	{ ahc_patch0_func, 413, 9, 2 },
> -	{ ahc_patch13_func, 413, 1, 1 },
> -	{ ahc_patch13_func, 422, 2, 1 },
> -	{ ahc_patch14_func, 424, 1, 1 },
> -	{ ahc_patch9_func, 426, 1, 2 },
> -	{ ahc_patch0_func, 427, 1, 1 },
> -	{ ahc_patch7_func, 428, 1, 1 },
> +	{ ahc_patch1_func, 249, 1, 2 },
> +	{ ahc_patch0_func, 250, 2, 2 },
> +	{ ahc_patch11_func, 251, 1, 1 },
> +	{ ahc_patch9_func, 259, 27, 3 },
> +	{ ahc_patch1_func, 275, 10, 2 },
> +	{ ahc_patch13_func, 278, 1, 1 },
> +	{ ahc_patch14_func, 286, 14, 1 },
> +	{ ahc_patch1_func, 302, 1, 2 },
> +	{ ahc_patch0_func, 303, 1, 1 },
> +	{ ahc_patch9_func, 306, 1, 1 },
> +	{ ahc_patch13_func, 311, 1, 1 },
> +	{ ahc_patch9_func, 312, 2, 2 },
> +	{ ahc_patch0_func, 314, 4, 1 },
> +	{ ahc_patch14_func, 318, 1, 1 },
> +	{ ahc_patch15_func, 320, 2, 3 },
> +	{ ahc_patch9_func, 320, 1, 2 },
> +	{ ahc_patch0_func, 321, 1, 1 },
> +	{ ahc_patch6_func, 326, 1, 2 },
> +	{ ahc_patch0_func, 327, 1, 1 },
> +	{ ahc_patch1_func, 331, 47, 11 },
> +	{ ahc_patch6_func, 338, 2, 4 },
> +	{ ahc_patch7_func, 338, 1, 1 },
> +	{ ahc_patch8_func, 339, 1, 1 },
> +	{ ahc_patch0_func, 340, 1, 1 },
> +	{ ahc_patch16_func, 341, 1, 1 },
> +	{ ahc_patch6_func, 357, 6, 3 },
> +	{ ahc_patch16_func, 357, 5, 1 },
> +	{ ahc_patch0_func, 363, 7, 1 },
> +	{ ahc_patch13_func, 373, 5, 1 },
> +	{ ahc_patch0_func, 378, 52, 17 },
> +	{ ahc_patch14_func, 378, 1, 1 },
> +	{ ahc_patch7_func, 380, 2, 2 },
> +	{ ahc_patch17_func, 381, 1, 1 },
> +	{ ahc_patch9_func, 384, 1, 1 },
> +	{ ahc_patch18_func, 391, 1, 1 },
> +	{ ahc_patch14_func, 396, 9, 3 },
> +	{ ahc_patch9_func, 397, 3, 2 },
> +	{ ahc_patch0_func, 400, 3, 1 },
> +	{ ahc_patch9_func, 408, 6, 2 },
> +	{ ahc_patch0_func, 414, 9, 2 },
> +	{ ahc_patch13_func, 414, 1, 1 },
> +	{ ahc_patch13_func, 423, 2, 1 },
> +	{ ahc_patch14_func, 425, 1, 1 },
> +	{ ahc_patch9_func, 427, 1, 2 },
> +	{ ahc_patch0_func, 428, 1, 1 },
>  	{ ahc_patch7_func, 429, 1, 1 },
> -	{ ahc_patch8_func, 430, 3, 3 },
> -	{ ahc_patch6_func, 431, 1, 2 },
> -	{ ahc_patch0_func, 432, 1, 1 },
> -	{ ahc_patch9_func, 433, 1, 1 },
> -	{ ahc_patch15_func, 434, 1, 2 },
> -	{ ahc_patch13_func, 434, 1, 1 },
> -	{ ahc_patch14_func, 436, 9, 4 },
> -	{ ahc_patch9_func, 436, 1, 1 },
> -	{ ahc_patch9_func, 443, 2, 1 },
> -	{ ahc_patch0_func, 445, 4, 3 },
> -	{ ahc_patch9_func, 445, 1, 2 },
> -	{ ahc_patch0_func, 446, 3, 1 },
> -	{ ahc_patch1_func, 450, 2, 1 },
> -	{ ahc_patch7_func, 452, 10, 2 },
> -	{ ahc_patch0_func, 462, 1, 1 },
> -	{ ahc_patch8_func, 463, 118, 22 },
> -	{ ahc_patch1_func, 465, 3, 2 },
> -	{ ahc_patch0_func, 468, 5, 3 },
> -	{ ahc_patch9_func, 468, 2, 2 },
> -	{ ahc_patch0_func, 470, 3, 1 },
> -	{ ahc_patch1_func, 475, 2, 2 },
> -	{ ahc_patch0_func, 477, 6, 3 },
> -	{ ahc_patch9_func, 477, 2, 2 },
> -	{ ahc_patch0_func, 479, 3, 1 },
> -	{ ahc_patch1_func, 485, 2, 2 },
> -	{ ahc_patch0_func, 487, 9, 7 },
> -	{ ahc_patch9_func, 487, 5, 6 },
> -	{ ahc_patch19_func, 487, 1, 2 },
> -	{ ahc_patch0_func, 488, 1, 1 },
> -	{ ahc_patch19_func, 490, 1, 2 },
> -	{ ahc_patch0_func, 491, 1, 1 },
> -	{ ahc_patch0_func, 492, 4, 1 },
> -	{ ahc_patch6_func, 497, 3, 2 },
> -	{ ahc_patch0_func, 500, 1, 1 },
> -	{ ahc_patch6_func, 510, 1, 2 },
> -	{ ahc_patch0_func, 511, 1, 1 },
> -	{ ahc_patch20_func, 548, 7, 1 },
> -	{ ahc_patch3_func, 583, 1, 2 },
> -	{ ahc_patch0_func, 584, 1, 1 },
> -	{ ahc_patch21_func, 587, 1, 1 },
> -	{ ahc_patch8_func, 589, 106, 33 },
> -	{ ahc_patch4_func, 591, 1, 1 },
> -	{ ahc_patch1_func, 597, 2, 2 },
> -	{ ahc_patch0_func, 599, 1, 1 },
> -	{ ahc_patch1_func, 602, 1, 2 },
> -	{ ahc_patch0_func, 603, 1, 1 },
> -	{ ahc_patch9_func, 604, 3, 3 },
> -	{ ahc_patch15_func, 605, 1, 1 },
> -	{ ahc_patch0_func, 607, 4, 1 },
> -	{ ahc_patch19_func, 616, 2, 2 },
> -	{ ahc_patch0_func, 618, 1, 1 },
> -	{ ahc_patch19_func, 622, 10, 3 },
> -	{ ahc_patch5_func, 624, 8, 1 },
> -	{ ahc_patch0_func, 632, 9, 2 },
> -	{ ahc_patch5_func, 633, 8, 1 },
> -	{ ahc_patch4_func, 643, 1, 2 },
> -	{ ahc_patch0_func, 644, 1, 1 },
> -	{ ahc_patch19_func, 645, 1, 2 },
> -	{ ahc_patch0_func, 646, 3, 2 },
> -	{ ahc_patch4_func, 648, 1, 1 },
> -	{ ahc_patch5_func, 649, 1, 1 },
> -	{ ahc_patch5_func, 652, 1, 1 },
> -	{ ahc_patch5_func, 654, 1, 1 },
> -	{ ahc_patch4_func, 656, 2, 2 },
> -	{ ahc_patch0_func, 658, 2, 1 },
> -	{ ahc_patch5_func, 660, 1, 1 },
> -	{ ahc_patch5_func, 663, 1, 1 },
> -	{ ahc_patch5_func, 666, 1, 1 },
> -	{ ahc_patch19_func, 670, 1, 1 },
> -	{ ahc_patch19_func, 673, 1, 1 },
> -	{ ahc_patch4_func, 679, 1, 1 },
> -	{ ahc_patch6_func, 682, 1, 2 },
> -	{ ahc_patch0_func, 683, 1, 1 },
> -	{ ahc_patch7_func, 695, 16, 1 },
> -	{ ahc_patch4_func, 711, 20, 1 },
> -	{ ahc_patch9_func, 732, 4, 2 },
> -	{ ahc_patch0_func, 736, 4, 1 },
> -	{ ahc_patch9_func, 740, 4, 2 },
> -	{ ahc_patch0_func, 744, 3, 1 },
> -	{ ahc_patch6_func, 750, 1, 1 },
> -	{ ahc_patch22_func, 752, 14, 1 },
> -	{ ahc_patch7_func, 766, 3, 1 },
> -	{ ahc_patch9_func, 778, 24, 8 },
> -	{ ahc_patch19_func, 782, 1, 2 },
> -	{ ahc_patch0_func, 783, 1, 1 },
> -	{ ahc_patch15_func, 788, 4, 2 },
> -	{ ahc_patch0_func, 792, 7, 3 },
> -	{ ahc_patch23_func, 792, 5, 2 },
> -	{ ahc_patch0_func, 797, 2, 1 },
> -	{ ahc_patch0_func, 802, 42, 3 },
> -	{ ahc_patch18_func, 814, 18, 2 },
> -	{ ahc_patch0_func, 832, 1, 1 },
> -	{ ahc_patch4_func, 856, 1, 1 },
> -	{ ahc_patch4_func, 857, 3, 2 },
> -	{ ahc_patch0_func, 860, 1, 1 },
> -	{ ahc_patch13_func, 861, 3, 1 },
> -	{ ahc_patch4_func, 864, 12, 1 }
> +	{ ahc_patch7_func, 430, 1, 1 },
> +	{ ahc_patch8_func, 431, 3, 3 },
> +	{ ahc_patch6_func, 432, 1, 2 },
> +	{ ahc_patch0_func, 433, 1, 1 },
> +	{ ahc_patch9_func, 434, 1, 1 },
> +	{ ahc_patch15_func, 435, 1, 2 },
> +	{ ahc_patch13_func, 435, 1, 1 },
> +	{ ahc_patch14_func, 437, 9, 4 },
> +	{ ahc_patch9_func, 437, 1, 1 },
> +	{ ahc_patch9_func, 444, 2, 1 },
> +	{ ahc_patch0_func, 446, 4, 3 },
> +	{ ahc_patch9_func, 446, 1, 2 },
> +	{ ahc_patch0_func, 447, 3, 1 },
> +	{ ahc_patch1_func, 451, 2, 1 },
> +	{ ahc_patch7_func, 453, 10, 2 },
> +	{ ahc_patch0_func, 463, 1, 1 },
> +	{ ahc_patch8_func, 464, 118, 22 },
> +	{ ahc_patch1_func, 466, 3, 2 },
> +	{ ahc_patch0_func, 469, 5, 3 },
> +	{ ahc_patch9_func, 469, 2, 2 },
> +	{ ahc_patch0_func, 471, 3, 1 },
> +	{ ahc_patch1_func, 476, 2, 2 },
> +	{ ahc_patch0_func, 478, 6, 3 },
> +	{ ahc_patch9_func, 478, 2, 2 },
> +	{ ahc_patch0_func, 480, 3, 1 },
> +	{ ahc_patch1_func, 486, 2, 2 },
> +	{ ahc_patch0_func, 488, 9, 7 },
> +	{ ahc_patch9_func, 488, 5, 6 },
> +	{ ahc_patch19_func, 488, 1, 2 },
> +	{ ahc_patch0_func, 489, 1, 1 },
> +	{ ahc_patch19_func, 491, 1, 2 },
> +	{ ahc_patch0_func, 492, 1, 1 },
> +	{ ahc_patch0_func, 493, 4, 1 },
> +	{ ahc_patch6_func, 498, 3, 2 },
> +	{ ahc_patch0_func, 501, 1, 1 },
> +	{ ahc_patch6_func, 511, 1, 2 },
> +	{ ahc_patch0_func, 512, 1, 1 },
> +	{ ahc_patch20_func, 549, 7, 1 },
> +	{ ahc_patch3_func, 584, 1, 2 },
> +	{ ahc_patch0_func, 585, 1, 1 },
> +	{ ahc_patch21_func, 588, 1, 1 },
> +	{ ahc_patch8_func, 590, 106, 33 },
> +	{ ahc_patch4_func, 592, 1, 1 },
> +	{ ahc_patch1_func, 598, 2, 2 },
> +	{ ahc_patch0_func, 600, 1, 1 },
> +	{ ahc_patch1_func, 603, 1, 2 },
> +	{ ahc_patch0_func, 604, 1, 1 },
> +	{ ahc_patch9_func, 605, 3, 3 },
> +	{ ahc_patch15_func, 606, 1, 1 },
> +	{ ahc_patch0_func, 608, 4, 1 },
> +	{ ahc_patch19_func, 617, 2, 2 },
> +	{ ahc_patch0_func, 619, 1, 1 },
> +	{ ahc_patch19_func, 623, 10, 3 },
> +	{ ahc_patch5_func, 625, 8, 1 },
> +	{ ahc_patch0_func, 633, 9, 2 },
> +	{ ahc_patch5_func, 634, 8, 1 },
> +	{ ahc_patch4_func, 644, 1, 2 },
> +	{ ahc_patch0_func, 645, 1, 1 },
> +	{ ahc_patch19_func, 646, 1, 2 },
> +	{ ahc_patch0_func, 647, 3, 2 },
> +	{ ahc_patch4_func, 649, 1, 1 },
> +	{ ahc_patch5_func, 650, 1, 1 },
> +	{ ahc_patch5_func, 653, 1, 1 },
> +	{ ahc_patch5_func, 655, 1, 1 },
> +	{ ahc_patch4_func, 657, 2, 2 },
> +	{ ahc_patch0_func, 659, 2, 1 },
> +	{ ahc_patch5_func, 661, 1, 1 },
> +	{ ahc_patch5_func, 664, 1, 1 },
> +	{ ahc_patch5_func, 667, 1, 1 },
> +	{ ahc_patch19_func, 671, 1, 1 },
> +	{ ahc_patch19_func, 674, 1, 1 },
> +	{ ahc_patch4_func, 680, 1, 1 },
> +	{ ahc_patch6_func, 683, 1, 2 },
> +	{ ahc_patch0_func, 684, 1, 1 },
> +	{ ahc_patch7_func, 696, 16, 1 },
> +	{ ahc_patch4_func, 712, 20, 1 },
> +	{ ahc_patch9_func, 733, 4, 2 },
> +	{ ahc_patch0_func, 737, 4, 1 },
> +	{ ahc_patch9_func, 741, 4, 2 },
> +	{ ahc_patch0_func, 745, 3, 1 },
> +	{ ahc_patch6_func, 751, 1, 1 },
> +	{ ahc_patch22_func, 753, 14, 1 },
> +	{ ahc_patch7_func, 767, 3, 1 },
> +	{ ahc_patch9_func, 779, 24, 8 },
> +	{ ahc_patch19_func, 783, 1, 2 },
> +	{ ahc_patch0_func, 784, 1, 1 },
> +	{ ahc_patch15_func, 789, 4, 2 },
> +	{ ahc_patch0_func, 793, 7, 3 },
> +	{ ahc_patch23_func, 793, 5, 2 },
> +	{ ahc_patch0_func, 798, 2, 1 },
> +	{ ahc_patch0_func, 803, 42, 3 },
> +	{ ahc_patch18_func, 815, 18, 2 },
> +	{ ahc_patch0_func, 833, 1, 1 },
> +	{ ahc_patch4_func, 857, 1, 1 },
> +	{ ahc_patch4_func, 858, 3, 2 },
> +	{ ahc_patch0_func, 861, 1, 1 },
> +	{ ahc_patch13_func, 862, 3, 1 },
> +	{ ahc_patch4_func, 865, 12, 1 }
>  };
>  
>  static struct cs {
> @@ -1296,11 +1297,11 @@ static struct cs {
>  } critical_sections[] = {
>  	{ 11, 18 },
>  	{ 21, 30 },
> -	{ 711, 727 },
> -	{ 857, 860 },
> -	{ 864, 870 },
> -	{ 872, 874 },
> -	{ 874, 876 }
> +	{ 712, 728 },
> +	{ 858, 861 },
> +	{ 865, 871 },
> +	{ 873, 875 },
> +	{ 875, 877 }
>  };
>  
>  static const int num_critical_sections = sizeof(critical_sections)
> 
> 
> -
> To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] aic7xxx: upport all sequencer and core fixes from adaptec version 6.3.9
  2005-08-05 13:25 ` SCSI Mailing List
@ 2005-08-05 18:16   ` James Bottomley
  0 siblings, 0 replies; 3+ messages in thread
From: James Bottomley @ 2005-08-05 18:16 UTC (permalink / raw)
  To: SCSI Mailing List

On Fri, 2005-08-05 at 09:25 -0400, SCSI Mailing List wrote:
> Tremendously good work!

Thanks.  There's unfortunately still an outstanding problem I can't fix.
It seems that after a certain number of repetitions of a failing
command, the entire card locks up and the sequencer always returns
SAM_STAT_BUSY to any new commands.  This is a bit of a problem for the
scsi mid-layer because it blindly always retries SAM_STAT_BUSY and
SAM_STAT_QUEUE_FULL.  The only way to recover from this is to issue a
bus reset.

This condition, I think, is what causes some of the hang reports about
this driver.  However, I think I see the code in the sequencer which is
causing it (target_cmdphase) but I don't have enough information about
the sequencer to fix this.

James



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2005-08-05 18:16 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-08-04 22:33 [PATCH] aic7xxx: upport all sequencer and core fixes from adaptec version 6.3.9 James Bottomley
2005-08-05 13:25 ` SCSI Mailing List
2005-08-05 18:16   ` James Bottomley

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox