in2000.txt 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. UPDATE NEWS: version 1.33 - 26 Aug 98
  2. Interrupt management in this driver has become, over
  3. time, increasingly odd and difficult to explain - this
  4. has been mostly due to my own mental inadequacies. In
  5. recent kernels, it has failed to function at all when
  6. compiled for SMP. I've fixed that problem, and after
  7. taking a fresh look at interrupts in general, greatly
  8. reduced the number of places where they're fiddled
  9. with. Done some heavy testing and it looks very good.
  10. The driver now makes use of the __initfunc() and
  11. __initdata macros to save about 4k of kernel memory.
  12. Once again, the same code works for both 2.0.xx and
  13. 2.1.xx kernels.
  14. UPDATE NEWS: version 1.32 - 28 Mar 98
  15. Removed the check for legal IN2000 hardware versions:
  16. It appears that the driver works fine with serial
  17. EPROMs (the 8-pin chip that defines hardware rev) as
  18. old as 2.1, so we'll assume that all cards are OK.
  19. UPDATE NEWS: version 1.31 - 6 Jul 97
  20. Fixed a bug that caused incorrect SCSI status bytes to be
  21. returned from commands sent to LUNs greater than 0. This
  22. means that CDROM changers work now! Fixed a bug in the
  23. handling of command-line arguments when loaded as a module.
  24. Also put all the header data in in2000.h where it belongs.
  25. There are no longer any differences between this driver in
  26. the 2.1.xx source tree and the 2.0.xx tree, as of 2.0.31
  27. and 2.1.45 (or is it .46?) - this makes things much easier
  28. for me...
  29. UPDATE NEWS: version 1.30 - 14 Oct 96
  30. Fixed a bug in the code that sets the transfer direction
  31. bit (DESTID_DPD in the WD_DESTINATION_ID register). There
  32. are quite a few SCSI commands that do a write-to-device;
  33. now we deal with all of them correctly. Thanks to Joerg
  34. Dorchain for catching this one.
  35. UPDATE NEWS: version 1.29 - 24 Sep 96
  36. The memory-mapped hardware on the card is now accessed via
  37. the 'readb()' and 'readl()' macros - required by the new
  38. memory management scheme in the 2.1.x kernel series.
  39. As suggested by Andries Brouwer, 'bios_param()' no longer
  40. forces an artificial 1023 track limit on drives. Also
  41. removed some kludge-code left over from struggles with
  42. older (buggy) compilers.
  43. UPDATE NEWS: version 1.28 - 07 May 96
  44. Tightened up the "interrupts enabled/disabled" discipline
  45. in 'in2000_queuecommand()' and maybe 1 or 2 other places.
  46. I _think_ it may have been a little too lax, causing an
  47. occasional crash during full moon. A fully functional
  48. /proc interface is now in place - if you want to play
  49. with it, start by doing 'cat /proc/scsi/in2000/0'. You
  50. can also use it to change a few run-time parameters on
  51. the fly, but it's mostly for debugging. The curious
  52. should take a good look at 'in2000_proc_info()' in the
  53. in2000.c file to get an understanding of what it's all
  54. about; I figure that people who are really into it will
  55. want to add features suited to their own needs...
  56. Also, sync is now DISABLED by default.
  57. UPDATE NEWS: version 1.27 - 10 Apr 96
  58. Fixed a well-hidden bug in the adaptive-disconnect code
  59. that would show up every now and then during extreme
  60. heavy loads involving 2 or more simultaneously active
  61. devices. Thanks to Joe Mack for keeping my nose to the
  62. grindstone on this one.
  63. UPDATE NEWS: version 1.26 - 07 Mar 96
  64. 1.25 had a nasty bug that bit people with swap partitions
  65. and tape drives. Also, in my attempt to guess my way
  66. through Intel assembly language, I made an error in the
  67. inline code for IO writes. Made a few other changes and
  68. repairs - this version (fingers crossed) should work well.
  69. UPDATE NEWS: version 1.25 - 05 Mar 96
  70. Kernel 1.3.70 interrupt mods added; old kernels still OK.
  71. Big help from Bill Earnest and David Willmore on speed
  72. testing and optimizing: I think there's a real improvement
  73. in this area.
  74. New! User-friendly command-line interface for LILO and
  75. module loading - the old method is gone, so you'll need
  76. to read the comments for 'setup_strings' near the top
  77. of in2000.c. For people with CDROM's or other devices
  78. that have a tough time with sync negotiation, you can
  79. now selectively disable sync on individual devices -
  80. search for the 'nosync' keyword in the command-line
  81. comments. Some of you disable the BIOS on the card, which
  82. caused the auto-detect function to fail; there is now a
  83. command-line option to force detection of a ROM-less card.
  84. UPDATE NEWS: version 1.24a - 24 Feb 96
  85. There was a bug in the synchronous transfer code. Only
  86. a few people downloaded before I caught it - could have
  87. been worse.
  88. UPDATE NEWS: version 1.24 - 23 Feb 96
  89. Lots of good changes. Advice from Bill Earnest resulted
  90. in much better detection of cards, more efficient usage
  91. of the fifo, and (hopefully) faster data transfers. The
  92. jury is still out on speed - I hope it's improved some.
  93. One nifty new feature is a cool way of doing disconnect/
  94. reselect. The driver defaults to what I'm calling
  95. 'adaptive disconnect' - meaning that each command is
  96. evaluated individually as to whether or not it should be
  97. run with the option to disconnect/reselect (if the device
  98. chooses), or as a "SCSI-bus-hog". When several devices
  99. are operating simultaneously, disconnects are usually an
  100. advantage. In a single device system, or if only 1 device
  101. is being accessed, transfers usually go faster if disconnects
  102. are not allowed.
  103. The default arguments (you get these when you don't give an 'in2000'
  104. command-line argument, or you give a blank argument) will cause
  105. the driver to do adaptive disconnect, synchronous transfers, and a
  106. minimum of debug messages. If you want to fool with the options,
  107. search for 'setup_strings' near the top of the in2000.c file and
  108. check the 'hostdata->args' section in in2000.h - but be warned! Not
  109. everything is working yet (some things will never work, probably).
  110. I believe that disabling disconnects (DIS_NEVER) will allow you
  111. to choose a LEVEL2 value higher than 'L2_BASIC', but I haven't
  112. spent a lot of time testing this. You might try 'ENABLE_CLUSTERING'
  113. to see what happens: my tests showed little difference either way.
  114. There's also a define called 'DEFAULT_SX_PER'; this sets the data
  115. transfer speed for the asynchronous mode. I've put it at 500 ns
  116. despite the fact that the card could handle settings of 376 or
  117. 252, because higher speeds may be a problem with poor quality
  118. cables or improper termination; 500 ns is a compromise. You can
  119. choose your own default through the command-line with the
  120. 'period' keyword.
  121. ------------------------------------------------
  122. *********** DIP switch settings **************
  123. ------------------------------------------------
  124. sw1-1 sw1-2 BIOS address (hex)
  125. -----------------------------------------
  126. off off C8000 - CBFF0
  127. on off D8000 - DBFF0
  128. off on D0000 - D3FF0
  129. on on BIOS disabled
  130. sw1-3 sw1-4 IO port address (hex)
  131. ------------------------------------
  132. off off 220 - 22F
  133. on off 200 - 20F
  134. off on 110 - 11F
  135. on on 100 - 10F
  136. sw1-5 sw1-6 sw1-7 Interrupt
  137. ------------------------------
  138. off off off 15
  139. off on off 14
  140. off off on 11
  141. off on on 10
  142. on - - disabled
  143. sw1-8 function depends on BIOS version. In earlier versions this
  144. controlled synchronous data transfer support for MSDOS:
  145. off = disabled
  146. on = enabled
  147. In later ROMs (starting with 01.3 in April 1994) sw1-8 controls
  148. the "greater than 2 disk drive" feature that first appeared in
  149. MSDOS 5.0 (ignored by Linux):
  150. off = 2 drives maximum
  151. on = 7 drives maximum
  152. sw1-9 Floppy controller
  153. --------------------------
  154. off disabled
  155. on enabled
  156. ------------------------------------------------
  157. I should mention that Drew Eckhardt's 'Generic NCR5380' sources
  158. were my main inspiration, with lots of reference to the IN2000
  159. driver currently distributed in the kernel source. I also owe
  160. much to a driver written by Hamish Macdonald for Linux-m68k(!).
  161. And to Eric Wright for being an ALPHA guinea pig. And to Bill
  162. Earnest for 2 tons of great input and information. And to David
  163. Willmore for extensive 'bonnie' testing. And to Joe Mack for
  164. continual testing and feedback.
  165. John Shifflett jshiffle@netcom.com