summaryrefslogtreecommitdiffstats
path: root/sys/i386/scsi
diff options
context:
space:
mode:
authorgibbs <gibbs@FreeBSD.org>1995-05-01 18:43:14 +0000
committergibbs <gibbs@FreeBSD.org>1995-05-01 18:43:14 +0000
commit4844e933103f7ecc19603fa589904bb7ff80c174 (patch)
treee4420afd73429188673d3eb95f877cce0bedda64 /sys/i386/scsi
parentd1933403527b703bb653af52bbc05de8f99c7f50 (diff)
downloadFreeBSD-src-4844e933103f7ecc19603fa589904bb7ff80c174.zip
FreeBSD-src-4844e933103f7ecc19603fa589904bb7ff80c174.tar.gz
Aaron Daily of Adaptec has informed me that some form of paged SCB
algorithm is used on aic7770 Rev E or higher chips to improve perfomance. This required a hardware change but we don't know exactly what (most likely some special register to do fast SCB indexing into host memory), and we are not at all sure that there are more than 4 SCBs on these chips. This probe will still classify the revision of the aic7xxx, but we now default to 4 SCBs (at least until we know more of what was done). This also fixes a bug in the timeout routine where we cleared a flag too soon making it imposible to enter one section of the routine. Submitted by: Timeout bug - Dan Eischen <deischen@iworks.InterWorks.org>
Diffstat (limited to 'sys/i386/scsi')
-rw-r--r--sys/i386/scsi/aic7xxx.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/sys/i386/scsi/aic7xxx.c b/sys/i386/scsi/aic7xxx.c
index b0176569..cd1be68 100644
--- a/sys/i386/scsi/aic7xxx.c
+++ b/sys/i386/scsi/aic7xxx.c
@@ -24,7 +24,7 @@
*
* commenced: Sun Sep 27 18:14:01 PDT 1992
*
- * $Id: aic7xxx.c,v 1.23 1995/04/27 17:47:16 gibbs Exp $
+ * $Id: aic7xxx.c,v 1.24 1995/05/01 09:49:45 gibbs Exp $
*/
/*
* TODO:
@@ -1510,9 +1510,9 @@ ahc_init(unit)
{
/*
* See if we have a Rev E or higher
- * aic7770. If so, use 16 SCBs.
- * Anything below a Rev E will have a
- * R/O autoflush disable configuration bit.
+ * aic7770. Anything below a Rev E will
+ * have a R/O autoflush disable configuration
+ * bit.
*/
u_char sblkctl_orig;
sblkctl_orig = inb(SBLKCTL + iobase);
@@ -1522,7 +1522,6 @@ ahc_init(unit)
if(sblkctl != sblkctl_orig)
{
printf("aic7770 >= Rev E, ");
- ahc->maxscbs = 0x10;
/*
* Ensure autoflush is enabled
*/
@@ -2113,7 +2112,6 @@ ahc_abort_scb( unit, ahc, scb )
goto done;
}
scb_control = inb(SCBARRAY + iobase);
- scb_control &= ~SCB_DIS;
if( scb_control & SCB_DIS ) {
scb_control &= ~SCB_DIS;
outb(SCBARRAY + iobase, scb_control);
OpenPOWER on IntegriCloud