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