1 The Linux NCR53C8XX driver README file
3 Written by Gerard Roudier <groudier@club-internet.fr>
5 95170 DEUIL LA BARRE - FRANCE
8 ===============================================================================
11 2. Supported chips and SCSI features
12 3. Advantages of the enhanced 896 driver
13 3.1 Optimized SCSI SCRIPTS
14 3.2 New features of the SYM53C896 (64 bit PCI dual LVD SCSI controller)
15 4. Memory mapped I/O versus normal I/O
16 5. Tagged command queueing
18 7. Profiling information
20 8.1 Set minimum synchronous period
22 8.3 Set maximum number of concurrent tagged commands
23 8.4 Set order type for tagged command
25 8.6 Clear profile counters
26 8.7 Set flag (no_disc)
28 9. Configuration parameters
29 10. Boot setup commands
31 10.2 Available arguments
32 10.3 Advised boot setup commands
33 10.4 PCI configuration fix-up boot option
34 10.5 Serial NVRAM support boot option
35 10.6 SCSI BUS checking boot option
36 11. Some constants and flags of the ncr53c8xx.h header file
38 13. Architecture dependent features
40 14.1 Tagged commands with Iomega Jaz device
41 14.2 Device names change when another controller is added
42 14.3 Using only 8 bit devices with a WIDE SCSI controller.
43 14.4 Possible data corruption during a Memory Write and Invalidate
44 14.5 IRQ sharing problems
45 15. SCSI problem troubleshooting
46 16. Synchonous transfer negotiation tables
47 16.1 Synchronous timings for 53C875 and 53C860 Ultra-SCSI controllers
48 16.2 Synchronous timings for fast SCSI-2 53C8XX controllers
49 17. Serial NVRAM support (by Richard Waltham)
51 17.2 Symbios NVRAM layout
52 17.3 Tekram NVRAM layout
53 18. Support for Big Endian
55 18.2 NCR chip in Big Endian mode of operations
57 ===============================================================================
61 The initial Linux ncr53c8xx driver has been a port of the ncr driver from
62 FreeBSD that has been achieved in November 1995 by:
63 Gerard Roudier <groudier@club-internet.fr>
65 The original driver has been written for 386bsd and FreeBSD by:
66 Wolfgang Stanglmeier <wolf@cologne.de>
67 Stefan Esser <se@mi.Uni-Koeln.de>
69 It is now available as a bundle of 2 drivers:
71 - ncr53c8xx generic driver that supports all the SYM53C8XX family including
72 the ealiest 810 rev. 1 and the latest 896 2 channels LVD SCSI controller.
73 - sym53c8xx enhanced driver (a.k.a. 896 drivers) that drops support of oldest
74 chips in order to gain advantage of new features, as LOAD/STORE intructions
75 available since the 810A and hardware phase mismatch available with the
78 You can find technical information about the NCR 8xx family in the
79 PCI-HOWTO written by Michael Will and in the SCSI-HOWTO written by
82 Information about new chips is available at LSILOGIC web server:
84 http://www.lsilogic.com/
86 SCSI standard documentations are available at SYMBIOS ftp server:
88 ftp://ftp.symbios.com/
90 Usefull SCSI tools written by Eric Youngdale are available at tsx-11:
92 ftp://tsx-11.mit.edu/pub/linux/ALPHA/scsi/scsiinfo-X.Y.tar.gz
93 ftp://tsx-11.mit.edu/pub/linux/ALPHA/scsi/scsidev-X.Y.tar.gz
95 These tools are not ALPHA but quite clean and work quite well.
96 It is essential you have the 'scsiinfo' package.
98 This short documentation only describes the features of the NCR53C8XX
99 driver, configuration parameters and control commands available
100 through the proc SCSI file system read / write operations.
102 This driver has been tested OK with linux/i386, Linux/Alpha and Linux/PPC.
104 Latest driver version and patches are available at:
106 ftp://ftp.tux.org/pub/people/gerard-roudier
108 I am not a native speaker of English and there are probably lots of
109 mistakes in this README file. Any help will be welcome.
112 2. Supported chips and SCSI features
114 The following features are supported for all chips:
116 Synchronous negotiation
118 Tagged command queuing
120 Master parity checking
122 "Wide negotiation" is supported for chips that allow it. The
123 following table shows some characteristics of NCR 8xx family chips
124 and what drivers support them.
126 Supported by Supported by
127 On board the generic the enhanced
128 Chip SDMS BIOS Wide SCSI std. Max. sync driver driver
129 ---- --------- ---- --------- ---------- ------------ -------------
130 810 N N FAST10 10 MB/s Y N
131 810A N N FAST10 10 MB/s Y Y
132 815 Y N FAST10 10 MB/s Y N
133 825 Y Y FAST10 20 MB/s Y N
134 825A Y Y FAST10 20 MB/s Y Y
135 860 N N FAST20 20 MB/s Y Y
136 875 Y Y FAST20 40 MB/s Y Y
137 876 Y Y FAST20 40 MB/s Y Y
138 895 Y Y FAST40 80 MB/s Y Y
139 896 Y Y FAST40 80 MB/s Y Y
142 Summary of other supported features:
144 Module: allow to load the driver
145 Memory mapped I/O: increases performance
146 Profiling information: read operations from the proc SCSI file system
147 Control commands: write operations to the proc SCSI file system
148 Debugging information: written to syslog (expert only)
152 Serial NVRAM: Symbios and Tekram formats
155 3. Advantages of the enhanced 896 driver
157 3.1 Optimized SCSI SCRIPTS.
159 The 810A, 825A, 875, 895 and newest 896 support new SCSI SCRIPTS instructions
160 named LOAD and STORE that allow to move 1 DWORD from/to an IO register to/from
161 memory much faster that the MOVE MEMORY instruction that is supported by the
162 53c7xx and 53c8xx family. The LOAD/STORE instructions support absolute and
163 DSA relative addressing modes. The SCSI SCRIPTS had been entirely rewritten
164 using LOAD/STORE instead of MOVE MEMORY instructions.
166 3.2 New features of the SYM53C896 (64 bit PCI dual LVD SCSI controller)
168 The 896 allows to handle the phase mismatch context saving from SCRIPTS
169 (avoids the phase mismatch interrupt that stops the SCSI processor
170 until the C code has saved the context of the transfer).
171 Implementing this without using LOAD/STORE instructions would be painfull
172 and I did'nt even try it. This chip also supports 64 bit PCI transactions
173 and addressing. The SCRIPTS processor is not true 64 bit, but uses segment
174 registers for bit 32-63. Another interesting feature is that LOAD/STORE
175 instructions that address the on-chip RAM (8k) remain internal to the chip.
177 Due to the use of LOAD/STORE SCRIPTS instructions, this driver does not
178 support the following chips:
179 - SYM53C810 revision < 0x10 (16)
180 - SYM53C815 all revisions
181 - SYM53C825 revision < 0x10 (16)
183 4. Memory mapped I/O versus normal I/O
185 Memory mapped I/O has less latency than normal I/O. Since
186 linux-1.3.x, memory mapped I/O is used rather than normal I/O. Memory
187 mapped I/O seems to work fine on most hardware configurations, but
188 some poorly designed motherboards may break this feature.
190 The configuration option CONFIG_SCSI_NCR53C8XX_IOMAPPED forces the
191 driver to use normal I/O in all cases.
194 5. Tagged command queueing
196 Queuing more than 1 command at a time to a device allows it to perform
197 optimizations based on actual head positions and its mechanical
198 characteristics. This feature may also reduce average command latency.
199 In order to really gain advantage of this feature, devices must have
200 a reasonnable cache size (No miracle is to be expected for a low-end
201 hard disk with 128 KB or less).
202 Some kown SCSI devices do not properly support tagged command queuing.
203 Generally, firmware revisions that fix this kind of problems are available
204 at respective vendor web/ftp sites.
205 All I can say is that the hard disks I use on my machines behave well with
206 this driver with tagged command queuing enabled:
213 If your controller has NVRAM, you can configure this feature per target
214 from the user setup tool. The Tekram Setup program allows to tune the
215 maximum number of queued commands up to 32. The Symbios Setup only allows
216 to enable or disable this feature.
218 The maximum number of simultaneous tagged commands queued to a device
219 is currently set to 8 by default. This value is suitable for most SCSI
220 disks. With large SCSI disks (>= 2GB, cache >= 512KB, average seek time
221 <= 10 ms), using a larger value may give better performances.
222 The driver supports up to 64 commands per device, but using more than
223 32 is generally not worth it, unless you are using a very large disk
226 If your controller does not have NVRAM or if it is managed by the SDMS
227 BIOS/SETUP, you can configure tagged queueing feature and device queue
228 depths from the boot command-line. For example:
230 ncr53c8xx=tags:4/t2t3q15-t4q7/t1u0q32
232 will set tagged commands queue depths as follow:
234 - target 2 all luns on controller 0 --> 15
235 - target 3 all luns on controller 0 --> 15
236 - target 4 all luns on controller 0 --> 7
237 - target 1 lun 0 on controller 1 --> 32
238 - all other target/lun --> 4
240 In some special conditions, some SCSI disk firmwares may return a
241 QUEUE FULL status for a SCSI command. This behaviour is managed by the
242 driver using the following heuristic:
244 - Each time a QUEUE FULL status is returned, tagged queue depth is reduced
245 to the actual number of disconnected commands.
247 - Every 1000 successfully completed SCSI commands, if allowed by the
248 current limit, the maximum number of queueable commands is incremented.
250 Since QUEUE FULL status reception and handling is resource wasting, the
251 driver notifies by default this problem to user by indicating the actual
252 number of commands used and their status, as well as its decision on the
253 device queue depth change.
254 The heuristic used by the driver in handling QUEUE FULL ensures that the
255 impact on performances is not too bad. You can get rid of the messages by
256 setting verbose level to zero, as follow:
258 1st method: boot your system using 'ncr53c8xx=verb:0' option.
259 2nd method: apply "setverbose 0" control command to the proc fs entry
260 corresponding to your controller after boot-up.
264 The driver supports SCSI parity checking and PCI bus master parity
265 checking. These features must be enabled in order to ensure safe data
266 transfers. However, some flawed devices or mother boards will have
267 problems with parity. You can disable either PCI parity or SCSI parity
268 checking by entering appropriate options from the boot command line.
269 (See 10: Boot setup commands).
271 7. Profiling information
273 Profiling information is available through the proc SCSI file system.
274 Since gathering profiling information may impact performances, this
275 feature is disabled by default and requires a compilation configuration
276 option to be set to Y.
278 The device associated with a host has the following pathname:
280 /proc/scsi/ncr53c8xx/N (N=0,1,2 ....)
282 Generally, only 1 board is used on hardware configuration, and that device is:
283 /proc/scsi/ncr53c8xx/0
285 However, if the driver has been made as module, the number of the
286 hosts is incremented each time the driver is loaded.
288 In order to display profiling information, just enter:
290 cat /proc/scsi/ncr53c8xx/0
292 and you will get something like the following text:
294 -------------------------------------------------------
296 Chip NCR53C810, device id 0x1, revision id 0x2
297 IO port address 0x6000, IRQ number 10
298 Using memory mapped IO at virtual address 0x282c000
299 Synchronous transfer period 25, max commands per lun 4
300 Profiling information:
311 -------------------------------------------------------
313 General information is easy to understand. The device ID and the
314 revision ID identify the SCSI chip as follows:
316 Chip Device id Revision Id
317 ---- --------- -----------
327 The profiling information is updated upon completion of SCSI commands.
328 A data structure is allocated and zeroed when the host adapter is
329 attached. So, if the driver is a module, the profile counters are
330 cleared each time the driver is loaded. The "clearprof" command
331 allows you to clear these counters at any time.
333 The following counters are available:
335 ("num" prefix means "number of",
336 "ms" means milli-seconds)
339 Number of completed commands
340 Example above: 18014 completed commands
343 Number of kbytes transferred
344 Example above: 671 MB transferred
347 Number of SCSI disconnections
348 Example above: 25763 SCSI disconnections
351 number of script interruptions (phase mismatch)
352 Example above: 1673 script interruptions
355 Number of interrupts other than "on the fly"
356 Example above: 1685 interruptions not "on the fly"
359 Number of interrupts "on the fly"
360 Example above: 18038 interruptions "on the fly"
363 Elapsed time for SCSI commands setups
364 Example above: 4.94 seconds
367 Elapsed time for data transfers
368 Example above: 369.94 seconds spent for data transfer
371 Elapsed time for SCSI disconnections
372 Example above: 183.09 seconds spent disconnected
375 Elapsed time for command post processing
376 (time from SCSI status get to command completion call)
377 Example above: 1.32 seconds spent for post processing
379 Due to the 1/100 second tick of the system clock, "ms_post" time may
382 In the example above, we got 18038 interrupts "on the fly" and only
383 1673 script breaks generally due to disconnections inside a segment
389 Control commands can be sent to the driver with write operations to
390 the proc SCSI file system. The generic command syntax is the
393 echo "<verb> <parameters>" >/proc/scsi/ncr53c8xx/0
394 (assumes controller number is 0)
396 Using "all" for "<target>" parameter with the commands below will
397 apply to all targets of the SCSI chain (except the controller).
401 8.1 Set minimum synchronous period factor
403 setsync <target> <period factor>
405 target: target number
406 period: minimum synchronous period.
407 Maximum speed = 1000/(4*period factor) except for special
410 Specify a period of 255, to force asynchronous transfer mode.
412 10 means 25 nano-seconds synchronous period
413 11 means 30 nano-seconds synchronous period
414 12 means 50 nano-seconds synchronous period
418 setwide <target> <size>
420 target: target number
421 size: 0=8 bits, 1=16bits
423 8.3 Set maximum number of concurrent tagged commands
425 settags <target> <tags>
427 target: target number
428 tags: number of concurrent tagged commands
429 must not be greater than SCSI_NCR_MAX_TAGS (default: 8)
431 8.4 Set order type for tagged command
435 order: 3 possible values:
436 simple: use SIMPLE TAG for all operations (read and write)
437 ordered: use ORDERED TAG for all operations
438 default: use default tag type,
439 SIMPLE TAG for read operations
440 ORDERED TAG for write operations
445 setdebug <list of debug flags>
447 Available debug flags:
448 alloc: print info about memory allocations (ccb, lcb)
449 queue: print info about insertions into the command start queue
450 result: print sense data on CHECK CONDITION status
451 scatter: print info about the scatter process
452 scripts: print info about the script binding process
453 tiny: print minimal debugging information
454 timing: print timing information of the NCR chip
455 nego: print information about SCSI negotiations
456 phase: print information on script interruptions
458 Use "setdebug" with no argument to reset debug flags.
461 8.6 Clear profile counters
465 The profile counters are automatically cleared when the amount of
466 data transfered reaches 1000 GB in order to avoid overflow.
467 The "clearprof" command allows you to clear these counters at any time.
470 8.7 Set flag (no_disc)
472 setflag <target> <flag>
474 target: target number
476 For the moment, only one flag is available:
478 no_disc: not allow target to disconnect.
480 Do not specify any flag in order to reset the flag. For example:
482 will reset no_disc flag for target 4, so will allow it disconnections.
484 will allow disconnection for all devices on the SCSI bus.
487 8.8 Set verbose level
491 The driver default verbose level is 1. This command allows to change
492 th driver verbose level after boot-up.
494 9. Configuration parameters
496 If the firmware of all your devices is perfect enough, all the
497 features supported by the driver can be enabled at start-up. However,
498 if only one has a flaw for some SCSI feature, you can disable the
499 support by the driver of this feature at linux start-up and enable
500 this feature after boot-up only for devices that support it safely.
502 CONFIG_SCSI_NCR53C8XX_PROFILE_SUPPORT (default answer: n)
503 This option must be set for profiling information to be gathered
504 and printed out through the proc file system. This features may
507 CONFIG_SCSI_NCR53C8XX_IOMAPPED (default answer: n)
508 Answer "y" if you suspect your mother board to not allow memory mapped I/O.
509 May slow down performance a little. This option is required by
510 Linux/PPC and is used no matter what you select here. Linux/PPC
511 suffers no performance loss with this option since all IO is memory
514 CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS (default answer: 8)
515 Default tagged command queue depth.
517 CONFIG_SCSI_NCR53C8XX_MAX_TAGS (default answer: 8)
518 This option allows you to specify the maximum number of tagged commands
519 that can be queued to a device. The maximum supported value is 32.
521 CONFIG_SCSI_NCR53C8XX_SYNC (default answer: 5)
522 This option allows you to specify the frequency in MHz the driver
523 will use at boot time for synchronous data transfer negotiations.
524 This frequency can be changed later with the "setsync" control command.
525 0 means "asynchronous data transfers".
527 CONFIG_SCSI_NCR53C8XX_FORCE_SYNC_NEGO (default answer: n)
528 Force synchronous negotiation for all SCSI-2 devices.
529 Some SCSI-2 devices do not report this feature in byte 7 of inquiry
530 response but do support it properly (TAMARACK scanners for example).
532 CONFIG_SCSI_NCR53C8XX_NO_DISCONNECT (default and only reasonnable answer: n)
533 If you suspect a device of yours does not properly support disconnections,
534 you can answer "y". Then, all SCSI devices will never disconnect the bus
535 even while performing long SCSI operations.
537 CONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT
538 Genuine SYMBIOS boards use GPIO0 in output for controller LED and GPIO3
539 bit as a flag indicating singled-ended/differential interface.
540 If all the boards of your system are genuine SYMBIOS boards or use
541 BIOS and drivers from SYMBIOS, you would want to enable this option.
542 This option must NOT be enabled if your system has at least one 53C8XX
543 based scsi board with a vendor-specific BIOS.
544 For example, Tekram DC-390/U, DC-390/W and DC-390/F scsi controllers
545 use a vendor-specific BIOS and are known to not use SYMBIOS compatible
546 GPIO wiring. So, this option must not be enabled if your system has
547 such a board installed.
549 CONFIG_SCSI_NCR53C8XX_NVRAM_DETECT
550 Enable support for reading the serial NVRAM data on Symbios and
551 some Symbios compatible cards, and Tekram DC390W/U/F cards. Useful for
552 systems with more than one Symbios compatible controller where at least
553 one has a serial NVRAM, or for a system with a mixture of Symbios and
554 Tekram cards. Enables setting the boot order of host adaptors
555 to something other than the default order or "reverse probe" order.
556 Also enables Symbios and Tekram cards to be distinguished so
557 CONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT may be set in a system with a
558 mixture of Symbios and Tekram cards so the Symbios cards can make use of
559 the full range of Symbios features, differential, led pin, without
560 causing problems for the Tekram card(s).
562 10. Boot setup commands
566 Setup commands can be passed to the driver either at boot time or as a
567 string variable using 'insmod'.
569 A boot setup command for the ncr53c8xx driver begins with the driver name
570 "ncr53c8xx=". The kernel syntax parser then expects an optionnal list of
571 integers separated with comma followed by an optionnal list of comma-
572 separated strings. Example of boot setup command under lilo prompt:
574 lilo: linux root=/dev/hda2 ncr53c8xx=tags:4,sync:10,debug:0x200
576 - enable tagged commands, up to 4 tagged commands queued.
577 - set synchronous negotiation speed to 10 Mega-transfers / second.
578 - set DEBUG_NEGO flag.
580 Since comma seems not to be allowed when defining a string variable using
581 'insmod', the driver also accepts <space> as option separator.
582 The following command will install driver module with the same options as
585 insmod ncr53c8xx.o ncr53c8xx="tags:4 sync:10 debug:0x200"
587 For the moment, the integer list of arguments is discarded by the driver.
588 It will be used in the future in order to allow a per controller setup.
590 Each string argument must be specified as "keyword:value". Only lower-case
591 characters and digits are allowed.
593 10.2 Available arguments
595 Master parity checking
608 Only apply to 810A, 825A, 860, 875 and 895 controllers.
609 Have no effect with other ones.
610 specf:y (or 1) enabled
611 specf:n (or 0) disabled
612 specf:3 enabled except Memory Write And Invalidate
613 The default driver setup is 'specf:3'. As a consequence, option 'specf:y'
614 must be specified in the boot setup command to enable Memory Write And
618 Only apply to 860, 875 and 895 controllers.
619 Have no effect with other ones.
620 ultra:2 Ultra2 enabled
621 ultra:1 Ultra enabled
624 Default number of tagged commands
625 tags:0 (or tags:1 ) tagged command queuing disabled
626 tags:#tags (#tags > 1) tagged command queuing enabled
627 #tags will be truncated to the max queued commands configuration parameter.
628 This option also allows to specify a command queue depth for each device
629 that support tagged command queueing.
631 ncr53c8xx=tags:10/t2t3q16-t5q24/t1u2q32
632 will set devices queue depth as follow:
633 - controller #0 target #2 and target #3 -> 16 commands,
634 - controller #0 target #5 -> 24 commands,
635 - controller #1 target #1 logical unit #2 -> 32 commands,
636 - all other logical units (all targets, all controllers) -> 10 commands.
638 Default synchronous period factor
639 sync:255 disabled (asynchronous transfer mode)
641 #factor = 10 Ultra-2 SCSI 40 Mega-transfers / second
642 #factor = 11 Ultra-2 SCSI 33 Mega-transfers / second
643 #factor < 25 Ultra SCSI 20 Mega-transfers / second
644 #factor < 50 Fast SCSI-2
646 In all cases, the driver will use the minimum transfer period supported by
647 controllers according to NCR53C8XX chip type.
649 Negotiate synchronous with all devices
660 debug:0 clear debug flags
661 debug:#x set debug flags
662 #x is an integer value combining the following power-of-2 values:
677 You can play safely with DEBUG_NEGO. However, some of these flags may
678 generate bunches of syslog messages.
681 burst:0 burst disabled
682 burst:255 get burst length from initial IO register settings.
683 burst:#x burst enabled (1<<#x burst transfers max)
684 #x is an integer value which is log base 2 of the burst transfers max.
685 The NCR53C875 and NCR53C825A support up to 128 burst transfers (#x = 7).
686 Other chips only support up to 16 (#x = 4).
687 This is a maximum value. The driver set the burst length according to chip
688 and revision ids. By default the driver uses the maximum value supported
692 led:1 enable LED support
693 led:0 disable LED support
694 Donnot enable LED support if your scsi board does not use SDMS BIOS.
695 (See 'Configuration parameters')
698 wide:1 wide scsi enabled
699 wide:0 wide scsi disabled
700 Some scsi boards use a 875 (ultra wide) and only supply narrow connectors.
701 If you have connected a wide device with a 50 pins to 68 pins cable
702 converter, any accepted wide negotiation will break further data transfers.
703 In such a case, using "wide:0" in the bootup command will be helpfull.
706 diff:0 never set up diff mode
707 diff:1 set up diff mode if BIOS set it
708 diff:2 always set up diff mode
709 diff:3 set diff mode if GPIO3 is not set
712 irqm:0 always open drain
713 irqm:1 same as initial settings (assumed BIOS settings)
714 irqm:2 always totem pole
715 irqm:0x10 driver will not use SA_SHIRQ flag when requesting irq
716 irqm:0x20 driver will not use SA_INTERRUPT flag when requesting irq
718 (Bits 0x10 and 0x20 can be combined with hardware irq mode option)
721 revprob:n probe chip ids from the PCI configuration in this order:
722 810, 815, 820, 860, 875, 885, 895, 896
723 revprob:y probe chip ids in the reverse order.
725 Fix up PCI configuration space
728 Available option bits:
729 0x0: No attempt to fix PCI configuration space registers values.
730 0x1: Set PCI cache-line size register if not set.
731 0x2: Set write and invalidate bit in PCI command register.
732 0x4: Increase if necessary PCI latency timer according to burst max.
734 Use 'pcifix:7' in order to allow the driver to fix up all PCI features.
737 nvram:n do not look for serial NVRAM
738 nvram:y test controllers for onboard serial NVRAM
743 Available option bits:
745 0x1: Check and donnot attach the controller on error.
746 0x2: Check and just warn on error.
748 Exclude hosts from being attached
751 Prevent host at a given io address from being attached.
752 For example 'ncr53c8xx=excl:0xb400,excl:0xc000' indicate to the
753 ncr53c8xx driver not to attach hosts at address 0xb400 and 0xc000.
756 safe:y load the following assumed fail safe initial setup
758 master parity disabled mpar:n
759 scsi parity enabled spar:y
760 disconnections not allowed disc:n
761 special features disabled specf:n
762 ultra scsi disabled ultra:n
763 force sync negotiation disabled fsn:n
764 reverse probe disabled revprob:n
765 PCI fix up disabled pcifix:0
766 serial NVRAM enabled nvram:y
767 verbosity level 2 verb:2
768 tagged command queuing disabled tags:0
769 synchronous negotiation disabled sync:255
770 debug flags none debug:0
771 burst length from BIOS settings burst:255
772 LED support disabled led:0
773 wide support disabled wide:0
774 settle time 10 seconds settle:10
775 differential support from BIOS settings diff:1
776 irq mode from BIOS settings irqm:1
777 SCSI BUS check donnot attach on error buschk:1
779 10.3 Advised boot setup commands
781 If the driver has been configured with default options, the equivalent
784 ncr53c8xx=mpar:y,spar:y,disc:y,specf:3,fsn:n,ultra:2,fsn:n,revprob:n,verb:1\
785 tags:0,sync:50,debug:0,burst:7,led:0,wide:1,settle:2,diff:0,irqm:0
787 For an installation diskette or a safe but not fast system,
790 ncr53c8xx=safe:y,mpar:y,disc:y
791 ncr53c8xx=safe:y,disc:y
792 ncr53c8xx=safe:y,mpar:y
795 My personnal system works flawlessly with the following equivalent setup:
797 ncr53c8xx=mpar:y,spar:y,disc:y,specf:1,fsn:n,ultra:2,fsn:n,revprob:n,verb:1\
798 tags:32,sync:12,debug:0,burst:7,led:1,wide:1,settle:2,diff:0,irqm:0
800 The driver prints its actual setup when verbosity level is 2. You can try
801 "ncr53c8xx=verb:2" to get the "static" setup of the driver, or add "verb:2"
802 to your boot setup command in order to check the actual setup the driver is
805 10.4 PCI configuration fix-up boot option
809 Available option bits:
810 0x1: Set PCI cache-line size register if not set.
811 0x2: Set write and invalidate bit in PCI command register.
813 Use 'pcifix:3' in order to allow the driver to fix both PCI features.
815 These options only apply to new SYMBIOS chips 810A, 825A, 860, 875
816 and 895 and are only supported for Pentium and 486 class processors.
817 Recent SYMBIOS 53C8XX scsi processors are able to use PCI read multiple
818 and PCI write and invalidate commands. These features require the
819 cache line size register to be properly set in the PCI configuration
820 space of the chips. On the other hand, chips will use PCI write and
821 invalidate commands only if the corresponding bit is set to 1 in the
822 PCI command register.
824 Not all PCI bioses set the PCI cache line register and the PCI write and
825 invalidate bit in the PCI configuration space of 53C8XX chips.
826 Optimized PCI accesses may be broken for some PCI/memory controllers or
827 make problems with some PCI boards.
829 This fix-up worked flawlessly on my previous system.
830 (MB Triton HX / 53C875 / 53C810A)
831 I use these options at my own risks as you will do if you decide to
835 10.5 Serial NVRAM support boot option
837 nvram:n do not look for serial NVRAM
838 nvram:y test controllers for onboard serial NVRAM
840 This option is described below (see 17. Serial NVRAM support).
841 When this option is enabled, the driver tries to detect all boards using
842 a Serial NVRAM. This memory is used to hold user set up parameters.
844 The parameters the driver is able to get from the NVRAM depend on the
845 data format used, as follow:
847 Tekram format Symbios format
848 General and host parameters
851 SCSI parity checking Y Y
852 Verbose boot messages N Y
853 SCSI devices parameters
854 Synchronous transfer speed Y Y
856 Tagged Command Queuing enabled Y Y
857 Disconnections enabled Y Y
858 Scan at boot time N Y
860 In order to speed up the system boot, for each device configured without
861 the "scan at boot time" option, the driver forces an error on the
862 first TEST UNIT READY command received for this device.
864 Some SDMS BIOS revisions seem to be unable to boot cleanly with very fast
865 hard disks. In such a situation you cannot configure the NVRAM with
866 optimized parameters value.
868 The 'nvram' boot option can be entered in hexadecimal form in order
869 to ignore some options configured in the NVRAM, as follow:
872 0x01 look for NVRAM (equivalent to nvram=y)
873 0x02 ignore NVRAM "Synchronous negotiation" parameters for all devices
874 0x04 ignore NVRAM "Wide negotiation" parameter for all devices
875 0x08 ignore NVRAM "Scan at boot time" parameter for all devices
877 My Atlas Wide only boots cleanly in 8 bits asynchronous data transfer
878 mode. However, it works flawlessly at 20 MB/second with the driver.
879 Using "nvram=0x7" allows me to boot in 8 bits/async and to let the driver
880 use its setup for synchronous and wide negotiations.
883 10.6 SCSI BUS checking boot option.
885 When this option is set to a non-zero value, the driver checks SCSI lines
886 logic state, 100 micro-seconds after having asserted the SCSI RESET line.
887 The driver just reads SCSI lines and checks all lines read FALSE except RESET.
888 Since SCSI devices shall release the BUS at most 800 nano-seconds after SCSI
889 RESET has been asserted, any signal to TRUE may indicate a SCSI BUS problem.
890 Unfortunately, the following common SCSI BUS problems are not detected:
891 - Only 1 terminator installed.
892 - Misplaced terminators.
893 - Bad quality terminators.
894 On the other hand, either bad cabling, broken devices, not conformant
895 devices, ... may cause a SCSI signal to be wrong when te driver reads it.
898 11. Some constants and flags of the ncr53c8xx.h header file
900 Some of these are defined from the configuration parameters. To
901 change other "defines", you must edit the header file. Do that only
902 if you know what you are doing.
904 SCSI_NCR_SETUP_SPECIAL_FEATURES (default: defined)
905 If defined, the driver will enable some special features according
906 to chip and revision id.
907 For 810A, 860, 825A, 875 and 895 scsi chips, this option enables
908 support of features that reduce load of PCI bus and memory accesses
909 during scsi transfer processing: burst op-code fetch, read multiple,
910 read line, prefetch, cache line, write and invalidate,
911 burst 128 (875 only), large dma fifo (875 only), offset 16 (875 only).
912 Can be changed by the following boot setup command:
915 SCSI_NCR_IOMAPPED (default: not defined)
916 If defined, normal I/O is forced.
918 SCSI_NCR_SHARE_IRQ (default: defined)
919 If defined, request shared IRQ.
921 SCSI_NCR_MAX_TAGS (default: 8)
922 Maximum number of simultaneous tagged commands to a device.
923 Can be changed by "settags <target> <maxtags>"
925 SCSI_NCR_SETUP_DEFAULT_SYNC (default: 50)
926 Transfer period factor the driver will use at boot time for synchronous
927 negotiation. 0 means asynchronous.
928 Can be changed by "setsync <target> <period factor>"
930 SCSI_NCR_SETUP_DEFAULT_TAGS (default: 8)
931 Default number of simultaneous tagged commands to a device.
932 < 1 means tagged command queuing disabled at start-up.
934 SCSI_NCR_ALWAYS_SIMPLE_TAG (default: defined)
935 Use SIMPLE TAG for read and write commands.
936 Can be changed by "setorder <ordered|simple|default>"
938 SCSI_NCR_SETUP_DISCONNECTION (default: defined)
939 If defined, targets are allowed to disconnect.
941 SCSI_NCR_SETUP_FORCE_SYNC_NEGO (default: not defined)
942 If defined, synchronous negotiation is tried for all SCSI-2 devices.
943 Can be changed by "setsync <target> <period>"
945 SCSI_NCR_SETUP_MASTER_PARITY (default: defined)
946 If defined, master parity checking is enabled.
948 SCSI_NCR_SETUP_MASTER_PARITY (default: defined)
949 If defined, SCSI parity checking is enabled.
951 SCSI_NCR_PROFILE_SUPPORT (default: not defined)
952 If defined, profiling information is gathered.
954 SCSI_NCR_MAX_SCATTER (default: 128)
955 Scatter list size of the driver ccb.
957 SCSI_NCR_MAX_TARGET (default: 16)
958 Max number of targets per host.
960 SCSI_NCR_MAX_HOST (default: 2)
961 Max number of host controllers.
963 SCSI_NCR_SETTLE_TIME (default: 2)
964 Number of seconds the driver will wait after reset.
966 SCSI_NCR_TIMEOUT_ALERT (default: 3)
967 If a pending command will time out after this amount of seconds,
968 an ordered tag is used for the next command.
969 Avoids timeouts for unordered tagged commands.
971 SCSI_NCR_CAN_QUEUE (default: 7*SCSI_NCR_MAX_TAGS)
972 Max number of commands that can be queued to a host.
974 SCSI_NCR_CMD_PER_LUN (default: SCSI_NCR_MAX_TAGS)
975 Max number of commands queued to a host for a device.
977 SCSI_NCR_SG_TABLESIZE (default: SCSI_NCR_MAX_SCATTER-1)
978 Max size of the Linux scatter/gather list.
980 SCSI_NCR_MAX_LUN (default: 8)
981 Max number of LUNs per target.
986 This driver is part of the linux kernel distribution.
987 Driver files are located in the sub-directory "drivers/scsi" of the
992 README.ncr53c8xx : this file
993 ChangeLog.ncr53c8xx : change log
994 ncr53c8xx.h : definitions
995 ncr53c8xx.c : the driver code
997 New driver versions are made available separately in order to allow testing
998 changes and new features prior to including them into the linux kernel
999 distribution. The following URL provides informations on latest avalaible
1002 ftp://ftp.tux.org/pub/people/gerard-roudier/README
1005 13. Architecture dependent features.
1012 14.1 Tagged commands with Iomega Jaz device
1014 I have not tried this device, however it has been reported to me the
1015 following: This device is capable of Tagged command queuing. However
1016 while spinning up, it rejects Tagged commands. This behaviour is
1017 conforms to 6.8.2 of SCSI-2 specifications. The current behaviour of
1018 the driver in that situation is not satisfying. So do not enable
1019 Tagged command queuing for devices that are able to spin down. The
1020 other problem that may appear is timeouts. The only way to avoid
1021 timeouts seems to edit linux/drivers/scsi/sd.c and to increase the
1022 current timeout values.
1024 14.2 Device names change when another controller is added.
1026 When you add a new NCR53C8XX chip based controller to a system that already
1027 has one or more controllers of this family, it may happen that the order
1028 the driver registers them to the kernel causes problems due to device
1030 When at least one controller uses NvRAM, SDMS BIOS version 4 allows you to
1031 define the order the BIOS will scan the scsi boards. The driver attaches
1032 controllers according to BIOS information if NvRAM detect option is set.
1034 If your controllers do not have NvRAM, you can:
1036 - Ask the driver to probe chip ids in reverse order from the boot command
1037 line: ncr53c8xx=revprob:y
1038 - Make appropriate changes in the fstab.
1039 - Use the 'scsidev' tool from Eric Youngdale.
1041 14.3 Using only 8 bit devices with a WIDE SCSI controller.
1043 When only 8 bit NARROW devices are connected to a 16 bit WIDE SCSI controller,
1044 you must ensure that lines of the wide part of the SCSI BUS are pulled-up.
1045 This can be achieved by ENABLING the WIDE TERMINATOR portion of the SCSI
1047 The TYAN 1365 documentation revision 1.2 is not correct about such settings.
1048 (page 10, figure 3.3).
1050 14.4 Possible data corruption during a Memory Write and Invalidate
1052 This problem is described in SYMBIOS DEL 397, Part Number 69-039241, ITEM 4.
1054 In some complex situations, 53C875 chips revision <= 3 may start a PCI
1055 Write and Invalidate Command at a not cache-line-aligned 4 DWORDS boundary.
1056 This is only possible when Cache Line Size is 8 DWORDS or greater.
1057 Pentium systems use a 8 DWORDS cache line size and so are concerned by
1058 this chip bug, unlike i486 systems that use a 4 DWORDS cache line size.
1060 When this situation occurs, the chip may complete the Write and Invalidate
1061 command after having only filled part of the last cache line involved in
1062 the transfer, leaving to data corruption the remainder of this cache line.
1064 Not using Write And Invalidate obviously gets rid of this chip bug, and so
1065 it is now the default setting of the driver.
1066 However, for people like me who want to enable this feature, I have added
1067 part of a work-around suggested by SYMBIOS. This work-around resets the
1068 addressing logic when the DATA IN phase is entered and so prevents the bug
1069 from being triggered for the first SCSI MOVE of the phase. This work-around
1070 should be enough according to the following:
1072 The only driver internal data structure that is greater than 8 DWORDS and
1073 that is moved by the SCRIPTS processor is the 'CCB header' that contains
1074 the context of the SCSI transfer. This data structure is aligned on 8 DWORDS
1075 boundary (Pentium Cache Line Size), and so is immune to this chip bug, at
1076 least on Pentium systems.
1077 But the conditions of this bug can be met when a SCSI read command is
1078 performed using a buffer that is 4 DWORDS but not cache-line aligned.
1079 This cannot happen under Linux when scatter/gather lists are used since
1080 they only refer to system buffers that are well aligned. So, a work around
1081 may only be needed under Linux when a scatter/gather list is not used and
1082 when the SCSI DATA IN phase is reentered after a phase mismatch.
1084 14.5 IRQ sharing problems
1086 When an IRQ is shared by devices that are handled by different drivers, it
1087 may happen that one driver complains about the request of the IRQ having
1088 failed. Inder Linux-2.0, this may be due to one driver having requested the
1089 IRQ using the SA_INTERRUPT flag but some other having requested the same IRQ
1090 without this flag. Under both Linux-2.0 and linux-2.2, this may be caused by
1091 one driver not having requested the IRQ with the SA_SHIRQ flag.
1093 By default, the ncr53c8xx and sym53c8xx drivers request IRQs with both the
1094 SA_INTERRUPT and the SA_SHIRQ flag under Linux-2.0 and with only the SA_SHIRQ
1095 flag under Linux-2.2.
1097 Under Linux-2.0, you can disable use of SA_INTERRUPT flag from the boot
1098 command line by using the following option:
1100 ncr53c8xx=irqm:0x20 (for the generic ncr53c8xx driver)
1101 sym53c8xx=irqm:0x20 (for the sym53c8xx driver)
1103 If this does not fix the problem, then you may want to check how all other
1104 drivers are requesting the IRQ and report the problem. Note that if at least
1105 a single driver does not request the IRQ with the SA_SHIRQ flag (share IRQ),
1106 then the request of the IRQ obviously will not succeed for all the drivers.
1108 15. SCSI problem troubleshooting
1110 Most SCSI problems are due to a non conformant SCSI bus or to buggy
1111 devices. If infortunately you have SCSI problems, you can check the
1115 - terminations at both end of the SCSI chain
1116 - linux syslog messages (some of them may help you)
1118 If you donnot find the source of problems, you can configure the
1119 driver with no features enabled.
1121 - only asynchronous data transfers
1122 - tagged commands disabled
1123 - disconnections not allowed
1125 Now, if your SCSI bus is ok, your system have every chance to work
1126 with this safe configuration but performances will not be optimal.
1128 If it still fails, then you can send your problem description to
1129 appropriate mailing lists or news-groups. Send me a copy in order to
1130 be sure I will receive it. Obviously, a bug in the driver code is
1133 My email address: Gerard Roudier <groudier@club-internet.fr>
1135 Allowing disconnections is important if you use several devices on
1136 your SCSI bus but often causes problems with buggy devices.
1137 Synchronous data transfers increases throughput of fast devices like
1138 hard disks. Good SCSI hard disks with a large cache gain advantage of
1139 tagged commands queuing.
1141 Try to enable one feature at a time with control commands. For example:
1143 - echo "setsync all 25" >/proc/scsi/ncr53c8xx/0
1144 Will enable fast synchronous data transfer negotiation for all targets.
1146 - echo "setflag 3" >/proc/scsi/ncr53c8xx/0
1147 Will reset flags (no_disc) for target 3, and so will allow it to disconnect
1150 - echo "settags 3 8" >/proc/scsi/ncr53c8xx/0
1151 Will enable tagged command queuing for target 3 if that device supports it.
1153 Once you have found the device and the feature that cause problems, just
1154 disable that feature for that device.
1157 16. Synchonous transfer negotiation tables
1159 Tables below have been created by calling the routine the driver uses
1160 for synchronisation negotiation timing calculation and chip setting.
1161 The first table corresponds to Ultra chips 53875 and 53C860 with 80 MHz
1162 clock and 5 clock divisors.
1163 The second one has been calculated by setting the scsi clock to 40 Mhz
1164 and using 4 clock divisors and so applies to all NCR53C8XX chips in fast
1167 Periods are in nano-seconds and speeds are in Mega-transfers per second.
1168 1 Mega-transfers/second means 1 MB/s with 8 bits SCSI and 2 MB/s with
1171 16.1 Synchronous timings for 53C895, 53C875 and 53C860 SCSI controllers
1173 ----------------------------------------------
1174 Negotiated NCR settings
1175 Factor Period Speed Period Speed
1176 ------ ------ ------ ------ ------
1177 10 25 40.000 25 40.000 (53C895 only)
1178 11 30.2 33.112 31.25 32.000 (53C895 only)
1179 12 50 20.000 50 20.000
1180 13 52 19.230 62 16.000
1181 14 56 17.857 62 16.000
1182 15 60 16.666 62 16.000
1183 16 64 15.625 75 13.333
1184 17 68 14.705 75 13.333
1185 18 72 13.888 75 13.333
1186 19 76 13.157 87 11.428
1187 20 80 12.500 87 11.428
1188 21 84 11.904 87 11.428
1189 22 88 11.363 93 10.666
1190 23 92 10.869 93 10.666
1191 24 96 10.416 100 10.000
1192 25 100 10.000 100 10.000
1193 26 104 9.615 112 8.888
1194 27 108 9.259 112 8.888
1195 28 112 8.928 112 8.888
1196 29 116 8.620 125 8.000
1197 30 120 8.333 125 8.000
1198 31 124 8.064 125 8.000
1199 32 128 7.812 131 7.619
1200 33 132 7.575 150 6.666
1201 34 136 7.352 150 6.666
1202 35 140 7.142 150 6.666
1203 36 144 6.944 150 6.666
1204 37 148 6.756 150 6.666
1205 38 152 6.578 175 5.714
1206 39 156 6.410 175 5.714
1207 40 160 6.250 175 5.714
1208 41 164 6.097 175 5.714
1209 42 168 5.952 175 5.714
1210 43 172 5.813 175 5.714
1211 44 176 5.681 187 5.333
1212 45 180 5.555 187 5.333
1213 46 184 5.434 187 5.333
1214 47 188 5.319 200 5.000
1215 48 192 5.208 200 5.000
1216 49 196 5.102 200 5.000
1219 16.2 Synchronous timings for fast SCSI-2 53C8XX controllers
1221 ----------------------------------------------
1222 Negotiated NCR settings
1223 Factor Period Speed Period Speed
1224 ------ ------ ------ ------ ------
1225 25 100 10.000 100 10.000
1226 26 104 9.615 125 8.000
1227 27 108 9.259 125 8.000
1228 28 112 8.928 125 8.000
1229 29 116 8.620 125 8.000
1230 30 120 8.333 125 8.000
1231 31 124 8.064 125 8.000
1232 32 128 7.812 131 7.619
1233 33 132 7.575 150 6.666
1234 34 136 7.352 150 6.666
1235 35 140 7.142 150 6.666
1236 36 144 6.944 150 6.666
1237 37 148 6.756 150 6.666
1238 38 152 6.578 175 5.714
1239 39 156 6.410 175 5.714
1240 40 160 6.250 175 5.714
1241 41 164 6.097 175 5.714
1242 42 168 5.952 175 5.714
1243 43 172 5.813 175 5.714
1244 44 176 5.681 187 5.333
1245 45 180 5.555 187 5.333
1246 46 184 5.434 187 5.333
1247 47 188 5.319 200 5.000
1248 48 192 5.208 200 5.000
1249 49 196 5.102 200 5.000
1252 17. Serial NVRAM (added by Richard Waltham: dormouse@farsrobt.demon.co.uk)
1256 Enabling serial NVRAM support enables detection of the serial NVRAM included
1257 on Symbios and some Symbios compatible host adaptors, and Tekram boards. The
1258 serial NVRAM is used by Symbios and Tekram to hold set up parameters for the
1259 host adaptor and it's attached drives.
1261 The Symbios NVRAM also holds data on the boot order of host adaptors in a
1262 system with more than one host adaptor. This enables the order of scanning
1263 the cards for drives to be changed from the default used during host adaptor
1266 This can be done to a limited extent at the moment using "reverse probe" but
1267 this only changes the order of detection of different types of cards. The
1268 NVRAM boot order settings can do this as well as change the order the same
1269 types of cards are scanned in, something "reverse probe" cannot do.
1271 Tekram boards using Symbios chips, DC390W/F/U, which have NVRAM are detected
1272 and this is used to distinguish between Symbios compatible and Tekram host
1273 adaptors. This is used to disable the Symbios compatible "diff" setting
1274 incorrectly set on Tekram boards if the CONFIG_SCSI_53C8XX_SYMBIOS_COMPAT
1275 configuration parameter is set enabling both Symbios and Tekram boards to be
1276 used together with the Symbios cards using all their features, including
1277 "diff" support. ("led pin" support for Symbios compatible cards can remain
1278 enabled when using Tekram cards. It does nothing useful for Tekram host
1279 adaptors but does not cause problems either.)
1282 17.2 Symbios NVRAM layout
1284 typical data at NVRAM address 0x100 (53c810a NVRAM)
1285 -----------------------------------------------------------
1290 00 30 00 00 00 00 07 00 00 00 00 00 00 00 07 04 10 04 00 00
1292 04 00 0f 00 00 10 00 50 00 00 01 00 00 62
1293 04 00 03 00 00 10 00 58 00 00 01 00 00 63
1294 04 00 01 00 00 10 00 48 00 00 01 00 00 61
1295 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1297 0f 00 08 08 64 00 0a 00
1298 0f 00 08 08 64 00 0a 00
1299 0f 00 08 08 64 00 0a 00
1300 0f 00 08 08 64 00 0a 00
1301 0f 00 08 08 64 00 0a 00
1302 0f 00 08 08 64 00 0a 00
1303 0f 00 08 08 64 00 0a 00
1304 0f 00 08 08 64 00 0a 00
1306 0f 00 08 08 64 00 0a 00
1307 0f 00 08 08 64 00 0a 00
1308 0f 00 08 08 64 00 0a 00
1309 0f 00 08 08 64 00 0a 00
1310 0f 00 08 08 64 00 0a 00
1311 0f 00 08 08 64 00 0a 00
1312 0f 00 08 08 64 00 0a 00
1313 0f 00 08 08 64 00 0a 00
1315 00 00 00 00 00 00 00 00
1316 00 00 00 00 00 00 00 00
1317 00 00 00 00 00 00 00 00
1318 00 00 00 00 00 00 00 00
1319 00 00 00 00 00 00 00 00
1320 00 00 00 00 00 00 00 00
1321 00 00 00 00 00 00 00 00
1322 00 00 00 00 00 00 00 00
1324 00 00 00 00 00 00 00 00
1325 00 00 00 00 00 00 00 00
1326 00 00 00 00 00 00 00 00
1327 00 00 00 00 00 00 00 00
1328 00 00 00 00 00 00 00 00
1329 00 00 00 00 00 00 00 00
1330 00 00 00 00 00 00 00 00
1331 00 00 00 00 00 00 00 00
1333 00 00 00 00 00 00 00 00
1334 00 00 00 00 00 00 00 00
1335 00 00 00 00 00 00 00 00
1340 -----------------------------------------------------------
1341 NVRAM layout details
1343 NVRAM Address 0x000-0x0ff not used
1344 0x100-0x26f initialised data
1345 0x270-0x7ff not used
1350 data - 356 bytes (checksum is byte sum of this data)
1357 controller set up - 20 bytes
1358 boot configuration - 56 bytes (4x14 bytes)
1359 device set up - 128 bytes (16x8 bytes)
1360 unused (spare?) - 152 bytes (19x8 bytes)
1364 -----------------------------------------------------------
1367 00 00 - ?? start marker
1368 64 01 - byte count (lsb/msb excludes header/trailer)
1369 8e 0b - checksum (lsb/msb excludes header/trailer)
1370 -----------------------------------------------------------
1373 00 30 00 00 00 00 07 00 00 00 00 00 00 00 07 04 10 04 00 00
1377 | | --Removable Media Support
1379 | | 0x01 = Bootable Device
1380 | | 0x02 = All with Media
1383 | 0x00000001= scan order hi->low
1384 | (default 0x00 - scan low->hi)
1386 0x00000001 scam enable
1387 0x00000010 parity enable
1388 0x00000100 verbose boot msgs
1390 remaining bytes unknown - they do not appear to change in my
1391 current set up for any of the controllers.
1393 default set up is identical for 53c810a and 53c875 NVRAM
1394 (Removable Media added Symbios BIOS version 4.09)
1395 -----------------------------------------------------------
1398 boot order set by order of the devices in this table
1400 04 00 0f 00 00 10 00 50 00 00 01 00 00 62 -- 1st controller
1401 04 00 03 00 00 10 00 58 00 00 01 00 00 63 2nd controller
1402 04 00 01 00 00 10 00 48 00 00 01 00 00 61 3rd controller
1403 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4th controller
1405 | | | | | | ---- PCI io port adr
1406 | | | | | --0x01 init/scan at boot time
1407 | | | | --PCI device/function number (0xdddddfff)
1408 | | ----- ?? PCI vendor ID (lsb/msb)
1409 ----PCI device ID (lsb/msb)
1411 ?? use of this data is a guess but seems reasonable
1413 remaining bytes unknown - they do not appear to change in my
1416 default set up is identical for 53c810a and 53c875 NVRAM
1417 -----------------------------------------------------------
1418 device set up (up to 16 devices - includes controller)
1420 0f 00 08 08 64 00 0a 00 - id 0
1421 0f 00 08 08 64 00 0a 00
1422 0f 00 08 08 64 00 0a 00
1423 0f 00 08 08 64 00 0a 00
1424 0f 00 08 08 64 00 0a 00
1425 0f 00 08 08 64 00 0a 00
1426 0f 00 08 08 64 00 0a 00
1427 0f 00 08 08 64 00 0a 00
1429 0f 00 08 08 64 00 0a 00
1430 0f 00 08 08 64 00 0a 00
1431 0f 00 08 08 64 00 0a 00
1432 0f 00 08 08 64 00 0a 00
1433 0f 00 08 08 64 00 0a 00
1434 0f 00 08 08 64 00 0a 00
1435 0f 00 08 08 64 00 0a 00
1436 0f 00 08 08 64 00 0a 00 - id 15
1438 | | | | ----timeout (lsb/msb)
1439 | | | --synch period (0x?? 40 Mtrans/sec- fast 40) (probably 0x28)
1440 | | | (0x30 20 Mtrans/sec- fast 20)
1441 | | | (0x64 10 Mtrans/sec- fast )
1442 | | | (0xc8 5 Mtrans/sec)
1443 | | | (0x00 asynchronous)
1444 | | -- ?? max sync offset (0x08 in NVRAM on 53c810a)
1445 | | (0x10 in NVRAM on 53c875)
1446 | --device bus width (0x08 narrow)
1447 | (0x10 16 bit wide)
1449 0x00000001 - disconnect enabled
1450 0x00000010 - scan at boot time
1451 0x00000100 - scan luns
1452 0x00001000 - queue tags enabled
1454 remaining bytes unknown - they do not appear to change in my
1457 ?? use of this data is a guess but seems reasonable
1458 (but it could be max bus width)
1460 default set up for 53c810a NVRAM
1461 default set up for 53c875 NVRAM - bus width - 0x10
1462 - sync offset ? - 0x10
1463 - sync period - 0x30
1464 -----------------------------------------------------------
1465 ?? spare device space (32 bit bus ??)
1467 00 00 00 00 00 00 00 00 (19x8bytes)
1470 00 00 00 00 00 00 00 00
1472 default set up is identical for 53c810a and 53c875 NVRAM
1473 -----------------------------------------------------------
1476 fe fe - ? end marker ?
1480 default set up is identical for 53c810a and 53c875 NVRAM
1481 -----------------------------------------------------------
1485 17.3 Tekram NVRAM layout
1487 nvram 64x16 (1024 bit)
1491 Drive ID 0-15 (addr 0x0yyyy0 = device setup, yyyy = ID)
1492 (addr 0x0yyyy1 = 0x0000)
1494 x x x x x x x x x x x x x x x x
1496 | | | | | | | | ----- parity check 0 - off
1497 | | | | | | | | 1 - on
1499 | | | | | | | ------- sync neg 0 - off
1500 | | | | | | | 1 - on
1502 | | | | | | --------- disconnect 0 - off
1505 | | | | | ----------- start cmd 0 - off
1508 | | | | -------------- tagged cmds 0 - off
1511 | | | ---------------- wide neg 0 - off
1514 --------------------------- sync rate 0 - 10.0 Mtrans/sec
1530 Host flags 0 (addr 0x100000, 32)
1532 x x x x x x x x x x x x x x x x
1533 | | | | | | | | | | | |
1534 | | | | | | | | ----------- host ID 0x00 - 0x0f
1536 | | | | | | | ----------------------- support for 0 - off
1537 | | | | | | | > 2 drives 1 - on
1539 | | | | | | ------------------------- support drives 0 - off
1540 | | | | | | > 1Gbytes 1 - on
1542 | | | | | --------------------------- bus reset on 0 - off
1543 | | | | | power on 1 - on
1545 | | | | ----------------------------- active neg 0 - off
1548 | | | -------------------------------- imm seek 0 - off
1551 | | ---------------------------------- scan luns 0 - off
1554 -------------------------------------- removable 0 - disable
1555 as BIOS dev 1 - boot device
1558 Host flags 1 (addr 0x100001, 33)
1560 x x x x x x x x x x x x x x x x
1562 | | | --------- boot delay 0 - 3 sec
1570 --------------------------- max tag cmds 0 - 2
1576 Host flags 2 (addr 0x100010, 34)
1578 x x x x x x x x x x x x x x x x
1580 ----- F2/F6 enable 0 - off ???
1583 checksum (addr 0x111111)
1585 checksum = 0x1234 - (sum addr 0-63)
1587 ----------------------------------------------------------------------------
1591 0x0037 0x0000 0x0037 0x0000 0x0037 0x0000 0x0037 0x0000
1592 0x0037 0x0000 0x0037 0x0000 0x0037 0x0000 0x0037 0x0000
1593 0x0037 0x0000 0x0037 0x0000 0x0037 0x0000 0x0037 0x0000
1594 0x0037 0x0000 0x0037 0x0000 0x0037 0x0000 0x0037 0x0000
1596 0x0f07 0x0400 0x0001 0x0000 0x0000 0x0000 0x0000 0x0000
1597 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
1598 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
1599 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0xfbbc
1602 18. Support for Big Endian
1604 The PCI local bus has been primarily designed for x86 architecture.
1605 As a consequence, PCI devices generally expect DWORDS using little endian
1610 In order to support NCR chips on a Big Endian architecture the driver has to
1611 perform byte reordering each time it is needed. This feature has been
1612 added to the driver by Cort <cort@cs.nmt.edu> and is available in driver
1613 version 2.5 and later ones. For the moment Big Endian support has only
1614 been tested on Linux/PPC (PowerPC).
1616 18.2 NCR chip in Big Endian mode of operations
1618 It can be read in SYMBIOS documentation that some chips support a special
1619 Big Endian mode, on paper: 53C815, 53C825A, 53C875, 53C875N, 53C895.
1620 This mode of operations is not software-selectable, but needs pin named
1621 BigLit to be pulled-up. Using this mode, most of byte reorderings should
1622 be avoided when the driver is running on a Big Endian CPU.
1623 Driver version 2.5 is also, in theory, ready for this feature.
1625 ===============================================================================
1626 End of NCR53C8XX driver README file