| 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 |