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