[390] in linux-scsi channel archive
Re: Seagate vs. TMC-8xx device probing
daemon@ATHENA.MIT.EDU (Drew Eckhardt)
Tue Jul 18 01:41:18 1995
To: Paul Gortmaker <gpg109@rsphy1.anu.edu.au>
cc: linux-scsi@vger.rutgers.edu
In-reply-to: Your message of "Sun, 16 Jul 1995 15:03:27 +1000."
<9507160503.AA04104@rsphy9.anu.edu.au>
Date: Mon, 17 Jul 1995 19:21:10 -0600
From: Drew Eckhardt <drew@poohsticks.org>
In message <9507160503.AA04104@rsphy9.anu.edu.au>, gpg109@rsphy1.anu.edu.au wri
tes:
>A while ago, someone said:
>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.
Unfortunately, it's not entirely a Seagate/Future Domain thing -
both boards exhibit the broken behavior of working with one order
of control/data assertation, but not the other :-(.
>- CONTROL = BASE_CMD | CMD_DRVR_ENABLE | CMD_SEL |
>- (reselect ? CMD_ATTN : 0);
>+ if (controller_type == SEAGATE) {
>+ DATA = (unsigned char) ((1 << target) | (controller_type == SEA
>GATE ? 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 == SEA
>GATE ? 0x80 : 0x40));
>+ }
> sti();
> while (!((status_read = STATUS) & STAT_BSY) &&
> (jiffies < clock) && !st0x_aborted)
It may be reasonable to try the first one, and if there are problems
switch to the second, perhaps execute the first INQUIRY command destined
for each target both ways and take whichever sanity checks...