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