diff options
author | groudier <groudier@FreeBSD.org> | 2000-06-13 20:17:41 +0000 |
---|---|---|
committer | groudier <groudier@FreeBSD.org> | 2000-06-13 20:17:41 +0000 |
commit | c859e3ccfbf4963472ba1374f7ea67b524d43395 (patch) | |
tree | b4840096c2672d1538ee69d74d7b70b4c900eb76 /sys/dev/sym | |
parent | 503ac79e5b3af79b3d265c04e310fb4025531468 (diff) | |
download | FreeBSD-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.c | 16 |
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) |