URL
https://opencores.org/ocsvn/or1k/or1k/trunk
Subversion Repositories or1k
[/] [or1k/] [trunk/] [rc203soc/] [sw/] [uClinux/] [drivers/] [scsi/] [README.in2000] - Rev 1765
Compare with Previous | Blame | View Log
UPDATE NEWS: version 1.33 - 26 Aug 98Interrupt management in this driver has become, overtime, increasingly odd and difficult to explain - thishas been mostly due to my own mental inadequacies. Inrecent kernels, it has failed to function at all whencompiled for SMP. I've fixed that problem, and aftertaking a fresh look at interrupts in general, greatlyreduced the number of places where they're fiddledwith. 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 and2.1.xx kernels.UPDATE NEWS: version 1.32 - 28 Mar 98Removed the check for legal IN2000 hardware versions:It appears that the driver works fine with serialEPROMs (the 8-pin chip that defines hardware rev) asold as 2.1, so we'll assume that all cards are OK.UPDATE NEWS: version 1.31 - 6 Jul 97Fixed a bug that caused incorrect SCSI status bytes to bereturned from commands sent to LUN's greater than 0. Thismeans that CDROM changers work now! Fixed a bug in thehandling 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 inthe 2.1.xx source tree and the 2.0.xx tree, as of 2.0.31and 2.1.45 (or is it .46?) - this makes things much easierfor me...UPDATE NEWS: version 1.30 - 14 Oct 96Fixed a bug in the code that sets the transfer directionbit (DESTID_DPD in the WD_DESTINATION_ID register). Thereare quite a few SCSI commands that do a write-to-device;now we deal with all of them correctly. Thanks to JoergDorchain for catching this one.UPDATE NEWS: version 1.29 - 24 Sep 96The memory-mapped hardware on the card is now accessed viathe 'readb()' and 'readl()' macros - required by the newmemory management scheme in the 2.1.x kernel series.As suggested by Andries Brouwer, 'bios_param()' no longerforces an artificial 1023 track limit on drives. Alsoremoved some kludge-code left over from struggles witholder (buggy) compilers.UPDATE NEWS: version 1.28 - 07 May 96Tightened up the "interrupts enabled/disabled" disciplinein 'in2000_queuecommand()' and maybe 1 or 2 other places.I _think_ it may have been a little too lax, causing anoccasional crash during full moon. A fully functional/proc interface is now in place - if you want to playwith it, start by doing 'cat /proc/scsi/in2000/0'. Youcan also use it to change a few run-time parameters onthe fly, but it's mostly for debugging. The curiousshould take a good look at 'in2000_proc_info()' in thein2000.c file to get an understanding of what it's allabout; I figure that people who are really into it willwant to add features suited to their own needs...Also, sync is now DISABLED by default.UPDATE NEWS: version 1.27 - 10 Apr 96Fixed a well-hidden bug in the adaptive-disconnect codethat would show up every now and then during extremeheavy loads involving 2 or more simultaneously activedevices. Thanks to Joe Mack for keeping my nose to thegrindstone on this one.UPDATE NEWS: version 1.26 - 07 Mar 961.25 had a nasty bug that bit people with swap partitionsand tape drives. Also, in my attempt to guess my waythrough Intel assembly language, I made an error in theinline code for IO writes. Made a few other changes andrepairs - this version (fingers crossed) should work well.UPDATE NEWS: version 1.25 - 05 Mar 96Kernel 1.3.70 interrupt mods added; old kernels still OK.Big help from Bill Earnest and David Willmore on speedtesting and optimizing: I think there's a real improvementin this area.New! User-friendly command-line interface for LILO andmodule loading - the old method is gone, so you'll needto read the comments for 'setup_strings' near the topof in2000.c. For people with CDROM's or other devicesthat have a tough time with sync negotiation, you cannow selectively disable sync on individual devices -search for the 'nosync' keyword in the command-linecomments. Some of you disable the BIOS on the card, whichcaused the auto-detect function to fail; there is now acommand-line option to force detection of a ROM-less card.UPDATE NEWS: version 1.24a - 24 Feb 96There was a bug in the synchronous transfer code. Onlya few people downloaded before I caught it - could havebeen worse.UPDATE NEWS: version 1.24 - 23 Feb 96Lots of good changes. Advice from Bill Earnest resultedin much better detection of cards, more efficient usageof the fifo, and (hopefully) faster data transfers. Thejury 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 isevaluated individually as to whether or not it should berun with the option to disconnect/reselect (if the devicechooses), or as a "SCSI-bus-hog". When several devicesare operating simultaneously, disconnects are usually anadvantage. In a single device system, or if only 1 deviceis being accessed, transfers usually go faster if disconnectsare 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 causethe driver to do adaptive disconnect, synchronous transfers, and aminimum of debug messages. If you want to fool with the options,search for 'setup_strings' near the top of the in2000.c file andcheck the 'hostdata->args' section in in2000.h - but be warned! Noteverything is working yet (some things will never work, probably).I believe that disabling disconnects (DIS_NEVER) will allow youto choose a LEVEL2 value higher than 'L2_BASIC', but I haven'tspent 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 datatransfer speed for the asynchronous mode. I've put it at 500 nsdespite the fact that the card could handle settings of 376 or252, because higher speeds may be a problem with poor qualitycables or improper termination; 500 ns is a compromise. You canchoose your own default through the command-line with the'period' keyword.------------------------------------------------*********** DIP switch settings **************------------------------------------------------sw1-1 sw1-2 BIOS address (hex)-----------------------------------------off off C8000 - CBFF0on off D8000 - DBFF0off on D0000 - D3FF0on on BIOS disabledsw1-3 sw1-4 IO port address (hex)------------------------------------off off 220 - 22Fon off 200 - 20Foff on 110 - 11Fon on 100 - 10Fsw1-5 sw1-6 sw1-7 Interrupt------------------------------off off off 15off on off 14off off on 11off on on 10on - - disabledsw1-8 function depends on BIOS version. In earlier versions thiscontrolled synchronous data transfer support for MSDOS:off = disabledon = enabledIn later ROMs (starting with 01.3 in April 1994) sw1-8 controlsthe "greater than 2 disk drive" feature that first appeared inMSDOS 5.0 (ignored by Linux):off = 2 drives maximumon = 7 drives maximumsw1-9 Floppy controller--------------------------off disabledon enabled------------------------------------------------I should mention that Drew Eckhardt's 'Generic NCR5380' sourceswere my main inspiration, with lots of reference to the IN2000driver currently distributed in the kernel source. I also owemuch to a driver written by Hamish Macdonald for Linux-m68k(!).And to Eric Wright for being an ALPHA guinea pig. And to BillEarnest for 2 tons of great input and information. And to DavidWillmore for extensive 'bonnie' testing. And to Joe Mack forcontinual testing and feedback.John Shifflett jshiffle@netcom.com
