~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Linux-2.6.17/Documentation/scsi/in2000.txt

Version: ~ [ 2.6.16 ] ~ [ 2.6.17 ] ~
Architecture: ~ [ ia64 ] ~ [ i386 ] ~ [ arm ] ~ [ ppc ] ~ [ sparc64 ] ~

  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 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.