linux-scsi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [patch 4/28] Sync up drivers/scsi/aic7xxx
@ 2004-09-28 13:04 Luben Tuikov
  0 siblings, 0 replies; only message in thread
From: Luben Tuikov @ 2004-09-28 13:04 UTC (permalink / raw)
  To: SCSI Mailing List

Sync up drivers/scsi/aic7xxx/. (2241-2281)

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

==== //depot/aic7xxx/aic7xxx/aic79xx.seq#99 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx.seq ====
--- /tmp/tmp.26212.0	2004-09-27 12:47:56.473869152 -0400
+++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx.seq	2003-08-26 16:16:49.000000000 -0400
@@ -40,7 +40,7 @@
  * $FreeBSD$
  */

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

@@ -490,6 +490,9 @@
SET_SRC_MODE	M_SCSI;
SET_DST_MODE	M_SCSI;
select_in:
+	if ((ahd->bugs & AHD_FAINT_LED_BUG) != 0) {
+		or	SBLKCTL, DIAGLEDEN|DIAGLEDON;
+	}
	if ((ahd->bugs & AHD_BUSFREEREV_BUG) != 0) {
		/*
		 * Test to ensure that the bus has not
@@ -527,6 +530,9 @@
SET_SRC_MODE	M_SCSI;
SET_DST_MODE	M_SCSI;
select_out:
+	if ((ahd->bugs & AHD_FAINT_LED_BUG) != 0) {
+		or	SBLKCTL, DIAGLEDEN|DIAGLEDON;
+	}
BEGIN_CRITICAL;
	/* Clear out all SCBs that have been successfully sent. */
	if ((ahd->bugs & AHD_SENT_SCB_UPDATE_BUG) != 0) {
@@ -1658,7 +1664,7 @@
		 * savepointer in the current FIFO.  We do this so that
		 * a pending CTXTDONE or SAVEPTR is visible in the active
		 * FIFO.  This status is the only way we can detect if we
-		 * have lost the race (e.g. host paused us) and our attepts
+		 * have lost the race (e.g. host paused us) and our attempts
		 * to disable the channel occurred after all REQs were
		 * already seen and acked (REQINIT never comes true).
		 */
==== //depot/aic7xxx/aic7xxx/aic79xx.c#203 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_core.c ====
--- /tmp/tmp.26212.1	2004-09-27 12:47:58.273595552 -0400
+++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_core.c	2003-08-11 19:38:14.000000000 -0400
@@ -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#203 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic79xx.c#206 $
  *
  * $FreeBSD$
  */
@@ -1065,7 +1065,7 @@
			ahd_outb(ahd, SAVED_LUN, 0);
			ahd_outb(ahd, SEQ_FLAGS, 0);
			ahd_assert_atn(ahd);
-			scb->flags &= ~(SCB_PACKETIZED);
+			scb->flags &= ~SCB_PACKETIZED;
			scb->flags |= SCB_ABORT|SCB_CMDPHASE_ABORT;
			ahd_freeze_devq(ahd, scb);
			ahd_set_transaction_status(scb, CAM_REQUEUE_REQ);
@@ -9082,19 +9082,16 @@
ahd_timeout(struct scb *scb)
{
	struct ahd_softc *ahd;
-	u_long s;

	ahd = scb->ahd_softc;
-	ahd_lock(ahd, &s);
	if ((scb->flags & SCB_ACTIVE) != 0) {
-		if ((scb->flags & SCB_TIMEDOUT) != 0) {
+		if ((scb->flags & SCB_TIMEDOUT) == 0) {
			LIST_INSERT_HEAD(&ahd->timedout_scbs, scb,
					 timedout_links);
			scb->flags |= SCB_TIMEDOUT;
		}
		ahd_wakeup_recovery_thread(ahd);
	}
-	ahd_unlock(ahd, &s);
}

/*
@@ -9310,14 +9307,14 @@
	}
	
	/*
-	 * Any remaining SCBs were not the "culprit", so give
-	 * them a new lease on life.
+	 * Any remaining SCBs were not the "culprit", so remove
+	 * them from the timeout list.  The timer for these commands
+	 * will be reset once the recovery SCB completes.
	 */
	while ((scb = LIST_FIRST(&ahd->timedout_scbs)) != NULL) {

		LIST_REMOVE(scb, timedout_links);
		scb->flags &= ~SCB_TIMEDOUT;
-		ahd_scb_timer_reset(scb, ahd_get_timeout(scb));
	}

	ahd_unpause(ahd);
@@ -9446,7 +9443,7 @@
{
	int cnt;

-	cnt = 20;
+	cnt = 5000;
	while ((ahd_inb(ahd, SEESTAT) & (SEEARBACK|SEEBUSY)) != 0 && --cnt)
		ahd_delay(5);

==== //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_osm.c#172 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_osm.c ====
--- /tmp/tmp.26212.2	2004-09-27 12:47:58.963490672 -0400
+++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_osm.c	2003-08-20 17:41:40.000000000 -0400
@@ -1,7 +1,7 @@
/*
  * Adaptec AIC79xx device driver for Linux.
  *
- * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_osm.c#172 $
+ * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_osm.c#175 $
  *
  * --------------------------------------------------------------------------
  * Copyright (c) 1994-2000 Justin T. Gibbs.
@@ -890,8 +890,33 @@
			ahd_unlock(ahd, &s);
			break;
		}
+
+		/*
+		 * Don't bother the recovery handler if the
+		 * list has been cleared by a previous run
+		 * of the handler.  This can happen when
+		 * several SCBs timeout before our handler
+		 * can run causing our semaphore to be up'ed
+		 * repeatedly.  The extra calls need to be
+		 * avoided so that the recovery handler doesn't
+		 * confuse this case with timeouts occuring
+		 * due to interrupts failing to function.
+		 */
+		if (LIST_EMPTY(&ahd->timedout_scbs) != 0) {
+			ahd_unlock(ahd, &s);
+			continue;
+		}
+
		ahd_unlock(ahd, &s);
		ahd_recover_commands(ahd);
+
+		/*
+		 * Process any pent up completions.
+		 */
+		ahd_lock(ahd, &s);
+		ahd_schedule_runq(ahd);
+		ahd_linux_run_complete_queue(ahd);
+		ahd_unlock(ahd, &s);
	}
	up(&ahd->platform_data->recovery_ending_sem);
	return(0);
@@ -973,7 +998,7 @@
		LIST_FOREACH(list_scb, &ahd->pending_scbs, pending_links) {

			scsi_delete_timer(list_scb->io_ctx);
-			scb->platform_data->flags &= ~AHD_TIMEOUT_ACTIVE;
+			list_scb->platform_data->flags &= ~AHD_TIMEOUT_ACTIVE;
		}
	}
}
@@ -982,15 +1007,27 @@
ahd_platform_timeout(struct scsi_cmnd *cmd)
{

-	if (AHD_DV_CMD(cmd) == 0) {
+	if (AHD_DV_CMD(cmd) != 0) {

		ahd_linux_dv_timeout(cmd);
	} else {
+		struct	ahd_softc *ahd;
		struct	scb *scb;
+		u_long	s;

		scb = (struct scb *)cmd->host_scribble;
-		scb->platform_data->flags &= ~AHD_TIMEOUT_ACTIVE;
-		ahd_timeout(scb);
+		ahd = scb->ahd_softc;
+		ahd_lock(ahd, &s);
+
+		/*
+		 * Skip timeouts that fire just after
+		 * they have been cancelled.
+		 */
+		if ((scb->platform_data->flags & AHD_TIMEOUT_ACTIVE) != 0) {
+			scb->platform_data->flags &= ~AHD_TIMEOUT_ACTIVE;
+			ahd_timeout(scb);
+		}
+		ahd_unlock(ahd, &s);
	}
}

@@ -1197,6 +1234,7 @@
		printf("%s: aic79xx_linux_queue -"
		       "CDB length of %d exceeds max!\n",
		       ahd_name(ahd), cmd->cmd_len);
+		return (0);
	}

	/*
@@ -3080,6 +3118,7 @@
		spin_unlock_irqrestore(&io_request_lock, s);
#endif
		down_interruptible(&ahd->platform_data->dv_cmd_sem);
+
		/*
		 * Wait for the SIMQ to be released so that DV is the
		 * only reason the queue is frozen.
@@ -4285,6 +4324,7 @@
		TAILQ_REMOVE(&dev->busyq, acmd, acmd_links.tqe);
		scb->io_ctx = cmd;
		scb->platform_data->dev = dev;
+		scb->platform_data->flags = 0;
		hscb = scb->hscb;
		cmd->host_scribble = (char *)scb;

@@ -4643,7 +4683,11 @@
		ahd_dump_card_state(ahd);
		panic("Stopping for safety");
	}
+
	LIST_REMOVE(scb, pending_links);
+	if ((scb->flags & SCB_TIMEDOUT) != 0)
+		LIST_REMOVE(scb, timedout_links);
+
	cmd = scb->io_ctx;
	dev = scb->platform_data->dev;
	dev->active--;
==== //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_osm.h#138 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_osm.h ====
--- /tmp/tmp.26212.3	2004-09-27 12:47:59.226450696 -0400
+++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_osm.h	2003-08-20 18:13:29.000000000 -0400
@@ -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#138 $
+ * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_osm.h#140 $
  *
  */
#ifndef _AIC79XX_LINUX_H_
@@ -266,7 +266,7 @@
#define AHD_SCSI_HAS_HOST_LOCK 0
#endif

-#define AIC79XX_DRIVER_VERSION "1.3.11"
+#define AIC79XX_DRIVER_VERSION "2.0.0"

/**************************** Front End Queues ********************************/
/*
==== //depot/aic7xxx/aic7xxx/aic79xx_pci.c#77 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_pci.c ====
--- /tmp/tmp.26212.4	2004-09-27 12:47:59.315437168 -0400
+++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic79xx_pci.c	2003-08-08 18:00:03.000000000 -0400
@@ -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#77 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic79xx_pci.c#78 $
  *
  * $FreeBSD$
  */
@@ -701,6 +701,7 @@
	 * Now set the termination based on what we found.
	 */
	sxfrctl1 = ahd_inb(ahd, SXFRCTL1) & ~STPWEN;
+	ahd->flags &= ~AHD_TERM_ENB_A;
	if ((termctl & FLX_TERMCTL_ENPRILOW) != 0) {
		ahd->flags |= AHD_TERM_ENB_A;
		sxfrctl1 |= STPWEN;
==== //depot/aic7xxx/aic7xxx/aic7xxx_93cx6.c#17 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic7xxx_93cx6.c ====
--- /tmp/tmp.26212.5	2004-09-27 12:47:59.346432456 -0400
+++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic7xxx_93cx6.c	2003-08-11 17:01:38.000000000 -0400
@@ -28,7 +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 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic7xxx_93cx6.c#18 $
  *
  * $FreeBSD$
  */
@@ -81,14 +81,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 +230,25 @@
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 +298,7 @@
	}

	/* Put the chip back into write-protect mode */
-	send_seeprom_cmd(sd, &seeprom_ewds);
+	send_seeprom_cmd(sd, ewds);
	reset_seeprom(sd);

	return (1);
==== //depot/aic7xxx/aic7xxx/aic7xxx.c#135 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic7xxx_core.c ====
--- /tmp/tmp.26212.6	2004-09-27 12:48:00.150310248 -0400
+++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic7xxx_core.c	2003-08-07 17:50:20.000000000 -0400
@@ -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.c#135 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.c#136 $
  *
  * $FreeBSD$
  */
@@ -6844,19 +6844,16 @@
ahc_timeout(struct scb *scb)
{
	struct ahc_softc *ahc;
-	u_long s;

	ahc = scb->ahc_softc;
-	ahc_lock(ahc, &s);
	if ((scb->flags & SCB_ACTIVE) != 0) {
-		if ((scb->flags & SCB_TIMEDOUT) != 0) {
+		if ((scb->flags & SCB_TIMEDOUT) == 0) {
			LIST_INSERT_HEAD(&ahc->timedout_scbs, scb,
					 timedout_links);
			scb->flags |= SCB_TIMEDOUT;
		}
		ahc_wakeup_recovery_thread(ahc);
	}
-	ahc_unlock(ahc, &s);
}

/*
@@ -7131,14 +7128,14 @@
	}
	
	/*
-	 * Any remaining SCBs were not the "culprit", so give
-	 * them a new lease on life.
+	 * Any remaining SCBs were not the "culprit", so remove
+	 * them from the timeout list.  The timer for these commands
+	 * will be reset once the recovery SCB completes.
	 */
	while ((scb = LIST_FIRST(&ahc->timedout_scbs)) != NULL) {

		LIST_REMOVE(scb, timedout_links);
		scb->flags &= ~SCB_TIMEDOUT;
-		ahc_scb_timer_reset(scb, ahc_get_timeout(scb));
	}

	if (restart_needed)
==== //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7xxx_osm.c#236 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic7xxx_osm.c ====
--- /tmp/tmp.26212.7	2004-09-27 12:48:00.756218136 -0400
+++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic7xxx_osm.c	2003-08-19 17:37:57.000000000 -0400
@@ -1,7 +1,7 @@
/*
  * Adaptec AIC7xxx device driver for Linux.
  *
- * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7xxx_osm.c#236 $
+ * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7xxx_osm.c#238 $
  *
  * Copyright (c) 1994 John Aycock
  *   The University of Calgary Department of Computer Science.
@@ -878,8 +878,32 @@
			ahc_unlock(ahc, &s);
			break;
		}
+
+		/*
+		 * Don't bother the recovery handler if the
+		 * list has been cleared by a previous run
+		 * of the handler.  This can happen when
+		 * several SCBs timeout before our handler
+		 * can run causing our semaphore to be up'ed
+		 * repeatedly.  The extra calls need to be
+		 * avoided so that the recovery handler doesn't
+		 * confuse this case with timeouts occuring
+		 * due to interrupts failing to function.
+		 */
+		if (LIST_EMPTY(&ahc->timedout_scbs) != 0) {
+			ahc_unlock(ahc, &s);
+			continue;
+		}
		ahc_unlock(ahc, &s);
		ahc_recover_commands(ahc);
+
+		/*
+		 * Process any pent up completions.
+		 */
+		ahc_lock(ahc, &s);
+		ahc_schedule_runq(ahc);
+		ahc_linux_run_complete_queue(ahc);
+		ahc_unlock(ahc, &s);
	}
	up(&ahc->platform_data->recovery_ending_sem);
	return(0);
@@ -961,7 +985,7 @@
		LIST_FOREACH(list_scb, &ahc->pending_scbs, pending_links) {

			scsi_delete_timer(list_scb->io_ctx);
-			scb->platform_data->flags &= ~AHC_TIMEOUT_ACTIVE;
+			list_scb->platform_data->flags &= ~AHC_TIMEOUT_ACTIVE;
		}
	}
}
@@ -970,15 +994,27 @@
ahc_platform_timeout(struct scsi_cmnd *cmd)
{

-	if (AHC_DV_CMD(cmd) == 0) {
+	if (AHC_DV_CMD(cmd) != 0) {

		ahc_linux_dv_timeout(cmd);
	} else {
		struct	scb *scb;
+		struct	ahc_softc *ahc;
+		u_long	s;

		scb = (struct scb *)cmd->host_scribble;
-		scb->platform_data->flags &= ~AHC_TIMEOUT_ACTIVE;
-		ahc_timeout(scb);
+		ahc = scb->ahc_softc;
+		ahc_lock(ahc, &s);
+
+		/*
+		 * Skip timeouts that fire just after
+		 * they have been cancelled.
+		 */
+		if ((scb->platform_data->flags & AHC_TIMEOUT_ACTIVE) != 0) {
+			scb->platform_data->flags &= ~AHC_TIMEOUT_ACTIVE;
+			ahc_timeout(scb);
+		}
+		ahc_unlock(ahc, &s);
	}
}

@@ -1185,6 +1221,7 @@
		printf("%s: aic7xxx_linux_queue -"
		       "CDB length of %d exceeds max!\n",
		       ahc_name(ahc), cmd->cmd_len);
+		return (0);
	}

	/*
@@ -4318,6 +4355,8 @@
	struct	   ahc_linux_device *dev;

	LIST_REMOVE(scb, pending_links);
+	if ((scb->flags & SCB_TIMEDOUT) != 0)
+		LIST_REMOVE(scb, timedout_links);
	if ((scb->flags & SCB_UNTAGGEDQ) != 0) {
		struct scb_tailq *untagged_q;
		int target_offset;
==== //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7xxx_osm.h#152 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic7xxx_osm.h ====
--- /tmp/tmp.26212.8	2004-09-27 12:48:00.869200960 -0400
+++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic7xxx_osm.h	2003-08-12 14:22:12.000000000 -0400
@@ -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#152 $
+ * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7xxx_osm.h#153 $
  *
  */
#ifndef _AIC7XXX_LINUX_H_
@@ -278,7 +278,7 @@
#define AHC_SCSI_HAS_HOST_LOCK 0
#endif

-#define AIC7XXX_DRIVER_VERSION "6.2.36"
+#define AIC7XXX_DRIVER_VERSION "6.2.37"

/**************************** Front End Queues ********************************/
/*
==== //depot/aic7xxx/aic7xxx/aic7xxx_pci.c#69 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic7xxx_pci.c ====
--- /tmp/tmp.26212.9	2004-09-27 12:48:01.102165544 -0400
+++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic7xxx_pci.c	2003-08-08 19:11:01.000000000 -0400
@@ -39,7 +39,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_pci.c#69 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic7xxx_pci.c#70 $
  *
  * $FreeBSD$
  */
@@ -1388,6 +1388,10 @@
			sd.sd_chip = C56_66;
		}
		ahc_release_seeprom(&sd);
+
+		/* Remember the SEEPROM type for later */
+		if (sd.sd_chip == C56_66)
+			ahc->flags |= AHC_LARGE_SEEPROM;
	}

	if (!have_seeprom) {
==== //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7xxx_proc.c#29 - /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic7xxx_proc.c ====
--- /tmp/tmp.26212.10	2004-09-27 12:48:01.246143656 -0400
+++ /home/luben/projects/linux/2.6/linux-2.5/drivers/scsi/aic7xxx/aic7xxx_proc.c	2003-08-08 19:08:46.000000000 -0400
@@ -37,7 +37,7 @@
  * String handling code courtesy of Gerard Roudier's <groudier@club-internet.fr>
  * sym driver.
  *
- * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7xxx_proc.c#29 $
+ * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7xxx_proc.c#30 $
  */
#include "aic7xxx_osm.h"
#include "aic7xxx_inline.h"
@@ -204,7 +204,8 @@
		ahc_pause(ahc);

	if (length != sizeof(struct seeprom_config)) {
-		printf("ahc_proc_write_seeprom: incorrect buffer size\n");
+		printf("ahc_proc_write_seeprom: incorrect buffer size %d\n",
+		       length);
		goto done;
	}




^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2004-09-28 13:04 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-09-28 13:04 [patch 4/28] Sync up drivers/scsi/aic7xxx Luben Tuikov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).