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