diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 15:20:36 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 15:20:36 -0700 |
commit | 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (patch) | |
tree | 0bba044c4ce775e45a88a51686b5d9f90697ea9d /Documentation/scsi/aha152x.txt |
Linux-2.6.12-rc2
Initial git repository build. I'm not bothering with the full history,
even though we have it. We can create a separate "historical" git
archive of that later if we want to, and in the meantime it's about
3.2GB when imported into git - space that would just make the early
git days unnecessarily complicated, when we don't have a lot of good
infrastructure for it.
Let it rip!
Diffstat (limited to 'Documentation/scsi/aha152x.txt')
-rw-r--r-- | Documentation/scsi/aha152x.txt | 183 |
1 files changed, 183 insertions, 0 deletions
diff --git a/Documentation/scsi/aha152x.txt b/Documentation/scsi/aha152x.txt new file mode 100644 index 000000000000..2ce022cec9be --- /dev/null +++ b/Documentation/scsi/aha152x.txt @@ -0,0 +1,183 @@ +$Id: README.aha152x,v 1.2 1999/12/25 15:32:30 fischer Exp fischer $ +Adaptec AHA-1520/1522 SCSI driver for Linux (aha152x) + +Copyright 1993-1999 Jürgen Fischer <fischer@norbit.de> +TC1550 patches by Luuk van Dijk (ldz@xs4all.nl) + + +In Revision 2 the driver was modified a lot (especially the +bottom-half handler complete()). + +The driver is much cleaner now, has support for the new +error handling code in 2.3, produced less cpu load (much +less polling loops), has slightly higher throughput (at +least on my ancient test box; a i486/33Mhz/20MB). + + +CONFIGURATION ARGUMENTS: + +IOPORT base io address (0x340/0x140) +IRQ interrupt level (9-12; default 11) +SCSI_ID scsi id of controller (0-7; default 7) +RECONNECT allow targets to disconnect from the bus (0/1; default 1 [on]) +PARITY enable parity checking (0/1; default 1 [on]) +SYNCHRONOUS enable synchronous transfers (0/1; default 1 [on]) +DELAY: bus reset delay (default 100) +EXT_TRANS: enable extended translation (0/1: default 0 [off]) + (see NOTES) + +COMPILE TIME CONFIGURATION (go into AHA152X in drivers/scsi/Makefile): + +-DAUTOCONF + use configuration the controller reports (AHA-152x only) + +-DSKIP_BIOSTEST + Don't test for BIOS signature (AHA-1510 or disabled BIOS) + +-DSETUP0="{ IOPORT, IRQ, SCSI_ID, RECONNECT, PARITY, SYNCHRONOUS, DELAY, EXT_TRANS }" + override for the first controller + +-DSETUP1="{ IOPORT, IRQ, SCSI_ID, RECONNECT, PARITY, SYNCHRONOUS, DELAY, EXT_TRANS }" + override for the second controller + +-DAHA152X_DEBUG + enable debugging output + +-DAHA152X_STAT + enable some statistics + + +LILO COMMAND LINE OPTIONS: + +aha152x=<IOPORT>[,<IRQ>[,<SCSI-ID>[,<RECONNECT>[,<PARITY>[,<SYNCHRONOUS>[,<DELAY> [,<EXT_TRANS]]]]]]] + + The normal configuration can be overridden by specifying a command line. + When you do this, the BIOS test is skipped. Entered values have to be + valid (known). Don't use values that aren't supported under normal + operation. If you think that you need other values: contact me. + For two controllers use the aha152x statement twice. + + +SYMBOLS FOR MODULE CONFIGURATION: + +Choose from 2 alternatives: + +1. specify everything (old) + +aha152x=IOPORT,IRQ,SCSI_ID,RECONNECT,PARITY,SYNCHRONOUS,DELAY,EXT_TRANS + configuration override for first controller + + +aha152x1=IOPORT,IRQ,SCSI_ID,RECONNECT,PARITY,SYNCHRONOUS,DELAY,EXT_TRANS + configuration override for second controller + +2. specify only what you need to (irq or io is required; new) + +io=IOPORT0[,IOPORT1] + IOPORT for first and second controller + +irq=IRQ0[,IRQ1] + IRQ for first and second controller + +scsiid=SCSIID0[,SCSIID1] + SCSIID for first and second controller + +reconnect=RECONNECT0[,RECONNECT1] + allow targets to disconnect for first and second controller + +parity=PAR0[PAR1] + use parity for first and second controller + +sync=SYNCHRONOUS0[,SYNCHRONOUS1] + enable synchronous transfers for first and second controller + +delay=DELAY0[,DELAY1] + reset DELAY for first and second controller + +exttrans=EXTTRANS0[,EXTTRANS1] + enable extended translation for first and second controller + + +If you use both alternatives the first will be taken. + + +NOTES ON EXT_TRANS: + +SCSI uses block numbers to address blocks/sectors on a device. +The BIOS uses a cylinder/head/sector addressing scheme (C/H/S) +scheme instead. DOS expects a BIOS or driver that understands this +C/H/S addressing. + +The number of cylinders/heads/sectors is called geometry and is required +as base for requests in C/H/S addressing. SCSI only knows about the +total capacity of disks in blocks (sectors). + +Therefore the SCSI BIOS/DOS driver has to calculate a logical/virtual +geometry just to be able to support that addressing scheme. The geometry +returned by the SCSI BIOS is a pure calculation and has nothing to +do with the real/physical geometry of the disk (which is usually +irrelevant anyway). + +Basically this has no impact at all on Linux, because it also uses block +instead of C/H/S addressing. Unfortunately C/H/S addressing is also used +in the partition table and therefore every operating system has to know +the right geometry to be able to interpret it. + +Moreover there are certain limitations to the C/H/S addressing scheme, +namely the address space is limited to upto 255 heads, upto 63 sectors +and a maximum of 1023 cylinders. + +The AHA-1522 BIOS calculates the geometry by fixing the number of heads +to 64, the number of sectors to 32 and by calculating the number of +cylinders by dividing the capacity reported by the disk by 64*32 (1 MB). +This is considered to be the default translation. + +With respect to the limit of 1023 cylinders using C/H/S you can only +address the first GB of your disk in the partition table. Therefore +BIOSes of some newer controllers based on the AIC-6260/6360 support +extended translation. This means that the BIOS uses 255 for heads, +63 for sectors and then divides the capacity of the disk by 255*63 +(about 8 MB), as soon it sees a disk greater than 1 GB. That results +in a maximum of about 8 GB addressable diskspace in the partition table +(but there are already bigger disks out there today). + +To make it even more complicated the translation mode might/might +not be configurable in certain BIOS setups. + +This driver does some more or less failsafe guessing to get the +geometry right in most cases: + +- for disks<1GB: use default translation (C/32/64) + +- for disks>1GB: + - take current geometry from the partition table + (using scsicam_bios_param and accept only `valid' geometries, + ie. either (C/32/64) or (C/63/255)). This can be extended translation + even if it's not enabled in the driver. + + - if that fails, take extended translation if enabled by override, + kernel or module parameter, otherwise take default translation and + ask the user for verification. This might on not yet partitioned + disks. + + +REFERENCES USED: + + "AIC-6260 SCSI Chip Specification", Adaptec Corporation. + + "SCSI COMPUTER SYSTEM INTERFACE - 2 (SCSI-2)", X3T9.2/86-109 rev. 10h + + "Writing a SCSI device driver for Linux", Rik Faith (faith@cs.unc.edu) + + "Kernel Hacker's Guide", Michael K. Johnson (johnsonm@sunsite.unc.edu) + + "Adaptec 1520/1522 User's Guide", Adaptec Corporation. + + Michael K. Johnson (johnsonm@sunsite.unc.edu) + + Drew Eckhardt (drew@cs.colorado.edu) + + Eric Youngdale (eric@andante.org) + + special thanks to Eric Youngdale for the free(!) supplying the + documentation on the chip. |