
UPDATE NEWS: version 1.33 - 26 Aug 98

   Interrupt management in this driver has become, over
   time, increasingly odd and difficult to explain - this
   has been mostly due to my own mental inadequacies. In
   recent kernels, it has failed to function at all when
   compiled for SMP. I've fixed that problem, and after
   taking a fresh look at interrupts in general, greatly
   reduced the number of places where they're fiddled
   with. Done some heavy testing and it looks very good.
   The driver now makes use of the __initfunc() and
   __initdata macros to save about 4k of kernel memory.
   Once again, the same code works for both 2.0.xx and
   2.1.xx kernels.

UPDATE NEWS: version 1.32 - 28 Mar 98

   Removed the check for legal IN2000 hardware versions:
   It appears that the driver works fine with serial
   EPROMs (the 8-pin chip that defines hardware rev) as
   old as 2.1, so we'll assume that all cards are OK.

UPDATE NEWS: version 1.31 - 6 Jul 97

   Fixed a bug that caused incorrect SCSI status bytes to be
   returned from commands sent to LUNs greater than 0. This
   means that CDROM changers work now! Fixed a bug in the
   handling of command-line arguments when loaded as a module.
   Also put all the header data in in2000.h where it belongs.
   There are no longer any differences between this driver in
   the 2.1.xx source tree and the 2.0.xx tree, as of 2.0.31
   and 2.1.45 (or is it .46?) - this makes things much easier
   for me...

UPDATE NEWS: version 1.30 - 14 Oct 96

   Fixed a bug in the code that sets the transfer direction
   bit (DESTID_DPD in the WD_DESTINATION_ID register). There
   are quite a few SCSI commands that do a write-to-device;
   now we deal with all of them correctly. Thanks to Joerg
   Dorchain for catching this one.

UPDATE NEWS: version 1.29 - 24 Sep 96

   The memory-mapped hardware on the card is now accessed via
   the 'readb()' and 'readl()' macros - required by the new
   memory management scheme in the 2.1.x kernel series.
   As suggested by Andries Brouwer, 'bios_param()' no longer
   forces an artificial 1023 track limit on drives. Also
   removed some kludge-code left over from struggles with
   older (buggy) compilers.

UPDATE NEWS: version 1.28 - 07 May 96

   Tightened up the "interrupts enabled/disabled" discipline
   in 'in2000_queuecommand()' and maybe 1 or 2 other places.
   I _think_ it may have been a little too lax, causing an
   occasional crash during full moon. A fully functional
   /proc interface is now in place - if you want to play
   with it, start by doing 'cat /proc/scsi/in2000/0'. You
   can also use it to change a few run-time parameters on
   the fly, but it's mostly for debugging. The curious
   should take a good look at 'in2000_proc_info()' in the
   in2000.c file to get an understanding of what it's all
   about; I figure that people who are really into it will
   want to add features suited to their own needs...
   Also, sync is now DISABLED by default.

UPDATE NEWS: version 1.27 - 10 Apr 96

   Fixed a well-hidden bug in the adaptive-disconnect code
   that would show up every now and then during extreme
   heavy loads involving 2 or more simultaneously active
   devices. Thanks to Joe Mack for keeping my nose to the
   grindstone on this one.

UPDATE NEWS: version 1.26 - 07 Mar 96

   1.25 had a nasty bug that bit people with swap partitions
   and tape drives. Also, in my attempt to guess my way
   through Intel assembly language, I made an error in the
   inline code for IO writes. Made a few other changes and
   repairs - this version (fingers crossed) should work well.

UPDATE NEWS: version 1.25 - 05 Mar 96

   Kernel 1.3.70 interrupt mods added; old kernels still OK.
   Big help from Bill Earnest and David Willmore on speed
   testing and optimizing: I think there's a real improvement
   in this area.
   New! User-friendly command-line interface for LILO and
   module loading - the old method is gone, so you'll need
   to read the comments for 'setup_strings' near the top
   of in2000.c. For people with CDROM's or other devices
   that have a tough time with sync negotiation, you can
   now selectively disable sync on individual devices -
   search for the 'nosync' keyword in the command-line
   comments. Some of you disable the BIOS on the card, which
   caused the auto-detect function to fail; there is now a
   command-line option to force detection of a ROM-less card.

UPDATE NEWS: version 1.24a - 24 Feb 96

   There was a bug in the synchronous transfer code. Only
   a few people downloaded before I caught it - could have
   been worse.

UPDATE NEWS: version 1.24 - 23 Feb 96

   Lots of good changes. Advice from Bill Earnest resulted
   in much better detection of cards, more efficient usage
   of the fifo, and (hopefully) faster data transfers. The
   jury is still out on speed - I hope it's improved some.
   One nifty new feature is a cool way of doing disconnect/
   reselect. The driver defaults to what I'm calling
   'adaptive disconnect' - meaning that each command is
   evaluated individually as to whether or not it should be
   run with the option to disconnect/reselect (if the device
   chooses), or as a "SCSI-bus-hog". When several devices
   are operating simultaneously, disconnects are usually an
   advantage. In a single device system, or if only 1 device
   is being accessed, transfers usually go faster if disconnects
   are not allowed.



The default arguments (you get these when you don't give an 'in2000'
command-line argument, or you give a blank argument) will cause
the driver to do adaptive disconnect, synchronous transfers, and a
minimum of debug messages. If you want to fool with the options,
search for 'setup_strings' near the top of the in2000.c file and
check the 'hostdata->args' section in in2000.h - but be warned! Not
everything is working yet (some things will never work, probably).
I believe that disabling disconnects (DIS_NEVER) will allow you
to choose a LEVEL2 value higher than 'L2_BASIC', but I haven't
spent a lot of time testing this. You might try 'ENABLE_CLUSTERING'
to see what happens: my tests showed little difference either way.
There's also a define called 'DEFAULT_SX_PER'; this sets the data
transfer speed for the asynchronous mode. I've put it at 500 ns
despite the fact that the card could handle settings of 376 or
252, because higher speeds may be a problem with poor quality
cables or improper termination; 500 ns is a compromise. You can
choose your own default through the command-line with the
'period' keyword.


------------------------------------------------
***********  DIP switch settings  **************
------------------------------------------------

   sw1-1 sw1-2    BIOS address (hex)
   -----------------------------------------
    off   off     C8000 - CBFF0
    on    off     D8000 - DBFF0
    off   on      D0000 - D3FF0
    on    on      BIOS disabled

   sw1-3 sw1-4    IO port address (hex)
   ------------------------------------
    off   off     220 - 22F
    on    off     200 - 20F
    off   on      110 - 11F
    on    on      100 - 10F

   sw1-5 sw1-6 sw1-7    Interrupt
   ------------------------------
    off   off   off     15
    off   on    off     14
    off   off   on      11
    off   on    on      10
    on    -     -       disabled

   sw1-8 function depends on BIOS version. In earlier versions this
   controlled synchronous data transfer support for MSDOS:
      off = disabled
      on  = enabled
   In later ROMs (starting with 01.3 in April 1994) sw1-8 controls
   the "greater than 2 disk drive" feature that first appeared in
   MSDOS 5.0 (ignored by Linux):
      off = 2 drives maximum
      on  = 7 drives maximum

   sw1-9    Floppy controller
   --------------------------
    off     disabled
    on      enabled

------------------------------------------------

   I should mention that Drew Eckhardt's 'Generic NCR5380' sources
   were my main inspiration, with lots of reference to the IN2000
   driver currently distributed in the kernel source. I also owe
   much to a driver written by Hamish Macdonald for Linux-m68k(!).
   And to Eric Wright for being an ALPHA guinea pig. And to Bill
   Earnest for 2 tons of great input and information. And to David
   Willmore for extensive 'bonnie' testing. And to Joe Mack for
   continual testing and feedback.


            John Shifflett    jshiffle@netcom.com

