			    AIC7xxx Driver for Linux

Introduction
----------------------------
The AIC7xxx SCSI driver adds support for Adaptec (http://www.adaptec.com)
SCSI controllers and chipsets. Major portions of the driver and driver
development are shared between both Linux and FreeBSD. Support for the
AIC-7xxx chipsets have been in the default Linux kernel since approximately
linux-1.1.x and fairly stable since linux-1.2.x, and are also in FreeBSD
2.1.0 or later.

  Supported cards/chipsets
  ----------------------------
    Adaptec Cards
    ----------------------------
    AHA-274x
    AHA-274xT               
    AHA-2842
    AHA-2910B               
    AHA-2920C
    AHA-2930
    AHA-2930U
    AHA-2930CU
    AHA-2930U2
    AHA-2940               
    AHA-2940W              
    AHA-2940U              
    AHA-2940UW
    AHA-2940UW-PRO
    AHA-2940AU 
    AHA-2940U2W
    AHA-2940U2
    AHA-2940U2B
    AHA-2940U2BOEM
    AHA-2944D              
    AHA-2944WD
    AHA-2944UD
    AHA-2944UWD
    AHA-2950U2
    AHA-2950U2W
    AHA-2950U2B
    AHA-29160M
    AHA-3940
    AHA-3940U
    AHA-3940W
    AHA-3940UW
    AHA-3940AUW
    AHA-3940U2W
    AHA-3950U2B
    AHA-3950U2D
    AHA-3960D
    AHA-39160M
    AHA-3985
    AHA-3985U
    AHA-3985W
    AHA-3985UW

    Motherboard Chipsets
    ----------------------------
    AIC-777x   
    AIC-785x
    AIC-786x
    AIC-787x
    AIC-788x
    AIC-789x
    AIC-3860

    Bus Types
    ----------------------------
    W - Wide SCSI, SCSI-3, 16bit bus, 68pin connector, will also support
        SCSI-1/SCSI-2 50pin devices, transfer rates up to 20MB/s.
    U - Ultra SCSI, transfer rates up to 40MB/s.
    U2- Ultra 2 SCSI, transfer rates up to 80MB/s.
    D - Differential SCSI.
    T - Twin Channel SCSI. Up to 14 SCSI devices.

    AHA-274x - EISA SCSI controller
    AHA-284x - VLB SCSI controller
    AHA-29xx - PCI SCSI controller
    AHA-394x - PCI controllers with two separate SCSI controllers on-board.
    AHA-398x - PCI RAID controllers with three separate SCSI controllers
               on-board.

  Not Supported Devices
  ------------------------------
    Adaptec Cards
    ----------------------------
    AHA-2920 (Only the cards that use the Future Domain chipset are not
              supported, any 2920 cards based on Adaptec AIC chipsets,
	      such as the 2920C, are supported)
    AAA-13x Raid Adapters
    AAA-113x Raid Port Card

    Motherboard Chipsets
    ----------------------------
    AIC-7810

    Bus Types
    ----------------------------
    R - Raid Port busses are not supported.

    The hardware RAID devices sold by Adaptec are *NOT* supported by this
    driver (and will people please stop emailing me about them, they are
    a totally separate beast from the bare SCSI controllers and this driver
    cannot be retrofitted in any sane manner to support the hardware RAID
    features on those cards - Doug Ledford).
    

  People
  ------------------------------
    Justin T Gibbs  gibbs@plutotech.com
      (BSD Driver Author)
    Dan Eischen     deischen@iworks.InterWorks.org
      (Original Linux Driver Co-maintainer)
    Dean Gehnert    deang@teleport.com
      (Original Linux FTP/patch maintainer)
    Jess Johnson    jester@frenzy.com
      (AIC7xxx FAQ author)
    Doug Ledford    dledford@redhat.com
      (Current Linux aic7xxx-5.x.x Driver/Patch/FTP maintainer)
    
    Special thanks go to John Aycock (aycock@cpsc.ucalgary.ca), the original
    author of the driver. John has since retired from the project. Thanks
    again for all his work!
    
  Mailing list
  ------------------------------
    There is a mailing list available for users who want to track development
    and converse with other users and developers. This list is for both
    FreeBSD and Linux support of the AIC7xxx chipsets.

    To subscribe to the AIC7xxx mailing list send mail to the list server,
    with "subscribe AIC7xxx" in the body (no Subject: required):
        To: majordomo@FreeBSD.ORG
        ---
        subscribe AIC7xxx

    To unsubscribe from the list, send mail to the list server with:
        To: majordomo@FreeBSD.ORG
        ---
        unsubscribe AIC7xxx

    Send regular messages and replies to: AIC7xxx@FreeBSD.ORG
    
  Boot Command line options
  ------------------------------
    "aic7xxx=no_reset" -  Eliminate the SCSI bus reset during startup.
        Some SCSI devices need the initial reset that this option disables
	in order to work.  If you have problems at bootup, please make sure
	you aren't using this option.
	
    "aic7xxx=reverse_scan" - Certain PCI motherboards scan for devices at
        bootup by scanning from the highest numbered PCI device to the
	lowest numbered PCI device, others do just the opposite and scan
	from lowest to highest numbered PCI device.  There is no reliable
	way to autodetect this ordering.  So, we default to the most common
	order, which is lowest to highest.  Then, in case your motherboard
	scans from highest to lowest, we have this option.  If your BIOS
	finds the drives on controller A before controller B but the linux
	kernel finds your drives on controller B before A, then you should
	use this option.
	
    "aic7xxx=extended" - Force the driver to detect extended drive translation
        on your controller.  This helps those people who have cards without
        a SEEPROM make sure that linux and all other operating systems think
        the same way about your hard drives.

    "aic7xxx=scbram" - Some cards have external SCB RAM that can be used to
        give the card more hardware SCB slots.  This allows the driver to use
	that SCB RAM.  Without this option, the driver won't touch the SCB
	RAM because it is known to cause problems on a few cards out there
	(such as 3985 class cards).
	
    "aic7xxx=irq_trigger:x" - Replace x with either 0 or 1 to force the kernel
        to use the correct IRQ type for your card.  This only applies to EISA
        based controllers.  On these controllers, 0 is for Edge triggered
        interrupts, and 1 is for Level triggered interrupts.  If you aren't
        sure or don't know which IRQ trigger type your EISA card uses, then
        let the kernel autodetect the trigger type.
	
    "aic7xxx=verbose" - This option can be used in one of two ways.  If you
        simply specify aic7xxx=verbose, then the kernel will automatically
	pick the default set of verbose messages for you to see.
	Alternatively, you can specify the command as 
	"aic7xxx=verbose:0xXXXX" where the X entries are replaced with
	hexadecimal digits.  This option is a bit field type option.  For
	a full listing of the available options, search for the 
	#define VERBOSE_xxxxxx lines in the aic7xxx.c file.  If you want
	verbose messages, then it is recommended that you simply use the
	aic7xxx=verbose variant of this command.
	
    "aic7xxx=pci_parity:x" - This option controls whether or not the driver
        enables PCI parity error checking on the PCI bus.  By default, this
        checking is disabled.  To enable the checks, simply specify pci_parity
        with no value afterwords.  To reverse the parity from even to odd,
        supply any number other than 0 or 255.  In short:
          pci_parity     - Even parity checking (even is the normal PCI parity)
          pci_parity:x   - Where x > 0, Odd parity checking
          pci_parity:0   - No check (default)
        NOTE: In order to get Even PCI parity checking, you must use the
        version of the option that does not include the : and a number at
        the end (unless you want to enter exactly 2^32 - 1 as the number).
	
    "aic7xxx=no_probe" - This option will disable the probing for any VLB
        based 2842 controllers and any EISA based controllers.  This is
	needed on certain newer motherboards where the normal EISA I/O ranges
	have been claimed by other PCI devices.  Probing on those machines
	will often result in the machine crashing or spontaneously rebooting
	during startup.  Examples of machines that need this are the
	Dell PowerEdge 6300 machines.

    "aic7xxx=seltime:2" - This option controls how long the card waits
        during a device selection sequence for the device to respond.
	The original SCSI spec says that this "should be" 256ms.  This
	is generally not required with modern devices.  However, some
	very old SCSI I devices need the full 256ms.  Most modern devices
	can run fine with only 64ms.  The default for this option is
	64ms.  If you need to change this option, then use the following
	table to set the proper value in the example above:
	  0  -  256ms
	  1  -  128ms
	  2  -   64ms
	  3  -   32ms
	
    "aic7xxx=panic_on_abort" - This option is for debugging and will cause
        the driver to panic the linux kernel and freeze the system the first
	time the drivers abort or reset routines are called.  This is most
	helpful when some problem causes infinite reset loops that scroll too
	fast to see.  By using this option, you can write down what the errors
	actually are and send that information to me so it can be fixed.
	
    "aic7xxx=dump_card" - This option will print out the *entire* set of
        configuration registers on the card during the init sequence.  This
	is a debugging aid used to see exactly what state the card is in
	when we finally finish our initialization routines.  If you don't
	have documentation on the chipsets, this will do you absolutely
	no good unless you are simply trying to write all the information
	down in order to send it to me.
	
    "aic7xxx=dump_sequencer" - This is the same as the above options except
        that instead of dumping the register contents on the card, this
	option dumps the contents of the sequencer program RAM.  This gives
	the ability to verify that the instructions downloaded to the
	card's sequencer are indeed what they are supposed to be.  Again,
	unless you have documentation to tell you how to interpret these
	numbers, then it is totally useless.
	
    "aic7xxx=override_term:0xffffffff" - This option is used to force the
    	termination on your SCSI controllers to a particular setting.  This
	is a bit mask variable that applies for up to 8 aic7xxx SCSI channels.
	Each channel gets 4 bits, divided as follows:
	bit   3   2   1   0
	      |   |   |   Enable/Disable Single Ended Low Byte Termination
	      |   |   En/Disable Single Ended High Byte Termination
	      |   En/Disable Low Byte LVD Termination
	      En/Disable High Byte LVD Termination

	The upper 2 bits that deal with LVD termination only apply to Ultra2
	controllers.  Futhermore, due to the current Ultra2 controller
	designs, these bits are tied together such that setting either bit
	enables both low and high byte LVD termination.  It is not possible
	to only set high or low byte LVD termination in this manner.  This is
	an artifact of the BIOS definition on Ultra2 controllers.  For other
	controllers, the only important bits are the two lowest bits.  Setting
	the higher bits on non-Ultra2 controllers has no effect.  A few
	examples of how to use this option:

	Enable low and high byte termination on a non-ultra2 controller that
	is the first aic7xxx controller (the correct bits are 0011), 
	aic7xxx=override_term:0x3

	Enable all termination on the third aic7xxx controller, high byte
	termination on the second aic7xxx controller, and low and high byte
	SE termination on the first aic7xxx controller 
	(bits are 1111 0010 0011), 
	aic7xxx=override_term:0xf23
	
	No attempt has been made to make this option non-cryptic.  It really
	shouldn't be used except in dire circumstances, and if that happens,
	I'm probably going to be telling you what to set this to anyway :)

    "aic7xxx=stpwlev:0xffffffff" - This option is used to control the STPWLEV
        bit in the DEVCONFIG PCI register.  Currently, this is one of the
	very few registers that we have absolutely *no* way of detecting
	what the variable should be.  It depends entirely on how the chipset
	and external terminators were coupled by the card/motherboard maker.
	Further, a chip reset (at power up) always sets this bit to 0.  If
	there is no BIOS to run on the chipset/card (such as with a 2910C
	or a motherboard controller with the BIOS totally disabled) then
	the variable may not get set properly.  Of course, if the proper
	setting was 0, then that's what it would be after the reset, but if
	the proper setting is actually 1.....you get the picture.  Now, since
	we can't detect this at all, I've added this option to force the
	setting.  If you have a BIOS on your controller then you should never
	need to use this option.  However, if you are having lots of SCSI
	reset problems and can't seem to get them knocked out, this may help.

	Here's a test to know for certain if you need this option.  Make
	a boot floppy that you can use to boot your computer up and that
	will detect the aic7xxx controller.  Next, power down your computer.
	While it's down, unplug all SCSI cables from your Adaptec SCSI
	controller.  Boot the system back up to the Adaptec EZ-SCSI BIOS
	and then make sure that termination is enabled on your adapter (if
	you have an Adaptec BIOS of course).  Next, boot up the floppy you
	made and wait for it to detect the aic7xxx controller.  If the kernel
	finds the controller fine, says scsi : x hosts and then tries to
	detect your devices like normal, up to the point where it fails to
	mount your root file system and panics, then you're fine.  If, on
	the other hand, the system goes into an infinite reset loop, then
	you need to use this option and/or the previous option to force the
	proper termination settings on your controller.   If this happens,
	then you next need to figure out what your settings should be.

	To find the correct settings, power your machine back down, connect
	back up the SCSI cables, and boot back into your machine like normal.
	However, boot with the aic7xxx=verbose:0x39 option.  Record the
	initial DEVCONFIG values for each of your aic7xxx controllers as
	they are listed, and also record what the machine is detecting as
	the proper termination on your controllers.  NOTE: the order in
	which the initial DEVCONFIG values are printed out is not guaranteed
	to be the same order as the SCSI controllers are registered.  The
	above option and this option both work on the order of the SCSI
	controllers as they are registered, so make sure you match the right
	DEVCONFIG values with the right controllers if you have more than
	one aic7xxx controller.

	Once you have the detected termination settings and the initial
	DEVCONFIG values for each controller, then figure out what the
	termination on each of the controllers *should* be.  Hopefully, that
	part is correct, but it could possibly be wrong if there is
	bogus cable detection logic on your controller or something similar.
	If all the controllers have the correct termination settings, then
	don't set the aic7xxx=override_term variable at all, leave it alone.
	Next, on any controllers that go into an infinite reset loop when
	you unplug all the SCSI cables, get the starting DEVCONFIG value.
	If the initial DEVCONFIG value is divisible by 2, then the correct
	setting for that controller is 0.  If it's an odd number, then
	the correct setting for that controller is 1.  For any other
	controllers that didn't have an infinite reset problem, then reverse
	the above options.  If DEVCONFIG was even, then the correct setting
	is 1, if not then the correct setting is 0.

	Now that you know what the correct setting was for each controller,
	we need to encode that into the aic7xxx=stpwlev:0x... variable.
	This variable is a bit field encoded variable.  Bit 0 is for the first
	aic7xxx controller, bit 1 for the next, etc.  Put all these bits
	together and you get a number.  For example, if the third aic7xxx
	needed a 1, but the second and first both needed a 0, then the bits
	would be 100 in binary.  This then translates to 0x04.  You would
	therefore set aic7xxx=stpwlev:0x04.  This is fairly standard binary
	to hexadecimal conversions here.  If you aren't up to speed on the
	binary->hex conversion then send an email to the aic7xxx mailing
	list and someone can help you out.

    "aic7xxx=tag_info:{{8,8..},{8,8..},..}" - This option is used to disable
        or enable Tagged Command Queueing (TCQ) on specific devices.  As of
	driver version 5.1.11, TCQ is now either on or off by default
	according to the setting you choose during the make config process.
	In order to en/disable TCQ for certian devices at boot time, a user
	may use this boot param.  The driver will then parse this message out
        and en/disable the specific device entries that are present based upon
        the value given.  The param line is parsed in the following manner:

          { - first instance indicates the start of this parameter values
              second instance is the start of entries for a particular
              device entry
          } - end the entries for a particular host adapter, or end the entire
              set of parameter entries
          , - move to next entry.  Inside of a set of device entries, this
              moves us to the next device on the list.  Outside of device
              entries, this moves us to the next host adapter
          . - Same effect as , but is safe to use with insmod.
          x - the number to enter into the array at this position.  
              0 = Enable tagged queueing on this device and use the default
                  queue depth
              1-254 = Enable tagged queueing on this device and use this
                      number as the queue depth
              255 = Disable tagged queueing on this device.
              Note: anything above 32 for an actual queue depth is wasteful
                    and not recommended.

        A few examples of how this can be used:

        tag_info:{{8,12,,0,,255,4}}
          This line will only effect the first aic7xxx card registered.  It
          will set scsi id 0 to a queue depth of 8, id 1 to 12, leave id 2
          at the default, set id 3 to tagged queueing enabled and use the
          default queue depth, id 4 default, id 5 disabled, and id 6 to 4.
          Any not specified entries stay at the default value, repeated
          commas with no value specified will simply increment to the next id
          without changing anything for the missing values.

        tag_info:{,,,{,,,255}}
          First, second, and third adapters at default values.  Fourth
          adapter, id 3 is disabled.  Notice that leading commas simply
	  increment what the first number effects, and there are no need
	  for trailing commas.  When you close out an adapter, or the
	  entire entry, anything not explicitly set stays at the default
	  value.

        A final note on this option.  The scanner I used for this isn't
        perfect or highly robust.  If you mess the line up, the worst that
        should happen is that the line will get ignored.  If you don't
        close out the entire entry with the final bracket, then any other
        aic7xxx options after this will get ignored.  So, in general, be
        sure of what you are entering, and after you have it right, just
        add it to the lilo.conf file so there won't be any mistakes.  As
        a means of checking this parser, the entire tag_info array for
        each card is now printed out in the /proc/scsi/aic7xxx/x file.  You
        can use that to verify that your options were parsed correctly. 
        
    Boot command line options may be combined to form the proper set of options
    a user might need.  For example, the following is valid:
    
    aic7xxx=verbose,extended,irq_trigger:1
    
    The only requirement is that individual options be separated by a comma or
    a period on the command line.
        
  Module Loading command options
  ------------------------------
    When loading the aic7xxx driver as a module, the exact same options are
    available to the user.  However, the syntax to specify the options changes
    slightly.  For insmod, you need to wrap the aic7xxx= argument in quotes
    and replace all ',' with '.'.  So, for example, a valid insmod line
    would be:

    insmod aic7xxx aic7xxx='verbose.irq_trigger:1.extended'

    This line should result in the *exact* same behaviour as if you typed
    it in at the lilo prompt and the driver was compiled into the kernel
    instead of being a module.  The reason for the single quote is so that
    the shell won't try to interpret anything in the line, such as {. 
    Insmod assumes any options starting with a letter instead of a number
    is a character string (which is what we want) and by switching all of
    the commas to periods, insmod won't interpret this as more than one
    string and write junk into our binary image.  I consider it a bug in
    the insmod program that even if you wrap your string in quotes (quotes
    that pass the shell mind you and that insmod sees) it still treates
    a comma inside of those quotes as starting a new variable, resulting
    in memory scribbles if you don't switch the commas to periods.


  Kernel Compile options
  ------------------------------
    The various kernel compile time options for this driver are now fairly
    well documented in the file Documentation/Configure.help.  In order to
    see this documentation, you need to use one of the advanced configuration
    programs (menuconfig and xconfig).  If you are using the "make menuconfig"
    method of configuring your kernel, then you would simply highlight the
    option in question and hit the ? key.  If you are using the "make xconfig"
    method of configuring your kernel, then simply click on the help button
    next to the option you have questions about.  The help information from
    the Configure.help file will then get automatically displayed.

  /proc support
  ------------------------------
    The /proc support for the AIC7xxx can be found in the /proc/scsi/aic7xxx/
    directory. That directory contains a file for each SCSI controller in
    the system. Each file presents the current configuration and transfer
    statistics (enabled with #define in aic7xxx.c) for each controller.

    Thanks to Michael Neuffer for his upper-level SCSI help, and
    Matthew Jacob for statistics support.

  Debugging the driver
  ------------------------------
    Should you have problems with this driver, and would like some help in
    getting them solved, there are a couple debugging items built into
    the driver to facilitate getting the needed information from the system.
    In general, I need a complete description of the problem, with as many
    logs as possible concerning what happens.  To help with this, there is
    a command option aic7xxx=panic_on_abort.  This option, when set, forces
    the driver to panic the kernel on the first SCSI abort issued by the
    mid level SCSI code.  If your system is going to reset loops and you
    can't read the screen, then this is what you need.  Not only will it
    stop the system, but it also prints out a large amount of state
    information in the process.  Second, if you specify the option
    "aic7xxx=verbose:0x1ffff", the system will print out *SOOOO* much
    information as it runs that you won't be able to see anything.
    However, this can actually be very useful if your machine simply
    locks up when trying to boot, since it will pin-point what was last
    happening (in regards to the aic7xxx driver) immediately prior to
    the lockup.  This is really only useful if your machine simply can
    not boot up successfully.  If you can get your machine to run, then
    this will produce far too much information.

  FTP sites
  ------------------------------
    ftp://ftp.redhat.com/pub/aic/
      - Out of date.  I used to keep stuff here, but too many people
        complained about having a hard time getting into Red Hat's ftp
	server.  So use the web site below instead.
    ftp://ftp.pcnet.com/users/eischen/Linux/
      - Dan Eischen's driver distribution area
    ftp://ekf2.vsb.cz/pub/linux/kernel/aic7xxx/ftp.teleport.com/
      - European Linux mirror of Teleport site

  Web sites
  ------------------------------
    http://people.redhat.com/dledford/
      - My web site, also the primary aic7xxx site with several related
        pages.

Dean W. Gehnert
deang@teleport.com

$Revision: 3.0 $

Modified by Doug Ledford 1998-2000

