====================================================================
=             Adaptec Ultra320 Family Manager Set v1.3.11          =
=                                                                  =
=                            README for                            =
=                    The Linux Operating System                    =
====================================================================

The following information is available in this file:

  1. Supported Hardware
  2. Version History
  3. Command Line Options
  4. Additional Notes
  5. Contacting Adaptec


1. Supported Hardware

   The following Adaptec SCSI Host Adapters are supported by this 
   driver set. 

   Ultra320 ASIC              Description
   ----------------------------------------------------------------
   AIC-7901A                  Single Channel 64-bit PCI-X 133MHz to 
                              Ultra320 SCSI ASIC
   AIC-7901B                  Single Channel 64-bit PCI-X 133MHz to 
                              Ultra320 SCSI ASIC with Retained Training
   AIC-7902A4                 Dual Channel 64-bit PCI-X 133MHz to 
                              Ultra320 SCSI ASIC
   AIC-7902B                  Dual Channel 64-bit PCI-X 133MHz to
                              Ultra320 SCSI ASIC with Retained Training

   Ultra320 Adapters          Description                              ASIC
   --------------------------------------------------------------------------
   Adaptec SCSI Card 39320    Dual Channel 64-bit PCI-X 133MHz to   7902A4/7902B
                              Ultra320 SCSI Card (one external 
                              68-pin, two internal 68-pin)
   Adaptec SCSI Card 39320A   Dual Channel 64-bit PCI-X 133MHz to      7902B
                              Ultra320 SCSI Card (one external 
                              68-pin, two internal 68-pin)
   Adaptec SCSI Card 39320D   Dual Channel 64-bit PCI-X 133MHz to      7902A4
                              Ultra320 SCSI Card (two external VHDC
                              and one internal 68-pin)
   Adaptec SCSI Card 39320D   Dual Channel 64-bit PCI-X 133MHz to      7902A4
                              Ultra320 SCSI Card (two external VHDC
                              and one internal 68-pin) based on the
                              AIC-7902B ASIC
   Adaptec SCSI Card 29320    Single Channel 64-bit PCI-X 133MHz to    7901A
                              Ultra320 SCSI Card (one external 
                              68-pin, two internal 68-pin, one
                              internal 50-pin)
   Adaptec SCSI Card 29320A   Single Channel 64-bit PCI-X 133MHz to    7901B
                              Ultra320 SCSI Card (one external 
                              68-pin, two internal 68-pin, one
                              internal 50-pin)
   Adaptec SCSI Card 29320LP  Single Channel 64-bit Low Profile        7901A
                              PCI-X 133MHz to Ultra320 SCSI Card
                              (One external VHDC, one internal
                              68-pin)
   Adaptec SCSI Card 29320ALP Single Channel 64-bit Low Profile        7901B
                              PCI-X 133MHz to Ultra320 SCSI Card
                              (One external VHDC, one internal
                              68-pin)
2. Version History

   1.3.11 (July 11, 2003)
        - Fix several deadlock issues.
        - Add 29320ALP and 39320B Id's.

   1.3.10 (June 3rd, 2003)
        - Align the SCB_TAG field on a 16byte boundary.  This avoids
          SCB corruption on some PCI-33 busses.
        - Correct non-zero luns on Rev B. hardware.
        - Update for change in 2.5.X SCSI proc FS interface.
        - When negotiation async via an 8bit WDTR message, send
          an SDTR with an offset of 0 to be sure the target
          knows we are async.  This works around a firmware defect
          in the Quantum Atlas 10K.
        - Implement controller susupend and resume.
        - Clear PCI error state during driver attach so that we
          don't disable memory mapped I/O due to a stray write
          by some other driver probe that occurred before we
          claimed the controller.

   1.3.9 (May 22nd, 2003)
        - Fix compiler errors.
        - Remove S/G splitting for segments that cross a 4GB boundary.
          This is guaranteed not to happen in Linux.
        - Add support for scsi_report_device_reset() found in
          2.5.X kernels.
        - Add 7901B support.
        - Simplify handling of the packtized lun Rev A workaround.
        - Correct and simplify handling of the ignore wide residue
          message.  The previous code would fail to report a residual
          if the transaction data length was even and we received
          an IWR message.

   1.3.8 (April 29th, 2003)
        - Fix types accessed via the command line interface code.
        - Perform a few firmware optimizations.
        - Fix "Unexpected PKT busfree" errors.
        - Use a sequencer interrupt to notify the host of
          commands with bad status.  We defer the notification
          until there are no outstanding selections to ensure
          that the host is interrupted for as short a time as
          possible.
        - Remove pre-2.2.X support.
        - Add support for new 2.5.X interrupt API.
        - Correct big-endian architecture support.

   1.3.7 (April 16th, 2003)
        - Use del_timer_sync() to ensure that no timeouts
          are pending during controller shutdown.
        - For pre-2.5.X kernels, carefully adjust our segment
          list size to avoid SCSI malloc pool fragmentation.
        - Cleanup channel display in our /proc output.
        - Workaround duplicate device entries in the mid-layer
          devlice list during add-single-device.

   1.3.6 (March 28th, 2003)
        - Correct a double free in the Domain Validation code.
        - Correct a reference to free'ed memory during controller
          shutdown.
        - Reset the bus on an SE->LVD change.  This is required
          to reset our transcievers.

   1.3.5 (March 24th, 2003)
        - Fix a few register window mode bugs.
        - Include read streaming in the PPR flags we display in
          diagnostics as well as /proc.
        - Add PCI hot plug support for 2.5.X kernels.
        - Correct default precompensation value for RevA hardware.
        - Fix Domain Validation thread shutdown.
        - Add a firmware workaround to make the LED blink
          brighter during packetized operations on the H2A4.
        - Correct /proc display of user read streaming settings.
        - Simplify driver locking by releasing the io_request_lock
          upon driver entry from the mid-layer.
        - Cleanup command line parsing and move much of this code
          to aiclib.

   1.3.4 (February 28th, 2003)
        - Correct a race condition in our error recovery handler.
        - Allow Test Unit Ready commands to take a full 5 seconds
          during Domain Validation.

   1.3.2 (February 19th, 2003)
        - Correct a Rev B. regression due to the GEM318
          compatibility fix included in 1.3.1.
          
   1.3.1 (February 11th, 2003)
        - Add support for the 39320A.
        - Improve recovery for certain PCI-X errors.
        - Fix handling of LQ/DATA/LQ/DATA for the
          same write transaction that can occur without
          interveining training.
        - Correct compatibility issues with the GEM318
          enclosure services device.
        - Correct data corruption issue that occurred under
          high tag depth write loads.
        - Adapt to a change in the 2.5.X daemonize() API.
        - Correct a "Missing case in ahd_handle_scsiint" panic.

   1.3.0 (January 21st, 2003)
        - Full regression testing for all U320 products completed.
        - Added abort and target/lun reset error recovery handler and
          interrupt coalessing.

   1.2.0 (November 14th, 2002)
        - Added support for Domain Validation
        - Add support for the Hewlett-Packard version of the 39320D
          and AIC-7902 adapters.
        Support for previous adapters has not been fully tested and should
        only be used at the customer's own risk.

   1.1.1 (September 24th, 2002)
        - Added support for the Linux 2.5.X kernel series

   1.1.0 (September 17th, 2002)
        - Added support for four additional SCSI products:
          ASC-39320, ASC-29320, ASC-29320LP, AIC-7901.

   1.0.0 (May 30th, 2002)
        - Initial driver release.

   2.1. Software/Hardware Features
        - Support for the SPI-4 "Ultra320" standard:
          - 320MB/s transfer rates
          - Packetized SCSI Protocol at 160MB/s and 320MB/s
          - Quick Arbitration Selection (QAS)
          - Retained Training Information (Rev B. ASIC only)
        - Interrupt Coalessing
        - Initiator Mode (target mode not currently 
          supported)
        - Support for the PCI-X standard up to 133MHz
        - Support for the PCI v2.2 standard
	- Domain Validation

   2.2. Operating System Support:
        - Redhat Linux 7.2, 7.3, 8.0, Advanced Server 2.1
        - SuSE Linux 7.3, 8.0, 8.1, Enterprise Server 7
        - only Intel and AMD x86 supported at this time
        - >4GB memory configurations supported.

     Refer to the User's Guide for more details on this.

3. Command Line Options

        WARNING: ALTERING OR ADDING THESE DRIVER PARAMETERS
                 INCORRECTLY CAN RENDER YOUR SYSTEM INOPERABLE.
                 USE THEM WITH CAUTION. 

   Edit the file "modprobe.conf" in the directory /etc and add/edit a
   line containing 'options aic79xx aic79xx=[command[,command...]]' where
   'command' is one or more of the following:
   -----------------------------------------------------------------
              Option: verbose
          Definition: enable additional informative messages during
                      driver operation.
     Possible Values: This option is a flag
       Default Value: disabled
   -----------------------------------------------------------------
              Option: debug:[value]
          Definition: Enables various levels of debugging information
                      The bit definitions for the debugging mask can
                      be found in drivers/scsi/aic7xxx/aic79xx.h under
                      the "Debug" heading.
     Possible Values: 0x0000 = no debugging, 0xffff = full debugging
       Default Value: 0x0000
   -----------------------------------------------------------------
              Option: no_reset
          Definition: Do not reset the bus during the initial probe
                      phase
     Possible Values: This option is a flag
       Default Value: disabled
   -----------------------------------------------------------------
              Option: extended
          Definition: Force extended translation on the controller
     Possible Values: This option is a flag
       Default Value: disabled
   -----------------------------------------------------------------
              Option: periodic_otag
          Definition: Send an ordered tag periodically to prevent
                      tag starvation.  Needed for some older devices
     Possible Values: This option is a flag
       Default Value: disabled
   -----------------------------------------------------------------
              Option: reverse_scan
          Definition: Probe the scsi bus in reverse order, starting
                      with target 15
     Possible Values: This option is a flag
       Default Value: disabled
   -----------------------------------------------------------------
              Option: global_tag_depth
          Definition: Global tag depth for all targets on all busses.
                      This option sets the default tag depth which
                      may be selectively overridden vi the tag_info
                      option.
     Possible Values: 1 - 253
       Default Value: 32
   -----------------------------------------------------------------
              Option: tag_info:{{value[,value...]}[,{value[,value...]}...]}
          Definition: Set the per-target tagged queue depth on a
                      per controller basis.  Both controllers and targets
                      may be ommitted indicating that they should retain
                      the default tag depth.
            Examples: tag_info:{{16,32,32,64,8,8,,32,32,32,32,32,32,32,32,32}
                        On Controller 0
                          specifies a tag depth of 16 for target 0
                          specifies a tag depth of 64 for target 3
                          specifies a tag depth of 8 for targets 4 and 5
                          leaves target 6 at the default
                          specifies a tag depth of 32 for targets 1,2,7-15
                        All other targets retain the default depth.

                      tag_info:{{},{32,,32}}
                        On Controller 1
                          specifies a tag depth of 32 for targets 0 and 2
                        All other targets retain the default depth.
                        
     Possible Values: 1 - 253
       Default Value: 32
   -----------------------------------------------------------------
              Option: rd_strm: {rd_strm_bitmask[,rd_strm_bitmask...]}
          Definition: Enable read streaming on a per target basis.
                      The rd_strm_bitmask is a 16 bit hex value in which
                      each bit represents a target.  Setting the target's
                      bit to '1' enables read streaming for that
                      target.  Controllers may be ommitted indicating that
                      they should retain the default read streaming setting.
             Example: rd_strm:{0x0041}
                        On Controller 0
                          enables read streaming for targets 0 and 6.
                          disables read streaming for targets 1-5,7-15.
                        All other targets retain the default read
                        streaming setting.
             Example: rd_strm:{0x0023,,0xFFFF}
                        On Controller 0
                          enables read streaming for targets 1,2, and 5.
                          disables read streaming for targets 3,4,6-15.
                        On Controller 2
                          enables read streaming for all targets.
                        All other targets retain the default read
                        streaming setting.
                      
     Possible Values: 0x0000 - 0xffff
       Default Value: 0x0000
   -----------------------------------------------------------------
              Option: dv: {value[,value...]}
          Definition: Set Domain Validation Policy on a per-controller basis.
                      Controllers may be ommitted indicating that
                      they should retain the default read streaming setting.
             Example: dv:{-1,0,,1,1,0}
                        On Controller 0 leave DV at its default setting.
                        On Controller 1 disable DV.
                        Skip configuration on Controller 2.
                        On Controllers 3 and 4 enable DV.
                        On Controller 5 disable DV.

     Possible Values: < 0 Use setting from serial EEPROM.
                      0 Disable DV
                      > 0 Enable DV
       Default Value: DV Serial EEPROM configuration setting.
   -----------------------------------------------------------------
              Option: seltime:[value]
          Definition: Specifies the selection timeout value
     Possible Values: 0 = 256ms, 1 = 128ms, 2 = 64ms, 3 = 32ms
       Default Value: 0
   -----------------------------------------------------------------

   *** The following three options should only be changed at ***
   *** the direction of a technical support representative.  ***

   -----------------------------------------------------------------
              Option: precomp: {value[,value...]}
          Definition: Set IO Cell precompensation value on a per-controller
                      basis.
                      Controllers may be ommitted indicating that
                      they should retain the default precompensation setting.
             Example: precomp:{0x1}
                        On Controller 0 set precompensation to 1.
             Example: precomp:{1,,7}
                        On Controller 0 set precompensation to 1.
                        On Controller 2 set precompensation to 8.
                      
     Possible Values: 0 - 7
       Default Value: Varies based on chip revision
   -----------------------------------------------------------------
              Option: slewrate: {value[,value...]}
          Definition: Set IO Cell slew rate on a per-controller basis.
                      Controllers may be ommitted indicating that
                      they should retain the default slew rate setting.
             Example: slewrate:{0x1}
                        On Controller 0 set slew rate to 1.
             Example: slewrate :{1,,8}
                        On Controller 0 set slew rate to 1.
                        On Controller 2 set slew rate to 8.
                      
     Possible Values: 0 - 15
       Default Value: Varies based on chip revision
   -----------------------------------------------------------------
              Option: amplitude: {value[,value...]}
          Definition: Set IO Cell signal amplitude on a per-controller basis.
                      Controllers may be ommitted indicating that
                      they should retain the default read streaming setting.
             Example: amplitude:{0x1}
                        On Controller 0 set amplitude to 1.
             Example: amplitude :{1,,7}
                        On Controller 0 set amplitude to 1.
                        On Controller 2 set amplitude to 7.
                      
     Possible Values: 1 - 7
       Default Value: Varies based on chip revision
   -----------------------------------------------------------------

   Example: 'options aic79xx aic79xx=verbose,rd_strm:{{0x0041}}'
        enables verbose output in the driver and turns read streaming on
        for targets 0 and 6 of Controller 0.

4. Additional Notes

   4.1. Known/Unresolved or FYI Issues

        * Under SuSE Linux Enterprise 7, the driver may fail to operate
          correctly due to a problem with PCI interrupt routing in the
          Linux kernel.  Please contact SuSE for an updated Linux
          kernel.

   4.2. Third-Party Compatibility Issues

        * Adaptec only supports Ultra320 hard drives running
          the latest firmware available. Please check with
          your hard drive manufacturer to ensure you have the
          latest version.

   4.3. Operating System or Technology Limitations
        
        * PCI Hot Plug is untested and may cause the operating system 
          to stop responding.
        * Luns that are not numbered contiguously starting with 0 might not
          be automatically probed during system startup.  This is a limitation
          of the OS.  Please contact your Linux vendor for instructions on
          manually probing non-contiguous luns.
        * Using the Driver Update Disk version of this package during OS
          installation under RedHat might result in two versions of this
          driver being installed into the system module directory.  This
          might cause problems with the /sbin/mkinitrd program and/or
          other RPM packages that try to install system modules.  The best
          way to correct this once the system is running is to install
          the latest RPM package version of this driver, available from
          http://www.adaptec.com.


5. Contacting Adaptec

   A Technical Support Identification (TSID) Number is required for 
   Adaptec technical support.
    - The 12-digit TSID can be found on the white barcode-type label
      included inside the box with your product. The TSID helps us 
      provide more efficient service by accurately identifying your 
      product and support status.
   Support Options
    - Search the Adaptec Support Knowledgebase (ASK) at
      http://ask.adaptec.com for articles, troubleshooting tips, and
      frequently asked questions for your product.
    - For support via Email, submit your question to Adaptec's 
      Technical Support Specialists at http://ask.adaptec.com.
     
   North America
    - Visit our Web site at http://www.adaptec.com.
    - To speak with a Fibre Channel/RAID/External Storage Technical
      Support Specialist, call 1-321-207-2000,
      Hours: Monday-Friday, 3:00 A.M. to 5:00 P.M., PST.
      (Not open on holidays)
    - For Technical Support in all other technologies including 
      SCSI, call 1-408-934-7274,
      Hours: Monday-Friday, 6:00 A.M. to 5:00 P.M., PST.
      (Not open on holidays)
    - For after hours support, call 1-800-416-8066 ($99/call, 
      $149/call on holidays)
    - To order Adaptec products including software and cables, call
      1-800-442-7274 or 1-408-957-7274. You can also visit our 
      online store at http://www.adaptecstore.com

   Europe
    - Visit our Web site at http://www.adaptec-europe.com.
    - English and French: To speak with a Technical Support 
      Specialist, call one of the following numbers:
        - English: +32-2-352-3470
        - French:  +32-2-352-3460
      Hours: Monday-Thursday, 10:00 to 12:30, 13:30 to 17:30 CET 
             Friday, 10:00 to 12:30, 13:30 to 16:30 CET
    - German: To speak with a Technical Support Specialist,
      call +49-89-456-40660
      Hours: Monday-Thursday, 09:30 to 12:30, 13:30 to 16:30 CET
             Friday, 09:30 to 12:30, 13:30 to 15:00 CET
    - To order Adaptec products, including accessories and cables:
        - UK: +0800-96-65-26 or fax +0800-731-02-95
        - Other European countries: +32-11-300-379

   Australia and New Zealand
    - Visit our Web site at http://www.adaptec.com.au.
    - To speak with a Technical Support Specialist, call 
      +612-9416-0698
      Hours: Monday-Friday, 10:00 A.M. to 4:30 P.M., EAT
      (Not open on holidays)

   Japan
    - To speak with a Technical Support Specialist, call 
      +81-3-5308-6120 
      Hours: Monday-Friday, 9:00 a.m. to 12:00 p.m., 1:00 p.m. to
      6:00 p.m. TSC

   Hong Kong and China
    - To speak with a Technical Support Specialist, call 
      +852-2869-7200
      Hours: Monday-Friday, 10:00 to 17:00.
    - Fax Technical Support at +852-2869-7100.

   Singapore
    - To speak with a Technical Support Specialist, call 
      +65-245-7470
      Hours: Monday-Friday, 10:00 to 17:00.
    - Fax Technical Support at +852-2869-7100

-------------------------------------------------------------------
/*
 * Copyright (c) 2003 Adaptec Inc. 691 S. Milpitas Blvd., Milpitas CA 95035 USA.
 * All rights reserved.
 *
 * You are permitted to redistribute, use and modify this README file in whole
 * or in part in conjunction with redistribution of software governed by the
 * General Public License, provided that the following conditions are met:
 * 1. Redistributions of README file must retain the above copyright
 *    notice, this list of conditions, and the following disclaimer,
 *    without modification.
 * 2. The name of the author may not be used to endorse or promote products
 *    derived from this software without specific prior written permission.
 * 3. Modifications or new contributions must be attributed in a copyright
 *    notice identifying the author ("Contributor") and added below the
 *    original copyright notice. The copyright notice is for purposes of
 *    identifying contributors and should not be deemed as permission to alter
 *    the permissions given by Adaptec.
 *
 * THIS README FILE IS PROVIDED BY ADAPTEC AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, ANY
 * WARRANTIES OF NON-INFRINGEMENT OR THE IMPLIED WARRANTIES OF MERCHANTABILITY
 * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
 * ADAPTEC OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
 * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS README
 * FILE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
