1 |
1275 |
phoenix |
$Id: README.aha152x,v 1.1.1.1 2004-04-15 02:12:00 phoenix Exp $
|
2 |
|
|
Adaptec AHA-1520/1522 SCSI driver for Linux (aha152x)
|
3 |
|
|
|
4 |
|
|
Copyright 1993-1999 Jürgen Fischer
|
5 |
|
|
TC1550 patches by Luuk van Dijk (ldz@xs4all.nl)
|
6 |
|
|
|
7 |
|
|
|
8 |
|
|
In Revision 2 the driver was modified a lot (especially the
|
9 |
|
|
bottom-half handler complete()).
|
10 |
|
|
|
11 |
|
|
The driver is much cleaner now, has support for the new
|
12 |
|
|
error handling code in 2.3, produced less cpu load (much
|
13 |
|
|
less polling loops), has slightly higher throughput (at
|
14 |
|
|
least on my ancient test box; a i486/33Mhz/20MB).
|
15 |
|
|
|
16 |
|
|
|
17 |
|
|
CONFIGURATION ARGUMENTS:
|
18 |
|
|
|
19 |
|
|
IOPORT base io address (0x340/0x140)
|
20 |
|
|
IRQ interrupt level (9-12; default 11)
|
21 |
|
|
SCSI_ID scsi id of controller (0-7; default 7)
|
22 |
|
|
RECONNECT allow targets to disconnect from the bus (0/1; default 1 [on])
|
23 |
|
|
PARITY enable parity checking (0/1; default 1 [on])
|
24 |
|
|
SYNCHRONOUS enable synchronous transfers (0/1; default 1 [on])
|
25 |
|
|
DELAY: bus reset delay (default 100)
|
26 |
|
|
EXT_TRANS: enable extended translation (0/1: default 0 [off])
|
27 |
|
|
(see NOTES)
|
28 |
|
|
|
29 |
|
|
COMPILE TIME CONFIGURATION (go into AHA152X in drivers/scsi/Makefile):
|
30 |
|
|
|
31 |
|
|
-DAUTOCONF
|
32 |
|
|
use configuration the controller reports (AHA-152x only)
|
33 |
|
|
|
34 |
|
|
-DSKIP_BIOSTEST
|
35 |
|
|
Don't test for BIOS signature (AHA-1510 or disabled BIOS)
|
36 |
|
|
|
37 |
|
|
-DSETUP0="{ IOPORT, IRQ, SCSI_ID, RECONNECT, PARITY, SYNCHRONOUS, DELAY, EXT_TRANS }"
|
38 |
|
|
override for the first controller
|
39 |
|
|
|
40 |
|
|
-DSETUP1="{ IOPORT, IRQ, SCSI_ID, RECONNECT, PARITY, SYNCHRONOUS, DELAY, EXT_TRANS }"
|
41 |
|
|
override for the second controller
|
42 |
|
|
|
43 |
|
|
-DAHA152X_DEBUG
|
44 |
|
|
enable debugging output
|
45 |
|
|
|
46 |
|
|
-DAHA152X_STAT
|
47 |
|
|
enable some statistics
|
48 |
|
|
|
49 |
|
|
|
50 |
|
|
LILO COMMAND LINE OPTIONS:
|
51 |
|
|
|
52 |
|
|
aha152x=[,[,[,[,[,[, [,
|
53 |
|
|
|
54 |
|
|
The normal configuration can be overridden by specifying a command line.
|
55 |
|
|
When you do this, the BIOS test is skipped. Entered values have to be
|
56 |
|
|
valid (known). Don't use values that aren't supported under normal
|
57 |
|
|
operation. If you think that you need other values: contact me.
|
58 |
|
|
For two controllers use the aha152x statement twice.
|
59 |
|
|
|
60 |
|
|
|
61 |
|
|
SYMBOLS FOR MODULE CONFIGURATION:
|
62 |
|
|
|
63 |
|
|
Choose from 2 alternatives:
|
64 |
|
|
|
65 |
|
|
1. specify everything (old)
|
66 |
|
|
|
67 |
|
|
aha152x=IOPORT,IRQ,SCSI_ID,RECONNECT,PARITY,SYNCHRONOUS,DELAY,EXT_TRANS
|
68 |
|
|
configuration override for first controller
|
69 |
|
|
|
70 |
|
|
|
71 |
|
|
aha152x1=IOPORT,IRQ,SCSI_ID,RECONNECT,PARITY,SYNCHRONOUS,DELAY,EXT_TRANS
|
72 |
|
|
configuration override for second controller
|
73 |
|
|
|
74 |
|
|
2. specify only what you need to (irq or io is required; new)
|
75 |
|
|
|
76 |
|
|
io=IOPORT0[,IOPORT1]
|
77 |
|
|
IOPORT for first and second controller
|
78 |
|
|
|
79 |
|
|
irq=IRQ0[,IRQ1]
|
80 |
|
|
IRQ for first and second controller
|
81 |
|
|
|
82 |
|
|
scsiid=SCSIID0[,SCSIID1]
|
83 |
|
|
SCSIID for first and second controller
|
84 |
|
|
|
85 |
|
|
reconnect=RECONNECT0[,RECONNECT1]
|
86 |
|
|
allow targets to disconnect for first and second controller
|
87 |
|
|
|
88 |
|
|
parity=PAR0[PAR1]
|
89 |
|
|
use parity for first and second controller
|
90 |
|
|
|
91 |
|
|
sync=SYNCHRONOUS0[,SYNCHRONOUS1]
|
92 |
|
|
enable synchronous transfers for first and second controller
|
93 |
|
|
|
94 |
|
|
delay=DELAY0[,DELAY1]
|
95 |
|
|
reset DELAY for first and second controller
|
96 |
|
|
|
97 |
|
|
exttrans=EXTTRANS0[,EXTTRANS1]
|
98 |
|
|
enable extended translation for first and second controller
|
99 |
|
|
|
100 |
|
|
|
101 |
|
|
If you use both alternatives the first will be taken.
|
102 |
|
|
|
103 |
|
|
|
104 |
|
|
NOTES ON EXT_TRANS:
|
105 |
|
|
|
106 |
|
|
SCSI uses block numbers to address blocks/sectors on a device.
|
107 |
|
|
The BIOS uses a cylinder/head/sector addressing scheme (C/H/S)
|
108 |
|
|
scheme instead. DOS expects a BIOS or driver that understands this
|
109 |
|
|
C/H/S addressing.
|
110 |
|
|
|
111 |
|
|
The number of cylinders/heads/sectors is called geometry and is required
|
112 |
|
|
as base for requests in C/H/S addressing. SCSI only knows about the
|
113 |
|
|
total capacity of disks in blocks (sectors).
|
114 |
|
|
|
115 |
|
|
Therefore the SCSI BIOS/DOS driver has to calculate a logical/virtual
|
116 |
|
|
geometry just to be able to support that addressing scheme. The geometry
|
117 |
|
|
returned by the SCSI BIOS is a pure calculation and has nothing to
|
118 |
|
|
do with the real/physical geometry of the disk (which is usually
|
119 |
|
|
irrelevant anyway).
|
120 |
|
|
|
121 |
|
|
Basically this has no impact at all on Linux, because it also uses block
|
122 |
|
|
instead of C/H/S addressing. Unfortunately C/H/S addressing is also used
|
123 |
|
|
in the partition table and therefore every operating system has to know
|
124 |
|
|
the right geometry to be able to interpret it.
|
125 |
|
|
|
126 |
|
|
Moreover there are certain limitations to the C/H/S addressing scheme,
|
127 |
|
|
namely the address space is limited to upto 255 heads, upto 63 sectors
|
128 |
|
|
and a maximum of 1023 cylinders.
|
129 |
|
|
|
130 |
|
|
The AHA-1522 BIOS calculates the geometry by fixing the number of heads
|
131 |
|
|
to 64, the number of sectors to 32 and by calculating the number of
|
132 |
|
|
cylinders by dividing the capacity reported by the disk by 64*32 (1 MB).
|
133 |
|
|
This is considered to be the default translation.
|
134 |
|
|
|
135 |
|
|
With respect to the limit of 1023 cylinders using C/H/S you can only
|
136 |
|
|
address the first GB of your disk in the partition table. Therefore
|
137 |
|
|
BIOSes of some newer controllers based on the AIC-6260/6360 support
|
138 |
|
|
extended translation. This means that the BIOS uses 255 for heads,
|
139 |
|
|
63 for sectors and then divides the capacity of the disk by 255*63
|
140 |
|
|
(about 8 MB), as soon it sees a disk greater than 1 GB. That results
|
141 |
|
|
in a maximum of about 8 GB addressable diskspace in the partition table
|
142 |
|
|
(but there are already bigger disks out there today).
|
143 |
|
|
|
144 |
|
|
To make it even more complicated the translation mode might/might
|
145 |
|
|
not be configurable in certain BIOS setups.
|
146 |
|
|
|
147 |
|
|
This driver does some more or less failsafe guessing to get the
|
148 |
|
|
geometry right in most cases:
|
149 |
|
|
|
150 |
|
|
- for disks<1GB: use default translation (C/32/64)
|
151 |
|
|
|
152 |
|
|
- for disks>1GB:
|
153 |
|
|
- take current geometry from the partition table
|
154 |
|
|
(using scsicam_bios_param and accept only `valid' geometries,
|
155 |
|
|
ie. either (C/32/64) or (C/63/255)). This can be extended translation
|
156 |
|
|
even if it's not enabled in the driver.
|
157 |
|
|
|
158 |
|
|
- if that fails, take extended translation if enabled by override,
|
159 |
|
|
kernel or module parameter, otherwise take default translation and
|
160 |
|
|
ask the user for verification. This might on not yet partitioned
|
161 |
|
|
disks.
|
162 |
|
|
|
163 |
|
|
|
164 |
|
|
REFERENCES USED:
|
165 |
|
|
|
166 |
|
|
"AIC-6260 SCSI Chip Specification", Adaptec Corporation.
|
167 |
|
|
|
168 |
|
|
"SCSI COMPUTER SYSTEM INTERFACE - 2 (SCSI-2)", X3T9.2/86-109 rev. 10h
|
169 |
|
|
|
170 |
|
|
"Writing a SCSI device driver for Linux", Rik Faith (faith@cs.unc.edu)
|
171 |
|
|
|
172 |
|
|
"Kernel Hacker's Guide", Michael K. Johnson (johnsonm@sunsite.unc.edu)
|
173 |
|
|
|
174 |
|
|
"Adaptec 1520/1522 User's Guide", Adaptec Corporation.
|
175 |
|
|
|
176 |
|
|
Michael K. Johnson (johnsonm@sunsite.unc.edu)
|
177 |
|
|
|
178 |
|
|
Drew Eckhardt (drew@cs.colorado.edu)
|
179 |
|
|
|
180 |
|
|
Eric Youngdale (eric@andante.org)
|
181 |
|
|
|
182 |
|
|
special thanks to Eric Youngdale for the free(!) supplying the
|
183 |
|
|
documentation on the chip.
|