Subject: Fixes to use 16 SCSI targets with FAS on Ultra 1E
To: None <port-sparc64@netbsd.org>
From: Sung-Won Chung <swchung7@hotmail.com>
List: port-sparc64
Date: 08/18/2002 10:47:42
On my Ultra 1/170E, this fix enabled FAS to recognize 16 targets, not 8
targets.
I tested with 6 additional SCSI HDDs with SCSI ID 9, 10, 11, 12, 13, 14.
I intended flags for esp driver for FAS to work as
bits 0-7: disable disconnect/rselect for SCSI target 0-7
bits 8-15: disable synchronous negotiation for SCSI target 0-7
bits 16-23: disable disconnect/rselect for SCSI target 8-15
bits 24-31: disable synchronous negotiation for SCSI target 8-15
However, since bit 16-23 is used to disable tagged queuing for SCSI target
0-7,
this is ad-hoc approach.
I also sent it as a send-pr.
Index: ncr53c9xvar.h
===================================================================
RCS file: /cvsroot/syssrc/sys/dev/ic/ncr53c9xvar.h,v
retrieving revision 1.35
diff -r1.35 ncr53c9xvar.h
73c73
< #define NCR_NTARG 8
---
>#define NCR_NTARG 16
Index: ncr53c9x.c
===================================================================
RCS file: /cvsroot/syssrc/sys/dev/ic/ncr53c9x.c,v
retrieving revision 1.94
diff -r1.94 ncr53c9x.c
280c280,283
< chan->chan_ntargets = 8; /* XXX fas has 16(not supported) */
---
> if (sc->sc_rev == NCR_VARIANT_FAS366)
> chan->chan_ntargets = 16; /* FAS366 supports 16 targets */
> else
> chan->chan_ntargets = 8;
430a434
> struct scsipi_channel *chan = &sc->sc_channel;
448c452
< for (r = 0; r < NCR_NTARG; r++) {
---
> for (r = 0; r < chan->chan_ntargets; r++) {
460c464
< for (r = 0; r < 8; r++) {
---
> for (r = 0; r < chan->chan_ntargets; r++) {
491c495
< for (r = 0; r < 8; r++) {
---
> for (r = 0; r < chan->chan_ntargets; r++) {
495,498c499,510
< ti->flags = ((sc->sc_minsync && !(sc->sc_cfflags &
(1<<(r+8))))
< ? 0 : T_SYNCHOFF) |
< ((sc->sc_cfflags & (1<<r)) ? T_RSELECTOFF : 0) |
< T_NEED_TO_RESET;
---
> if ((sc->sc_rev == NCR_VARIANT_FAS366) && (r >= 8))
> ti->flags =
> ((sc->sc_minsync && !(sc->sc_cfflags & (1<<(r+16))))
> ? 0 : T_SYNCHOFF) |
> ((sc->sc_cfflags & (1<<(r+8))) ? T_RSELECTOFF : 0) |
> T_NEED_TO_RESET;
> else
> ti->flags =
> ((sc->sc_minsync && !(sc->sc_cfflags & (1<<(r+8))))
> ? 0 : T_SYNCHOFF) |
> ((sc->sc_cfflags & (1<<r)) ? T_RSELECTOFF : 0) |
> T_NEED_TO_RESET;
2926a2939
> struct scsipi_channel *chan = &sc->sc_channel;
2932c2945
< for (t = 0; t < NCR_NTARG; t++) {
---
> for (t = 0; t < chan->chan_ntargets; t++) {
_________________________________________________________________
Chat with friends online, try MSN Messenger: http://messenger.msn.com