123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184 |
- $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 up to 255 heads, up to 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.
|