Subject: Re: 'ncr' driver with HP drives?
To: None <port-i386@NetBSD.ORG>
From: Jim Howard <jiho@mail.c-zone.net>
List: port-i386
Date: 09/23/1996 17:39:14
At 02:23 PM 9/23/96 -0400, perry@piermont.com wrote:

> I've noticed all sorts of failures with the NCR driver -- most
> recently, I've been unable to have my tape drive and my disk drive
> operating simultaneously :(
>
> In general, the faster the drive, the more likely you are to have
> trouble. More recent drives are faster.
>
> If anyone has any way to fix the NCR driver (probably rewriting it?) I
> would be astonishingly grateful. Indeed, I've frequently offered a
> bottle of fine single malt scotch for anyone willing to redo the NCR
> driver...
>
> Perry

I still hate to admit it, but I exchanged e-mail with one of this driver's
original co-authors (Stefan Esser), before it emerged that there was
*nothing* wrong with the driver but *a lot* was wrong with my equipment.

I had to:

1.  Flash new firmware onto my Micropolis 4110, before it would do fast
SCSI-2 (10 MHz synchronous) transfers properly.

2.  Tinker with the PCI options in my system BIOS, mainly to turn off
write-posting if I remember right.  (ASUS SP3G motherboard, a 486 with
Intel's Saturn II chipset.)

3.  Do a low-level reformat, repartition, and reinstall everything.  I had
absent-mindedly installed over an old Linux partition.
    This same snafu choked FreeBSD on an older system with an Adaptec 1542B
(ISA bus).  Norton Utilities also froze on my DOS partition, which I'd given
part of the old Linux one.  I replaced a Quantum PD-210S (5 MHz synchronous)
before I figured out the true cause.  (Don't ask me what Linux *does*, I
have *no* idea.)

4.  Recompile the kernel with "options SCSI_DELAY=10", so my aging TEAC 2x
CD-ROM drive (asynchronous) works correctly from the start.  This delay is
used during bootup, after a SCSI bus reset, to allow screw-loose devices
time to "settle".  (No more chasing pop-fly caddies!)

I haven't had *any* trouble with the NCR driver since I did those four
things.  And I've used several versions of it, in both FreeBSD and NetBSD.
Including one that Curt Sampson had ported from FreeBSD to NetBSD 1.0, which
he sent me via e-mail so I could do 10 MHz synchronous (which is when I
found out my 4110 had a problem with that, actually).  Heck, I've even used
this driver in the new Linux 2.0.x kernel, which comes bundled with a port
of it (apparently considered superior to the NCR driver they had, although
that worked fine for me too).  And since the Utah Mach 4 microkernel
supports Linux drivers, theoretically you could run the GNU Hurd on this
driver, if the GNU Hurd runs...

As for rewriting the driver, you need more than chip manuals.  Like the
newer Adaptec chips, the NCR 53c8xx has a RISC core, and you write assembly
for a dedicated assember that generates microcode for it.  Otherwise you
hand-code the machine language.  In *addition* to the C in the driver.


--Jim Howard
  jiho@mail.c-zone.net