The Linux NCR53C8XX/SYM53C8XX drivers README file

Written by Gerard Roudier <groudier@free.fr>
21 Rue Carnot
95170 DEUIL LA BARRE - FRANCE

29 May 1999
===============================================================================

1.  Introduction
2.  Supported chips and SCSI features
3.  Advantages of the enhanced 896 driver
      3.1 Optimized SCSI SCRIPTS
      3.2 New features of the SYM53C896 (64 bit PCI dual LVD SCSI controller)
4.  Memory mapped I/O versus normal I/O
5.  Tagged command queueing
6.  Parity checking
7.  Profiling information
8.  Control commands
      8.1  Set minimum synchronous period
      8.2  Set wide size
      8.3  Set maximum number of concurrent tagged commands
      8.4  Set order type for tagged command
      8.5  Set debug mode
      8.6  Clear profile counters
      8.7  Set flag (no_disc)
      8.8  Set verbose level
      8.9  Reset all logical units of a target
      8.10 Abort all tasks of all logical units of a target
9.  Configuration parameters
10. Boot setup commands
      10.1 Syntax
      10.2 Available arguments
             10.2.1  Master parity checking
             10.2.2  Scsi parity checking
             10.2.3  Scsi disconnections
             10.2.4  Special features
             10.2.5  Ultra SCSI support
             10.2.6  Default number of tagged commands
             10.2.7  Default synchronous period factor
             10.2.8  Negotiate synchronous with all devices
             10.2.9  Verbosity level
             10.2.10 Debug mode
             10.2.11 Burst max
             10.2.12 LED support
             10.2.13 Max wide
             10.2.14 Differential mode
             10.2.15 IRQ mode
             10.2.16 Reverse probe
             10.2.17 Fix up PCI configuration space
             10.2.18 Serial NVRAM
             10.2.19 Check SCSI BUS 
             10.2.20 Exclude a host from being attached
             10.2.21 Suggest a default SCSI id for hosts
             10.2.22 Enable use of IMMEDIATE ARBITRATION
      10.3 Advised boot setup commands
      10.4 PCI configuration fix-up boot option
      10.5 Serial NVRAM support boot option
      10.6 SCSI BUS checking boot option
      10.7 IMMEDIATE ARBITRATION boot option
11. Some constants and flags of the ncr53c8xx.h header file
12. Installation
13. Architecture dependent features
14. Known problems
      14.1 Tagged commands with Iomega Jaz device
      14.2 Device names change when another controller is added
      14.3 Using only 8 bit devices with a WIDE SCSI controller.
      14.4 Possible data corruption during a Memory Write and Invalidate
      14.5 IRQ sharing problems
15. SCSI problem troubleshooting
      15.1 Problem tracking
      15.2 Understanding hardware error reports
16. Synchonous transfer negotiation tables
      16.1 Synchronous timings for 53C875 and 53C860 Ultra-SCSI controllers
      16.2 Synchronous timings for fast SCSI-2 53C8XX controllers
17. Serial NVRAM support (by Richard Waltham)
      17.1 Features
      17.2 Symbios NVRAM layout
      17.3 Tekram  NVRAM layout
18. Support for Big Endian
      18.1 Big Endian CPU
      18.2 NCR chip in Big Endian mode of operations

===============================================================================

1. Introduction

The initial Linux ncr53c8xx driver has been a port of the ncr driver from 
FreeBSD that has been achieved in November 1995 by:
          Gerard Roudier              <groudier@free.fr>

The original driver has been written for 386bsd and FreeBSD by:
          Wolfgang Stanglmeier        <wolf@cologne.de>
          Stefan Esser                <se@mi.Uni-Koeln.de>

It is now available as a bundle of 2 drivers:

- ncr53c8xx generic driver that supports all the SYM53C8XX family including 
  the ealiest 810 rev. 1, the latest 896 (2 channel LVD SCSI controller) and
  the new 895A (1 channel LVD SCSI controller).
- sym53c8xx enhanced driver (a.k.a. 896 drivers) that drops support of oldest 
  chips in order to gain advantage of new features, as LOAD/STORE intructions 
  available since the 810A and hardware phase mismatch available with the 
  896 and the 895A.

You can find technical information about the NCR 8xx family in the
PCI-HOWTO written by Michael Will and in the SCSI-HOWTO written by
Drew Eckhardt.

Information about new chips is available at LSILOGIC web server:

          http://www.lsilogic.com/

SCSI standard documentations are available at SYMBIOS ftp server:

          ftp://ftp.symbios.com/

Usefull SCSI tools written by Eric Youngdale are available at tsx-11:

          ftp://tsx-11.mit.edu/pub/linux/ALPHA/scsi/scsiinfo-X.Y.tar.gz
          ftp://tsx-11.mit.edu/pub/linux/ALPHA/scsi/scsidev-X.Y.tar.gz

These tools are not ALPHA but quite clean and work quite well.
It is essential you have the 'scsiinfo' package.

This short documentation describes the features of the generic and enhanced
drivers, configuration parameters and control commands available through 
the proc SCSI file system read / write operations.

This driver has been tested OK with linux/i386, Linux/Alpha and Linux/PPC.

Latest driver version and patches are available at:

          ftp://ftp.tux.org/pub/people/gerard-roudier
or
          ftp://ftp.symbios.com/mirror/ftp.tux.org/pub/tux/roudier/drivers

I am not a native speaker of English and there are probably lots of
mistakes in this README file. Any help will be welcome.


2. Supported chips and SCSI features

The following features are supported for all chips:

	Synchronous negotiation
	Disconnection
	Tagged command queuing
	SCSI parity checking
	Master parity checking

"Wide negotiation" is supported for chips that allow it.  The
following table shows some characteristics of NCR 8xx family chips 
and what drivers support them.

                                                  Supported by   Supported by
       On board                                   the generic    the enhanced 
Chip   SDMS BIOS   Wide   SCSI std.   Max. sync   driver         driver
----   ---------   ----   ---------   ----------  ------------   -------------
810        N         N      FAST10    10 MB/s        Y             N
810A       N         N      FAST10    10 MB/s        Y             Y
815        Y         N      FAST10    10 MB/s        Y             N
825        Y         Y      FAST10    20 MB/s        Y             N
825A       Y         Y      FAST10    20 MB/s        Y             Y
860        N         N      FAST20    20 MB/s        Y             Y
875        Y         Y      FAST20    40 MB/s        Y             Y
876        Y         Y      FAST20    40 MB/s        Y             Y
895        Y         Y      FAST40    80 MB/s        Y             Y
895A       Y         Y      FAST40    80 MB/s        Y             Y
896        Y         Y      FAST40    80 MB/s        Y             Y
897        Y         Y      FAST40    80 MB/s        Y             Y
1510D      Y         Y      FAST40    80 MB/s        Y             Y
1010       Y         Y      FAST80   160 MB/s        N             Y
1010_66*   Y         Y      FAST80   160 MB/s        N             Y

* Chip supports 33MHz and 66MHz PCI buses.


Summary of other supported features:

Module:                allow to load the driver
Memory mapped I/O:     increases performance
Profiling information: read operations from the proc SCSI file system
Control commands:      write operations to the proc SCSI file system
Debugging information: written to syslog (expert only)
Scatter / gather
Shared interrupt
Boot setup commands
Serial NVRAM:          Symbios and Tekram formats


3. Advantages of the enhanced 896 driver

3.1 Optimized SCSI SCRIPTS.

The 810A, 825A, 875, 895, 896 and 895A support new SCSI SCRIPTS instructions 
named LOAD and STORE that allow to move up to 1 DWORD from/to an IO register 
to/from memory much faster that the MOVE MEMORY instruction that is supported 
by the 53c7xx and 53c8xx family.
The LOAD/STORE instructions support absolute and DSA relative addressing 
modes.  The SCSI SCRIPTS had been entirely rewritten using LOAD/STORE instead 
of MOVE MEMORY instructions.

3.2 New features of the SYM53C896 (64 bit PCI dual LVD SCSI controller)

The 896 and the 895A allows handling of the phase mismatch context from 
SCRIPTS (avoids the phase mismatch interrupt that stops the SCSI processor 
until the C code has saved the context of the transfer).
Implementing this without using LOAD/STORE instructions would be painfull 
and I did'nt even want to try it.

The 896 chip supports 64 bit PCI transactions and addressing, while the 
895A supports 32 bit PCI transactions and 64 bit addressing.
The SCRIPTS processor of these chips is not true 64 bit, but uses segment 
registers for bit 32-63. Another interesting feature is that LOAD/STORE 
instructions that address the on-chip RAM (8k) remain internal to the chip.

Due to the use of LOAD/STORE SCRIPTS instructions, this driver does not 
support the following chips:
- SYM53C810 revision < 0x10 (16)
- SYM53C815 all revisions
- SYM53C825 revision < 0x10 (16)

4. Memory mapped I/O versus normal I/O

Memory mapped I/O has less latency than normal I/O.  Since
linux-1.3.x, memory mapped I/O is used rather than normal I/O.  Memory
mapped I/O seems to work fine on most hardware configurations, but
some poorly designed motherboards may break this feature.

The configuration option CONFIG_SCSI_NCR53C8XX_IOMAPPED forces the
driver to use normal I/O in all cases.


5. Tagged command queueing

Queuing more than 1 command at a time to a device allows it to perform 
optimizations based on actual head positions and its mechanical 
characteristics. This feature may also reduce average command latency.
In order to really gain advantage of this feature, devices must have 
a reasonable cache size (No miracle is to be expected for a low-end 
hard disk with 128 KB or less).
Some kown SCSI devices do not properly support tagged command queuing.
Generally, firmware revisions that fix this kind of problems are available 
at respective vendor web/ftp sites.
All I can say is that the hard disks I use on my machines behave well with 
this driver with tagged command queuing enabled:

- IBM S12 0662
- Conner 1080S
- Quantum Atlas I
- Quantum Atlas II

If your controller has NVRAM, you can configure this feature per target 
from the user setup tool. The Tekram Setup program allows to tune the 
maximum number of queued commands up to 32. The Symbios Setup only allows 
to enable or disable this feature.

The maximum number of simultaneous tagged commands queued to a device
is currently set to 8 by default.  This value is suitable for most SCSI
disks.  With large SCSI disks (>= 2GB, cache >= 512KB, average seek time
<= 10 ms), using a larger value may give better performances.

The sym53c8xx driver supports up to 255 commands per device, and the 
generic ncr53c8xx driver supports up to 64, but using more than 32 is 
generally not worth-while, unless you are using a very large disk or disk 
array. It is noticeable that most of recent hard disks seem not to accept 
more than 64 simultaneous commands. So, using more than 64 queued commands 
is probably just resource wasting.

If your controller does not have NVRAM or if it is managed by the SDMS 
BIOS/SETUP, you can configure tagged queueing feature and device queue 
depths from the boot command-line. For example:

  ncr53c8xx=tags:4/t2t3q15-t4q7/t1u0q32

will set tagged commands queue depths as follow:

- target 2  all luns  on controller 0 --> 15
- target 3  all luns  on controller 0 --> 15
- target 4  all luns  on controller 0 -->  7
- target 1  lun 0     on controller 1 --> 32
- all other target/lun                -->  4

In some special conditions, some SCSI disk firmwares may return a
QUEUE FULL status for a SCSI command. This behaviour is managed by the
driver using the following heuristic:

- Each time a QUEUE FULL status is returned, tagged queue depth is reduced 
  to the actual number of disconnected commands. 

- Every 1000 successfully completed SCSI commands, if allowed by the
  current limit, the maximum number of queueable commands is incremented.

Since QUEUE FULL status reception and handling is resource wasting, the 
driver notifies by default this problem to user by indicating the actual 
number of commands used and their status, as well as its decision on the 
device queue depth change.
The heuristic used by the driver in handling QUEUE FULL ensures that the 
impact on performances is not too bad. You can get rid of the messages by 
setting verbose level to zero, as follow:

1st method: boot your system using 'ncr53c8xx=verb:0' option.
2nd method: apply "setverbose 0" control command to the proc fs entry 
            corresponding to your controller after boot-up.

6. Parity checking

The driver supports SCSI parity checking and PCI bus master parity
checking.  These features must be enabled in order to ensure safe data
transfers.  However, some flawed devices or mother boards will have
problems with parity. You can disable either PCI parity or SCSI parity 
checking by entering appropriate options from the boot command line.
(See 10: Boot setup commands).

7. Profiling information

Profiling information is available through the proc SCSI file system.
Since gathering profiling information may impact performances, this 
feature is disabled by default and requires a compilation configuration 
option to be set to Y.

The device associated with a host has the following pathname:

          /proc/scsi/ncr53c8xx/N     (N=0,1,2 ....)

Generally, only 1 board is used on hardware configuration, and that device is:
          /proc/scsi/ncr53c8xx/0

However, if the driver has been made as module, the number of the
hosts is incremented each time the driver is loaded.

In order to display profiling information, just enter:

         cat /proc/scsi/ncr53c8xx/0

and you will get something like the following text:

-------------------------------------------------------
General information:
  Chip NCR53C810, device id 0x1, revision id 0x2
  IO port address 0x6000, IRQ number 10
  Using memory mapped IO at virtual address 0x282c000
  Synchronous transfer period 25, max commands per lun 4
Profiling information:
  num_trans    = 18014
  num_kbytes   = 671314
  num_disc     = 25763
  num_break    = 1673
  num_int      = 1685
  num_fly      = 18038
  ms_setup     = 4940
  ms_data      = 369940
  ms_disc      = 183090
  ms_post      = 1320
-------------------------------------------------------

General information is easy to understand. The device ID and the
revision ID identify the SCSI chip as follows:

Chip    Device id     Revision Id
----    ---------     -----------
810       0x1            <  0x10
810A      0x1            >= 0x10
815       0x4
825       0x3            <  0x10
860       0x6
825A      0x3            >= 0x10
875       0xf
895       0xc

The profiling information is updated upon completion of SCSI commands.
A data structure is allocated and zeroed when the host adapter is
attached. So, if the driver is a module, the profile counters are
cleared each time the driver is loaded.  The "clearprof" command
allows you to clear these counters at any time.

The following counters are available:

("num" prefix means "number of",
"ms" means milli-seconds)

num_trans
	Number of completed commands
	Example above: 18014 completed commands

num_kbytes
	Number of kbytes transferred
	Example above: 671 MB transferred

num_disc
	Number of SCSI disconnections
	Example above: 25763 SCSI disconnections

num_break
	number of script interruptions (phase mismatch)
	Example above: 1673 script interruptions

num_int
	Number of interrupts other than "on the fly"
	Example above: 1685 interruptions not "on the fly"

num_fly
	Number of interrupts "on the fly"
	Example above: 18038 interruptions "on the fly"

ms_setup
	Elapsed time for SCSI commands setups
	Example above: 4.94 seconds

ms_data
	Elapsed time for data transfers
	Example above: 369.94 seconds spent for data transfer

ms_disc
	Elapsed time for SCSI disconnections
	Example above: 183.09 seconds spent disconnected

ms_post
	Elapsed time for command post processing
	(time from SCSI status get to command completion call)
	Example above: 1.32 seconds spent for post processing

Due to the 1/100 second tick of the system clock, "ms_post" time may
be wrong.

In the example above, we got 18038 interrupts "on the fly" and only
1673 script breaks generally due to disconnections inside a segment 
of the scatter list.


8. Control commands

Control commands can be sent to the driver with write operations to
the proc SCSI file system. The generic command syntax is the
following:

      echo "<verb> <parameters>" >/proc/scsi/ncr53c8xx/0
      (assumes controller number is 0)

Using "all" for "<target>" parameter with the commands below will
apply to all targets of the SCSI chain (except the controller).

Available commands:

8.1 Set minimum synchronous period factor

    setsync <target> <period factor>

    target:    target number
    period:    minimum synchronous period.
               Maximum speed = 1000/(4*period factor) except for special
               cases below.

    Specify a period of 255, to force asynchronous transfer mode.

      10 means 25 nano-seconds synchronous period
      11 means 30 nano-seconds synchronous period
      12 means 50 nano-seconds synchronous period

8.2 Set wide size

    setwide <target> <size>

    target:    target number
    size:      0=8 bits, 1=16bits

8.3 Set maximum number of concurrent tagged commands
 
    settags <target> <tags>

    target:    target number
    tags:      number of concurrent tagged commands
               must not be greater than SCSI_NCR_MAX_TAGS (default: 8)

8.4 Set order type for tagged command

    setorder <order>

    order:     3 possible values:
               simple: use SIMPLE TAG for all operations (read and write)
               ordered: use ORDERED TAG for all operations
               default: use default tag type,
                        SIMPLE  TAG for read  operations
                        ORDERED TAG for write operations


8.5 Set debug mode

    setdebug <list of debug flags>

    Available debug flags:
        alloc:   print info about memory allocations (ccb, lcb)
        queue:   print info about insertions into the command start queue
        result:  print sense data on CHECK CONDITION status
        scatter: print info about the scatter process
        scripts: print info about the script binding process
	tiny:    print minimal debugging information
	timing:  print timing information of the NCR chip
	nego:    print information about SCSI negotiations
	phase:   print information on script interruptions

    Use "setdebug" with no argument to reset debug flags.


8.6 Clear profile counters

    clearprof

    The profile counters are automatically cleared when the amount of
    data transferred reaches 1000 GB in order to avoid overflow.
    The "clearprof" command allows you to clear these counters at any time.


8.7 Set flag (no_disc)
 
    setflag <target> <flag>

    target:    target number

    For the moment, only one flag is available:

        no_disc:   not allow target to disconnect.

    Do not specify any flag in order to reset the flag. For example:
    - setflag 4
      will reset no_disc flag for target 4, so will allow it disconnections.
    - setflag all
      will allow disconnection for all devices on the SCSI bus.


8.8 Set verbose level

    setverbose #level

    The driver default verbose level is 1. This command allows to change 
    th driver verbose level after boot-up.

8.9 Reset all logical units of a target

    resetdev <target>

    target:    target number
    The driver will try to send a BUS DEVICE RESET message to the target.
    (Only supported by the SYM53C8XX driver and provided for test purpose)

8.10 Abort all tasks of all logical units of a target

    cleardev <target>

    target:    target number
    The driver will try to send a ABORT message to all the logical units 
    of the target.
    (Only supported by the SYM53C8XX driver and provided for test purpose)


9. Configuration parameters

If the firmware of all your devices is perfect enough, all the
features supported by the driver can be enabled at start-up.  However,
if only one has a flaw for some SCSI feature, you can disable the
support by the driver of this feature at linux start-up and enable
this feature after boot-up only for devices that support it safely.

CONFIG_SCSI_NCR53C8XX_PROFILE_SUPPORT  (default answer: n)
    This option must be set for profiling information to be gathered 
    and printed out through the proc file system. This features may 
    impact performances.

CONFIG_SCSI_NCR53C8XX_IOMAPPED       (default answer: n)
    Answer "y" if you suspect your mother board to not allow memory mapped I/O.
    May slow down performance a little.  This option is required by
    Linux/PPC and is used no matter what you select here.  Linux/PPC
    suffers no performance loss with this option since all IO is memory
    mapped anyway.

CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS    (default answer: 8)
    Default tagged command queue depth.

CONFIG_SCSI_NCR53C8XX_MAX_TAGS         (default answer: 8)
    This option allows you to specify the maximum number of tagged commands 
    that can be queued to a device. The maximum supported value is 32.

CONFIG_SCSI_NCR53C8XX_SYNC            (default answer: 5)
    This option allows you to specify the frequency in MHz the driver 
    will use at boot time for synchronous data transfer negotiations.
    This frequency can be changed later with the "setsync" control command.
    0 means "asynchronous data transfers".

CONFIG_SCSI_NCR53C8XX_FORCE_SYNC_NEGO (default answer: n)
    Force synchronous negotiation for all SCSI-2 devices.
    Some SCSI-2 devices do not report this feature in byte 7 of inquiry 
    response but do support it properly (TAMARACK scanners for example).

CONFIG_SCSI_NCR53C8XX_NO_DISCONNECT   (default and only reasonable answer: n)
    If you suspect a device of yours does not properly support disconnections,
    you can answer "y". Then, all SCSI devices will never disconnect the bus 
    even while performing long SCSI operations.

CONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT
    Genuine SYMBIOS boards use GPIO0 in output for controller LED and GPIO3 
    bit as a flag indicating singled-ended/differential interface.
    If all the boards of your system are genuine SYMBIOS boards or use
    BIOS and drivers from SYMBIOS, you would want to enable this option.
    This option must NOT be enabled if your system has at least one 53C8XX 
    based scsi board with a vendor-specific BIOS.
    For example, Tekram DC-390/U, DC-390/W and DC-390/F scsi controllers 
    use a vendor-specific BIOS and are known to not use SYMBIOS compatible 
    GPIO wiring. So, this option must not be enabled if your system has 
    such a board installed.

CONFIG_SCSI_NCR53C8XX_NVRAM_DETECT
    Enable support for reading the serial NVRAM data on Symbios and
    some Symbios compatible cards, and Tekram DC390W/U/F cards. Useful for
    systems with more than one Symbios compatible controller where at least
    one has a serial NVRAM, or for a system with a mixture of Symbios and
    Tekram cards. Enables setting the boot order of host adaptors
    to something other than the default order or "reverse probe" order. 
    Also enables Symbios and Tekram cards to be distinguished so
    CONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT may be set in a system with a
    mixture of Symbios and Tekram cards so the Symbios cards can make use of
    the full range of Symbios features, differential, led pin, without
    causing problems for the Tekram card(s).

10. Boot setup commands

10.1 Syntax

Setup commands can be passed to the driver either at boot time or as a 
string variable using 'insmod'.

A boot setup command for the ncr53c8xx (sym53c8xx) driver begins with the 
driver name "ncr53c8xx="(sym53c8xx). The kernel syntax parser then expects 
an optionnal list of integers separated with comma followed by an optional 
list of  comma-separated strings. Example of boot setup command under lilo 
prompt:

lilo: linux root=/dev/hda2 ncr53c8xx=tags:4,sync:10,debug:0x200

- enable tagged commands, up to 4 tagged commands queued.
- set synchronous negotiation speed to 10 Mega-transfers / second.
- set DEBUG_NEGO flag.

Since comma seems not to be allowed when defining a string variable using  
'insmod', the driver also accepts <space> as option separator. 
The following command will install driver module with the same options as 
above.

    insmod ncr53c8xx.o ncr53c8xx="tags:4 sync:10 debug:0x200"

For the moment, the integer list of arguments is discarded by the driver. 
It will be used in the future in order to allow a per controller setup.

Each string argument must be specified as "keyword:value". Only lower-case 
characters and digits are allowed.

In a system that contains multiple 53C8xx adapters insmod will install the 
specified driver on each adapter. To exclude a chip use the 'excl' keyword.

The sequence of commands, 

    insmod sym53c8xx sym53c8xx=excl:0x1400
    insmod ncr53c8xx

installs the sym53c8xx driver on all adapters except the one at IO port 
address 0x1400 and then installs the ncr53c8xx driver to the adapter at IO 
port address 0x1400.


10.2 Available arguments

10.2.1  Master parity checking
        mpar:y     enabled
        mpar:n     disabled

10.2.2  Scsi parity checking
        spar:y     enabled
        spar:n     disabled

10.2.3  Scsi disconnections
        disc:y     enabled
        disc:n     disabled
 
10.2.4  Special features
   Only apply to 810A, 825A, 860, 875 and 895 controllers.
   Have no effect with other ones.
        specf:y    (or 1) enabled
        specf:n    (or 0) disabled
        specf:3           enabled except Memory Write And Invalidate
   The default driver setup is 'specf:3'. As a consequence, option 'specf:y' 
   must be specified in the boot setup command to enable Memory Write And 
   Invalidate.

10.2.5  Ultra SCSI support
   Only apply to 860, 875, 895, 895a, 896, 1010 and 1010_66 controllers.
   Have no effect with other ones.
        ultra:n    All ultra speeds enabled
        ultra:2    Ultra2 enabled
        ultra:1    Ultra enabled
        ultra:0    Ultra speeds disabled

10.2.6  Default number of tagged commands
        tags:0     (or tags:1 ) tagged command queuing disabled
        tags:#tags (#tags  > 1) tagged command queuing enabled
  #tags will be truncated to the max queued commands configuration parameter.
  This option also allows to specify a command queue depth for each device 
  that support tagged command queueing.
  Example:
      ncr53c8xx=tags:10/t2t3q16-t5q24/t1u2q32
               will set devices queue depth as follow:
      - controller #0 target #2 and target #3                  -> 16 commands,
      - controller #0 target #5                                -> 24 commands,
      - controller #1 target #1 logical unit #2                -> 32 commands,
      - all other logical units (all targets, all controllers) -> 10 commands.

10.2.7  Default synchronous period factor
        sync:255     disabled (asynchronous transfer mode)
        sync:#factor
  #factor = 10     Ultra-2 SCSI 40 Mega-transfers / second
  #factor = 11     Ultra-2 SCSI 33 Mega-transfers / second
  #factor < 25     Ultra   SCSI 20 Mega-transfers / second
  #factor < 50     Fast    SCSI-2

  In all cases, the driver will use the minimum transfer period supported by 
  controllers according to NCR53C8XX chip type.

10.2.8  Negotiate synchronous with all devices
        (force sync nego)
        fsn:y      enabled
        fsn:n      disabled

10.2.9  Verbosity level
        verb:0     minimal
        verb:1     normal
        verb:2     too much

10.2.10 Debug mode
        debug:0	 clear debug flags
        debug:#x   set debug flags
  #x is an integer value combining the following power-of-2 values:
  DEBUG_ALLOC       0x1
  DEBUG_PHASE       0x2
  DEBUG_POLL        0x4
  DEBUG_QUEUE       0x8
  DEBUG_RESULT     0x10
  DEBUG_SCATTER    0x20
  DEBUG_SCRIPT     0x40
  DEBUG_TINY       0x80
  DEBUG_TIMING    0x100
  DEBUG_NEGO      0x200
  DEBUG_TAGS      0x400
  DEBUG_FREEZE    0x800
  DEBUG_RESTART  0x1000

  You can play safely with DEBUG_NEGO. However, some of these flags may 
  generate bunches of syslog messages. 

10.2.11 Burst max
        burst:0    burst disabled
        burst:255  get burst length from initial IO register settings.
        burst:#x   burst enabled (1<<#x burst transfers max)
  #x is an integer value which is log base 2 of the burst transfers max.
  The NCR53C875 and NCR53C825A support up to 128 burst transfers (#x = 7).
  Other chips only support up to 16 (#x = 4).
  This is a maximum value. The driver set the burst length according to chip 
  and revision ids. By default the driver uses the maximum value supported 
  by the chip.

10.2.12 LED support
        led:1      enable  LED support
        led:0      disable LED support
  Donnot enable LED support if your scsi board does not use SDMS BIOS.
  (See 'Configuration parameters')

10.2.13 Max wide
        wide:1      wide scsi enabled
        wide:0      wide scsi disabled
  Some scsi boards use a 875 (ultra wide) and only supply narrow connectors.
  If you have connected a wide device with a 50 pins to 68 pins cable 
  converter, any accepted wide negotiation will break further data transfers.
  In such a case, using "wide:0" in the bootup command will be helpfull. 

10.2.14 Differential mode
        diff:0	never set up diff mode
        diff:1	set up diff mode if BIOS set it
        diff:2	always set up diff mode
        diff:3	set diff mode if GPIO3 is not set

10.2.15 IRQ mode
        irqm:0     always open drain
        irqm:1     same as initial settings (assumed BIOS settings)
        irqm:2     always totem pole
        irqm:0x10  driver will not use SA_SHIRQ flag when requesting irq
        irqm:0x20  driver will not use SA_INTERRUPT flag when requesting irq

    (Bits 0x10 and 0x20 can be combined with hardware irq mode option)

10.2.16 Reverse probe
        revprob:n   probe chip ids from the PCI configuration in this order:
                    810, 815, 820, 860, 875, 885, 895, 896
        revprob:y   probe chip ids in the reverse order.

10.2.17 Fix up PCI configuration space
        pcifix:<option bits>

    Available option bits:
        0x0:   No attempt to fix PCI configuration space registers values.
        0x1:   Set PCI cache-line size register if not set.
        0x2:   Set write and invalidate bit in PCI command register.
        0x4:   Increase if necessary PCI latency timer according to burst max.

    Use 'pcifix:7' in order to allow the driver to fix up all PCI features.

10.2.18 Serial NVRAM
        nvram:n     do not look for serial NVRAM
        nvram:y     test controllers for onboard serial NVRAM
        (alternate binary form)
        mvram=<bits options>
        0x01   look for NVRAM  (equivalent to nvram=y)
        0x02   ignore NVRAM "Synchronous negotiation" parameters for all devices
        0x04   ignore NVRAM "Wide negotiation"  parameter for all devices
        0x08   ignore NVRAM "Scan at boot time" parameter for all devices
        0x80   also attach controllers set to OFF in the NVRAM (sym53c8xx only)

10.2.19 Check SCSI BUS 
        buschk:<option bits>

    Available option bits:
        0x0:   No check.
        0x1:   Check and do not attach the controller on error.  
        0x2:   Check and just warn on error.
        0x4:   Disable SCSI bus integrity checking.

10.2.20 Exclude a host from being attached
        excl=<io_address>

    Prevent host at a given io address from being attached.
    For example 'ncr53c8xx=excl:0xb400,excl:0xc000' indicate to the 
    ncr53c8xx driver not to attach hosts at address 0xb400 and 0xc000.

10.2.21 Suggest a default SCSI id for hosts
        hostid:255	no id suggested.
        hostid:#x   (0 < x < 7) x suggested for hosts SCSI id.

    If a host SCSI id is available from the NVRAM, the driver will ignore 
    any value suggested as boot option. Otherwise, if a suggested value 
    different from 255 has been supplied, it will use it. Otherwise, it will 
    try to deduce the value previously set in the hardware and use value 
    7 if the hardware value is zero.

10.2.22 Enable use of IMMEDIATE ARBITRATION
        (only supported by the sym53c8xx driver. See 10.7 for more details)
        iarb:0    do not use this feature.
        iarb:#x   use this feature according to bit fields as follow:

    bit 0 (1) : enable IARB each time the initiator has been reselected 
                when it arbitrated for the SCSI BUS.
    (#x >> 4) : maximum number of successive settings of IARB if the initiator 
                win arbitration and it has other commands to send to a device.

Boot fail safe
    safe:y	load the following assumed fail safe initial setup

  master parity			disabled		mpar:n
  scsi parity			enabled			spar:y
  disconnections		not allowed		disc:n
  special features		disabled		specf:n
  ultra scsi			disabled		ultra:n
  force sync negotiation	disabled		fsn:n
  reverse probe			disabled		revprob:n
  PCI fix up                    disabled                pcifix:0
  serial NVRAM                  enabled                 nvram:y
  verbosity level		2			verb:2
  tagged command queuing	disabled		tags:0
  synchronous negotiation	disabled		sync:255
  debug flags			none			debug:0
  burst length			from BIOS settings	burst:255
  LED support			disabled		led:0
  wide support			disabled		wide:0
  settle time			10 seconds		settle:10
  differential support		from BIOS settings	diff:1
  irq mode			from BIOS settings	irqm:1
  SCSI BUS check		do not attach on error	buschk:1
  immediate arbitration		disabled		iarb:0

10.3 Advised boot setup commands

If the driver has been configured with default options, the equivalent 
boot setup is:

   ncr53c8xx=mpar:y,spar:y,disc:y,specf:3,fsn:n,ultra:2,fsn:n,revprob:n,verb:1\
             tags:0,sync:50,debug:0,burst:7,led:0,wide:1,settle:2,diff:0,irqm:0

For an installation diskette or a safe but not fast system,
boot setup can be:

    ncr53c8xx=safe:y,mpar:y,disc:y
    ncr53c8xx=safe:y,disc:y
    ncr53c8xx=safe:y,mpar:y
    ncr53c8xx=safe:y

My personnal system works flawlessly with the following equivalent setup:

   ncr53c8xx=mpar:y,spar:y,disc:y,specf:1,fsn:n,ultra:2,fsn:n,revprob:n,verb:1\
             tags:32,sync:12,debug:0,burst:7,led:1,wide:1,settle:2,diff:0,irqm:0

The driver prints its actual setup when verbosity level is 2. You can try 
"ncr53c8xx=verb:2" to get the "static" setup of the driver, or add "verb:2" 
to your boot setup command in order to check the actual setup the driver is 
using.

10.4 PCI configuration fix-up boot option

pcifix:<option bits>

Available option bits:
    0x1:     Set PCI cache-line size register if not set.
    0x2:     Set write and invalidate bit in PCI command register.

Use 'pcifix:3' in order to allow the driver to fix both PCI features.

These options only apply to new SYMBIOS chips 810A, 825A, 860, 875 
and 895 and are only supported for Pentium and 486 class processors.
Recent SYMBIOS 53C8XX scsi processors are able to use PCI read multiple 
and PCI write and invalidate commands. These features require the 
cache line size register to be properly set in the PCI configuration 
space of the chips. On the other hand, chips will use PCI write and 
invalidate commands only if the corresponding bit is set to 1 in the 
PCI command register.

Not all PCI bioses set the PCI cache line register and the PCI write and 
invalidate bit in the PCI configuration space of 53C8XX chips.
Optimized PCI accesses may be broken for some PCI/memory controllers or 
make problems with some PCI boards.

This fix-up worked flawlessly on my previous system.
(MB Triton HX / 53C875 / 53C810A)
I use these options at my own risks as you will do if you decide to 
use them too.


10.5 Serial NVRAM support boot option

nvram:n     do not look for serial NVRAM
nvram:y     test controllers for onboard serial NVRAM

This option can also been entered as an hexadecimal value that allows 
to control what information the driver will get from the NVRAM and what 
information it will ignore.
For details see '17. Serial NVRAM support'.

When this option is enabled, the driver tries to detect all boards using 
a Serial NVRAM. This memory is used to hold user set up parameters.

The parameters the driver is able to get from the NVRAM depend on the 
data format used, as follow:

                                 Tekram format      Symbios format
General and host parameters
    Boot order                         N                   Y
    Host SCSI ID                       Y                   Y
    SCSI parity checking               Y                   Y
    Verbose boot messages              N                   Y
SCSI devices parameters
    Synchronous transfer speed         Y                   Y
    Wide 16 / Narrow                   Y                   Y
    Tagged Command Queuing enabled     Y                   Y
    Disconnections enabled             Y                   Y
    Scan at boot time                  N                   Y

In order to speed up the system boot, for each device configured without 
the "scan at boot time" option, the driver forces an error on the 
first TEST UNIT READY command received for this device.

Some SDMS BIOS revisions seem to be unable to boot cleanly with very fast 
hard disks. In such a situation you cannot configure the NVRAM with 
optimized parameters value.

The 'nvram' boot option can be entered in hexadecimal form in order 
to ignore some options configured in the NVRAM, as follow:

mvram=<bits options>
      0x01   look for NVRAM  (equivalent to nvram=y)
      0x02   ignore NVRAM "Synchronous negotiation" parameters for all devices
      0x04   ignore NVRAM "Wide negotiation"  parameter for all devices
      0x08   ignore NVRAM "Scan at boot time" parameter for all devices
      0x80   also attach controllers set to OFF in the NVRAM (sym53c8xx only)

Option 0x80 is only supported by the sym53c8xx driver and is disabled by 
default. Result is that, by default (option not set), the sym53c8xx driver 
will not attach controllers set to OFF in the NVRAM.

The ncr53c8xx always tries to attach all the controllers. Option 0x80 has 
not been added to the ncr53c8xx driver, since it has been reported to 
confuse users who use this driver since a long time. If you desire a 
controller not to be attached by the ncr53c8xx driver at Linux boot, you 
must use the 'excl' driver boot option.

10.6 SCSI BUS checking boot option.

When this option is set to a non-zero value, the driver checks SCSI lines 
logic state, 100 micro-seconds after having asserted the SCSI RESET line.
The driver just reads SCSI lines and checks all lines read FALSE except RESET.
Since SCSI devices shall release the BUS at most 800 nano-seconds after SCSI 
RESET has been asserted, any signal to TRUE may indicate a SCSI BUS problem.
Unfortunately, the following common SCSI BUS problems are not detected:
- Only 1 terminator installed.
- Misplaced terminators.
- Bad quality terminators.
On the other hand, either bad cabling, broken devices, not conformant 
devices, ... may cause a SCSI signal to be wrong when te driver reads it.

10.7 IMMEDIATE ARBITRATION boot option

This option is only supported by the SYM53C8XX driver (not by the NCR53C8XX).

SYMBIOS 53C8XX chips are able to arbitrate for the SCSI BUS as soon as they 
have detected an expected disconnection (BUS FREE PHASE). For this process 
to be started, bit 1 of SCNTL1 IO register must be set when the chip is 
connected to the SCSI BUS.

When this feature has been enabled for the current connection, the chip has 
every chance to win arbitration if only devices with lower priority are 
competing for the SCSI BUS. By the way, when the chip is using SCSI id 7, 
then it will for sure win the next SCSI BUS arbitration.

Since, there is no way to know what devices are trying to arbitrate for the 
BUS, using this feature can be extremely unfair. So, you are not advised
to enable it, or at most enable this feature for the case the chip lost 
the previous arbitration (boot option 'iarb:1').

This feature has the following advantages:

a) Allow the initiator with ID 7 to win arbitration when it wants so.
b) Overlap at least 4 micro-seconds of arbitration time with the execution 
   of SCRIPTS that deal with the end of the current connection and that 
   starts the next job.

Hmmm... But (a) may just prevent other devices from reselecting the initiator, 
and delay data transfers or status/completions, and (b) may just waste 
SCSI BUS bandwidth if the SCRIPTS execution lasts more than 4 micro-seconds.

The use of IARB needs the SCSI_NCR_IARB_SUPPORT option to have been defined 
at compile time and the 'iarb' boot option to have been set to a non zero 
value at boot time. It is not that useful for real work, but can be used 
to stress SCSI devices or for some applications that can gain advantage of 
it. By the way, if you experience badnesses like 'unexpected disconnections', 
'bad reselections', etc... when using IARB on heavy IO load, you should not 
be surprised, because force-feeding anything and blocking its arse at the 
same time cannot work for a long time. :-))


11. Some constants and flags of the ncr53c8xx.h header file

Some of these are defined from the configuration parameters.  To
change other "defines", you must edit the header file.  Do that only
if you know what you are doing.

SCSI_NCR_SETUP_SPECIAL_FEATURES	(default: defined)
	If defined, the driver will enable some special features according  
	to chip and revision id.
        For 810A, 860, 825A, 875 and 895 scsi chips, this option enables 
	support of features that reduce load of PCI bus and memory accesses 
	during  scsi transfer processing: burst op-code fetch, read multiple, 
        read line, prefetch, cache line, write and invalidate, 
        burst 128 (875 only), large dma fifo (875 only), offset 16 (875 only).
	Can be changed by the following boot setup command:
		ncr53c8xx=specf:n

SCSI_NCR_IOMAPPED		(default: not defined)
	If defined, normal I/O is forced.

SCSI_NCR_SHARE_IRQ		(default: defined)
	If defined, request shared IRQ.
	
SCSI_NCR_MAX_TAGS		(default: 8)
	Maximum number of simultaneous tagged commands to a device.
	Can be changed by "settags <target> <maxtags>"

SCSI_NCR_SETUP_DEFAULT_SYNC     (default: 50)
	Transfer period factor the driver will use at boot time for synchronous 
	negotiation. 0 means asynchronous.
	Can be changed by "setsync <target> <period factor>"

SCSI_NCR_SETUP_DEFAULT_TAGS     (default: 8)
	Default number of simultaneous tagged commands to a device.
	< 1 means tagged command queuing disabled at start-up.

SCSI_NCR_ALWAYS_SIMPLE_TAG	(default: defined)
	Use SIMPLE TAG for read and write commands.
	Can be changed by "setorder <ordered|simple|default>"

SCSI_NCR_SETUP_DISCONNECTION	(default: defined)
	If defined, targets are allowed to disconnect.

SCSI_NCR_SETUP_FORCE_SYNC_NEGO	(default: not defined)
	If defined, synchronous negotiation is tried for all SCSI-2 devices.
	Can be changed by "setsync <target> <period>"

SCSI_NCR_SETUP_MASTER_PARITY	(default: defined)
	If defined, master parity checking is enabled.

SCSI_NCR_SETUP_MASTER_PARITY	(default: defined)
	If defined, SCSI parity checking is enabled.

SCSI_NCR_PROFILE_SUPPORT	(default: not defined)
	If defined, profiling information is gathered.

SCSI_NCR_MAX_SCATTER		(default: 128)
	Scatter list size of the driver ccb.

SCSI_NCR_MAX_TARGET		(default: 16)
	Max number of targets per host.

SCSI_NCR_MAX_HOST		(default: 2)
	Max number of host controllers.

SCSI_NCR_SETTLE_TIME		(default: 2)
	Number of seconds the driver will wait after reset.

SCSI_NCR_TIMEOUT_ALERT		(default: 3)
	If a pending command will time out after this amount of seconds,
	an ordered tag is used for the next command.
	Avoids timeouts for unordered tagged commands.

SCSI_NCR_CAN_QUEUE		(default: 7*SCSI_NCR_MAX_TAGS)
	Max number of commands that can be queued to a host.

SCSI_NCR_CMD_PER_LUN		(default: SCSI_NCR_MAX_TAGS)
	Max number of commands queued to a host for a device.

SCSI_NCR_SG_TABLESIZE		(default: SCSI_NCR_MAX_SCATTER-1)
	Max size of the Linux scatter/gather list.

SCSI_NCR_MAX_LUN	(default: 8)
	Max number of LUNs per target.


12. Installation

This driver is part of the linux kernel distribution.
Driver files are located in the sub-directory "drivers/scsi" of the 
kernel source tree.

Driver files:

	README.ncr53c8xx	: this file
	ChangeLog.ncr53c8xx	: change log
	ncr53c8xx.h		: definitions
	ncr53c8xx.c		: the driver code

New driver versions are made available separately in order to allow testing 
changes and new features prior to including them into the linux kernel 
distribution. The following URL provides informations on latest avalaible 
patches: 

      ftp://ftp.tux.org/pub/people/gerard-roudier/README


13. Architecture dependent features.

<Not yet written>


14. Known problems

14.1 Tagged commands with Iomega Jaz device

I have not tried this device, however it has been reported to me the
following: This device is capable of Tagged command queuing. However
while spinning up, it rejects Tagged commands. This behaviour is
conforms to 6.8.2 of SCSI-2 specifications. The current behaviour of
the driver in that situation is not satisfying. So do not enable
Tagged command queuing for devices that are able to spin down.  The
other problem that may appear is timeouts. The only way to avoid
timeouts seems to edit linux/drivers/scsi/sd.c and to increase the
current timeout values.

14.2 Device names change when another controller is added.

When you add a new NCR53C8XX chip based controller to a system that already 
has one or more controllers of this family, it may happen that the order 
the driver registers them to the kernel causes problems due to device 
name changes.
When at least one controller uses NvRAM, SDMS BIOS version 4 allows you to 
define the order the BIOS will scan the scsi boards. The driver attaches 
controllers according to BIOS information if NvRAM detect option is set.

If your controllers do not have NvRAM, you can:

- Ask the driver to probe chip ids in reverse order from the boot command
  line: ncr53c8xx=revprob:y
- Make appropriate changes in the fstab.
- Use the 'scsidev' tool from Eric Youngdale.

14.3 Using only 8 bit devices with a WIDE SCSI controller.

When only 8 bit NARROW devices are connected to a 16 bit WIDE SCSI controller, 
you must ensure that lines of the wide part of the SCSI BUS are pulled-up.
This can be achieved by ENABLING the WIDE TERMINATOR portion of the SCSI 
controller card.
The TYAN 1365 documentation revision 1.2 is not correct about such settings.
(page 10, figure 3.3).

14.4 Possible data corruption during a Memory Write and Invalidate

This problem is described in SYMBIOS DEL 397, Part Number 69-039241, ITEM 4.

In some complex situations, 53C875 chips revision <= 3 may start a PCI 
Write and Invalidate Command at a not cache-line-aligned 4 DWORDS boundary.
This is only possible when Cache Line Size is 8 DWORDS or greater.
Pentium systems use a 8 DWORDS cache line size and so are concerned by 
this chip bug, unlike i486 systems that use a 4 DWORDS cache line size.

When this situation occurs, the chip may complete the Write and Invalidate 
command after having only filled part of the last cache line involved in 
the transfer, leaving to data corruption the remainder of this cache line.

Not using Write And Invalidate obviously gets rid of this chip bug, and so 
it is now the default setting of the driver.
However, for people like me who want to enable this feature, I have added 
part of a work-around suggested by SYMBIOS. This work-around resets the 
addressing logic when the DATA IN phase is entered and so prevents the bug 
from being triggered for the first SCSI MOVE of the phase. This work-around 
should be enough according to the following:

The only driver internal data structure that is greater than 8 DWORDS  and 
that is moved by the SCRIPTS processor is the 'CCB header' that contains 
the context of the SCSI transfer. This data structure is aligned on 8 DWORDS 
boundary (Pentium Cache Line Size), and so is immune to this chip bug, at 
least on Pentium systems.
But the conditions of this bug can be met when a SCSI read command is 
performed using a buffer that is 4 DWORDS but not cache-line aligned.
This cannot happen under Linux when scatter/gather lists are used since 
they only refer to system buffers that are well aligned. So, a work around 
may only be needed under Linux when a scatter/gather list is not used and 
when the SCSI DATA IN phase is reentered after a phase mismatch.

14.5 IRQ sharing problems

When an IRQ is shared by devices that are handled by different drivers, it 
may happen that one driver complains about the request of the IRQ having 
failed. Inder Linux-2.0, this may be due to one driver having requested the 
IRQ using the SA_INTERRUPT flag but some other having requested the same IRQ 
without this flag. Under both Linux-2.0 and linux-2.2, this may be caused by 
one driver not having requested the IRQ with the SA_SHIRQ flag.

By default, the ncr53c8xx and sym53c8xx drivers request IRQs with both the 
SA_INTERRUPT and the SA_SHIRQ flag under Linux-2.0 and with only the SA_SHIRQ 
flag under Linux-2.2.

Under Linux-2.0, you can disable use of SA_INTERRUPT flag from the boot 
command line by using the following option:

     ncr53c8xx=irqm:0x20   (for the generic ncr53c8xx driver)
     sym53c8xx=irqm:0x20   (for the sym53c8xx driver)

If this does not fix the problem, then you may want to check how all other 
drivers are requesting the IRQ and report the problem. Note that if at least 
a single driver does not request the IRQ with the SA_SHIRQ flag (share IRQ), 
then the request of the IRQ obviously will not succeed for all the drivers.

15. SCSI problem troubleshooting

15.1 Problem tracking

Most SCSI problems are due to a non conformant SCSI bus or to buggy
devices.  If infortunately you have SCSI problems, you can check the
following things:

- SCSI bus cables
- terminations at both end of the SCSI chain
- linux syslog messages (some of them may help you)

If you do not find the source of problems, you can configure the
driver with no features enabled.

- only asynchronous data transfers
- tagged commands disabled
- disconnections not allowed

Now, if your SCSI bus is ok, your system have every chance to work
with this safe configuration but performances will not be optimal.

If it still fails, then you can send your problem description to
appropriate mailing lists or news-groups.  Send me a copy in order to
be sure I will receive it.  Obviously, a bug in the driver code is
possible.

     My email address: Gerard Roudier <groudier@free.fr>

Allowing disconnections is important if you use several devices on
your SCSI bus but often causes problems with buggy devices.
Synchronous data transfers increases throughput of fast devices like
hard disks.  Good SCSI hard disks with a large cache gain advantage of
tagged commands queuing.

Try to enable one feature at a time with control commands.  For example:

- echo "setsync all 25" >/proc/scsi/ncr53c8xx/0
  Will enable fast synchronous data transfer negotiation for all targets.

- echo "setflag 3" >/proc/scsi/ncr53c8xx/0
  Will reset flags (no_disc) for target 3, and so will allow it to disconnect 
  the SCSI Bus.

- echo "settags 3 8" >/proc/scsi/ncr53c8xx/0
  Will enable tagged command queuing for target 3 if that device supports it.

Once you have found the device and the feature that cause problems, just 
disable that feature for that device.

15.2 Understanding hardware error reports

When the driver detects an unexpected error condition, it may display a 
message of the following pattern.

sym53c876-0:1: ERROR (0:48) (1-21-65) (f/95) @ (script 7c0:19000000).
sym53c876-0: script cmd = 19000000
sym53c876-0: regdump: da 10 80 95 47 0f 01 07 75 01 81 21 80 01 09 00.

Some fields in such a message may help you understand the cause of the 
problem, as follows:

sym53c876-0:1: ERROR (0:48) (1-21-65) (f/95) @ (script 7c0:19000000).
............A.........B.C....D.E..F....G.H.......I.....J...K.......

Field A : target number.
  SCSI ID of the device the controller was talking with at the moment the 
  error occurs.

Field B : DSTAT io register (DMA STATUS)
  Bit 0x40 : MDPE Master Data Parity Error
             Data parity error detected on the PCI BUS.
  Bit 0x20 : BF   Bus Fault
             PCI bus fault condition detected
  Bit 0x01 : IID  Illegal Instruction Detected
             Set by the chip when it detects an Illegal Instruction format 
             on some condition that makes an instruction illegal.
  Bit 0x80 : DFE Dma Fifo Empty
             Pure status bit that does not indicate an error.
  If the reported DSTAT value contains a combination of MDPE (0x40), 
  BF (0x20), then the cause may be likely due to a PCI BUS problem.

Field C : SIST io register (SCSI Interrupt Status)
  Bit 0x08 : SGE  SCSI GROSS ERROR
             Indicates that the chip detected a severe error condition 
             on the SCSI BUS that prevents the SCSI protocol from functioning
             properly.
  Bit 0x04 : UDC  Unexpected Disconnection
             Indicates that the device released the SCSI BUS when the chip 
             was not expecting this to happen. A device may behave so to 
             indicate the SCSI initiator that an error condition not reportable              using the SCSI protocol has occurred.
  Bit 0x02 : RST  SCSI BUS Reset
             Generally SCSI targets do not reset the SCSI BUS, although any 
             device on the BUS can reset it at any time.
  Bit 0x01 : PAR  Parity
             SCSI parity error detected.
  On a faulty SCSI BUS, any error condition among SGE (0x08), UDC (0x04) and 
  PAR (0x01) may be detected by the chip. If your SCSI system sometimes 
  encounters such error conditions, especially SCSI GROSS ERROR, then a SCSI 
  BUS problem is likely the cause of these errors.

For fields D,E,F,G and H, you may look into the sym53c8xx_defs.h file 
that contains some minimal comments on IO register bits.
Field D : SOCL  Scsi Output Control Latch
          This register reflects the state of the SCSI control lines the 
          chip want to drive or compare against.
Field E : SBCL  Scsi Bus Control Lines
          Actual value of control lines on the SCSI BUS.
Field F : SBDL  Scsi Bus Data Lines
          Actual value of data lines on the SCSI BUS.
Field G : SXFER  SCSI Transfer
          Contains the setting of the Synchronous Period for output and 
          the current Synchronous offset (offset 0 means asynchronous).
Field H : SCNTL3 Scsi Control Register 3
          Contains the setting of timing values for both asynchronous and 
          synchronous data transfers. 

Understanding Fields I, J, K and dumps requires to have good knowledge of 
SCSI standards, chip cores functionnals and internal driver data structures.
You are not required to decode and understand them, unless you want to help 
maintain the driver code.

16. Synchonous transfer negotiation tables

Tables below have been created by calling the routine the driver uses
for synchronisation negotiation timing calculation and chip setting.
The first table corresponds to Ultra chips 53875 and 53C860 with 80 MHz 
clock and 5 clock divisors.
The second one has been calculated by setting the scsi clock to 40 Mhz 
and using 4 clock divisors and so applies to all NCR53C8XX chips in fast 
SCSI-2 mode.

Periods are in nano-seconds and speeds are in Mega-transfers per second.
1 Mega-transfers/second means 1 MB/s with 8 bits SCSI and 2 MB/s with 
Wide16 SCSI.

16.1 Synchronous timings for 53C895, 53C875 and 53C860 SCSI controllers

 ----------------------------------------------
 Negotiated                     NCR settings
 Factor   Period   Speed        Period   Speed
 ------   ------   ------       ------   ------
 10       25       40.000       25       40.000   (53C895 only)
 11       30.2     33.112       31.25    32.000   (53C895 only)
 12       50       20.000       50       20.000
 13       52       19.230       62       16.000
 14       56       17.857       62       16.000
 15       60       16.666       62       16.000
 16       64       15.625       75       13.333
 17       68       14.705       75       13.333
 18       72       13.888       75       13.333
 19       76       13.157       87       11.428
 20       80       12.500       87       11.428
 21       84       11.904       87       11.428
 22       88       11.363       93       10.666
 23       92       10.869       93       10.666
 24       96       10.416      100       10.000
 25      100       10.000      100       10.000
 26      104        9.615      112        8.888
 27      108        9.259      112        8.888
 28      112        8.928      112        8.888
 29      116        8.620      125        8.000
 30      120        8.333      125        8.000
 31      124        8.064      125        8.000
 32      128        7.812      131        7.619
 33      132        7.575      150        6.666
 34      136        7.352      150        6.666
 35      140        7.142      150        6.666
 36      144        6.944      150        6.666
 37      148        6.756      150        6.666
 38      152        6.578      175        5.714
 39      156        6.410      175        5.714
 40      160        6.250      175        5.714
 41      164        6.097      175        5.714
 42      168        5.952      175        5.714
 43      172        5.813      175        5.714
 44      176        5.681      187        5.333
 45      180        5.555      187        5.333
 46      184        5.434      187        5.333
 47      188        5.319      200        5.000
 48      192        5.208      200        5.000
 49      196        5.102      200        5.000


16.2 Synchronous timings for fast SCSI-2 53C8XX controllers

 ----------------------------------------------
 Negotiated                     NCR settings
 Factor   Period   Speed        Period   Speed
 ------   ------   ------       ------   ------
 25      100       10.000      100       10.000
 26      104        9.615      125        8.000
 27      108        9.259      125        8.000
 28      112        8.928      125        8.000
 29      116        8.620      125        8.000
 30      120        8.333      125        8.000
 31      124        8.064      125        8.000
 32      128        7.812      131        7.619
 33      132        7.575      150        6.666
 34      136        7.352      150        6.666
 35      140        7.142      150        6.666
 36      144        6.944      150        6.666
 37      148        6.756      150        6.666
 38      152        6.578      175        5.714
 39      156        6.410      175        5.714
 40      160        6.250      175        5.714
 41      164        6.097      175        5.714
 42      168        5.952      175        5.714
 43      172        5.813      175        5.714
 44      176        5.681      187        5.333
 45      180        5.555      187        5.333
 46      184        5.434      187        5.333
 47      188        5.319      200        5.000
 48      192        5.208      200        5.000
 49      196        5.102      200        5.000


17. Serial NVRAM (added by Richard Waltham: dormouse@farsrobt.demon.co.uk)

17.1 Features

Enabling serial NVRAM support enables detection of the serial NVRAM included
on Symbios and some Symbios compatible host adaptors, and Tekram boards. The 
serial NVRAM is used by Symbios and Tekram to hold set up parameters for the 
host adaptor and it's attached drives.

The Symbios NVRAM also holds data on the boot order of host adaptors in a
system with more than one host adaptor. This enables the order of scanning
the cards for drives to be changed from the default used during host adaptor
detection.

This can be done to a limited extent at the moment using "reverse probe" but
this only changes the order of detection of different types of cards. The
NVRAM boot order settings can do this as well as change the order the same
types of cards are scanned in, something "reverse probe" cannot do.

Tekram boards using Symbios chips, DC390W/F/U, which have NVRAM are detected
and this is used to distinguish between Symbios compatible and Tekram host 
adaptors. This is used to disable the Symbios compatible "diff" setting
incorrectly set on Tekram boards if the CONFIG_SCSI_53C8XX_SYMBIOS_COMPAT 
configuration parameter is set enabling both Symbios and Tekram boards to be 
used together with the Symbios cards using all their features, including
"diff" support. ("led pin" support for Symbios compatible cards can remain
enabled when using Tekram cards. It does nothing useful for Tekram host
adaptors but does not cause problems either.)


17.2 Symbios NVRAM layout

typical data at NVRAM address 0x100 (53c810a NVRAM)
-----------------------------------------------------------
00 00
64 01
8e 0b

00 30 00 00 00 00 07 00 00 00 00 00 00 00 07 04 10 04 00 00 

04 00 0f 00 00 10 00 50 00 00 01 00 00 62 
04 00 03 00 00 10 00 58 00 00 01 00 00 63 
04 00 01 00 00 10 00 48 00 00 01 00 00 61 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 

0f 00 08 08 64 00 0a 00
0f 00 08 08 64 00 0a 00 
0f 00 08 08 64 00 0a 00 
0f 00 08 08 64 00 0a 00 
0f 00 08 08 64 00 0a 00 
0f 00 08 08 64 00 0a 00 
0f 00 08 08 64 00 0a 00 
0f 00 08 08 64 00 0a 00 

0f 00 08 08 64 00 0a 00 
0f 00 08 08 64 00 0a 00 
0f 00 08 08 64 00 0a 00 
0f 00 08 08 64 00 0a 00 
0f 00 08 08 64 00 0a 00 
0f 00 08 08 64 00 0a 00 
0f 00 08 08 64 00 0a 00 
0f 00 08 08 64 00 0a 00 

00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 

00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 

00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 

fe fe
00 00
00 00
-----------------------------------------------------------
NVRAM layout details

NVRAM Address 0x000-0x0ff not used
              0x100-0x26f initialised data
              0x270-0x7ff not used

general layout

        header  -   6 bytes,
        data    - 356 bytes (checksum is byte sum of this data)
        trailer -   6 bytes
                  ---
        total     368 bytes

data area layout

        controller set up  -  20 bytes
        boot configuration -  56 bytes (4x14 bytes)
        device set up      - 128 bytes (16x8 bytes)
        unused (spare?)    - 152 bytes (19x8 bytes)
                             ---
        total                356 bytes

-----------------------------------------------------------
header

00 00   - ?? start marker
64 01   - byte count (lsb/msb excludes header/trailer)
8e 0b   - checksum (lsb/msb excludes header/trailer)
-----------------------------------------------------------
controller set up

00 30 00 00 00 00 07 00 00 00 00 00 00 00 07 04 10 04 00 00
                   |     |           |     |
                   |     |           |      -- host ID
                   |     |           |
                   |     |            --Removable Media Support
                   |     |               0x00 = none
                   |     |               0x01 = Bootable Device
                   |     |               0x02 = All with Media
                   |     |
                   |      --flag bits 2
                   |        0x00000001= scan order hi->low
                   |            (default 0x00 - scan low->hi)
                    --flag bits 1
                       0x00000001 scam enable
                       0x00000010 parity enable
                       0x00000100 verbose boot msgs

remaining bytes unknown - they do not appear to change in my
current set up for any of the controllers.

default set up is identical for 53c810a and 53c875 NVRAM
(Removable Media added Symbios BIOS version 4.09)
-----------------------------------------------------------
boot configuration

boot order set by order of the devices in this table

04 00 0f 00 00 10 00 50 00 00 01 00 00 62 -- 1st controller
04 00 03 00 00 10 00 58 00 00 01 00 00 63    2nd controller
04 00 01 00 00 10 00 48 00 00 01 00 00 61    3rd controller
00 00 00 00 00 00 00 00 00 00 00 00 00 00    4th controller
       |  |  |  |     |        |     |  |
       |  |  |  |     |        |      ---- PCI io port adr
       |  |  |  |     |         --0x01 init/scan at boot time
       |  |  |  |      --PCI device/function number (0xdddddfff)
       |  |   ----- ?? PCI vendor ID (lsb/msb)
        ----PCI device ID (lsb/msb)

?? use of this data is a guess but seems reasonable

remaining bytes unknown - they do not appear to change in my
current set up

default set up is identical for 53c810a and 53c875 NVRAM
-----------------------------------------------------------
device set up (up to 16 devices - includes controller)

0f 00 08 08 64 00 0a 00 - id 0
0f 00 08 08 64 00 0a 00 
0f 00 08 08 64 00 0a 00 
0f 00 08 08 64 00 0a 00 
0f 00 08 08 64 00 0a 00 
0f 00 08 08 64 00 0a 00 
0f 00 08 08 64 00 0a 00 
0f 00 08 08 64 00 0a 00 

0f 00 08 08 64 00 0a 00 
0f 00 08 08 64 00 0a 00 
0f 00 08 08 64 00 0a 00 
0f 00 08 08 64 00 0a 00 
0f 00 08 08 64 00 0a 00 
0f 00 08 08 64 00 0a 00 
0f 00 08 08 64 00 0a 00 
0f 00 08 08 64 00 0a 00 - id 15
 |     |  |  |     |  |
 |     |  |  |      ----timeout (lsb/msb)
 |     |  |   --synch period (0x?? 40 Mtrans/sec- fast 40) (probably 0x28)
 |     |  |                  (0x30 20 Mtrans/sec- fast 20)
 |     |  |                  (0x64 10 Mtrans/sec- fast )
 |     |  |                  (0xc8  5 Mtrans/sec)
 |     |  |                  (0x00  asynchronous)
 |     |   -- ?? max sync offset (0x08 in NVRAM on 53c810a) 
 |     |                         (0x10 in NVRAM on 53c875)
 |      --device bus width (0x08 narrow)
 |                         (0x10 16 bit wide)
  --flag bits
    0x00000001 - disconnect enabled
    0x00000010 - scan at boot time
    0x00000100 - scan luns
    0x00001000 - queue tags enabled

remaining bytes unknown - they do not appear to change in my
current set up

?? use of this data is a guess but seems reasonable 
(but it could be max bus width)

default set up for 53c810a NVRAM
default set up for 53c875 NVRAM - bus width     - 0x10
                                - sync offset ? - 0x10
                                - sync period   - 0x30
-----------------------------------------------------------
?? spare device space (32 bit bus ??)

00 00 00 00 00 00 00 00  (19x8bytes)
.
.
00 00 00 00 00 00 00 00

default set up is identical for 53c810a and 53c875 NVRAM
-----------------------------------------------------------
trailer

fe fe   - ? end marker ?
00 00
00 00

default set up is identical for 53c810a and 53c875 NVRAM
-----------------------------------------------------------



17.3 Tekram NVRAM layout

nvram 64x16 (1024 bit)

Drive settings

Drive ID 0-15 (addr 0x0yyyy0 = device setup, yyyy = ID)
              (addr 0x0yyyy1 = 0x0000)

    x x x x  x x x x  x x x x  x x x x
               | | |      | |  | | | |
               | | |      | |  | | |  ----- parity check   0 - off
               | | |      | |  | | |                       1 - on
               | | |      | |  | | |
               | | |      | |  | |  ------- sync neg       0 - off
               | | |      | |  | |                         1 - on
               | | |      | |  | |
               | | |      | |  |  --------- disconnect     0 - off
               | | |      | |  |                           1 - on
               | | |      | |  |
               | | |      | |   ----------- start cmd      0 - off
               | | |      | |                              1 - on
               | | |      | |
               | | |      |  -------------- tagged cmds    0 - off
               | | |      |                                1 - on
               | | |      | 
               | | |       ---------------- wide neg       0 - off
               | | |                                       1 - on
               | | |
                --------------------------- sync rate      0 - 10.0 Mtrans/sec
                                                           1 -  8.0
                                                           2 -  6.6
                                                           3 -  5.7
                                                           4 -  5.0
                                                           5 -  4.0
                                                           6 -  3.0
                                                           7 -  2.0
                                                           7 -  2.0
                                                           8 - 20.0
                                                           9 - 16.7
                                                           a - 13.9
                                                           b - 11.9

Global settings

Host flags 0 (addr 0x100000, 32) 

    x x x x  x x x x  x x x x  x x x x
    | | | |  | | | |           | | | |
    | | | |  | | | |            ----------- host ID    0x00 - 0x0f
    | | | |  | | | |
    | | | |  | | |  ----------------------- support for    0 - off
    | | | |  | | |                          > 2 drives     1 - on
    | | | |  | | | 
    | | | |  | |  ------------------------- support drives 0 - off
    | | | |  | |                            > 1Gbytes      1 - on
    | | | |  | |
    | | | |  |  --------------------------- bus reset on   0 - off
    | | | |  |                                power on     1 - on
    | | | |  |
    | | | |   ----------------------------- active neg     0 - off
    | | | |                                                1 - on
    | | | |
    | | |  -------------------------------- imm seek       0 - off
    | | |                                                  1 - on
    | | |
    | |  ---------------------------------- scan luns      0 - off
    | |                                                    1 - on
    | |
     -------------------------------------- removable      0 - disable
                                            as BIOS dev    1 - boot device
                                                           2 - all

Host flags 1 (addr 0x100001, 33)

    x x x x  x x x x  x x x x  x x x x
               | | |             | | | 
               | | |              --------- boot delay     0 -   3 sec
               | | |                                       1 -   5
               | | |                                       2 -  10
               | | |                                       3 -  20
               | | |                                       4 -  30
               | | |                                       5 -  60
               | | |                                       6 - 120
               | | |
                --------------------------- max tag cmds   0 -  2
                                                           1 -  4
                                                           2 -  8
                                                           3 - 16
                                                           4 - 32

Host flags 2 (addr 0x100010, 34)

    x x x x  x x x x  x x x x  x x x x
                                     |
                                      ----- F2/F6 enable   0 - off ???
                                                           1 - on  ???

checksum (addr 0x111111)

checksum = 0x1234 - (sum addr 0-63)

----------------------------------------------------------------------------

default nvram data:

0x0037 0x0000 0x0037 0x0000 0x0037 0x0000 0x0037 0x0000
0x0037 0x0000 0x0037 0x0000 0x0037 0x0000 0x0037 0x0000
0x0037 0x0000 0x0037 0x0000 0x0037 0x0000 0x0037 0x0000
0x0037 0x0000 0x0037 0x0000 0x0037 0x0000 0x0037 0x0000 

0x0f07 0x0400 0x0001 0x0000 0x0000 0x0000 0x0000 0x0000
0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0xfbbc


18. Support for Big Endian

The PCI local bus has been primarily designed for x86 architecture.
As a consequence, PCI devices generally expect DWORDS using little endian 
byte ordering.

18.1 Big Endian CPU

In order to support NCR chips on a Big Endian architecture the driver has to 
perform byte reordering each time it is needed. This feature has been 
added to the driver by Cort <cort@cs.nmt.edu> and is available in driver 
version 2.5 and later ones. For the moment Big Endian support has only 
been tested on Linux/PPC (PowerPC).

18.2 NCR chip in Big Endian mode of operations

It can be read in SYMBIOS documentation that some chips support a special 
Big Endian mode, on paper: 53C815, 53C825A, 53C875, 53C875N, 53C895.
This mode of operations is not software-selectable, but needs pin named 
BigLit to be pulled-up. Using this mode, most of byte reorderings should 
be avoided when the driver is running on a Big Endian CPU.
Driver version 2.5 is also, in theory, ready for this feature.

===============================================================================
End of NCR53C8XX driver README file
