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. Synchronous 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 earliest 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 instructions 
  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/

Useful 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 didn't 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 optional 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 helpful. 

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 personal 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 information on latest available 
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. Synchronous 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
