[382] in linux-scsi channel archive
Re: Seagate vs. TMC-8xx device probing
daemon@ATHENA.MIT.EDU (Paul Gortmaker)
Sun Jul 16 03:40:03 1995
From: Paul Gortmaker <gpg109@rsphy1.anu.edu.au>
To: linux-scsi@vger.rutgers.edu
Date: Sun, 16 Jul 1995 15:03:27 +1000 (EST)
In-Reply-To: <199505262219.QAA20587@blade.boulder.openware.com> from "Drew Eckhardt" at May 26, 95 04:19:50 pm
A while ago, someone said:
> >Hi. I have a strange problem with the installation of Linux on a
> >Compaq Deskpro 386/25 w/ a Future Domain TMC-830 SCSI card with a
> >single hard drive. It comes up with 2 or 3 extra SCSI devices on
> >boot, which cause a kernel panic. DOS, however, only finds one
and Drew replied:
> The Seagate/Future domain boards really suck, and don't allways work
> the way the programming manual says they should. If you're having
> problems, this may help -
[tip to swap CONTROL and DATA around deleted]
I just thought I'd mention that this fix works for me as well. The
card is an el-cheapo SB-Pro clone with a TMC-950 chip on it. Before I
would get bogus devices (and possibly not have my tape detected) about
60% of the time. Now it gets it right every boot. Perhaps the TMC chips
don't adhere 100% to the original Seacrate docos, and something like
the following is required.
Paul.
--- seagate.c~ Sun Jul 16 14:45:22 1995
+++ seagate.c Sun Jul 16 14:50:05 1995
@@ -847,9 +847,15 @@
* going on.
*/
cli();
- DATA = (unsigned char) ((1 << target) | (controller_type == SEAGATE ? 0x80 : 0x40));
- CONTROL = BASE_CMD | CMD_DRVR_ENABLE | CMD_SEL |
- (reselect ? CMD_ATTN : 0);
+ if (controller_type == SEAGATE) {
+ DATA = (unsigned char) ((1 << target) | (controller_type == SEAGATE ? 0x80 : 0x40));
+ CONTROL = BASE_CMD | CMD_DRVR_ENABLE | CMD_SEL |
+ (reselect ? CMD_ATTN : 0);
+ } else {
+ CONTROL = BASE_CMD | CMD_DRVR_ENABLE | CMD_SEL |
+ (reselect ? CMD_ATTN : 0);
+ DATA = (unsigned char) ((1 << target) | (controller_type == SEAGATE ? 0x80 : 0x40));
+ }
sti();
while (!((status_read = STATUS) & STAT_BSY) &&
(jiffies < clock) && !st0x_aborted)