Subject: Adaptec 78xx driver testers wanted
To: None <current-users@netbsd.org>
From: Frank van der Linden <frank@wins.uva.nl>
List: current-users
Date: 03/07/2000 02:31:32
In order to be able to support the adaptec 789x chipset, I ported
the newer FreeBSD ahc driver by Justin Gibbs to NetBSD.

The result can be found in

	ftp://ftp.nl.netbsd.org:/pub/NetBSD/fvdl/ahc-03072000.tgz

The code should drop into -current, in your src/ dir.

Caveats:
	* I didn't do the EISA and VL/ISA frontends yet, so only
	  PCI is supported right now (but the others are easy to
	  add). As such, compiling a kernel with ahc at eisa or
	  ahc at isa will fail; if you want to test this driver,
	  make sure that they are not in your kernel config.
	* It doesn't do tagged queueing yet, but the old version of
	  the driver barely (and only optionally) supported this,
	  as does or SCSI subsystem (but this will improve in the
	  future). Same goes for target mode.
	* It has only been tested on the i386 port. I added the code
	  to byteswap some fields of DMA-ed structures, but I haven't
	  tested this.

The code contains some hacks to force the driver into the current NetBSD
SCSI framework, and still contains a few more verbose printfs at boottime,
but it works for me. It's stable so far on my on-board 7890 (Asus P2B-LS
board). I'd really appreciate it if people could test this, I'd like to
see it included in the next release, 1.5, which should hopefully not
be too far off.

If you test the code, let me know what results you get, both good
and bad. I'm interested in all chipsets, not just 789x. It works
for me, but be careful, don't trust any important data to it.

Relevant pieces of the bootmessages of my machine are appended below.

- Frank

ahc0 at pci0 dev 6 function 0
ahc0: interrupting at irq 9
ahc0: Reading SEEPROM...done.
ahc0: Manual LVD Termination
ahc0: BIOS eeprom is present
ahc0: Secondary High byte termination Enabled
ahc0: Secondary Low byte termination Enabled
ahc0: Primary Low Byte termination Enabled
ahc0: Primary High Byte termination Enabled
ahc0: aic7890/91 ahc0: dmamem for shared data at phys 3000 virt c97f3000 nseg 1 size 768
ahc0: dmamem for hardware SCB structures at phys 4000 virt c97f4000 nseg 1 size 16320
ahc0: dmamem for sense buffers at phys 8000 virt c97f8000 nseg 1 size 8160
ahc0: dmamem for SG space at phys a000 virt c97fa000 nseg 1 size 4096
Wide Channel A, SCSI Id=7, 16/255 SCBs
ahc0: SCB physaddr 4000
ahc0: ID physaddr 3000
DISCENABLE == 0xffffffff
ULTRAENB == 0x0
scsibus0 at ahc0 channel 0: 16 targets, 8 luns per target
[...]
scsibus0: waiting 2 seconds for devices to settle...
cd0 at scsibus0 targ 3 lun 0: <PLEXTOR, CD-ROM PX-32TS, 1.02> SCSI2 5/cdrom removable
cd1 at scsibus0 targ 4 lun 0: <PLEXTOR, CD-R   PX-W124TS, 1.01> SCSI2 5/cdrom removable
ahc0:A:5: refuses WIDE negotiation.  Using 8bit transfers
ahc0:A:5: refuses synchronous negotiation. Using asynchronous transfers
ss0 at scsibus0 targ 5 lun 0: <UMAX, Astra 1220S, V1.2> SCSI2 6/scanner fixed
sd0 at scsibus0 targ 6 lun 0: <QUANTUM, ATLAS IV 9 WLS, 0A0A> SCSI3 0/direct fixed
sd0: 8761 MB, 13816 cyl, 4 head, 324 sec, 512 bytes/sect x 17942584 sectors