About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Documentation / scsi / in2000.txt




Custom Search

Based on kernel version 3.13. Page generated on 2014-01-20 22:04 EST.

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 LUNs 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
Hide Line Numbers
About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Information is copyright its respective author. All material is available from the Linux Kernel Source distributed under a GPL License. This page is provided as a free service by mjmwired.net.