AACRAID Driver for Linux (take two)

Introduction
-------------------------
The aacraid driver adds support for Adaptec (http://www.adaptec.com)
RAID controllers. This is a major rewrite from the original 
Adaptec supplied driver. It has signficantly cleaned up both the code
and the running binary size (the module is less than half the size of
the original).

Supported Cards/Chipsets
-------------------------
	Adaptec 2020S
	Adaptec 2025S
	Adaptec 2120S
	Adaptec 2200S
	Adaptec 2230S
	Adaptec 2240S
	Adaptec 2410SA
	Adaptec 2610SA
	Adaptec 2810SA
	Adaptec 21610SA
	Adaptec 3230S
	Adaptec 3240S
	Adaptec 4000SAS
	Adaptec 4005SAS
	Adaptec 4800SAS
	Adaptec 4805SAS
	Adaptec 5400S
	Dell PERC 2 Quad Channel
	Dell PERC 2/Si
	Dell PERC 3/Si
	Dell PERC 3/Di
	Dell CERC 2
	HP NetRAID-4M
	Legend S220
	Legend S230

People
-------------------------
Alan Cox <alan@redhat.com>
Christoph Hellwig <hch@infradead.org>	(updates for new-style PCI probing and SCSI host registration,
					 small cleanups/fixes)
Matt Domsch <matt_domsch@dell.com>	(revision ioctl, adapter messages)
Deanna Bonds                            (non-DASD support, PAE fibs and 64 bit, added new adaptec controllers
					 added new ioctls, changed scsi interface to use new error handler,
					 increased the number of fibs and outstanding commands to a container)

					(fixed 64bit and 64G memory model, changed confusing naming convention
					 where fibs that go to the hardware are consistently called hw_fibs and
					 not just fibs like the name of the driver tracking structure)
Mark Salyzyn <Mark_Salyzyn@adaptec.com> Fixed panic issues and added some new product ids for upcoming hbas.

Original Driver
-------------------------
Adaptec Unix OEM Product Group

Mailing List
-------------------------
linux-scsi@vger.kernel.org (Interested parties troll here)
Also note this is very different to Brian's original driver
so don't expect him to support it.
Adaptec does support this driver.  Contact either tech support or Mark Salyzyn.

Original by Brian Boerner February 2001
Rewritten by Alan Cox, November 2001
