All of lore.kernel.org
 help / color / mirror / Atom feed
From: Luben Tuikov <luben_tuikov@adaptec.com>
To: SCSI Mailing List <linux-scsi@vger.kernel.org>
Subject: [patch 21/28] Sync up drivers/scsi/aic7xxx
Date: Tue, 28 Sep 2004 09:07:12 -0400	[thread overview]
Message-ID: <41596200.3070408@adaptec.com> (raw)

Sync up drivers/scsi/aic7xxx/. (2666-2686)

Signed-off-by: Luben Tuikov <luben_tuikov@adaptec.com>

==== //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7770_osm.c#17 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic7770_osm.c ====
--- /tmp/tmp.27107.0	2004-09-27 13:34:45.180880784 -0400
+++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic7770_osm.c	2004-01-29 19:42:56.000000000 -0500
@@ -36,7 +36,7 @@
   * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
   * POSSIBILITY OF SUCH DAMAGES.
   *
- * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7770_osm.c#17 $
+ * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7770_osm.c#19 $
   */

  #include "aic7xxx_osm.h"
@@ -73,7 +73,7 @@
  static int aic7770_linux_config(struct aic7770_identity *entry,
  				aic7770_dev_t dev, u_int eisaBase);

-void
+int
  ahc_linux_eisa_init(void)
  {
  #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
@@ -82,7 +82,7 @@
  	int i;

  	if (aic7xxx_probe_eisa_vl == 0)
-		return;
+		return (0);

  	/*
  	 * Linux requires the EISA IDs to be specified in
@@ -93,7 +93,7 @@
  					 (ahc_num_aic7770_devs + 1),
  					 M_DEVBUF, M_NOWAIT);
  	if (aic7770_driver.id_table == NULL)
-		return;
+		return (-ENOMEM);

  	for (eid = (struct eisa_device_id *)aic7770_driver.id_table,
  	     id = aic7770_ident_table, i = 0;
@@ -109,7 +109,7 @@
  	}
  	eid->sig[0] = 0;

-	eisa_driver_register(&aic7770_driver);
+	return (eisa_driver_register(&aic7770_driver));
  #else /* LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) */
  	struct aic7770_identity *entry;
  	u_int  slot;
@@ -117,7 +117,7 @@
  	u_int  i;

  	if (aic7xxx_probe_eisa_vl == 0)
-		return;
+		return (0);

  	eisaBase = 0x1000 + AHC_EISA_SLOT_OFFSET;
  	for (slot = 1; slot < NUMSLOTS; eisaBase+=0x1000, slot++) {
@@ -143,6 +143,7 @@
  		if (entry != NULL)
  			aic7770_linux_config(entry, NULL, eisaBase);
  	}
+	return (0);
  #endif
  }

@@ -185,6 +186,13 @@
  		return (ENOMEM);
  	}
  	ahc->dev_softc = dev;
+	if (aic_set_dma_mask(ahc, 0xFFFFFFFF) != 0
+       /*|| aic_set_consistent_dma_mask(ahc, 0xFFFFFFFF) != 0 */) {
+		printk(KERN_WARNING "aic7xxx: Unable to set DMA masks.\n");
+		ahc_free(ahc);
+		return (-ENOMEM);
+	}
+	ahc->platform_data->hw_dma_mask = 0xFFFFFFFF;
  	error = aic7770_config(ahc, entry, eisaBase);
  	if (error != 0) {
  		ahc->bsh.ioport = 0;
==== //depot/aic7xxx/aic7xxx/aic79xx.h#105 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx.h ====
--- /tmp/tmp.27107.1	2004-09-27 13:34:45.526828192 -0400
+++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx.h	2004-01-29 20:13:27.000000000 -0500
@@ -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/aic79xx.h#105 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic79xx.h#106 $
   *
   * $FreeBSD$
   */
@@ -201,7 +201,7 @@
  #define AHD_BUSRESET_DELAY	25

  /******************* Chip Characteristics/Operating Settings  *****************/
-extern int ahd_attach_to_HostRAID_controllers;
+extern uint32_t ahd_attach_to_HostRAID_controllers;

  /*
   * Chip Type
==== //depot/aic7xxx/aic7xxx/aic79xx.seq#117 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx.seq ====
--- /tmp/tmp.27107.2	2004-09-27 13:34:45.866776512 -0400
+++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx.seq	2004-01-29 23:57:25.000000000 -0500
@@ -40,7 +40,7 @@
   * $FreeBSD$
   */

-VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#117 $"
+VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#118 $"
  PATCH_ARG_LIST = "struct ahd_softc *ahd"
  PREFIX = "ahd_"

@@ -409,7 +409,18 @@
  	mov	CCSCBCTL, SINDEX ret;

  setjmp:
-	bmov	LONGJMP_ADDR, STACK, 2 ret;
+	/*
+	 * At least on the A, a return in the same
+	 * instruction as the bmov results in a return
+	 * to the caller, not to the new address at the
+	 * top of the stack.  Since we want the latter
+	 * (we use setjmp to register a handler from an
+	 * interrupt context but not invoke that handler
+	 * until we return to our idle loop), use a
+	 * separate ret instruction.
+	 */
+	bmov	LONGJMP_ADDR, STACK, 2;
+	ret;
  setjmp_inline:
  	bmov	LONGJMP_ADDR, STACK, 2;
  longjmp:
==== //depot/aic7xxx/aic7xxx/aic79xx.c#236 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_core.c ====
--- /tmp/tmp.27107.3	2004-09-27 13:34:47.176577392 -0400
+++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_core.c	2004-01-29 20:13:36.000000000 -0500
@@ -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/aic79xx.c#236 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic79xx.c#238 $
   */

  #ifdef __linux__
@@ -54,7 +54,7 @@

  /******************************** Globals *************************************/
  struct ahd_softc_tailq ahd_tailq = TAILQ_HEAD_INITIALIZER(ahd_tailq);
-int ahd_attach_to_HostRAID_controllers = 1;
+uint32_t ahd_attach_to_HostRAID_controllers = 1;

  /***************************** Lookup Tables **********************************/
  char *ahd_chip_names[] =
@@ -6013,6 +6013,22 @@
  		hscb = (struct hardware_scb *)hscb_map->vaddr;
  		hscb_busaddr = hscb_map->busaddr;
  		scb_data->scbs_left = PAGE_SIZE / sizeof(*hscb);
+		if (ahd->next_queued_hscb == NULL) {
+			/*
+			 * We need one HSCB to serve as the "next HSCB".  Since
+			 * the tag identifier in this HSCB will never be used,
+			 * there is no point in using a valid SCB from the
+			 * free pool for it.  So, we allocate this "sentinel"
+			 * specially.
+	 		 */
+			ahd->next_queued_hscb = hscb;
+			ahd->next_queued_hscb_map = hscb_map;
+			memset(hscb, 0, sizeof(*hscb));
+			hscb->hscb_busaddr = aic_htole32(hscb_busaddr);
+			hscb++;
+			hscb_busaddr += sizeof(*hscb);
+			scb_data->scbs_left--;
+		}
  	}

  	if (scb_data->sgs_left != 0) {
@@ -6096,12 +6112,12 @@
  	scb_data->scbs_left -= newcount;
  	scb_data->sgs_left -= newcount;
  	for (i = 0; i < newcount; i++) {
-		u_int col_tag;
-
  		struct scb_platform_data *pdata;
+		u_int col_tag;
  #ifndef __linux__
  		int error;
  #endif
+
  		next_scb = (struct scb *)malloc(sizeof(*next_scb),
  						M_DEVBUF, M_NOWAIT);
  		if (next_scb == NULL)
@@ -6272,8 +6288,7 @@
  	 * for the target mode role, we must additionally provide space for
  	 * the incoming target command fifo.
  	 */
-	driver_data_size = AHD_SCB_MAX * sizeof(*ahd->qoutfifo)
-			 + sizeof(struct hardware_scb);
+	driver_data_size = AHD_SCB_MAX * sizeof(*ahd->qoutfifo);
  	if ((ahd->features & AHD_TARGETMODE) != 0)
  		driver_data_size += AHD_TMODE_CMDS * sizeof(struct target_cmd);
  	if ((ahd->bugs & AHD_PKT_BITBUCKET_BUG) != 0)
@@ -6323,17 +6338,6 @@
  		next_baddr += PKT_OVERRUN_BUFSIZE;
  	}

-	/*
-	 * We need one SCB to serve as the "next SCB".  Since the
-	 * tag identifier in this SCB will never be used, there is
-	 * no point in using a valid HSCB tag from an SCB pulled from
-	 * the standard free pool.  So, we allocate this "sentinel"
-	 * specially from the DMA safe memory chunk used for the QOUTFIFO.
-	 */
-	ahd->next_queued_hscb = (struct hardware_scb *)next_vaddr;
-	ahd->next_queued_hscb_map = &ahd->shared_data_map;
-	ahd->next_queued_hscb->hscb_busaddr = aic_htole32(next_baddr);
-
  	ahd->init_level++;

  	/* Allocate SCB data now that buffer_dmat is initialized */
==== //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_osm.c#198 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_osm.c ====
--- /tmp/tmp.27107.4	2004-09-27 13:34:47.743491208 -0400
+++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_osm.c	2004-01-29 20:14:29.000000000 -0500
@@ -1,7 +1,7 @@
  /*
   * Adaptec AIC79xx device driver for Linux.
   *
- * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_osm.c#198 $
+ * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_osm.c#200 $
   *
   * --------------------------------------------------------------------------
   * Copyright (c) 1994-2000 Justin T. Gibbs.
@@ -70,6 +70,12 @@

  static int ahd_sysrq_key;

+/***************************** Global Data ************************************/
+/*
+ * Driver Initialization Status.  Used by ahd_linux_exit().
+ */
+int ahd_init_status;
+
  /*
   * Lock protecting manipulation of the ahd softc list.
   */
@@ -433,6 +439,7 @@
  MODULE_PARM_DESC(aic79xx,
  "period delimited, options string.\n"
  "	verbose			Enable verbose/diagnostic logging\n"
+"	attach_HostRAID:<int>	Attach to controllers in HostRAID mode\n"
  "	allow_memio		Allow device registers to be memory mapped\n"
  "	debug			Bitmask of debug values to enable\n"
  "	no_reset		Supress initial bus resets\n"
@@ -472,6 +479,8 @@
  					 Scsi_Cmnd *cmd);
  static void ahd_linux_filter_inquiry(struct ahd_softc *ahd,
  				     struct ahd_devinfo *devinfo);
+static int __init ahd_linux_init(void);
+static void __exit ahd_linux_exit(void);
  static void ahd_linux_dev_timed_unfreeze(u_long arg);
  static void ahd_linux_sem_timeout(u_long arg);
  static void ahd_linux_initialize_scsi_bus(struct ahd_softc *ahd);
@@ -918,6 +927,7 @@
  	 */
  	spin_unlock_irq(&io_request_lock);
  #endif
+	found = 0;

  	/*
  	 * Sanity checking of Linux SCSI data structures so
@@ -928,7 +938,8 @@
  	  > offsetof(struct scsi_cmnd, host_scribble)) {
  		printf("ahd_linux_detect: SCSI data structures changed.\n");
  		printf("ahd_linux_detect: Unable to attach\n");
-		return (0);
+		ahd_init_status = -EINVAL;
+		goto done;
  	}
  	/*
  	 * Determine an appropriate size for our Scatter Gatther lists.
@@ -957,7 +968,9 @@
  	ahd_list_lockinit();

  #ifdef CONFIG_PCI
-	ahd_linux_pci_init();
+	ahd_init_status = ahd_linux_pci_init();
+	if (ahd_init_status != 0)
+		goto done;
  #endif

  	/*
@@ -970,6 +983,7 @@
  		if (ahd_linux_register_host(ahd, template) == 0)
  			found++;
  	}
+done:
  #if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
  	spin_lock_irq(&io_request_lock);
  #endif
@@ -1887,6 +1901,7 @@
  		{ "extended", &aic79xx_extended },
  		{ "no_reset", &aic79xx_no_reset },
  		{ "verbose", &aic79xx_verbose },
+		{ "attach_HostRAID", &ahd_attach_to_HostRAID_controllers },
  		{ "allow_memio", &aic79xx_allow_memio},
  #ifdef AHD_DEBUG
  		{ "debug", &ahd_debug },
@@ -5071,18 +5086,28 @@
  static int __init
  ahd_linux_init(void)
  {
+	int	found;
+
  #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
-       return (ahd_linux_detect(&aic79xx_driver_template) ? 0 : -ENODEV);
+	found = ahd_linux_detect(&aic79xx_driver_template);
  #else
  	scsi_register_module(MODULE_SCSI_HA, &aic79xx_driver_template);
-	if (aic79xx_driver_template.present == 0) {
-		scsi_unregister_module(MODULE_SCSI_HA,
-				       &aic79xx_driver_template);
-		return (-ENODEV);
-	}
-
-	return (0);
+	found = aic79xx_driver_template.present;
+#endif
+#ifdef MODULE
+	if (found == 0)
+		ahd_init_status = -ENODEV;
  #endif
+	if (ahd_init_status != 0) {
+		/*
+		 * Linux will only call our exit
+		 * routine if our init function
+		 * returns 0 status.  Force cleanup
+		 * if initialization is not successful.
+		 */
+		ahd_linux_exit();
+	}
+	return (ahd_init_status);
  }

  static void __exit
==== //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_osm.h#155 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_osm.h ====
--- /tmp/tmp.27107.5	2004-09-27 13:34:47.765487864 -0400
+++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_osm.h	2004-01-29 19:03:42.000000000 -0500
@@ -36,7 +36,7 @@
   * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
   * POSSIBILITY OF SUCH DAMAGES.
   *
- * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_osm.h#155 $
+ * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_osm.h#156 $
   *
   */
  #ifndef _AIC79XX_LINUX_H_
@@ -228,6 +228,7 @@
  }

  /**************************** Initialization **********************************/
+extern int	ahd_init_status;
  int		ahd_linux_register_host(struct ahd_softc *,
  					Scsi_Host_Template *);

==== //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_osm_pci.c#30 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_osm_pci.c ====
--- /tmp/tmp.27107.6	2004-09-27 13:34:47.820479504 -0400
+++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_osm_pci.c	2004-01-29 18:08:04.000000000 -0500
@@ -36,7 +36,7 @@
   * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
   * POSSIBILITY OF SUCH DAMAGES.
   *
- * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_osm_pci.c#30 $
+ * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_osm_pci.c#33 $
   */

  #include "aic79xx_osm.h"
@@ -48,6 +48,8 @@
   */
  #include "aiclib_pci.c"

+static int	ahd_pci_module_registered;
+
  static int	ahd_linux_pci_dev_probe(struct pci_dev *pdev,
  					const struct pci_device_id *ent);
  static int	ahd_linux_pci_reserve_io_regions(struct ahd_softc *ahd,
@@ -63,6 +65,10 @@
  		0x9005, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
  		PCI_CLASS_STORAGE_SCSI << 8, 0xFFFF00, 0
  	},
+	{
+		0x9005, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
+		PCI_CLASS_STORAGE_RAID << 8, 0xFFFF00, 0
+	},
  	{ 0 }
  };

@@ -155,6 +161,12 @@
  	}
  	pci_set_master(pdev);

+	if (aic_set_consistent_dma_mask(ahd, 0xFFFFFFFF) != 0) {
+		printk(KERN_WARNING "aic79xx: Unable to set"
+		       "coherent DMA mask.\n");
+		ahd_free(ahd);
+		return (-ENOMEM);
+	}
  	if (sizeof(bus_addr_t) > 4) {
  		uint64_t   memsize;
  		bus_addr_t mask_64bit;
@@ -173,7 +185,12 @@
  			ahd->platform_data->hw_dma_mask = mask_39bit;
  		}
  	} else {
-		aic_set_dma_mask(ahd, 0xFFFFFFFF);
+		if (aic_set_dma_mask(ahd, 0xFFFFFFFF) != 0) {
+			printk(KERN_WARNING "aic79xx: Unable to set data "
+			       "DMA mask.\n");
+			ahd_free(ahd);
+			return (-ENOMEM);
+		}
  		ahd->platform_data->hw_dma_mask = 0xFFFFFFFF;
  	}
  	error = ahd_pci_config(ahd, entry);
@@ -197,13 +214,19 @@
  int
  ahd_linux_pci_init(void)
  {
-	return (pci_module_init(&aic79xx_pci_driver));
+	int error;
+	
+	error = pci_module_init(&aic79xx_pci_driver);
+	if (error == 0)
+		ahd_pci_module_registered = 1;
+	return (error);
  }

  void
  ahd_linux_pci_exit(void)
  {
-	pci_unregister_driver(&aic79xx_pci_driver);
+	if (ahd_pci_module_registered != 0)
+		pci_unregister_driver(&aic79xx_pci_driver);
  }

  static int
==== //depot/aic7xxx/aic7xxx/aic79xx_pci.c#85 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_pci.c ====
--- /tmp/tmp.27107.7	2004-09-27 13:34:47.915465064 -0400
+++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_pci.c	2004-01-25 22:03:29.000000000 -0500
@@ -38,7 +38,7 @@
   * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
   * POSSIBILITY OF SUCH DAMAGES.
   *
- * $Id: //depot/aic7xxx/aic7xxx/aic79xx_pci.c#85 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic79xx_pci.c#86 $
   */

  #ifdef __linux__
@@ -65,10 +65,10 @@
  }

  #define ID_ALL_MASK			0xFFFFFFFFFFFFFFFFull
-#define ID_ALL_IROC_MASK		0xFFFFFF7FFFFFFFFFull
+#define ID_ALL_IROC_MASK		0xFF7FFFFFFFFFFFFFull
  #define ID_DEV_VENDOR_MASK		0xFFFFFFFF00000000ull
  #define ID_9005_GENERIC_MASK		0xFFF0FFFF00000000ull
-#define ID_9005_GENERIC_IROC_MASK	0xFFF0FF7F00000000ull
+#define ID_9005_GENERIC_IROC_MASK	0xFF70FFFF00000000ull

  #define ID_AIC7901			0x800F9005FFFF9005ull
  #define ID_AHA_29320A			0x8000900500609005ull
@@ -199,7 +199,7 @@
  	},
  	/* Generic chip probes for devices we don't know 'exactly' */
  	{
-		ID_AIC7901 & ID_DEV_VENDOR_MASK,
+		ID_AIC7901 & ID_9005_GENERIC_MASK,
  		ID_DEV_VENDOR_MASK,
  		"Adaptec AIC7901 Ultra320 SCSI adapter",
  		ahd_aic7901_setup
==== //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_reg.h#84 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_reg.h_shipped ====
--- /tmp/tmp.27107.8	2004-09-27 13:34:48.374395296 -0400
+++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_reg.h_shipped	2004-01-29 23:51:04.000000000 -0500
@@ -2,7 +2,7 @@
   * DO NOT EDIT - This file is automatically generated
   *		 from the following source files:
   *
- * $Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#117 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#118 $
   * $Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#75 $
   */
  typedef int (ahd_reg_print_t)(u_int, u_int *, u_int);
@@ -3799,5 +3799,5 @@


  /* Exported Labels */
-#define	LABEL_seq_isr 	0x282
-#define	LABEL_timer_isr	0x27e
+#define	LABEL_seq_isr 	0x283
+#define	LABEL_timer_isr	0x27f
==== //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_reg_print.c#65 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_reg_print.c_shipped ====
--- /tmp/tmp.27107.9	2004-09-27 13:34:49.337248920 -0400
+++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_reg_print.c_shipped	2004-01-29 23:51:04.000000000 -0500
@@ -2,7 +2,7 @@
   * DO NOT EDIT - This file is automatically generated
   *		 from the following source files:
   *
- * $Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#117 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#118 $
   * $Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#75 $
   */

==== //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_seq.h#85 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_seq.h_shipped ====
--- /tmp/tmp.27107.10	2004-09-27 13:34:49.497224600 -0400
+++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_seq.h_shipped	2004-01-29 23:51:04.000000000 -0500
@@ -2,17 +2,17 @@
   * DO NOT EDIT - This file is automatically generated
   *		 from the following source files:
   *
- * $Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#117 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#118 $
   * $Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#75 $
   */
  static uint8_t seqprog[] = {
  	0xff, 0x02, 0x06, 0x78,
-	0x00, 0xea, 0x5e, 0x59,
+	0x00, 0xea, 0x60, 0x59,
  	0x01, 0xea, 0x04, 0x30,
  	0xff, 0x04, 0x0c, 0x78,
-	0x19, 0xea, 0x5e, 0x59,
+	0x19, 0xea, 0x60, 0x59,
  	0x19, 0xea, 0x04, 0x00,
-	0x33, 0xea, 0x58, 0x59,
+	0x33, 0xea, 0x5a, 0x59,
  	0x33, 0xea, 0x00, 0x00,
  	0x60, 0x3a, 0x3a, 0x68,
  	0x04, 0x4d, 0x35, 0x78,
@@ -33,15 +33,15 @@
  	0xff, 0xea, 0x62, 0x02,
  	0x00, 0xe2, 0x3a, 0x40,
  	0xff, 0x21, 0x3b, 0x70,
-	0x40, 0x4b, 0xa4, 0x69,
-	0x00, 0xe2, 0x62, 0x59,
-	0x40, 0x4b, 0xa4, 0x69,
-	0x20, 0x4b, 0x90, 0x69,
+	0x40, 0x4b, 0xa6, 0x69,
+	0x00, 0xe2, 0x64, 0x59,
+	0x40, 0x4b, 0xa6, 0x69,
+	0x20, 0x4b, 0x92, 0x69,
  	0xfc, 0x42, 0x44, 0x78,
  	0x10, 0x40, 0x44, 0x78,
-	0x00, 0xe2, 0xf6, 0x5d,
+	0x00, 0xe2, 0xf8, 0x5d,
  	0x20, 0x4d, 0x48, 0x78,
-	0x00, 0xe2, 0xf6, 0x5d,
+	0x00, 0xe2, 0xf8, 0x5d,
  	0x30, 0x3f, 0xc0, 0x09,
  	0x30, 0xe0, 0x50, 0x60,
  	0x7f, 0x4a, 0x94, 0x08,
@@ -51,7 +51,7 @@
  	0x00, 0xe2, 0x76, 0x58,
  	0x00, 0xe2, 0x86, 0x58,
  	0x00, 0xe2, 0x06, 0x40,
-	0x33, 0xea, 0x58, 0x59,
+	0x33, 0xea, 0x5a, 0x59,
  	0x33, 0xea, 0x00, 0x00,
  	0x01, 0x52, 0x84, 0x78,
  	0x02, 0x58, 0x50, 0x31,
@@ -59,21 +59,21 @@
  	0xff, 0x97, 0x6f, 0x78,
  	0x50, 0x4b, 0x6a, 0x68,
  	0xbf, 0x3a, 0x74, 0x08,
-	0x14, 0xea, 0x5e, 0x59,
+	0x14, 0xea, 0x60, 0x59,
  	0x14, 0xea, 0x04, 0x00,
  	0x08, 0x92, 0x25, 0x03,
  	0xff, 0x90, 0x5f, 0x68,
-	0x00, 0xe2, 0x70, 0x5b,
+	0x00, 0xe2, 0x72, 0x5b,
  	0x00, 0xe2, 0x5e, 0x40,
-	0x00, 0xea, 0x58, 0x59,
+	0x00, 0xea, 0x5a, 0x59,
  	0x01, 0xea, 0x00, 0x30,
  	0x80, 0xf9, 0x7e, 0x68,
-	0x00, 0xe2, 0x56, 0x59,
-	0x11, 0xea, 0x58, 0x59,
+	0x00, 0xe2, 0x58, 0x59,
+	0x11, 0xea, 0x5a, 0x59,
  	0x11, 0xea, 0x00, 0x00,
-	0x80, 0xf9, 0x56, 0x79,
+	0x80, 0xf9, 0x58, 0x79,
  	0xff, 0xea, 0xd4, 0x0d,
-	0x22, 0xea, 0x58, 0x59,
+	0x22, 0xea, 0x5a, 0x59,
  	0x22, 0xea, 0x00, 0x00,
  	0x10, 0x16, 0x90, 0x78,
  	0x10, 0x16, 0x2c, 0x00,
@@ -175,7 +175,8 @@
  	0x19, 0xea, 0x4e, 0x41,
  	0x06, 0xea, 0x08, 0x81,
  	0x01, 0xe2, 0x5a, 0x35,
-	0x02, 0xf2, 0xf0, 0x35,
+	0x02, 0xf2, 0xf0, 0x31,
+	0xff, 0xea, 0xd4, 0x0d,
  	0x02, 0xf2, 0xf0, 0x31,
  	0x02, 0xf8, 0xe4, 0x35,
  	0x80, 0xea, 0xb2, 0x01,
@@ -187,27 +188,27 @@
  	0x02, 0x20, 0xb9, 0x30,
  	0x02, 0x20, 0x51, 0x31,
  	0x4c, 0x93, 0xd7, 0x28,
-	0x10, 0x92, 0x71, 0x79,
+	0x10, 0x92, 0x73, 0x79,
  	0x01, 0x6b, 0xc0, 0x30,
  	0x02, 0x64, 0xc8, 0x00,
  	0x40, 0x3a, 0x74, 0x04,
  	0x00, 0xe2, 0x76, 0x58,
-	0x33, 0xea, 0x58, 0x59,
+	0x33, 0xea, 0x5a, 0x59,
  	0x33, 0xea, 0x00, 0x00,
  	0x30, 0x3f, 0xc0, 0x09,
-	0x30, 0xe0, 0x72, 0x61,
-	0x20, 0x3f, 0x88, 0x69,
-	0x10, 0x3f, 0x72, 0x79,
+	0x30, 0xe0, 0x74, 0x61,
+	0x20, 0x3f, 0x8a, 0x69,
+	0x10, 0x3f, 0x74, 0x79,
  	0x02, 0xea, 0x7e, 0x00,
-	0x00, 0xea, 0x58, 0x59,
+	0x00, 0xea, 0x5a, 0x59,
  	0x01, 0xea, 0x00, 0x30,
  	0x02, 0x4e, 0x51, 0x35,
  	0x01, 0xea, 0x7e, 0x00,
-	0x11, 0xea, 0x58, 0x59,
+	0x11, 0xea, 0x5a, 0x59,
  	0x11, 0xea, 0x00, 0x00,
  	0x02, 0x4e, 0x51, 0x35,
  	0xc0, 0x4a, 0x94, 0x00,
-	0x04, 0x41, 0x96, 0x79,
+	0x04, 0x41, 0x98, 0x79,
  	0x08, 0xea, 0x98, 0x00,
  	0x08, 0x57, 0xae, 0x00,
  	0x08, 0x3c, 0x78, 0x00,
@@ -215,12 +216,12 @@
  	0x0f, 0x67, 0xc0, 0x09,
  	0x00, 0x3a, 0x75, 0x02,
  	0x20, 0xea, 0x96, 0x00,
-	0x00, 0xe2, 0x0e, 0x42,
+	0x00, 0xe2, 0x10, 0x42,
  	0xc0, 0x4a, 0x94, 0x00,
-	0x40, 0x3a, 0xc2, 0x69,
+	0x40, 0x3a, 0xc4, 0x69,
  	0x02, 0x55, 0x06, 0x68,
-	0x02, 0x56, 0xc2, 0x69,
-	0xff, 0x5b, 0xc2, 0x61,
+	0x02, 0x56, 0xc4, 0x69,
+	0xff, 0x5b, 0xc4, 0x61,
  	0x02, 0x20, 0x51, 0x31,
  	0x80, 0xea, 0xb2, 0x01,
  	0x44, 0xea, 0x00, 0x00,
@@ -228,40 +229,40 @@
  	0x33, 0xea, 0x00, 0x00,
  	0xff, 0xea, 0xb2, 0x09,
  	0xff, 0xe0, 0xc0, 0x19,
-	0xff, 0xe0, 0xc4, 0x79,
+	0xff, 0xe0, 0xc6, 0x79,
  	0x02, 0xac, 0x51, 0x31,
-	0x00, 0xe2, 0xba, 0x41,
+	0x00, 0xe2, 0xbc, 0x41,
  	0x02, 0x5e, 0x50, 0x31,
  	0x02, 0xa8, 0xb8, 0x30,
  	0x02, 0x5c, 0x50, 0x31,
-	0xff, 0xad, 0xd5, 0x71,
+	0xff, 0xad, 0xd7, 0x71,
  	0x02, 0xac, 0x41, 0x31,
  	0x02, 0x22, 0x51, 0x31,
  	0x02, 0xa0, 0x5c, 0x33,
  	0x02, 0xa0, 0x44, 0x32,
-	0x00, 0xe2, 0xde, 0x41,
-	0x10, 0x92, 0xdf, 0x69,
+	0x00, 0xe2, 0xe0, 0x41,
+	0x10, 0x92, 0xe1, 0x69,
  	0x3d, 0x93, 0xc9, 0x29,
  	0x01, 0xe4, 0xc8, 0x01,
  	0x01, 0xea, 0xca, 0x01,
  	0xff, 0xea, 0xda, 0x01,
  	0x02, 0x20, 0x51, 0x31,
  	0x02, 0xae, 0x41, 0x32,
-	0xff, 0x21, 0xe7, 0x61,
+	0xff, 0x21, 0xe9, 0x61,
  	0xff, 0xea, 0x46, 0x02,
  	0x02, 0x5c, 0x50, 0x31,
  	0x40, 0xea, 0x96, 0x00,
-	0x02, 0x56, 0xfe, 0x6d,
-	0x01, 0x55, 0xfe, 0x6d,
-	0x10, 0x92, 0xf3, 0x79,
-	0x10, 0x40, 0xfc, 0x69,
-	0x01, 0x56, 0xfc, 0x79,
+	0x02, 0x56, 0x00, 0x6e,
+	0x01, 0x55, 0x00, 0x6e,
+	0x10, 0x92, 0xf5, 0x79,
+	0x10, 0x40, 0xfe, 0x69,
+	0x01, 0x56, 0xfe, 0x79,
  	0xff, 0x97, 0x07, 0x78,
-	0x13, 0xea, 0x5e, 0x59,
+	0x13, 0xea, 0x60, 0x59,
  	0x13, 0xea, 0x04, 0x00,
  	0x00, 0xe2, 0x06, 0x40,
  	0xbf, 0x3a, 0x74, 0x08,
-	0x04, 0x41, 0x02, 0x7a,
+	0x04, 0x41, 0x04, 0x7a,
  	0x08, 0xea, 0x98, 0x00,
  	0x08, 0x57, 0xae, 0x00,
  	0x01, 0x93, 0x75, 0x32,
@@ -269,108 +270,108 @@
  	0x40, 0xea, 0x72, 0x02,
  	0x08, 0x3c, 0x78, 0x00,
  	0x80, 0xea, 0x6e, 0x02,
-	0x00, 0xe2, 0xdc, 0x5b,
+	0x00, 0xe2, 0xde, 0x5b,
  	0x01, 0x3c, 0xc1, 0x31,
-	0x9f, 0xe0, 0x7e, 0x7c,
-	0x80, 0xe0, 0x22, 0x72,
-	0xa0, 0xe0, 0x5e, 0x72,
-	0xc0, 0xe0, 0x54, 0x72,
-	0xe0, 0xe0, 0x8e, 0x72,
-	0x01, 0xea, 0x5e, 0x59,
+	0x9f, 0xe0, 0x80, 0x7c,
+	0x80, 0xe0, 0x24, 0x72,
+	0xa0, 0xe0, 0x60, 0x72,
+	0xc0, 0xe0, 0x56, 0x72,
+	0xe0, 0xe0, 0x90, 0x72,
+	0x01, 0xea, 0x60, 0x59,
  	0x01, 0xea, 0x04, 0x00,
-	0x00, 0xe2, 0x0e, 0x42,
-	0x80, 0x39, 0x29, 0x7a,
-	0x03, 0xea, 0x5e, 0x59,
+	0x00, 0xe2, 0x10, 0x42,
+	0x80, 0x39, 0x2b, 0x7a,
+	0x03, 0xea, 0x60, 0x59,
  	0x03, 0xea, 0x04, 0x00,
-	0xee, 0x00, 0x30, 0x6a,
+	0xee, 0x00, 0x32, 0x6a,
  	0x05, 0xea, 0xb4, 0x00,
-	0x33, 0xea, 0x58, 0x59,
+	0x33, 0xea, 0x5a, 0x59,
  	0x33, 0xea, 0x00, 0x00,
  	0x02, 0xa8, 0x9c, 0x32,
-	0x00, 0xe2, 0x78, 0x59,
+	0x00, 0xe2, 0x7a, 0x59,
  	0xef, 0x96, 0xd5, 0x19,
-	0x00, 0xe2, 0x40, 0x52,
+	0x00, 0xe2, 0x42, 0x52,
  	0x09, 0x80, 0xe1, 0x30,
  	0x02, 0xea, 0x36, 0x00,
  	0xa8, 0xea, 0x32, 0x00,
-	0x00, 0xe2, 0x46, 0x42,
+	0x00, 0xe2, 0x48, 0x42,
  	0x01, 0x96, 0xd1, 0x30,
  	0x10, 0x80, 0x89, 0x31,
  	0x20, 0xea, 0x32, 0x00,
  	0xbf, 0x39, 0x73, 0x0a,
-	0x10, 0x4c, 0x50, 0x6a,
-	0x20, 0x19, 0x48, 0x6a,
-	0x20, 0x19, 0x4c, 0x6a,
-	0x02, 0x4d, 0x0e, 0x6a,
+	0x10, 0x4c, 0x52, 0x6a,
+	0x20, 0x19, 0x4a, 0x6a,
+	0x20, 0x19, 0x4e, 0x6a,
+	0x02, 0x4d, 0x10, 0x6a,
  	0x40, 0x39, 0x73, 0x02,
-	0x00, 0xe2, 0x0e, 0x42,
-	0x80, 0x39, 0xcf, 0x6a,
+	0x00, 0xe2, 0x10, 0x42,
+	0x80, 0x39, 0xd1, 0x6a,
  	0x01, 0x44, 0x10, 0x33,
  	0x08, 0x92, 0x25, 0x03,
-	0x00, 0xe2, 0x0e, 0x42,
+	0x00, 0xe2, 0x10, 0x42,
  	0x10, 0xea, 0x80, 0x00,
  	0x01, 0x37, 0xc5, 0x31,
-	0x80, 0xe2, 0x7a, 0x62,
-	0x10, 0x92, 0x9f, 0x6a,
+	0x80, 0xe2, 0x7c, 0x62,
+	0x10, 0x92, 0xa1, 0x6a,
  	0xc0, 0x94, 0xc5, 0x01,
-	0x40, 0x92, 0x6b, 0x6a,
+	0x40, 0x92, 0x6d, 0x6a,
  	0xbf, 0xe2, 0xc4, 0x09,
-	0x20, 0x92, 0x7f, 0x7a,
+	0x20, 0x92, 0x81, 0x7a,
  	0x01, 0xe2, 0x88, 0x30,
-	0x00, 0xe2, 0xdc, 0x5b,
-	0xa0, 0x3c, 0x87, 0x62,
+	0x00, 0xe2, 0xde, 0x5b,
+	0xa0, 0x3c, 0x89, 0x62,
  	0x23, 0x92, 0x89, 0x08,
-	0x00, 0xe2, 0xdc, 0x5b,
-	0xa0, 0x3c, 0x87, 0x62,
-	0x00, 0xa8, 0x7e, 0x42,
-	0xff, 0xe2, 0x7e, 0x62,
-	0x00, 0xe2, 0x9e, 0x42,
+	0x00, 0xe2, 0xde, 0x5b,
+	0xa0, 0x3c, 0x89, 0x62,
+	0x00, 0xa8, 0x80, 0x42,
+	0xff, 0xe2, 0x80, 0x62,
+	0x00, 0xe2, 0xa0, 0x42,
  	0x40, 0xea, 0x98, 0x00,
  	0x01, 0xe2, 0x88, 0x30,
-	0x00, 0xe2, 0xdc, 0x5b,
-	0xa0, 0x3c, 0x5d, 0x72,
+	0x00, 0xe2, 0xde, 0x5b,
+	0xa0, 0x3c, 0x5f, 0x72,
  	0x40, 0xea, 0x98, 0x00,
  	0x01, 0x37, 0x95, 0x32,
  	0x08, 0xea, 0x6e, 0x02,
-	0x00, 0xe2, 0x0e, 0x42,
-	0xe0, 0xea, 0xf8, 0x5b,
-	0x80, 0xe0, 0xda, 0x6a,
-	0x04, 0xe0, 0x8c, 0x73,
-	0x02, 0xe0, 0xbe, 0x73,
-	0x00, 0xea, 0x38, 0x73,
-	0x03, 0xe0, 0xce, 0x73,
-	0x23, 0xe0, 0xb0, 0x72,
-	0x08, 0xe0, 0xd6, 0x72,
-	0x00, 0xe2, 0xdc, 0x5b,
-	0x07, 0xea, 0x5e, 0x59,
+	0x00, 0xe2, 0x10, 0x42,
+	0xe0, 0xea, 0xfa, 0x5b,
+	0x80, 0xe0, 0xdc, 0x6a,
+	0x04, 0xe0, 0x8e, 0x73,
+	0x02, 0xe0, 0xc0, 0x73,
+	0x00, 0xea, 0x3a, 0x73,
+	0x03, 0xe0, 0xd0, 0x73,
+	0x23, 0xe0, 0xb2, 0x72,
+	0x08, 0xe0, 0xd8, 0x72,
+	0x00, 0xe2, 0xde, 0x5b,
+	0x07, 0xea, 0x60, 0x59,
  	0x07, 0xea, 0x04, 0x00,
-	0x08, 0x48, 0x0f, 0x72,
-	0x04, 0x48, 0xad, 0x62,
+	0x08, 0x48, 0x11, 0x72,
+	0x04, 0x48, 0xaf, 0x62,
  	0x01, 0x49, 0x89, 0x30,
-	0x00, 0xe2, 0x9e, 0x42,
+	0x00, 0xe2, 0xa0, 0x42,
  	0x01, 0x44, 0xd4, 0x31,
-	0x00, 0xe2, 0x9e, 0x42,
+	0x00, 0xe2, 0xa0, 0x42,
  	0x01, 0x00, 0x6c, 0x32,
-	0x33, 0xea, 0x58, 0x59,
+	0x33, 0xea, 0x5a, 0x59,
  	0x33, 0xea, 0x00, 0x00,
  	0x4c, 0x3a, 0xc1, 0x28,
  	0x01, 0x64, 0xc0, 0x31,
-	0x00, 0x36, 0x59, 0x59,
+	0x00, 0x36, 0x5b, 0x59,
  	0x01, 0x36, 0x01, 0x30,
-	0x01, 0xe0, 0xd4, 0x7a,
-	0xa0, 0xea, 0xee, 0x5b,
-	0x01, 0xa0, 0xd4, 0x62,
-	0x01, 0x84, 0xc9, 0x7a,
-	0x01, 0x95, 0xd7, 0x6a,
-	0x05, 0xea, 0x5e, 0x59,
+	0x01, 0xe0, 0xd6, 0x7a,
+	0xa0, 0xea, 0xf0, 0x5b,
+	0x01, 0xa0, 0xd6, 0x62,
+	0x01, 0x84, 0xcb, 0x7a,
+	0x01, 0x95, 0xd9, 0x6a,
+	0x05, 0xea, 0x60, 0x59,
  	0x05, 0xea, 0x04, 0x00,
-	0x00, 0xe2, 0xd6, 0x42,
-	0x03, 0xea, 0x5e, 0x59,
+	0x00, 0xe2, 0xd8, 0x42,
+	0x03, 0xea, 0x60, 0x59,
  	0x03, 0xea, 0x04, 0x00,
-	0x00, 0xe2, 0xd6, 0x42,
-	0x07, 0xea, 0x00, 0x5c,
+	0x00, 0xe2, 0xd8, 0x42,
+	0x07, 0xea, 0x02, 0x5c,
  	0x01, 0x44, 0xd4, 0x31,
-	0x00, 0xe2, 0x0e, 0x42,
+	0x00, 0xe2, 0x10, 0x42,
  	0x3f, 0xe0, 0x76, 0x0a,
  	0xc0, 0x3a, 0xc1, 0x09,
  	0x00, 0x3b, 0x51, 0x01,
@@ -381,54 +382,54 @@
  	0x01, 0xea, 0xc6, 0x01,
  	0x02, 0xe2, 0xc8, 0x31,
  	0x02, 0xec, 0x40, 0x31,
-	0xff, 0xa1, 0xf6, 0x72,
+	0xff, 0xa1, 0xf8, 0x72,
  	0x02, 0xe8, 0xda, 0x31,
  	0x02, 0xa0, 0x50, 0x31,
-	0x00, 0xe2, 0x18, 0x43,
+	0x00, 0xe2, 0x1a, 0x43,
  	0x80, 0x39, 0x73, 0x02,
  	0x01, 0x44, 0xd4, 0x31,
-	0x00, 0xe2, 0xdc, 0x5b,
+	0x00, 0xe2, 0xde, 0x5b,
  	0x01, 0x39, 0x73, 0x02,
-	0xe0, 0x3c, 0x33, 0x63,
+	0xe0, 0x3c, 0x35, 0x63,
  	0x02, 0x39, 0x73, 0x02,
-	0x20, 0x46, 0x2c, 0x63,
+	0x20, 0x46, 0x2e, 0x63,
  	0xff, 0xea, 0x52, 0x09,
-	0xa8, 0xea, 0xee, 0x5b,
-	0x04, 0x92, 0x13, 0x7b,
+	0xa8, 0xea, 0xf0, 0x5b,
+	0x04, 0x92, 0x15, 0x7b,
  	0x01, 0x3a, 0xc1, 0x31,
-	0x00, 0x93, 0x13, 0x63,
+	0x00, 0x93, 0x15, 0x63,
  	0x01, 0x3b, 0xc1, 0x31,
-	0x00, 0x94, 0x1d, 0x73,
+	0x00, 0x94, 0x1f, 0x73,
  	0x01, 0xa9, 0x52, 0x11,
-	0xff, 0xa9, 0x08, 0x6b,
-	0x00, 0xe2, 0x2c, 0x43,
+	0xff, 0xa9, 0x0a, 0x6b,
+	0x00, 0xe2, 0x2e, 0x43,
  	0x10, 0x39, 0x73, 0x02,
-	0x04, 0x92, 0x2d, 0x7b,
+	0x04, 0x92, 0x2f, 0x7b,
  	0xfb, 0x92, 0x25, 0x0b,
  	0xff, 0xea, 0x72, 0x0a,
-	0x01, 0xa4, 0x27, 0x6b,
+	0x01, 0xa4, 0x29, 0x6b,
  	0x02, 0xa8, 0x9c, 0x32,
-	0x00, 0xe2, 0x78, 0x59,
-	0x10, 0x92, 0xd7, 0x7a,
-	0xff, 0xea, 0x00, 0x5c,
-	0x00, 0xe2, 0xd6, 0x42,
-	0x04, 0xea, 0x5e, 0x59,
+	0x00, 0xe2, 0x7a, 0x59,
+	0x10, 0x92, 0xd9, 0x7a,
+	0xff, 0xea, 0x02, 0x5c,
+	0x00, 0xe2, 0xd8, 0x42,
+	0x04, 0xea, 0x60, 0x59,
  	0x04, 0xea, 0x04, 0x00,
-	0x00, 0xe2, 0xd6, 0x42,
-	0x04, 0xea, 0x5e, 0x59,
+	0x00, 0xe2, 0xd8, 0x42,
+	0x04, 0xea, 0x60, 0x59,
  	0x04, 0xea, 0x04, 0x00,
-	0x00, 0xe2, 0x0e, 0x42,
-	0x08, 0x92, 0xcf, 0x7a,
-	0xc0, 0x39, 0x43, 0x7b,
-	0x80, 0x39, 0xcf, 0x6a,
-	0xff, 0x88, 0x43, 0x6b,
-	0x40, 0x39, 0xcf, 0x6a,
-	0x10, 0x92, 0x49, 0x7b,
-	0x0a, 0xea, 0x5e, 0x59,
+	0x00, 0xe2, 0x10, 0x42,
+	0x08, 0x92, 0xd1, 0x7a,
+	0xc0, 0x39, 0x45, 0x7b,
+	0x80, 0x39, 0xd1, 0x6a,
+	0xff, 0x88, 0x45, 0x6b,
+	0x40, 0x39, 0xd1, 0x6a,
+	0x10, 0x92, 0x4b, 0x7b,
+	0x0a, 0xea, 0x60, 0x59,
  	0x0a, 0xea, 0x04, 0x00,
-	0x00, 0xe2, 0x68, 0x5b,
-	0x00, 0xe2, 0xa8, 0x43,
-	0x50, 0x4b, 0x50, 0x6b,
+	0x00, 0xe2, 0x6a, 0x5b,
+	0x00, 0xe2, 0xaa, 0x43,
+	0x50, 0x4b, 0x52, 0x6b,
  	0xbf, 0x3a, 0x74, 0x08,
  	0x01, 0xe0, 0xf4, 0x31,
  	0xff, 0xea, 0xc0, 0x09,
@@ -438,31 +439,31 @@
  	0x01, 0xfa, 0xc0, 0x35,
  	0x02, 0xa8, 0x90, 0x32,
  	0x02, 0xea, 0xb4, 0x00,
-	0x33, 0xea, 0x58, 0x59,
+	0x33, 0xea, 0x5a, 0x59,
  	0x33, 0xea, 0x00, 0x00,
  	0x02, 0x48, 0x51, 0x31,
  	0xff, 0x90, 0x85, 0x68,
-	0xff, 0x88, 0x75, 0x6b,
-	0x01, 0xa4, 0x71, 0x6b,
-	0x02, 0xa4, 0x79, 0x6b,
-	0x01, 0x84, 0x79, 0x7b,
+	0xff, 0x88, 0x77, 0x6b,
+	0x01, 0xa4, 0x73, 0x6b,
+	0x02, 0xa4, 0x7b, 0x6b,
+	0x01, 0x84, 0x7b, 0x7b,
  	0x02, 0x28, 0x19, 0x33,
  	0x02, 0xa8, 0x50, 0x36,
-	0xff, 0x88, 0x79, 0x73,
-	0x00, 0xe2, 0x4c, 0x5b,
+	0xff, 0x88, 0x7b, 0x73,
+	0x00, 0xe2, 0x4e, 0x5b,
  	0x02, 0xa8, 0x20, 0x33,
  	0x04, 0xa4, 0x49, 0x03,
  	0xff, 0xea, 0x1a, 0x03,
-	0xff, 0x2d, 0x85, 0x63,
+	0xff, 0x2d, 0x87, 0x63,
  	0x02, 0xa8, 0x58, 0x32,
  	0x02, 0xa8, 0x5c, 0x36,
  	0x02, 0xa8, 0x40, 0x31,
  	0x02, 0x2e, 0x51, 0x31,
  	0x02, 0xa0, 0x18, 0x33,
  	0x02, 0xa0, 0x5c, 0x36,
-	0xc0, 0x39, 0xcf, 0x6a,
+	0xc0, 0x39, 0xd1, 0x6a,
  	0x04, 0x92, 0x25, 0x03,
-	0x20, 0x92, 0xa9, 0x6b,
+	0x20, 0x92, 0xab, 0x6b,
  	0x02, 0xa8, 0x40, 0x31,
  	0xc0, 0x3a, 0xc1, 0x09,
  	0x00, 0x3b, 0x51, 0x01,
@@ -477,60 +478,60 @@
  	0xf7, 0x57, 0xae, 0x08,
  	0x08, 0xea, 0x98, 0x00,
  	0x01, 0x44, 0xd4, 0x31,
-	0xee, 0x00, 0xb2, 0x6b,
+	0xee, 0x00, 0xb4, 0x6b,
  	0x02, 0xea, 0xb4, 0x00,
  	0xc0, 0xea, 0x72, 0x02,
-	0x09, 0x4c, 0xb4, 0x7b,
+	0x09, 0x4c, 0xb6, 0x7b,
  	0x01, 0xea, 0x78, 0x02,
  	0x08, 0x4c, 0x06, 0x68,
-	0x0b, 0xea, 0x5e, 0x59,
+	0x0b, 0xea, 0x60, 0x59,
  	0x0b, 0xea, 0x04, 0x00,
  	0x01, 0x44, 0xd4, 0x31,
-	0x20, 0x39, 0x0f, 0x7a,
-	0x00, 0xe2, 0xc6, 0x5b,
-	0x00, 0xe2, 0x0e, 0x42,
-	0x01, 0x84, 0xcb, 0x7b,
+	0x20, 0x39, 0x11, 0x7a,
+	0x00, 0xe2, 0xc8, 0x5b,
+	0x00, 0xe2, 0x10, 0x42,
+	0x01, 0x84, 0xcd, 0x7b,
  	0x01, 0xa4, 0x49, 0x07,
  	0x08, 0x60, 0x30, 0x33,
  	0x08, 0x80, 0x41, 0x37,
  	0xdf, 0x39, 0x73, 0x0a,
-	0xee, 0x00, 0xd8, 0x6b,
+	0xee, 0x00, 0xda, 0x6b,
  	0x05, 0xea, 0xb4, 0x00,
-	0x33, 0xea, 0x58, 0x59,
+	0x33, 0xea, 0x5a, 0x59,
  	0x33, 0xea, 0x00, 0x00,
-	0x00, 0xe2, 0x78, 0x59,
-	0x00, 0xe2, 0xd6, 0x42,
-	0xff, 0x42, 0xe8, 0x6b,
-	0x01, 0x41, 0xdc, 0x6b,
-	0x02, 0x41, 0xdc, 0x7b,
-	0xff, 0x42, 0xe8, 0x6b,
-	0x01, 0x41, 0xdc, 0x6b,
-	0x02, 0x41, 0xdc, 0x7b,
-	0xff, 0x42, 0xe8, 0x7b,
-	0x04, 0x4c, 0xdc, 0x6b,
+	0x00, 0xe2, 0x7a, 0x59,
+	0x00, 0xe2, 0xd8, 0x42,
+	0xff, 0x42, 0xea, 0x6b,
+	0x01, 0x41, 0xde, 0x6b,
+	0x02, 0x41, 0xde, 0x7b,
+	0xff, 0x42, 0xea, 0x6b,
+	0x01, 0x41, 0xde, 0x6b,
+	0x02, 0x41, 0xde, 0x7b,
+	0xff, 0x42, 0xea, 0x7b,
+	0x04, 0x4c, 0xde, 0x6b,
  	0xe0, 0x41, 0x78, 0x0e,
  	0x01, 0x44, 0xd4, 0x31,
-	0xff, 0x42, 0xf0, 0x7b,
-	0x04, 0x4c, 0xf0, 0x6b,
+	0xff, 0x42, 0xf2, 0x7b,
+	0x04, 0x4c, 0xf2, 0x6b,
  	0xe0, 0x41, 0x78, 0x0a,
-	0xe0, 0x3c, 0x0f, 0x62,
+	0xe0, 0x3c, 0x11, 0x62,
  	0xff, 0xea, 0xca, 0x09,
  	0x01, 0xe2, 0xc8, 0x31,
  	0x01, 0x46, 0xda, 0x35,
  	0x01, 0x44, 0xd4, 0x35,
  	0x10, 0xea, 0x80, 0x00,
  	0x01, 0xe2, 0x6e, 0x36,
-	0x04, 0xa6, 0x08, 0x7c,
+	0x04, 0xa6, 0x0a, 0x7c,
  	0xff, 0xea, 0x5a, 0x09,
  	0xff, 0xea, 0x4c, 0x0d,
-	0x01, 0xa6, 0x34, 0x6c,
+	0x01, 0xa6, 0x36, 0x6c,
  	0x10, 0xad, 0x84, 0x78,
-	0x80, 0xad, 0x2c, 0x6c,
+	0x80, 0xad, 0x2e, 0x6c,
  	0x08, 0xad, 0x84, 0x68,
-	0x20, 0x19, 0x20, 0x7c,
+	0x20, 0x19, 0x22, 0x7c,
  	0x80, 0xea, 0xb2, 0x01,
  	0x11, 0x00, 0x00, 0x10,
-	0x02, 0xa6, 0x1c, 0x7c,
+	0x02, 0xa6, 0x1e, 0x7c,
  	0xff, 0xea, 0xb2, 0x0d,
  	0x11, 0x00, 0x00, 0x10,
  	0xff, 0xea, 0xb2, 0x09,
@@ -558,7 +559,7 @@
  	0x00, 0x86, 0x0d, 0x23,
  	0x00, 0x87, 0x0f, 0x23,
  	0x01, 0x84, 0xc5, 0x31,
-	0x80, 0x83, 0x57, 0x7c,
+	0x80, 0x83, 0x59, 0x7c,
  	0x02, 0xe2, 0xc4, 0x01,
  	0xff, 0xea, 0x4c, 0x09,
  	0x01, 0xe2, 0x36, 0x30,
@@ -569,75 +570,75 @@
  	0xfe, 0xa6, 0x4c, 0x0d,
  	0x0b, 0x98, 0xe1, 0x30,
  	0xfd, 0xa4, 0x49, 0x09,
-	0x80, 0xa3, 0x6b, 0x7c,
+	0x80, 0xa3, 0x6d, 0x7c,
  	0x02, 0xa4, 0x48, 0x01,
  	0x01, 0xa4, 0x36, 0x30,
  	0xa8, 0xea, 0x32, 0x00,
  	0xfd, 0xa4, 0x49, 0x0b,
  	0x05, 0xa3, 0x07, 0x33,
-	0x80, 0x83, 0x77, 0x6c,
+	0x80, 0x83, 0x79, 0x6c,
  	0x02, 0xea, 0x4c, 0x05,
  	0xff, 0xea, 0x4c, 0x0d,
  	0x00, 0xe2, 0x52, 0x59,
-	0x02, 0xa6, 0x0a, 0x6c,
+	0x02, 0xa6, 0x0c, 0x6c,
  	0x80, 0xf9, 0xf2, 0x05,
-	0xc0, 0x39, 0x85, 0x7c,
-	0x03, 0xea, 0x5e, 0x59,
+	0xc0, 0x39, 0x87, 0x7c,
+	0x03, 0xea, 0x60, 0x59,
  	0x03, 0xea, 0x04, 0x00,
-	0x20, 0x39, 0xa9, 0x7c,
-	0x01, 0x84, 0x8f, 0x6c,
-	0x06, 0xea, 0x5e, 0x59,
+	0x20, 0x39, 0xab, 0x7c,
+	0x01, 0x84, 0x91, 0x6c,
+	0x06, 0xea, 0x60, 0x59,
  	0x06, 0xea, 0x04, 0x00,
-	0x00, 0xe2, 0xac, 0x44,
+	0x00, 0xe2, 0xae, 0x44,
  	0x01, 0x00, 0x6c, 0x32,
-	0xee, 0x00, 0x98, 0x6c,
+	0xee, 0x00, 0x9a, 0x6c,
  	0x05, 0xea, 0xb4, 0x00,
-	0x33, 0xea, 0x58, 0x59,
+	0x33, 0xea, 0x5a, 0x59,
  	0x33, 0xea, 0x00, 0x00,
  	0x80, 0x3d, 0x7a, 0x00,
-	0xfc, 0x42, 0x9a, 0x7c,
+	0xfc, 0x42, 0x9c, 0x7c,
  	0x7f, 0x3d, 0x7a, 0x08,
-	0x00, 0x36, 0x59, 0x59,
+	0x00, 0x36, 0x5b, 0x59,
  	0x01, 0x36, 0x01, 0x30,
-	0x09, 0xea, 0x5e, 0x59,
+	0x09, 0xea, 0x60, 0x59,
  	0x09, 0xea, 0x04, 0x00,
-	0x00, 0xe2, 0x0e, 0x42,
-	0x01, 0xa4, 0x8f, 0x6c,
-	0x00, 0xe2, 0x62, 0x5c,
+	0x00, 0xe2, 0x10, 0x42,
+	0x01, 0xa4, 0x91, 0x6c,
+	0x00, 0xe2, 0x64, 0x5c,
  	0x20, 0x39, 0x73, 0x02,
  	0x01, 0x00, 0x6c, 0x32,
-	0x02, 0xa6, 0xb4, 0x7c,
-	0x00, 0xe2, 0x78, 0x5c,
+	0x02, 0xa6, 0xb6, 0x7c,
+	0x00, 0xe2, 0x7a, 0x5c,
  	0x00, 0xe2, 0x76, 0x58,
  	0x00, 0xe2, 0x86, 0x58,
  	0x00, 0xe2, 0x5a, 0x58,
-	0x00, 0x36, 0x59, 0x59,
+	0x00, 0x36, 0x5b, 0x59,
  	0x01, 0x36, 0x01, 0x30,
-	0x20, 0x19, 0xb4, 0x6c,
-	0x00, 0xe2, 0xe4, 0x5c,
-	0x04, 0x19, 0xce, 0x6c,
+	0x20, 0x19, 0xb6, 0x6c,
+	0x00, 0xe2, 0xe6, 0x5c,
+	0x04, 0x19, 0xd0, 0x6c,
  	0x02, 0x19, 0x32, 0x00,
-	0x01, 0x84, 0xcf, 0x7c,
-	0x01, 0x1b, 0xc8, 0x7c,
-	0x01, 0x1a, 0xce, 0x6c,
-	0x00, 0xe2, 0x7e, 0x44,
-	0x80, 0x4b, 0xd4, 0x6c,
-	0x01, 0x4c, 0xd0, 0x7c,
-	0x03, 0x42, 0x7e, 0x6c,
-	0x00, 0xe2, 0x04, 0x5c,
+	0x01, 0x84, 0xd1, 0x7c,
+	0x01, 0x1b, 0xca, 0x7c,
+	0x01, 0x1a, 0xd0, 0x6c,
+	0x00, 0xe2, 0x80, 0x44,
+	0x80, 0x4b, 0xd6, 0x6c,
+	0x01, 0x4c, 0xd2, 0x7c,
+	0x03, 0x42, 0x80, 0x6c,
+	0x00, 0xe2, 0x06, 0x5c,
  	0x80, 0xf9, 0xf2, 0x01,
-	0x04, 0x39, 0x0f, 0x7a,
-	0x00, 0xe2, 0x0e, 0x42,
-	0x08, 0x5d, 0xec, 0x6c,
+	0x04, 0x39, 0x11, 0x7a,
+	0x00, 0xe2, 0x10, 0x42,
+	0x08, 0x5d, 0xee, 0x6c,
  	0x00, 0xe2, 0x76, 0x58,
-	0x00, 0x36, 0x59, 0x59,
+	0x00, 0x36, 0x5b, 0x59,
  	0x01, 0x36, 0x01, 0x30,
-	0x02, 0x1b, 0xdc, 0x7c,
-	0x08, 0x5d, 0xea, 0x7c,
+	0x02, 0x1b, 0xde, 0x7c,
+	0x08, 0x5d, 0xec, 0x7c,
  	0x03, 0x68, 0x00, 0x37,
  	0x01, 0x84, 0x09, 0x07,
-	0x80, 0x1b, 0xf6, 0x7c,
-	0x80, 0x84, 0xf7, 0x6c,
+	0x80, 0x1b, 0xf8, 0x7c,
+	0x80, 0x84, 0xf9, 0x6c,
  	0xff, 0x85, 0x0b, 0x1b,
  	0xff, 0x86, 0x0d, 0x23,
  	0xff, 0x87, 0x0f, 0x23,
@@ -649,161 +650,161 @@
  	0xf9, 0xd9, 0xb2, 0x0d,
  	0x01, 0xd9, 0xb2, 0x05,
  	0x01, 0x52, 0x48, 0x31,
-	0x20, 0xa4, 0x20, 0x7d,
-	0x20, 0x5b, 0x20, 0x7d,
-	0x80, 0xf9, 0x2e, 0x7d,
+	0x20, 0xa4, 0x22, 0x7d,
+	0x20, 0x5b, 0x22, 0x7d,
+	0x80, 0xf9, 0x30, 0x7d,
  	0x02, 0xea, 0xb4, 0x00,
  	0x11, 0x00, 0x00, 0x10,
-	0x04, 0x19, 0x3a, 0x7d,
+	0x04, 0x19, 0x3c, 0x7d,
  	0xdf, 0x19, 0x32, 0x08,
-	0x60, 0x5b, 0x3a, 0x6d,
-	0x01, 0x4c, 0x14, 0x7d,
+	0x60, 0x5b, 0x3c, 0x6d,
+	0x01, 0x4c, 0x16, 0x7d,
  	0x20, 0x19, 0x32, 0x00,
  	0x01, 0xd9, 0xb2, 0x05,
  	0x02, 0xea, 0xb4, 0x00,
  	0x01, 0xd9, 0xb2, 0x05,
-	0x10, 0x5b, 0x32, 0x6d,
-	0x08, 0x5b, 0x3c, 0x6d,
-	0x20, 0x5b, 0x2c, 0x6d,
-	0x02, 0x5b, 0x5c, 0x6d,
-	0x0e, 0xea, 0x5e, 0x59,
+	0x10, 0x5b, 0x34, 0x6d,
+	0x08, 0x5b, 0x3e, 0x6d,
+	0x20, 0x5b, 0x2e, 0x6d,
+	0x02, 0x5b, 0x5e, 0x6d,
+	0x0e, 0xea, 0x60, 0x59,
  	0x0e, 0xea, 0x04, 0x00,
-	0x80, 0xf9, 0x1c, 0x6d,
+	0x80, 0xf9, 0x1e, 0x6d,
  	0xdf, 0x5c, 0xb8, 0x08,
  	0x01, 0xd9, 0xb2, 0x05,
-	0x01, 0xa4, 0x17, 0x6e,
-	0x00, 0xe2, 0x62, 0x5c,
-	0x00, 0xe2, 0x66, 0x5d,
+	0x01, 0xa4, 0x19, 0x6e,
+	0x00, 0xe2, 0x64, 0x5c,
+	0x00, 0xe2, 0x68, 0x5d,
  	0x01, 0x90, 0x21, 0x1b,
  	0x01, 0xd9, 0xb2, 0x05,
-	0x00, 0xe2, 0x4c, 0x5b,
+	0x00, 0xe2, 0x4e, 0x5b,
  	0xf3, 0x96, 0xd5, 0x19,
-	0x00, 0xe2, 0x4a, 0x55,
-	0x80, 0x96, 0x4b, 0x6d,
-	0x0f, 0xea, 0x5e, 0x59,
+	0x00, 0xe2, 0x4c, 0x55,
+	0x80, 0x96, 0x4d, 0x6d,
+	0x0f, 0xea, 0x60, 0x59,
  	0x0f, 0xea, 0x04, 0x00,
-	0x00, 0xe2, 0x52, 0x45,
+	0x00, 0xe2, 0x54, 0x45,
  	0x04, 0x8c, 0xe1, 0x30,
  	0x01, 0xea, 0xf2, 0x00,
  	0x02, 0xea, 0x36, 0x00,
  	0xa8, 0xea, 0x32, 0x00,
-	0xff, 0x97, 0x59, 0x7d,
-	0x14, 0xea, 0x5e, 0x59,
+	0xff, 0x97, 0x5b, 0x7d,
+	0x14, 0xea, 0x60, 0x59,
  	0x14, 0xea, 0x04, 0x00,
-	0x00, 0xe2, 0xc8, 0x5d,
+	0x00, 0xe2, 0xca, 0x5d,
  	0x01, 0xd9, 0xb2, 0x05,
  	0x09, 0x80, 0xe1, 0x30,
  	0x02, 0xea, 0x36, 0x00,
  	0xa8, 0xea, 0x32, 0x00,
-	0x00, 0xe2, 0xc0, 0x5d,
+	0x00, 0xe2, 0xc2, 0x5d,
  	0x01, 0xd9, 0xb2, 0x05,
-	0x02, 0xa6, 0x76, 0x7d,
+	0x02, 0xa6, 0x78, 0x7d,
  	0x00, 0xe2, 0x52, 0x59,
-	0x20, 0x5b, 0x84, 0x6d,
-	0xfc, 0x42, 0x70, 0x7d,
-	0x10, 0x40, 0x72, 0x6d,
-	0x20, 0x4d, 0x74, 0x7d,
-	0x08, 0x5d, 0x84, 0x6d,
-	0x02, 0xa6, 0x0a, 0x6c,
+	0x20, 0x5b, 0x86, 0x6d,
+	0xfc, 0x42, 0x72, 0x7d,
+	0x10, 0x40, 0x74, 0x6d,
+	0x20, 0x4d, 0x76, 0x7d,
+	0x08, 0x5d, 0x86, 0x6d,
+	0x02, 0xa6, 0x0c, 0x6c,
  	0x00, 0xe2, 0x52, 0x59,
-	0x20, 0x5b, 0x84, 0x6d,
-	0x01, 0x1b, 0xa4, 0x6d,
-	0xfc, 0x42, 0x80, 0x7d,
-	0x10, 0x40, 0x82, 0x6d,
+	0x20, 0x5b, 0x86, 0x6d,
+	0x01, 0x1b, 0xa6, 0x6d,
+	0xfc, 0x42, 0x82, 0x7d,
+	0x10, 0x40, 0x84, 0x6d,
  	0x20, 0x4d, 0x84, 0x78,
  	0x08, 0x5d, 0x84, 0x78,
  	0x02, 0x19, 0x32, 0x00,
  	0x01, 0x5b, 0x40, 0x31,
-	0x00, 0xe2, 0xe4, 0x5c,
-	0x00, 0xe2, 0xc6, 0x5b,
+	0x00, 0xe2, 0xe6, 0x5c,
+	0x00, 0xe2, 0xc8, 0x5b,
  	0x20, 0xea, 0xb6, 0x00,
-	0x00, 0xe2, 0x04, 0x5c,
+	0x00, 0xe2, 0x06, 0x5c,
  	0x20, 0x5c, 0xb8, 0x00,
-	0x04, 0x19, 0x9a, 0x6d,
-	0x01, 0x1a, 0x9a, 0x6d,
+	0x04, 0x19, 0x9c, 0x6d,
+	0x01, 0x1a, 0x9c, 0x6d,
  	0x00, 0xe2, 0x52, 0x59,
  	0x01, 0x1a, 0x84, 0x78,
  	0x80, 0xf9, 0xf2, 0x01,
-	0x20, 0xa0, 0xfe, 0x7d,
+	0x20, 0xa0, 0x00, 0x7e,
  	0xff, 0x90, 0x21, 0x1b,
-	0x08, 0x92, 0x5d, 0x6b,
+	0x08, 0x92, 0x5f, 0x6b,
  	0x02, 0xea, 0xb4, 0x04,
  	0x01, 0xa4, 0x49, 0x03,
-	0x40, 0x5b, 0xb4, 0x6d,
+	0x40, 0x5b, 0xb6, 0x6d,
  	0x00, 0xe2, 0x52, 0x59,
-	0x40, 0x5b, 0xb4, 0x6d,
-	0x04, 0x5d, 0x18, 0x7e,
-	0x01, 0x1a, 0x18, 0x7e,
+	0x40, 0x5b, 0xb6, 0x6d,
+	0x04, 0x5d, 0x1a, 0x7e,
+	0x01, 0x1a, 0x1a, 0x7e,
  	0x20, 0x4d, 0x84, 0x78,
-	0x40, 0x5b, 0xfe, 0x7d,
-	0x04, 0x5d, 0x18, 0x7e,
-	0x01, 0x1a, 0x18, 0x7e,
+	0x40, 0x5b, 0x00, 0x7e,
+	0x04, 0x5d, 0x1a, 0x7e,
+	0x01, 0x1a, 0x1a, 0x7e,
  	0x80, 0xf9, 0xf2, 0x01,
  	0xff, 0x90, 0x21, 0x1b,
-	0x08, 0x92, 0x5d, 0x6b,
+	0x08, 0x92, 0x5f, 0x6b,
  	0x02, 0xea, 0xb4, 0x04,
  	0x00, 0xe2, 0x52, 0x59,
  	0x01, 0x1b, 0x84, 0x78,
  	0x80, 0xf9, 0xf2, 0x01,
  	0x02, 0xea, 0xb4, 0x04,
  	0x00, 0xe2, 0x52, 0x59,
-	0x01, 0x1b, 0xdc, 0x6d,
-	0x40, 0x5b, 0xea, 0x7d,
-	0x01, 0x1b, 0xdc, 0x6d,
+	0x01, 0x1b, 0xde, 0x6d,
+	0x40, 0x5b, 0xec, 0x7d,
+	0x01, 0x1b, 0xde, 0x6d,
  	0x02, 0x19, 0x32, 0x00,
  	0x01, 0x1a, 0x84, 0x78,
  	0x80, 0xf9, 0xf2, 0x01,
  	0xff, 0xea, 0x10, 0x03,
  	0x08, 0x92, 0x25, 0x03,
-	0x00, 0xe2, 0x5c, 0x43,
-	0x01, 0x1a, 0xe6, 0x7d,
-	0x40, 0x5b, 0xe2, 0x7d,
-	0x01, 0x1a, 0xd0, 0x6d,
+	0x00, 0xe2, 0x5e, 0x43,
+	0x01, 0x1a, 0xe8, 0x7d,
+	0x40, 0x5b, 0xe4, 0x7d,
+	0x01, 0x1a, 0xd2, 0x6d,
  	0xfc, 0x42, 0x84, 0x78,
-	0x01, 0x1a, 0xea, 0x6d,
-	0x10, 0xea, 0x5e, 0x59,
+	0x01, 0x1a, 0xec, 0x6d,
+	0x10, 0xea, 0x60, 0x59,
  	0x10, 0xea, 0x04, 0x00,
  	0xfc, 0x42, 0x84, 0x78,
-	0x10, 0x40, 0xf0, 0x6d,
+	0x10, 0x40, 0xf2, 0x6d,
  	0x20, 0x4d, 0x84, 0x78,
-	0x40, 0x5b, 0xd0, 0x6d,
+	0x40, 0x5b, 0xd2, 0x6d,
  	0x01, 0x1a, 0x84, 0x78,
  	0x01, 0x90, 0x21, 0x1b,
  	0x30, 0x3f, 0xc0, 0x09,
  	0x30, 0xe0, 0x84, 0x60,
  	0x40, 0x4b, 0x84, 0x68,
  	0xff, 0xea, 0x52, 0x01,
-	0xee, 0x00, 0x06, 0x6e,
+	0xee, 0x00, 0x08, 0x6e,
  	0x80, 0xf9, 0xf2, 0x01,
  	0xff, 0x90, 0x21, 0x1b,
  	0x02, 0xea, 0xb4, 0x00,
  	0x20, 0xea, 0x9a, 0x00,
-	0xf3, 0x42, 0x10, 0x6e,
-	0x12, 0xea, 0x5e, 0x59,
+	0xf3, 0x42, 0x12, 0x6e,
+	0x12, 0xea, 0x60, 0x59,
  	0x12, 0xea, 0x04, 0x00,
-	0x00, 0xe2, 0x0e, 0x42,
-	0x0d, 0xea, 0x5e, 0x59,
+	0x00, 0xe2, 0x10, 0x42,
+	0x0d, 0xea, 0x60, 0x59,
  	0x0d, 0xea, 0x04, 0x00,
-	0x00, 0xe2, 0x0e, 0x42,
+	0x00, 0xe2, 0x10, 0x42,
  	0x01, 0x90, 0x21, 0x1b,
-	0x11, 0xea, 0x5e, 0x59,
+	0x11, 0xea, 0x60, 0x59,
  	0x11, 0xea, 0x04, 0x00,
-	0x00, 0xe2, 0x4c, 0x5b,
+	0x00, 0xe2, 0x4e, 0x5b,
  	0x08, 0x5a, 0xb4, 0x00,
-	0x00, 0xe2, 0x3e, 0x5e,
+	0x00, 0xe2, 0x40, 0x5e,
  	0xa8, 0xea, 0x32, 0x00,
  	0x00, 0xe2, 0x52, 0x59,
-	0x80, 0x1a, 0x2c, 0x7e,
-	0x00, 0xe2, 0x3e, 0x5e,
+	0x80, 0x1a, 0x2e, 0x7e,
+	0x00, 0xe2, 0x40, 0x5e,
  	0x80, 0x19, 0x32, 0x00,
-	0x40, 0x5b, 0x32, 0x6e,
-	0x08, 0x5a, 0x32, 0x7e,
+	0x40, 0x5b, 0x34, 0x6e,
+	0x08, 0x5a, 0x34, 0x7e,
  	0x20, 0x4d, 0x84, 0x78,
  	0x02, 0x84, 0x09, 0x03,
-	0x40, 0x5b, 0xfe, 0x7d,
+	0x40, 0x5b, 0x00, 0x7e,
  	0xff, 0x90, 0x21, 0x1b,
  	0x80, 0xf9, 0xf2, 0x01,
-	0x08, 0x92, 0x5d, 0x6b,
+	0x08, 0x92, 0x5f, 0x6b,
  	0x02, 0xea, 0xb4, 0x04,
  	0x01, 0x40, 0xe1, 0x30,
  	0x05, 0x41, 0xe3, 0x98,
@@ -1037,116 +1038,116 @@
  	{ ahd_patch2_func, 67, 1, 2 },
  	{ ahd_patch0_func, 68, 1, 1 },
  	{ ahd_patch4_func, 116, 1, 1 },
-	{ ahd_patch2_func, 172, 3, 1 },
-	{ ahd_patch1_func, 175, 2, 1 },
-	{ ahd_patch5_func, 177, 1, 1 },
-	{ ahd_patch2_func, 186, 1, 2 },
-	{ ahd_patch0_func, 187, 1, 1 },
-	{ ahd_patch6_func, 188, 2, 2 },
-	{ ahd_patch0_func, 190, 6, 3 },
-	{ ahd_patch2_func, 193, 1, 2 },
-	{ ahd_patch0_func, 194, 1, 1 },
-	{ ahd_patch2_func, 197, 1, 2 },
-	{ ahd_patch0_func, 198, 1, 1 },
-	{ ahd_patch3_func, 200, 1, 1 },
-	{ ahd_patch7_func, 201, 3, 1 },
-	{ ahd_patch3_func, 210, 1, 1 },
-	{ ahd_patch5_func, 211, 16, 2 },
-	{ ahd_patch0_func, 227, 1, 1 },
-	{ ahd_patch8_func, 247, 2, 1 },
-	{ ahd_patch1_func, 251, 1, 2 },
-	{ ahd_patch0_func, 252, 1, 1 },
-	{ ahd_patch7_func, 255, 3, 1 },
-	{ ahd_patch1_func, 270, 1, 2 },
-	{ ahd_patch0_func, 271, 1, 1 },
-	{ ahd_patch1_func, 274, 1, 2 },
-	{ ahd_patch0_func, 275, 1, 1 },
-	{ ahd_patch2_func, 278, 1, 2 },
-	{ ahd_patch0_func, 279, 1, 1 },
-	{ ahd_patch9_func, 292, 2, 2 },
-	{ ahd_patch0_func, 294, 1, 1 },
-	{ ahd_patch1_func, 336, 1, 2 },
-	{ ahd_patch0_func, 337, 1, 1 },
-	{ ahd_patch2_func, 345, 1, 2 },
-	{ ahd_patch0_func, 346, 1, 1 },
-	{ ahd_patch2_func, 349, 1, 2 },
-	{ ahd_patch0_func, 350, 1, 1 },
-	{ ahd_patch1_func, 356, 1, 2 },
-	{ ahd_patch0_func, 357, 1, 1 },
-	{ ahd_patch1_func, 359, 1, 2 },
-	{ ahd_patch0_func, 360, 1, 1 },
-	{ ahd_patch10_func, 379, 1, 1 },
-	{ ahd_patch10_func, 382, 1, 1 },
-	{ ahd_patch10_func, 384, 1, 1 },
-	{ ahd_patch10_func, 396, 1, 1 },
-	{ ahd_patch1_func, 406, 1, 2 },
-	{ ahd_patch0_func, 407, 1, 1 },
-	{ ahd_patch1_func, 409, 1, 2 },
-	{ ahd_patch0_func, 410, 1, 1 },
-	{ ahd_patch1_func, 418, 1, 2 },
-	{ ahd_patch0_func, 419, 1, 1 },
-	{ ahd_patch2_func, 432, 1, 2 },
-	{ ahd_patch0_func, 433, 1, 1 },
-	{ ahd_patch11_func, 469, 1, 1 },
-	{ ahd_patch1_func, 477, 1, 2 },
-	{ ahd_patch0_func, 478, 1, 1 },
-	{ ahd_patch2_func, 490, 1, 2 },
-	{ ahd_patch0_func, 491, 1, 1 },
-	{ ahd_patch12_func, 494, 6, 2 },
-	{ ahd_patch0_func, 500, 1, 1 },
-	{ ahd_patch13_func, 521, 7, 1 },
-	{ ahd_patch14_func, 530, 1, 1 },
-	{ ahd_patch15_func, 539, 1, 1 },
-	{ ahd_patch16_func, 540, 1, 2 },
-	{ ahd_patch0_func, 541, 1, 1 },
-	{ ahd_patch17_func, 544, 1, 1 },
-	{ ahd_patch16_func, 545, 1, 1 },
-	{ ahd_patch18_func, 556, 1, 2 },
-	{ ahd_patch0_func, 557, 1, 1 },
-	{ ahd_patch1_func, 576, 1, 2 },
-	{ ahd_patch0_func, 577, 1, 1 },
-	{ ahd_patch1_func, 580, 1, 2 },
-	{ ahd_patch0_func, 581, 1, 1 },
-	{ ahd_patch2_func, 586, 1, 2 },
-	{ ahd_patch0_func, 587, 1, 1 },
-	{ ahd_patch2_func, 591, 1, 2 },
-	{ ahd_patch0_func, 592, 1, 1 },
-	{ ahd_patch1_func, 593, 1, 2 },
-	{ ahd_patch0_func, 594, 1, 1 },
-	{ ahd_patch2_func, 605, 1, 2 },
-	{ ahd_patch0_func, 606, 1, 1 },
-	{ ahd_patch19_func, 610, 1, 1 },
-	{ ahd_patch20_func, 615, 1, 1 },
-	{ ahd_patch21_func, 616, 2, 1 },
-	{ ahd_patch20_func, 620, 1, 2 },
-	{ ahd_patch0_func, 621, 1, 1 },
-	{ ahd_patch2_func, 624, 1, 2 },
-	{ ahd_patch0_func, 625, 1, 1 },
-	{ ahd_patch2_func, 640, 1, 2 },
-	{ ahd_patch0_func, 641, 1, 1 },
-	{ ahd_patch13_func, 642, 14, 1 },
-	{ ahd_patch1_func, 660, 1, 2 },
-	{ ahd_patch0_func, 661, 1, 1 },
-	{ ahd_patch13_func, 662, 1, 1 },
-	{ ahd_patch1_func, 674, 1, 2 },
-	{ ahd_patch0_func, 675, 1, 1 },
-	{ ahd_patch1_func, 682, 1, 2 },
-	{ ahd_patch0_func, 683, 1, 1 },
-	{ ahd_patch19_func, 706, 1, 1 },
-	{ ahd_patch19_func, 744, 1, 1 },
-	{ ahd_patch1_func, 755, 1, 2 },
-	{ ahd_patch0_func, 756, 1, 1 },
-	{ ahd_patch1_func, 773, 1, 2 },
-	{ ahd_patch0_func, 774, 1, 1 },
-	{ ahd_patch1_func, 776, 1, 2 },
-	{ ahd_patch0_func, 777, 1, 1 },
-	{ ahd_patch1_func, 780, 1, 2 },
-	{ ahd_patch0_func, 781, 1, 1 },
-	{ ahd_patch22_func, 783, 1, 2 },
-	{ ahd_patch0_func, 784, 2, 1 },
-	{ ahd_patch23_func, 787, 4, 2 },
-	{ ahd_patch0_func, 791, 1, 1 },
-	{ ahd_patch23_func, 799, 11, 1 }
+	{ ahd_patch2_func, 173, 3, 1 },
+	{ ahd_patch1_func, 176, 2, 1 },
+	{ ahd_patch5_func, 178, 1, 1 },
+	{ ahd_patch2_func, 187, 1, 2 },
+	{ ahd_patch0_func, 188, 1, 1 },
+	{ ahd_patch6_func, 189, 2, 2 },
+	{ ahd_patch0_func, 191, 6, 3 },
+	{ ahd_patch2_func, 194, 1, 2 },
+	{ ahd_patch0_func, 195, 1, 1 },
+	{ ahd_patch2_func, 198, 1, 2 },
+	{ ahd_patch0_func, 199, 1, 1 },
+	{ ahd_patch3_func, 201, 1, 1 },
+	{ ahd_patch7_func, 202, 3, 1 },
+	{ ahd_patch3_func, 211, 1, 1 },
+	{ ahd_patch5_func, 212, 16, 2 },
+	{ ahd_patch0_func, 228, 1, 1 },
+	{ ahd_patch8_func, 248, 2, 1 },
+	{ ahd_patch1_func, 252, 1, 2 },
+	{ ahd_patch0_func, 253, 1, 1 },
+	{ ahd_patch7_func, 256, 3, 1 },
+	{ ahd_patch1_func, 271, 1, 2 },
+	{ ahd_patch0_func, 272, 1, 1 },
+	{ ahd_patch1_func, 275, 1, 2 },
+	{ ahd_patch0_func, 276, 1, 1 },
+	{ ahd_patch2_func, 279, 1, 2 },
+	{ ahd_patch0_func, 280, 1, 1 },
+	{ ahd_patch9_func, 293, 2, 2 },
+	{ ahd_patch0_func, 295, 1, 1 },
+	{ ahd_patch1_func, 337, 1, 2 },
+	{ ahd_patch0_func, 338, 1, 1 },
+	{ ahd_patch2_func, 346, 1, 2 },
+	{ ahd_patch0_func, 347, 1, 1 },
+	{ ahd_patch2_func, 350, 1, 2 },
+	{ ahd_patch0_func, 351, 1, 1 },
+	{ ahd_patch1_func, 357, 1, 2 },
+	{ ahd_patch0_func, 358, 1, 1 },
+	{ ahd_patch1_func, 360, 1, 2 },
+	{ ahd_patch0_func, 361, 1, 1 },
+	{ ahd_patch10_func, 380, 1, 1 },
+	{ ahd_patch10_func, 383, 1, 1 },
+	{ ahd_patch10_func, 385, 1, 1 },
+	{ ahd_patch10_func, 397, 1, 1 },
+	{ ahd_patch1_func, 407, 1, 2 },
+	{ ahd_patch0_func, 408, 1, 1 },
+	{ ahd_patch1_func, 410, 1, 2 },
+	{ ahd_patch0_func, 411, 1, 1 },
+	{ ahd_patch1_func, 419, 1, 2 },
+	{ ahd_patch0_func, 420, 1, 1 },
+	{ ahd_patch2_func, 433, 1, 2 },
+	{ ahd_patch0_func, 434, 1, 1 },
+	{ ahd_patch11_func, 470, 1, 1 },
+	{ ahd_patch1_func, 478, 1, 2 },
+	{ ahd_patch0_func, 479, 1, 1 },
+	{ ahd_patch2_func, 491, 1, 2 },
+	{ ahd_patch0_func, 492, 1, 1 },
+	{ ahd_patch12_func, 495, 6, 2 },
+	{ ahd_patch0_func, 501, 1, 1 },
+	{ ahd_patch13_func, 522, 7, 1 },
+	{ ahd_patch14_func, 531, 1, 1 },
+	{ ahd_patch15_func, 540, 1, 1 },
+	{ ahd_patch16_func, 541, 1, 2 },
+	{ ahd_patch0_func, 542, 1, 1 },
+	{ ahd_patch17_func, 545, 1, 1 },
+	{ ahd_patch16_func, 546, 1, 1 },
+	{ ahd_patch18_func, 557, 1, 2 },
+	{ ahd_patch0_func, 558, 1, 1 },
+	{ ahd_patch1_func, 577, 1, 2 },
+	{ ahd_patch0_func, 578, 1, 1 },
+	{ ahd_patch1_func, 581, 1, 2 },
+	{ ahd_patch0_func, 582, 1, 1 },
+	{ ahd_patch2_func, 587, 1, 2 },
+	{ ahd_patch0_func, 588, 1, 1 },
+	{ ahd_patch2_func, 592, 1, 2 },
+	{ ahd_patch0_func, 593, 1, 1 },
+	{ ahd_patch1_func, 594, 1, 2 },
+	{ ahd_patch0_func, 595, 1, 1 },
+	{ ahd_patch2_func, 606, 1, 2 },
+	{ ahd_patch0_func, 607, 1, 1 },
+	{ ahd_patch19_func, 611, 1, 1 },
+	{ ahd_patch20_func, 616, 1, 1 },
+	{ ahd_patch21_func, 617, 2, 1 },
+	{ ahd_patch20_func, 621, 1, 2 },
+	{ ahd_patch0_func, 622, 1, 1 },
+	{ ahd_patch2_func, 625, 1, 2 },
+	{ ahd_patch0_func, 626, 1, 1 },
+	{ ahd_patch2_func, 641, 1, 2 },
+	{ ahd_patch0_func, 642, 1, 1 },
+	{ ahd_patch13_func, 643, 14, 1 },
+	{ ahd_patch1_func, 661, 1, 2 },
+	{ ahd_patch0_func, 662, 1, 1 },
+	{ ahd_patch13_func, 663, 1, 1 },
+	{ ahd_patch1_func, 675, 1, 2 },
+	{ ahd_patch0_func, 676, 1, 1 },
+	{ ahd_patch1_func, 683, 1, 2 },
+	{ ahd_patch0_func, 684, 1, 1 },
+	{ ahd_patch19_func, 707, 1, 1 },
+	{ ahd_patch19_func, 745, 1, 1 },
+	{ ahd_patch1_func, 756, 1, 2 },
+	{ ahd_patch0_func, 757, 1, 1 },
+	{ ahd_patch1_func, 774, 1, 2 },
+	{ ahd_patch0_func, 775, 1, 1 },
+	{ ahd_patch1_func, 777, 1, 2 },
+	{ ahd_patch0_func, 778, 1, 1 },
+	{ ahd_patch1_func, 781, 1, 2 },
+	{ ahd_patch0_func, 782, 1, 1 },
+	{ ahd_patch22_func, 784, 1, 2 },
+	{ ahd_patch0_func, 785, 2, 1 },
+	{ ahd_patch23_func, 788, 4, 2 },
+	{ ahd_patch0_func, 792, 1, 1 },
+	{ ahd_patch23_func, 800, 11, 1 }
  };

  static struct cs {
@@ -1160,14 +1161,14 @@
  	{ 65, 66 },
  	{ 72, 92 },
  	{ 110, 137 },
-	{ 138, 172 },
-	{ 177, 185 },
-	{ 210, 261 },
-	{ 422, 430 },
-	{ 440, 442 },
-	{ 445, 454 },
-	{ 706, 736 },
-	{ 746, 750 }
+	{ 138, 173 },
+	{ 178, 186 },
+	{ 211, 262 },
+	{ 423, 431 },
+	{ 441, 443 },
+	{ 446, 455 },
+	{ 707, 737 },
+	{ 747, 751 }
  };

  static const int num_critical_sections = sizeof(critical_sections)
==== //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7xxx_osm.c#262 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic7xxx_osm.c ====
--- /tmp/tmp.27107.11	2004-09-27 13:34:50.148125648 -0400
+++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic7xxx_osm.c	2004-01-29 19:33:08.000000000 -0500
@@ -1,7 +1,7 @@
  /*
   * Adaptec AIC7xxx device driver for Linux.
   *
- * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7xxx_osm.c#262 $
+ * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7xxx_osm.c#263 $
   *
   * Copyright (c) 1994 John Aycock
   *   The University of Calgary Department of Computer Science.
@@ -148,6 +148,12 @@

  static int ahc_sysrq_key;

+/***************************** Global Data ************************************/
+/*
+ * Driver Initialization Status.  Used by ahc_linux_exit().
+ */
+int ahc_init_status;
+
  /*
   * Lock protecting manipulation of the ahc softc list.
   */
@@ -488,6 +494,8 @@
  static void ahc_linux_filter_inquiry(struct ahc_softc*, struct ahc_devinfo*);
  static void ahc_linux_sem_timeout(u_long arg);
  static void ahc_linux_dev_timed_unfreeze(u_long arg);
+static int __init ahc_linux_init(void);
+static void __exit ahc_linux_exit(void);
  static int  ahc_linux_queue_recovery_cmd(Scsi_Cmnd *cmd, scb_flag flag);
  static void ahc_linux_initialize_scsi_bus(struct ahc_softc *ahc);
  static void ahc_linux_size_nseg(void);
@@ -933,6 +941,7 @@
  	 */
  	spin_unlock_irq(&io_request_lock);
  #endif
+	found = 0;

  	/*
  	 * Sanity checking of Linux SCSI data structures so
@@ -943,7 +952,8 @@
  	  > offsetof(struct scsi_cmnd, host_scribble)) {
  		printf("ahc_linux_detect: SCSI data structures changed.\n");
  		printf("ahc_linux_detect: Unable to attach\n");
-		return (0);
+		ahc_init_status = -EINVAL;
+		goto done;
  	}
  	ahc_linux_size_nseg();
  #ifdef MODULE
@@ -969,11 +979,15 @@
  	ahc_list_lockinit();

  #ifdef CONFIG_PCI
-	ahc_linux_pci_init();
+	ahc_init_status = ahc_linux_pci_init();
+	if (ahc_init_status != 0)
+		goto done;
  #endif

  #ifdef CONFIG_EISA
-	ahc_linux_eisa_init();
+	ahc_init_status = ahc_linux_eisa_init();
+	if (ahc_init_status != 0)
+		goto done;
  #endif

  	/*
@@ -986,6 +1000,7 @@
  		if (ahc_linux_register_host(ahc, template) == 0)
  			found++;
  	}
+done:
  #if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
  	spin_lock_irq(&io_request_lock);
  #endif
@@ -5090,18 +5105,28 @@
  static int __init
  ahc_linux_init(void)
  {
+	int found;
+
  #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
-	return (ahc_linux_detect(&aic7xxx_driver_template) ? 0 : -ENODEV);
+	found = ahc_linux_detect(&aic7xxx_driver_template);
  #else
  	scsi_register_module(MODULE_SCSI_HA, &aic7xxx_driver_template);
-	if (aic7xxx_driver_template.present == 0) {
-		scsi_unregister_module(MODULE_SCSI_HA,
-				       &aic7xxx_driver_template);
-		return (-ENODEV);
-	}
-
-	return (0);
+	found = aic7xxx_driver_template.present;
  #endif
+#ifdef MODULE
+	if (found == 0)
+		ahc_init_status = -ENODEV;
+#endif
+	if (ahc_init_status != 0) {
+		/*
+		 * Linux will only call our exit
+		 * routine if our init function
+		 * returns 0 status.  Force cleanup
+		 * if initialization is not successful.
+		 */
+		ahc_linux_exit();
+	}
+	return (ahc_init_status);
  }

  static void __exit
==== //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7xxx_osm.h#167 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic7xxx_osm.h ====
--- /tmp/tmp.27107.12	2004-09-27 13:34:50.195118504 -0400
+++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic7xxx_osm.h	2004-01-29 19:43:50.000000000 -0500
@@ -53,7 +53,7 @@
   * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
   * POSSIBILITY OF SUCH DAMAGES.
   *
- * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7xxx_osm.h#167 $
+ * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7xxx_osm.h#168 $
   *
   */
  #ifndef _AIC7XXX_LINUX_H_
@@ -219,6 +219,7 @@
  }

  /**************************** Initialization **********************************/
+extern int	ahc_init_status;
  int		ahc_linux_register_host(struct ahc_softc *,
  					Scsi_Host_Template *);

@@ -249,7 +250,7 @@

  #ifdef CONFIG_EISA
  extern uint32_t aic7xxx_probe_eisa_vl;
-void			 ahc_linux_eisa_init(void);
+int			 ahc_linux_eisa_init(void);
  void			 ahc_linux_eisa_exit(void);
  int			 aic7770_map_registers(struct ahc_softc *ahc,
  					       u_int port);
==== //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7xxx_osm_pci.c#53 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic7xxx_osm_pci.c ====
--- /tmp/tmp.27107.13	2004-09-27 13:34:50.234112576 -0400
+++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic7xxx_osm_pci.c	2004-01-29 18:08:01.000000000 -0500
@@ -36,7 +36,7 @@
   * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
   * POSSIBILITY OF SUCH DAMAGES.
   *
- * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7xxx_osm_pci.c#53 $
+ * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7xxx_osm_pci.c#56 $
   */

  #include "aic7xxx_osm.h"
@@ -47,6 +47,8 @@
   */
  #include "aiclib_pci.c"

+static int	ahc_pci_module_registered;
+
  static int	ahc_linux_pci_dev_probe(struct pci_dev *pdev,
  					const struct pci_device_id *ent);
  static int	ahc_linux_pci_reserve_io_region(struct ahc_softc *ahc,
@@ -160,6 +162,13 @@
  	}
  	pci_set_master(pdev);

+	if (aic_set_consistent_dma_mask(ahc, 0xFFFFFFFF) != 0) {
+		printk(KERN_WARNING "aic7xxx: Unable to set"
+		       "coherent DMA mask.\n");
+		ahc_free(ahc);
+		return (-ENOMEM);
+	}
+
  	mask_39bit = (bus_addr_t)0x7FFFFFFFFFULL;
  	if (sizeof(bus_addr_t) > 4
  	 && ahc_linux_get_memsize() > 0x80000000
@@ -167,7 +176,12 @@
  		ahc->flags |= AHC_39BIT_ADDRESSING;
  		ahc->platform_data->hw_dma_mask = mask_39bit;
  	} else {
-		aic_set_dma_mask(ahc, 0xFFFFFFFF);
+		if (aic_set_dma_mask(ahc, 0xFFFFFFFF) != 0) {
+			printk(KERN_WARNING "aic7xxx: Unable to set data "
+			       "DMA mask.\n");
+			ahc_free(ahc);
+			return (-ENOMEM);
+		}
  		ahc->platform_data->hw_dma_mask = 0xFFFFFFFF;
  	}
  	error = ahc_pci_config(ahc, entry);
@@ -191,13 +205,19 @@
  int
  ahc_linux_pci_init(void)
  {
-	return (pci_module_init(&aic7xxx_pci_driver));
+	int error;
+	
+	error = pci_module_init(&aic7xxx_pci_driver);
+	if (error == 0)
+		ahc_pci_module_registered = 1;
+	return (error);
  }

  void
  ahc_linux_pci_exit(void)
  {
-	pci_unregister_driver(&aic7xxx_pci_driver);
+	if (ahc_pci_module_registered != 0)
+		pci_unregister_driver(&aic7xxx_pci_driver);
  }

  static int
==== //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aiclib.c#16 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aiclib.c ====
--- /tmp/tmp.27107.14	2004-09-27 13:34:50.494073056 -0400
+++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aiclib.c	2004-01-29 16:43:07.000000000 -0500
@@ -1504,6 +1504,8 @@
  	map = malloc(sizeof(*map), M_DEVBUF, M_NOWAIT);
  	if (map == NULL)
  		return (ENOMEM);
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
  	/*
  	 * Although we can dma data above 4GB, our
  	 * coherent memory is below 4GB for
@@ -1512,8 +1514,11 @@
  	 * our dma mask when doing allocations.
  	 */
  	aic_set_dma_mask(aic, 0xFFFFFFFF);
+#endif
  	*vaddr = aic_alloc_coherent(aic, dmat->maxsize, &map->bus_addr);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
  	aic_set_dma_mask(aic, aic->platform_data->hw_dma_mask);
+#endif
  	if (*vaddr == NULL)
  		return (ENOMEM);
  	*mapp = map;
==== //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aiclib.h#35 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aiclib.h ====
--- /tmp/tmp.27107.15	2004-09-27 13:34:50.871015752 -0400
+++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aiclib.h	2004-01-29 17:56:56.000000000 -0500
@@ -332,6 +332,8 @@
  #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)

  #define aic_set_dma_mask(aic, mask) dma_set_mask(aic->dev_softc, mask)
+#define aic_set_consistent_dma_mask(aic, mask) \
+	pci_set_consistent_dma_mask(aic_dev_to_pci_dev(aic->dev_softc), mask)

  #elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,3)

@@ -341,6 +343,9 @@
  #define aic_set_dma_mask(aic, mask) 			\
  	((aic)->dev_softc == NULL ? 0 : pci_set_dma_mask(aic->dev_softc, mask))

+/* Always successfull in 2.4.X kernels */
+#define aic_set_consistent_dma_mask(aic, mask) (0)
+
  #else
  /*
   * Device softc is NULL for EISA devices.
@@ -350,6 +355,10 @@
      (((aic)->dev_softc == NULL)				\
       ? 0						\
       : (((aic)->dev_softc->dma_mask = mask) && 0))
+
+/* Always successfull in 2.4.X kernels */
+#define aic_set_consistent_dma_mask(aic, mask) (0)
+
  #endif

  /************************* Host Template Macros *******************************/



                 reply	other threads:[~2004-09-28 13:07 UTC|newest]

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

Reply instructions:

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

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

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

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

  git send-email \
    --in-reply-to=41596200.3070408@adaptec.com \
    --to=luben_tuikov@adaptec.com \
    --cc=linux-scsi@vger.kernel.org \
    /path/to/YOUR_REPLY

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

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