summaryrefslogtreecommitdiffstats
path: root/sys/dev/aic7xxx
diff options
context:
space:
mode:
authorgibbs <gibbs@FreeBSD.org>1996-05-21 18:32:23 +0000
committergibbs <gibbs@FreeBSD.org>1996-05-21 18:32:23 +0000
commit142e4effbe9ff909cc9cd894c64d9530cf37dc55 (patch)
tree28613edb9a508474a4198c91e770398d801cfe1a /sys/dev/aic7xxx
parentbbabd3ea4b33f65a20a1387c096175a018526a50 (diff)
downloadFreeBSD-src-142e4effbe9ff909cc9cd894c64d9530cf37dc55.zip
FreeBSD-src-142e4effbe9ff909cc9cd894c64d9530cf37dc55.tar.gz
Enable/Disable Ultra mode on a per target basis. This allows the driver
to use the full range of settings from 3.6-20MHz on any target.
Diffstat (limited to 'sys/dev/aic7xxx')
-rw-r--r--sys/dev/aic7xxx/aic7xxx.seq20
-rw-r--r--sys/dev/aic7xxx/aic7xxx_reg.h4
2 files changed, 21 insertions, 3 deletions
diff --git a/sys/dev/aic7xxx/aic7xxx.seq b/sys/dev/aic7xxx/aic7xxx.seq
index 5a92ca2..4b0c96f 100644
--- a/sys/dev/aic7xxx/aic7xxx.seq
+++ b/sys/dev/aic7xxx/aic7xxx.seq
@@ -39,7 +39,7 @@
*
*-M************************************************************************/
-VERSION AIC7XXX_SEQ_VER "$Id: aic7xxx.seq,v 1.33 1996/04/20 21:20:29 gibbs Exp $"
+VERSION AIC7XXX_SEQ_VER "$Id: aic7xxx.seq,v 1.34 1996/05/10 16:11:01 gibbs Exp $"
#include "../../dev/aic7xxx/aic7xxx_reg.h"
@@ -253,13 +253,28 @@ select2:
call ndx_dtr
mov SCSIRATE,SINDIR
+/*
+ * Initialize Ultra mode setting. ndx_dtr has left our target mask
+ * in A.
+ */
+ and SINDEX,0xdf,SXFRCTL0 /* default to Ultra disabled */
+ test SCSIID, 0x80 jnz ultra_b /* Target ID > 7 */
+ test SBLKCTL, SELBUSB jnz ultra_b /* Second channel device */
+ test ULTRA_ENB,A jz set_sxfrctl0
+ or SINDEX, ULTRAEN jmp set_sxfrctl0
+ultra_b:
+ test ULTRA_ENB_B,A jz set_sxfrctl0
+ or SINDEX, ULTRAEN
+
+set_sxfrctl0:
+ mov SXFRCTL0,SINDEX
+
mvi SCSISEQ,ENAUTOATNP /*
* ATN on parity errors
* for "in" phases
*/
mvi CLRSINT1,CLRBUSFREE
mvi CLRSINT0,0x60 /* CLRSELDI|CLRSELDO */
-
/*
* Main loop for information transfer phases. If BSY is false, then
* we have a bus free condition, expected or not. Otherwise, wait
@@ -283,6 +298,7 @@ ITloop:
cmp A,P_MESGIN je p_mesgin
mvi INTSTAT,BAD_PHASE /* unknown phase - signal driver */
+ jmp ITloop /* Try reading the bus again. */
p_dataout:
mvi DMAPARAMS,0x7d /*
diff --git a/sys/dev/aic7xxx/aic7xxx_reg.h b/sys/dev/aic7xxx/aic7xxx_reg.h
index 4354f6f..5226dbb 100644
--- a/sys/dev/aic7xxx/aic7xxx_reg.h
+++ b/sys/dev/aic7xxx/aic7xxx_reg.h
@@ -28,7 +28,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: aic7xxx_reg.h,v 1.9 1996/05/10 16:11:03 gibbs Exp $
+ * $Id: aic7xxx_reg.h,v 1.10 1996/05/10 16:28:00 gibbs Exp $
*/
/*
@@ -739,6 +739,8 @@
#define SAVED_LINKPTR 0x050
#define SAVED_SCBPTR 0x051
+#define ULTRA_ENB 0x052
+#define ULTRA_ENB_B 0x053
#define SCSICONF 0x05a
#define RESET_SCSI 0x40
OpenPOWER on IntegriCloud