1 |
1626 |
jcastillo |
SUBJECT
|
2 |
|
|
-------
|
3 |
|
|
AM53/79C974 PC-SCSI Driver
|
4 |
|
|
|
5 |
|
|
|
6 |
|
|
DISCLAIMER
|
7 |
|
|
----------
|
8 |
|
|
*** THIS SHOULD BE CONSIDERED AS BETA SOFTWARE ***
|
9 |
|
|
*** USE AT YOUR OWN RISK! ***
|
10 |
|
|
|
11 |
|
|
|
12 |
|
|
Copyright
|
13 |
|
|
---------
|
14 |
|
|
The architecture and much of the code of this device driver was
|
15 |
|
|
originally developed by Drew Eckhardt for the NCR5380. The
|
16 |
|
|
following copyrights apply:
|
17 |
|
|
|
18 |
|
|
For the architecture and all pieces of code which can also be found
|
19 |
|
|
in the NCR5380 device driver:
|
20 |
|
|
Copyright 1993, Drew Eckhardt
|
21 |
|
|
Visionary Computing
|
22 |
|
|
(Unix and Linux consulting and custom programming)
|
23 |
|
|
drew@colorado.edu
|
24 |
|
|
+1 (303) 666-5836
|
25 |
|
|
|
26 |
|
|
The AM53C974_nobios_detect code was originally developed by
|
27 |
|
|
Robin Cutshaw (robin@xfree86.org) and is used here in a
|
28 |
|
|
slightly modified form.
|
29 |
|
|
|
30 |
|
|
For the remaining code:
|
31 |
|
|
Copyright 1994, D. Frieauff
|
32 |
|
|
EMail: fri@rsx42sun0.dofn.de
|
33 |
|
|
Phone: x49-7545-8-2256 , x49-7541-42305
|
34 |
|
|
|
35 |
|
|
|
36 |
|
|
Version
|
37 |
|
|
-------
|
38 |
|
|
AM53/79C974 (PC-SCSI) Linux driver ALPHA release 0.5, 19 November 1995
|
39 |
|
|
|
40 |
|
|
|
41 |
|
|
Changelog
|
42 |
|
|
---------
|
43 |
|
|
0.1 -> 0.2:
|
44 |
|
|
- Extended message handling re-written to eliminate 'invalid message 17' bug
|
45 |
|
|
- Parameters of AM53C974_intr adapted
|
46 |
|
|
- Debug messages structured
|
47 |
|
|
- Spelling improved
|
48 |
|
|
0.2 -> 0.3:
|
49 |
|
|
- README file updated -- please read this file up to the end!
|
50 |
|
|
- Automatic scanning of io_port and irq implemented; no need for BIOS32
|
51 |
|
|
anymore
|
52 |
|
|
- Improved configuration (now via LILO parameter string)
|
53 |
|
|
- Cleanup of probing and initialisation code
|
54 |
|
|
- Improved sync. negotiation (can be setup individually for every device)
|
55 |
|
|
- Improved/ debugged code for reception of ext. messages
|
56 |
|
|
0.3 -> 0.4:
|
57 |
|
|
- Improved PCI probing and initialisation code
|
58 |
|
|
- Compatibility changes for Linux 1.3.x
|
59 |
|
|
0.4 -> 0.5:
|
60 |
|
|
- Compatibility changes for Linux 1.3.42
|
61 |
|
|
|
62 |
|
|
Bugs & Todo
|
63 |
|
|
-----------
|
64 |
|
|
- Add proc info function
|
65 |
|
|
- Support SCSI-2 tagged queuing
|
66 |
|
|
- Finalize abort code
|
67 |
|
|
|
68 |
|
|
Features
|
69 |
|
|
--------
|
70 |
|
|
This driver supports asynchronous and synchronous SCSI-I and SCSI-II devices.
|
71 |
|
|
It is capable of transfer rate and synchronous negotiation (see below).
|
72 |
|
|
The driver supports scatter-gather. Transfers are DMA based, but do not
|
73 |
|
|
(yet) make use of the AM53/79C974 MDL mode.
|
74 |
|
|
Max. transfer rate is 10MHz (whatever this is in real life). The transfer
|
75 |
|
|
rate is negotiated with each device (see dmesg output).
|
76 |
|
|
The AM53/79C974 has a 96-byte DMA FIFO to the PCI bus and a 16-byte SCSI
|
77 |
|
|
FIFO. It provides active negation and glitch suppression functions.
|
78 |
|
|
Burst DMA transfer rate is 132 MBytes/sec.
|
79 |
|
|
|
80 |
|
|
|
81 |
|
|
Configuration
|
82 |
|
|
-------------
|
83 |
|
|
The following communication characteristics can be set individually for every
|
84 |
|
|
SCSI device on the bus:
|
85 |
|
|
- enable/disable sync. negotiation
|
86 |
|
|
- transfer rate
|
87 |
|
|
- asynchronous or synchronous communication
|
88 |
|
|
- in case of sync. communication, the sync. offset
|
89 |
|
|
|
90 |
|
|
The sync. offset specifies the number of bytes that can be sent or
|
91 |
|
|
received from the SCSI bus without ACK resp. REQ signal.
|
92 |
|
|
CAUTION: USING SYNCHRONOUS MODE ON LONG SCSI CABLES MAY CAUSE
|
93 |
|
|
COMMUNICATION PROBLEMS LEADING TO LOSS OF DATA.
|
94 |
|
|
|
95 |
|
|
The default setting of the SCSI communication parameters is as follows:
|
96 |
|
|
- no negotiation
|
97 |
|
|
- 5.0 MHz transfer rate
|
98 |
|
|
- asynchronous mode
|
99 |
|
|
- zero offset
|
100 |
|
|
The parameters can be modified by passing a string with the following syntax to
|
101 |
|
|
the kernel: AM53C974=host-scsi-id,target-scsi-id,max-rate,max-offset
|
102 |
|
|
The parameters will be used by the driver as negotiation basis.
|
103 |
|
|
The range of the rate parameter is 3 to 10 MHz.
|
104 |
|
|
The range of the sync. offset parameter is 0 to 15 bytes. A value of 0 denotes
|
105 |
|
|
asynchronous comm. mode.
|
106 |
|
|
If the target cannot cope with the specified transfer rate, sync. mode or sync.
|
107 |
|
|
offset, the negotiation result will differ from the specified values.
|
108 |
|
|
The negotiation result is printed out at the end of the negotiation process
|
109 |
|
|
(to read it, use the dmesg program or the appropriate syslog).
|
110 |
|
|
The parameter strings (blank separated) can be passed to the kernel at the
|
111 |
|
|
LILO prompt, or as part of the LILO configuration file.
|
112 |
|
|
|
113 |
|
|
For example, the string "AM53C974=7,2,8,15" would be interpreted as follows:
|
114 |
|
|
"For communication between the controller with SCSI-ID 7 and the device with
|
115 |
|
|
SCSI-ID 2 a transfer rate of 8MHz in synchronous mode with max. 15 bytes offset
|
116 |
|
|
should be negotiated".
|
117 |
|
|
|
118 |
|
|
As an example, here my LILO configuration file:
|
119 |
|
|
boot = /dev/sda
|
120 |
|
|
compact
|
121 |
|
|
#prompt
|
122 |
|
|
delay = 50 # optional, for systems that boot very quickly
|
123 |
|
|
vga = normal # force sane state
|
124 |
|
|
ramdisk = 0 # paranoia setting
|
125 |
|
|
root = current # use "current" root
|
126 |
|
|
image = /usr/src/linux/arch/i386/boot/zImage
|
127 |
|
|
label = linux
|
128 |
|
|
append = "AM53C974=7,0,10,0 AM53C974=7,1,10,0 AM53C974=7,2,10,15 AM53C974=7,4,10,0 AM53C974=7,5,10,0"
|
129 |
|
|
read-only
|
130 |
|
|
other = /dev/sda4
|
131 |
|
|
label = os2
|
132 |
|
|
other = /dev/sdb3
|
133 |
|
|
loader = /boot/any_d.b
|
134 |
|
|
table = /dev/sdb
|
135 |
|
|
label = setup
|
136 |
|
|
|
137 |
|
|
The same parameters at the LILO prompt:
|
138 |
|
|
LILO boot: linux AM53C974=7,0,10,0 AM53C974=7,1,10,0 AM53C974=7,2,10,15 AM53C974=7,4,10,0 AM53C974=7,5,10,0
|
139 |
|
|
|
140 |
|
|
You can override parameters specified in the LILO configuration file by
|
141 |
|
|
parameters specified on the LILO command line.
|
142 |
|
|
|
143 |
|
|
|
144 |
|
|
BIOS usage
|
145 |
|
|
----------
|
146 |
|
|
Version 0.4 of the driver will use the BIOS, if available. Otherwise
|
147 |
|
|
it will try its internal PCI scan and access routines.
|
148 |
|
|
The driver assumes that the controller's SCSI-ID (usually 7) has been
|
149 |
|
|
correctly loaded by the BIOS into the controller's register during
|
150 |
|
|
system boot. If the driver detects that the controller's SCSI ID is not
|
151 |
|
|
'7' it will print out a warning. If this happens to you please correct
|
152 |
|
|
setting of the controller's SCSI-ID. If it is wrong, then edit the
|
153 |
|
|
AM53C974_SCSI_ID definition in file AM53C974.h accordingly.
|
154 |
|
|
|
155 |
|
|
|
156 |
|
|
Test environment
|
157 |
|
|
----------------
|
158 |
|
|
This driver was tested on a Compaq XL566 with the following SCSI configuration:
|
159 |
|
|
2 x HP C2247 fixed disk (internal, rate=10MHz, async.)
|
160 |
|
|
1 x Micropolis 1624 fixed disk (external, rate=8MHz, sync., offset=15 bytes)
|
161 |
|
|
1 x Wangtek W5525ES cartridge streamer (internal, rate=5MHz, async.)
|
162 |
|
|
1 x Toshiba XM-3301B CD-ROM (external, rate=5MHz, async.)
|
163 |
|
|
|
164 |
|
|
|
165 |
|
|
Known problems
|
166 |
|
|
--------------
|
167 |
|
|
- Compaq/Matsushita CD-ROM:
|
168 |
|
|
Use of this device with AM53C974 driver version 0.2 caused the kernel to
|
169 |
|
|
hang during Linux boot. If you encounter the problem, don't enable sync.
|
170 |
|
|
negotiation with the CD-ROM, i.e. simply don't specify comm. parameters
|
171 |
|
|
for this device on the LILO commandline or configuration file.
|
172 |
|
|
The driver will thus use its default for the CD-ROM, which is 5MHz
|
173 |
|
|
transfer rate asynch and no sync. negotiation.
|
174 |
|
|
- Some disks cause problems.
|
175 |
|
|
|
176 |
|
|
|
177 |
|
|
What to do if there is a SCSI problem possibly related to the driver
|
178 |
|
|
--------------------------------------------------------------------
|
179 |
|
|
Read Klaus Liedl's WWW page (http://www-c724.uibk.ac.at/XL/).
|
180 |
|
|
In case this does not help:
|
181 |
|
|
Send me a complete description of the problem, including your SCSI
|
182 |
|
|
configuration plus as much debugging information as possible.
|
183 |
|
|
Don't wait until I ask you for this information. To enable the
|
184 |
|
|
generation of debugging output, remove the comments from the following
|
185 |
|
|
definitions in the AM53C974.h file:
|
186 |
|
|
AM53C974_DEBUG
|
187 |
|
|
AM53C974_DEBUG_MSG
|
188 |
|
|
AM53C974_DEBUG_KEYWAIT
|
189 |
|
|
AM53C974_DEBUG_INFO
|
190 |
|
|
AM53C974_DEBUG_INTR
|
191 |
|
|
With these definitions enabled, the driver will enter single-step mode during
|
192 |
|
|
Linux boot. Use the spacebar for stepping.
|
193 |
|
|
Take note of at least the last 10 printout sections (marked by dashes) before
|
194 |
|
|
the crash/hangup or whatever happens and send me all of this information via
|
195 |
|
|
email. If the system can boot, use the syslogd daemon to record the debugging
|
196 |
|
|
output. Maybe you can use the ramdisk for this purpose too (if necessary, kindly
|
197 |
|
|
ask K. Liedl (Klaus.Liedl@uibk.ac.at) for support, he knows how to do it --
|
198 |
|
|
I never tried). Stay in email contact with me. Be aware that the following
|
199 |
|
|
weeks/months could be the worst of your life.
|
200 |
|
|
Note: If single-stepping takes up too much time, you can try to let the driver
|
201 |
|
|
catch the problem by pressing the 'r' key. The driver will automatically enter
|
202 |
|
|
single-step mode if it has detected something weird.
|
203 |
|
|
|
204 |
|
|
|
205 |
|
|
Author's Contact Address
|
206 |
|
|
-----------------------
|
207 |
|
|
Email: fri@rsx42sun0.dofn.de
|
208 |
|
|
Phone: x49-7545-2256 (office), x49-7541-42305 (home)
|
209 |
|
|
Home address: D. Frieauff, Stockerholzstr. 27, 88048 Friedrichshafen, Germany
|
210 |
|
|
|
211 |
|
|
|
212 |
|
|
!!!! Important Notice !!!!
|
213 |
|
|
-----------------------------
|
214 |
|
|
- Klaus Liedl maintains an excellent WWW page about Linux on Compaq XL.
|
215 |
|
|
It includes an FAQ, lots of tips & tricks as well as downloadable
|
216 |
|
|
boot disk images. The URL is: http://www-c724.uibk.ac.at/XL/
|
217 |
|
|
- Volunteer wanted for further maintenance of this driver software. I
|
218 |
|
|
don't have the time anymore to do serious support as some of you will know.
|
219 |
|
|
|
220 |
|
|
Literature
|
221 |
|
|
----------
|
222 |
|
|
- AMD AM53C974 PC-SCSI Technical Manual, publication #18624B
|
223 |
|
|
- Amendment to the AMD AM53C974 PC-SCSI Technical Manual
|
224 |
|
|
- AMD AM79C974 PC-NET Datasheet, publication #18681
|
225 |
|
|
- Amendment to the AMD AM79C974 PC-NET Datasheet
|
226 |
|
|
|
227 |
|
|
|
228 |
|
|
THANKS to
|
229 |
|
|
---------
|
230 |
|
|
- Drew Eckhardt, Robin Cutshaw, K. Liedl, Robert J. Pappas, A. Grenier,
|
231 |
|
|
Mark Stockton, David C. Niemi, Ben Craft, and many others who have helped
|
232 |
|
|
|