summaryrefslogtreecommitdiffstats
path: root/sys/dev/sym
diff options
context:
space:
mode:
authorgroudier <groudier@FreeBSD.org>2000-06-13 20:17:41 +0000
committergroudier <groudier@FreeBSD.org>2000-06-13 20:17:41 +0000
commitc859e3ccfbf4963472ba1374f7ea67b524d43395 (patch)
treeb4840096c2672d1538ee69d74d7b70b4c900eb76 /sys/dev/sym
parent503ac79e5b3af79b3d265c04e310fb4025531468 (diff)
downloadFreeBSD-src-c859e3ccfbf4963472ba1374f7ea67b524d43395.zip
FreeBSD-src-c859e3ccfbf4963472ba1374f7ea67b524d43395.tar.gz
Fix a problem of user settings from TEKRAM NVRAM
layout introduced in driver 1.5.3. The driver was confused by the bogus TEKRAM table used to translate user sync. setting to SCSI sync. factor. Btw, the new TEKRAM DC-390 U3D and U3W Ultra-160 controllers seem to be using BIOS from SYMBIOS/LSI and thus SYMBIOS NVRAM layout. If that means that TEKRAM will now offer real SYMBIOS software compatible SCSI controllers, then it is a *GREAT NEWS*.
Diffstat (limited to 'sys/dev/sym')
-rw-r--r--sys/dev/sym/sym_hipd.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/sys/dev/sym/sym_hipd.c b/sys/dev/sym/sym_hipd.c
index 65befbb..c15509f 100644
--- a/sys/dev/sym/sym_hipd.c
+++ b/sys/dev/sym/sym_hipd.c
@@ -57,7 +57,7 @@
/* $FreeBSD$ */
-#define SYM_DRIVER_NAME "sym-1.6.1-20000608"
+#define SYM_DRIVER_NAME "sym-1.6.2-20000614"
/* #define SYM_DEBUG_GENERIC_SUPPORT */
@@ -923,7 +923,7 @@ static char *sym_scsi_bus_mode(int mode)
}
/*
- * Some poor sync table that refers to Tekram NVRAM layout.
+ * Some poor and bogus sync table that refers to Tekram NVRAM layout.
*/
#ifdef SYM_CONF_NVRAM_SUPPORT
static u_char Tekram_sync[16] =
@@ -2960,11 +2960,15 @@ static int sym_prepare_setting(hcb_p np, struct sym_nvram *nvram)
sym_nvram_setup_target (np, i, nvram);
/*
- * For now, guess PPR support from the period.
+ * For now, guess PPR/DT support from the period
+ * and BUS width.
*/
- if (tp->tinfo.user.period <= 9) {
- tp->tinfo.user.options |= PPR_OPT_DT;
- tp->tinfo.user.offset = np->maxoffs_dt;
+ if (np->features & FE_ULTRA3) {
+ if (tp->tinfo.user.period <= 9 &&
+ tp->tinfo.user.width == BUS_16_BIT) {
+ tp->tinfo.user.options |= PPR_OPT_DT;
+ tp->tinfo.user.offset = np->maxoffs_dt;
+ }
}
if (!tp->usrtags)
OpenPOWER on IntegriCloud