.. SPDX-License-Identifier: GPL-2.0

===========================
NCR53C8XX/SYM53C8XX drivers
===========================

Written by Gerard Roudier <groudier@free.fr>

21 Rue Carnot

95170 DEUIL LA BARRE - FRANCE

29 May 1999

.. Contents:

   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       |
|[1]_    |           |     |           |            |            |            |
+--------+-----------+-----+-----------+------------+------------+------------+

.. [1] 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)
:Serial NVRAM:          Symbios and Tekram formats

- Scatter / gather
- Shared interrupt
- Boot setup commands


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 painful
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 known 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_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
        =====      ===================

  Do not 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 IRQF_SHARED 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     |        Y         |       Y      |
|    enabled                    |                  |              |
+-------------------------------+------------------+--------------+
|  * 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 the 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_SCSI_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.

15. SCSI problem troubleshooting
================================

15.1 Problem tracking
---------------------

Most SCSI problems are due to a non conformant SCSI bus or to buggy
devices.  If unfortunately 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 its 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.
