diff --git a/sys/dev/aic7xxx/aic7xxx.seq b/sys/dev/aic7xxx/aic7xxx.seq index 4b0c96fbb73..c3050434199 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.34 1996/05/10 16:11:01 gibbs Exp $" +VERSION AIC7XXX_SEQ_VER "$Id: aic7xxx.seq,v 1.35 1996/05/21 18:32:22 gibbs Exp $" #include "../../dev/aic7xxx/aic7xxx_reg.h" @@ -254,9 +254,10 @@ select2: mov SCSIRATE,SINDIR /* - * Initialize Ultra mode setting. ndx_dtr has left our target mask - * in A. + * Initialize Ultra mode setting. */ + mov FUNCTION1,SCSIID + mov A,FUNCTION1 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 */ diff --git a/sys/i386/scsi/aic7xxx.c b/sys/i386/scsi/aic7xxx.c index 271192e933c..0ac686f2c6c 100644 --- a/sys/i386/scsi/aic7xxx.c +++ b/sys/i386/scsi/aic7xxx.c @@ -31,7 +31,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: aic7xxx.c,v 1.68 1996/05/22 00:04:12 dima Exp $ + * $Id: aic7xxx.c,v 1.69 1996/05/22 15:32:28 gibbs Exp $ */ /* * TODO: @@ -1900,9 +1900,15 @@ ahc_init(ahc) * has a valid ultra syncrate setting. */ u_char rate = target_settings & 0x70; - if( rate == 0x00 || rate == 0x10 || - rate == 0x20 ) - ultraenable |= (0x01 << i); + if(rate == 0x00 || rate == 0x10 || + rate == 0x20 || rate == 0x40) { + if(rate == 0x40) { + /* Treat 10MHz specially */ + target_settings &= ~0x70; + } + else + ultraenable |= (0x01 << i); + } } } outb(TARG_SCRATCH+i+iobase,target_settings); diff --git a/sys/pci/aic7870.c b/sys/pci/aic7870.c index 20eb453c8f1..13672e590d1 100644 --- a/sys/pci/aic7870.c +++ b/sys/pci/aic7870.c @@ -29,7 +29,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: aic7870.c,v 1.33 1996/05/12 16:25:32 gibbs Exp $ + * $Id: aic7870.c,v 1.34 1996/05/21 18:38:41 gibbs Exp $ */ #include @@ -528,7 +528,7 @@ load_seeprom(ahc) int i; int max_targ = sc.max_targets & CFMAXTARG; - for(i = 0; i <= max_targ; i++){ + for(i = 0; i < max_targ; i++){ u_char target_settings; target_settings = (sc.device_flags[i] & CFXFER) << 4; if (sc.device_flags[i] & CFSYNCH)