README file for the dc395x SCSI driver
==========================================

Status
------
The driver has been tested with CD-R and CD-R/W drives. These should
be safe to use. Testing with hard disks has not been done to any
great degree and caution should be exercised if you want to attempt
to use this driver with hard disks.

This is a 2.5 only driver. For a 2.4 driver please see the original
driver (which this driver started from) at
http://www.garloff.de/kurt/linux/dc395/

Problems, questions and patches should be submitted to the mailing
list. Details on the list, including archives, are available at
http://lists.twibble.org/mailman/listinfo/dc395x/

Parameters
----------
The driver uses the settings from the EEPROM set in the SCSI BIOS 
setup. If there is no EEPROM, the driver uses default values.
Both can be overriden by command line parameters (module or kernel
parameters).

The following parameters are available:

 - safe
   Default: 0, Acceptable values: 0 or 1

   If safe is set to 1 then the adapter will use conservative
   ("safe") default settings. This sets:

		shortcut for dc395x=7,4,9,15,2,10

 - adapter_id
   Default: 7, Acceptable values: 0 to 15

   Sets the host adapter SCSI ID.

 - max_speed
   Default: 1, Acceptable value: 0 to 7
   0 = 20   Mhz
   1 = 12.2 Mhz
   2 = 10   Mhz
   3 = 8    Mhz
   4 = 6.7  Mhz
   5 = 5.8  Hhz
   6 = 5    Mhz
   7 = 4    Mhz

 - dev_mode
   Bitmap for device configuration

   DevMode bit definition:
      Bit Val(hex) Val(dec)  Meaning
      *0    0x01       1     Parity check
      *1    0x02       2     Synchronous Negotiation
      *2    0x04       4     Disconnection
      *3    0x08       8     Send Start command on startup. (Not used)
      *4    0x10      16     Tagged Command Queueing
      *5    0x20      32     Wide Negotiation

 - adapter_mode
   Bitmap for adapter configuration

   AdaptMode bit definition
      Bit Val(hex) Val(dec)  Meaning
      *0    0x01       1     Support more than two drives. (Not used)
      *1    0x02       2     Use DOS compatible mapping for HDs greater than 1GB.
      *2    0x04       4     Reset SCSI Bus on startup.
      *3    0x08       8     Active Negation: Improves SCSI Bus noise immunity.
       4    0x10      16     Immediate return on BIOS seek command. (Not used)
    (*)5    0x20      32     Check for LUNs >= 1.

 - tags
   Default: 3, Acceptable values: 0-5
   
   The number of tags is 1<<x, if x has been specified

 - reset_delay
   Default: 1, Acceptable values: 0-180

   The seconds to not accept commands after a SCSI Reset


For the built  in driver the parameters should be prefixed with
dc395x. (eg "dc395x.safe=1")


Copyright
---------
The driver is free software. It is protected by the GNU General Public
License (GPL). Please read it, before using this driver. It should be
included in your kernel sources and with your distribution. It carries the
filename COPYING. If you don't have it, please ask me to send you one by
email.
Note: The GNU GPL says also something about warranty and liability. 
Please be aware the following: While we do my best to provide a working and
reliable driver, there is a chance, that it will kill your valuable data. 
We refuse to take any responsibility for that. The driver is provided as-is
and YOU USE IT AT YOUR OWN RESPONSIBILITY.
