1*4882a593SmuzhiyunSat May 12 12:00 2001 Gerard Roudier (groudier@club-internet.fr) 2*4882a593Smuzhiyun * version sym53c8xx-1.7.3c 3*4882a593Smuzhiyun - Ensure LEDC bit in GPCNTL is cleared when reading the NVRAM. 4*4882a593Smuzhiyun Fix sent by Stig Telfer <stig@api-networks.com>. 5*4882a593Smuzhiyun - Backport from SYM-2 the work-around that allows to support 6*4882a593Smuzhiyun hardwares that fail PCI parity checking. 7*4882a593Smuzhiyun - Check that we received at least 8 bytes of INQUIRY response 8*4882a593Smuzhiyun for byte 7, that contains device capabilities, to be valid. 9*4882a593Smuzhiyun - Define scsi_set_pci_device() as nil for kernel < 2.4.4. 10*4882a593Smuzhiyun - + A couple of minor changes. 11*4882a593Smuzhiyun 12*4882a593SmuzhiyunSat Apr 7 19:30 2001 Gerard Roudier (groudier@club-internet.fr) 13*4882a593Smuzhiyun * version sym53c8xx-1.7.3b 14*4882a593Smuzhiyun - Fix an unaligned LOAD from scripts (was used as dummy read). 15*4882a593Smuzhiyun - In ncr_soft_reset(), only try to ABORT the current operation 16*4882a593Smuzhiyun for chips that support SRUN bit in ISTAT1 and if SCRIPTS are 17*4882a593Smuzhiyun currently running, as 896 and 1010 manuals suggest. 18*4882a593Smuzhiyun - In the CCB abort path, do not assume that the CCB is currently 19*4882a593Smuzhiyun queued to SCRIPTS. This is not always true, notably after a 20*4882a593Smuzhiyun QUEUE FULL status or when using untagged commands. 21*4882a593Smuzhiyun 22*4882a593SmuzhiyunSun Mar 4 18:30 2001 Gerard Roudier (groudier@club-internet.fr) 23*4882a593Smuzhiyun * version sym53c8xx-1.7.3a 24*4882a593Smuzhiyun - Fix an issue in the ncr_int_udc() (unexpected disconnect) 25*4882a593Smuzhiyun handling. If the DSA didn't match a CCB, a bad write to 26*4882a593Smuzhiyun memory could happen. 27*4882a593Smuzhiyun 28*4882a593SmuzhiyunMon Feb 12 22:30 2001 Gerard Roudier (groudier@club-internet.fr) 29*4882a593Smuzhiyun * version sym53c8xx-1.7.3 30*4882a593Smuzhiyun - Support for hppa. 31*4882a593Smuzhiyun Tiny patch sent to me by Robert Hirst. 32*4882a593Smuzhiyun - Tiny patch for ia64 sent to me by Pamela Delaney. 33*4882a593Smuzhiyun 34*4882a593SmuzhiyunTue Feb 6 13:30 2001 Gerard Roudier (groudier@club-internet.fr) 35*4882a593Smuzhiyun * version sym53c8xx-1.7.3-pre1 36*4882a593Smuzhiyun - Call pci_enable_device() as AC wants this to be done. 37*4882a593Smuzhiyun - Get both the BAR cookies used by CPU and actual PCI BAR 38*4882a593Smuzhiyun values used from SCRIPTS. Recent PCI chips are able to 39*4882a593Smuzhiyun access themselves using internal cycles, but they compare 40*4882a593Smuzhiyun BAR values to destination address to make decision. 41*4882a593Smuzhiyun Earlier chips simply use PCI transactions to access IO 42*4882a593Smuzhiyun registers from SCRIPTS. 43*4882a593Smuzhiyun The bus_dvma_to_mem() interface that reverses the actual 44*4882a593Smuzhiyun PCI BAR value from the BAR cookie is now useless. 45*4882a593Smuzhiyun This point had been discussed at the list and the solution 46*4882a593Smuzhiyun got approved by PCI code maintainer (Martin Mares). 47*4882a593Smuzhiyun - Merge changes for linux-2.4 that declare the host template 48*4882a593Smuzhiyun in the driver object also when the driver is statically 49*4882a593Smuzhiyun linked with the kernel. 50*4882a593Smuzhiyun - Increase SCSI message size up to 12 bytes, given that 8 51*4882a593Smuzhiyun bytes was not enough for the PPR message (fix). 52*4882a593Smuzhiyun - Add field 'maxoffs_st' (max offset for ST data transfers). 53*4882a593Smuzhiyun The C1010 supports offset 62 in DT mode but only 31 in 54*4882a593Smuzhiyun ST mode, to 2 different values for the max SCSI offset 55*4882a593Smuzhiyun are needed. Replace the obviously wrong masking of the 56*4882a593Smuzhiyun offset against 0x1f for ST mode by a lowering to 57*4882a593Smuzhiyun maxoffs_st of the SCSI offset in ST mode. 58*4882a593Smuzhiyun - Refine a work-around for the C1010-66. Revision 1 does 59*4882a593Smuzhiyun not requires extra cycles in DT DATA OUT phase. 60*4882a593Smuzhiyun - Add a missing endian-ization (abrt_tbl.addr). 61*4882a593Smuzhiyun - Minor clean-up in the np structure for fields accessed 62*4882a593Smuzhiyun from SCRIPTS that requires special alignments. 63*4882a593Smuzhiyun 64*4882a593SmuzhiyunSun Sep 24 21:30 2000 Gerard Roudier (groudier@club-internet.fr) 65*4882a593Smuzhiyun * version sym53c8xx-1.7.2 66*4882a593Smuzhiyun - Remove the hack for PPC added in previous driver version. 67*4882a593Smuzhiyun - Add FE_DAC feature bit to distinguish between 64 bit PCI 68*4882a593Smuzhiyun addressing (FE_DAC) and 64 bit PCI interface (FE_64BIT). 69*4882a593Smuzhiyun - Get rid of the boot command line "ultra:" argument. 70*4882a593Smuzhiyun This parameter wasn't that clever since we can use "sync:" 71*4882a593Smuzhiyun for Ultra/Ultra2 settings, and for Ultra3 we may want to 72*4882a593Smuzhiyun pass PPR options (for now only DT clocking). 73*4882a593Smuzhiyun - Add FE_VARCLK feature bit that indicates that SCSI clock 74*4882a593Smuzhiyun frequency may vary depending on board design and thus, 75*4882a593Smuzhiyun the driver should try to evaluate the SCSI clock. 76*4882a593Smuzhiyun - Simplify the way the driver determine the SCSI clock: 77*4882a593Smuzhiyun ULTRA3 -> 160 MHz, ULTRA2 -> 80 MHz otherwise 40 MHz. 78*4882a593Smuzhiyun Measure the SCSI clock frequency if FE_VARCLK is set. 79*4882a593Smuzhiyun - Remove FE_CLK80 feature bit that got useless. 80*4882a593Smuzhiyun - Add support for the SYM53C875A (Pamela Delaney). 81*4882a593Smuzhiyun 82*4882a593SmuzhiyunWed Jul 26 23:30 2000 Gerard Roudier (groudier@club-internet.fr) 83*4882a593Smuzhiyun * version sym53c8xx-1.7.1 84*4882a593Smuzhiyun - Provide OpenFirmware path through the proc FS on PPC. 85*4882a593Smuzhiyun - Download of on-chip SRAM using memcpy_toio() doesn't work 86*4882a593Smuzhiyun on PPC. Restore previous method (MEMORY MOVE from SCRIPTS). 87*4882a593Smuzhiyun - Remove trailing argument #2 from a couple of #undefs. 88*4882a593Smuzhiyun 89*4882a593SmuzhiyunSun Jul 09 16:30 2000 Gerard Roudier (groudier@club-internet.fr) 90*4882a593Smuzhiyun * version sym53c8xx-1.7.0 91*4882a593Smuzhiyun - Remove the PROFILE C and SCRIPTS code. 92*4882a593Smuzhiyun This facility was not this useful and thus was not longer 93*4882a593Smuzhiyun desirable given the increasing complexity of the driver code. 94*4882a593Smuzhiyun - Merges from FreeBSD sym-1.6.2 driver: 95*4882a593Smuzhiyun * Clarify memory barriers needed by the driver for architectures 96*4882a593Smuzhiyun that implement a weak memory ordering. 97*4882a593Smuzhiyun * Simpler handling of illegal phases and data overrun from 98*4882a593Smuzhiyun SCRIPTS. These errors are now immediately reported to 99*4882a593Smuzhiyun the C code by an interrupt. 100*4882a593Smuzhiyun * Sync the residual handling code with sym-1.6.2 and now 101*4882a593Smuzhiyun report `resid' to user for linux version >= 2.3.99 102*4882a593Smuzhiyun - General cleanup: 103*4882a593Smuzhiyun Move definitions for barriers and IO/MMIO operations to the 104*4882a593Smuzhiyun sym53c8xx_defs.h header files. They are now shared by the 105*4882a593Smuzhiyun both drivers. 106*4882a593Smuzhiyun Remove unused options that claimed to optimize for the 896. 107*4882a593Smuzhiyun If fact, they were not this clever. :) 108*4882a593Smuzhiyun Use SCSI_NCR_IOMAPPED instead of NCR_IOMAPPED. 109*4882a593Smuzhiyun Remove a couple of unused fields from data structures. 110*4882a593Smuzhiyun 111*4882a593SmuzhiyunThu May 11 12:40 2000 Pam Delaney (pam.delaney@lsil.com) 112*4882a593Smuzhiyun * version sym53c8xx-1.6b 113*4882a593Smuzhiyun - Merged version. 114*4882a593Smuzhiyun 115*4882a593SmuzhiyunMon Apr 24 12:00 2000 Gerard Roudier (groudier@club-internet.fr) 116*4882a593Smuzhiyun * version sym53c8xx-1.5m 117*4882a593Smuzhiyun - Return value 1 (instead of 0) from the driver setup routine. 118*4882a593Smuzhiyun - Do not enable PCI DAC cycles. This just broke support for 119*4882a593Smuzhiyun SYM534C896 on sparc64. Problem fixed by David S. Miller. 120*4882a593Smuzhiyun 121*4882a593SmuzhiyunFri Apr 14 9:00 2000 Pam Delaney (pam.delaney@lsil.com) 122*4882a593Smuzhiyun * version sym53c8xx-1.6b-9 123*4882a593Smuzhiyun - Added 53C1010_66 support. 124*4882a593Smuzhiyun - Small fix to integrity checking code. 125*4882a593Smuzhiyun - Removed requirement for integrity checking if want to run 126*4882a593Smuzhiyun at ultra 3. 127*4882a593Smuzhiyun 128*4882a593SmuzhiyunSat Apr 1 12:00 2000 Gerard Roudier (groudier@club-internet.fr) 129*4882a593Smuzhiyun * version sym53c8xx-1.5l 130*4882a593Smuzhiyun - Tiny change for __sparc__ appeared in 2.3.99-pre4.1 that 131*4882a593Smuzhiyun applies to cache line size (? Probably from David S Miller). 132*4882a593Smuzhiyun - Make sure no data transfer will happen for Scsi_Cmnd requests 133*4882a593Smuzhiyun that supply SCSI_DATA_NONE direction (this avoids some BUG() 134*4882a593Smuzhiyun statement in the PCI code when a data buffer is also supplied). 135*4882a593Smuzhiyun 136*4882a593SmuzhiyunSat Mar 11 12:00 2000 Gerard Roudier (groudier@club-internet.fr) 137*4882a593Smuzhiyun * version sym53c8xx-1.6b-5 138*4882a593Smuzhiyun - Test against expected data transfer direction from SCRIPTS. 139*4882a593Smuzhiyun - Add support for the new dynamic dma mapping kernel interface. 140*4882a593Smuzhiyun Requires Linux-2.3.47 (tested with pre-2.3.47-6). 141*4882a593Smuzhiyun Many thanks to David S. Miller for his preliminary changes 142*4882a593Smuzhiyun that have been useful guidelines. 143*4882a593Smuzhiyun - Get data transfer direction from the scsi command structure 144*4882a593Smuzhiyun (Scsi_Cmnd) with kernels that provide this information. 145*4882a593Smuzhiyun 146*4882a593SmuzhiyunMon Mar 6 23:30 2000 Gerard Roudier (groudier@club-internet.fr) 147*4882a593Smuzhiyun * version sym53c8xx-1.5k 148*4882a593Smuzhiyun - Test against expected data transfer direction from SCRIPTS. 149*4882a593Smuzhiyun - Revert the change in 'ncr_flush_done_cmds()' but unmap the 150*4882a593Smuzhiyun scsi dma buffer prior to queueing the command to our done 151*4882a593Smuzhiyun list. 152*4882a593Smuzhiyun - Miscellaneous (minor) fixes in the code added in driver 153*4882a593Smuzhiyun version 1.5j. 154*4882a593Smuzhiyun 155*4882a593SmuzhiyunMon Feb 14 4:00 2000 Pam Delaney (pam.delaney@lsil.com) 156*4882a593Smuzhiyun * version sym53c8xx-pre-1.6b-2. 157*4882a593Smuzhiyun - Updated the SCRIPTS error handling of the SWIDE 158*4882a593Smuzhiyun condition - to remove any reads of the sbdl 159*4882a593Smuzhiyun register. Changes needed because the 896 and 1010 160*4882a593Smuzhiyun chips will check parity in some special circumstances. 161*4882a593Smuzhiyun This will cause a parity error interrupt if not in 162*4882a593Smuzhiyun data phase. Changes based on those made in the 163*4882a593Smuzhiyun FreeBSD driver version 1.3.2. 164*4882a593Smuzhiyun 165*4882a593SmuzhiyunSun Feb 20 11:00 2000 Gerard Roudier (groudier@club-internet.fr) 166*4882a593Smuzhiyun * version sym53c8xx-1.5j 167*4882a593Smuzhiyun - Add support for the new dynamic dma mapping kernel interface. 168*4882a593Smuzhiyun Requires Linux-2.3.47 (tested with pre-2.3.47-6). 169*4882a593Smuzhiyun Many thanks to David S. Miller for his preliminary changes 170*4882a593Smuzhiyun that have been useful guidelines, for having reviewed the 171*4882a593Smuzhiyun code and having tested this driver version on Ultra-Sparc. 172*4882a593Smuzhiyun - 2 tiny bugs fixed in the PCI wrapper that provides support 173*4882a593Smuzhiyun for early kernels without pci device structure. 174*4882a593Smuzhiyun - Get data transfer direction from the scsi command structure 175*4882a593Smuzhiyun (Scsi_Cmnd) with kernels that provide this information. 176*4882a593Smuzhiyun - Fix an old bug that only affected 896 rev. 1 when driver 177*4882a593Smuzhiyun profile support option was set in kernel configuration. 178*4882a593Smuzhiyun 179*4882a593SmuzhiyunFri Jan 14 14:00 2000 Pam Delaney (pam.delaney@lsil.com) 180*4882a593Smuzhiyun * version sym53c8xx-pre-1.6b-1. 181*4882a593Smuzhiyun - Merge parallel driver series 1.61 and 1.5e 182*4882a593Smuzhiyun 183*4882a593SmuzhiyunTue Jan 11 14:00 2000 Pam Delaney (pam.delaney@lsil.com) 184*4882a593Smuzhiyun * version sym53c8xx-1.61 185*4882a593Smuzhiyun - Added support for mounting disks on wide-narrow-wide 186*4882a593Smuzhiyun scsi configurations. 187*4882a593Smuzhiyun - Modified offset to be a maximum of 31 in ST mode, 188*4882a593Smuzhiyun 62 in DT mode. 189*4882a593Smuzhiyun - Based off of 1.60 190*4882a593Smuzhiyun 191*4882a593SmuzhiyunMon Jan 10 10:00 2000 Pam Delaney (pam.delaney@lsil.com) 192*4882a593Smuzhiyun * version sym53c8xx-1.60 193*4882a593Smuzhiyun - Added capability to use the integrity checking code 194*4882a593Smuzhiyun in the kernel (optional). 195*4882a593Smuzhiyun - Added PPR negotiation. 196*4882a593Smuzhiyun - Added support for 53C1010 Ultra 3 part. 197*4882a593Smuzhiyun - Based off of 1.5f 198*4882a593Smuzhiyun 199*4882a593SmuzhiyunSat Jan 8 22:00 2000 Gerard Roudier (groudier@club-internet.fr) 200*4882a593Smuzhiyun * version sym53c8xx-1.5h 201*4882a593Smuzhiyun - Add year 2000 copyright. 202*4882a593Smuzhiyun - Display correctly bus signals when bus is detected wrong. 203*4882a593Smuzhiyun - Some fix for Sparc from DSM that went directly to kernel tree. 204*4882a593Smuzhiyun 205*4882a593SmuzhiyunMon Dec 6 22:00 1999 Gerard Roudier (groudier@club-internet.fr) 206*4882a593Smuzhiyun * version sym53c8xx-1.5g 207*4882a593Smuzhiyun - Change messages written by the driver at initialisation and 208*4882a593Smuzhiyun through the /proc FS (rather cosmetic changes that consist in 209*4882a593Smuzhiyun printing out the PCI bus number and PCI device/function). 210*4882a593Smuzhiyun - Ensure the SCRIPTS processor is stopped while calibrating the 211*4882a593Smuzhiyun SCSI clock (the initialisation code has been a bit reworked). 212*4882a593Smuzhiyun Change moved to the FreeBSD sym_hipd driver). 213*4882a593Smuzhiyun - Some fixes in the MODIFY_DP/IGN_RESIDUE code and residual 214*4882a593Smuzhiyun calculation (moved from FreeBSD sym_hipd driver). 215*4882a593Smuzhiyun - Add NVRAM support for Tekram boards that use 24C16 EEPROM. 216*4882a593Smuzhiyun Code moved from the FreeBSD sym_hipd driver, since it has 217*4882a593Smuzhiyun been that one that got this feature first. 218*4882a593Smuzhiyun - Definitely disable overlapped PCI arbitration for all dual 219*4882a593Smuzhiyun function chips, since I cannot make sure for what chip revisions 220*4882a593Smuzhiyun it is actually safe. 221*4882a593Smuzhiyun - Add support for the SYM53C1510D (also for ncr53c8xx). 222*4882a593Smuzhiyun - Fix up properly the PCI latency timer when needed or asked for. 223*4882a593Smuzhiyun - Get rid of the old PCI bios interface, but preserve kernel 2.0 224*4882a593Smuzhiyun compatibility from a simple wrapper. 225*4882a593Smuzhiyun - Update the poor Tekram sync factor table. 226*4882a593Smuzhiyun - Fix in a tiny 'printk' bug that may oops in case of extended 227*4882a593Smuzhiyun errors (unrecovered parity error, data overrun, etc ...) 228*4882a593Smuzhiyun (Sent by Pamela Delaney from LSILOGIC) 229*4882a593Smuzhiyun - Remove the compilation condition about having to acquire the 230*4882a593Smuzhiyun io_request_lock since it seems to be a definite feature now.:) 231*4882a593Smuzhiyun - Change get_pages by GetPages since Linux >= 2.3.27 now wants 232*4882a593Smuzhiyun get_pages to ever be used as a kernel symbol (from 2.3.27). 233*4882a593Smuzhiyun - proc_dir structure no longer needed for kernel >= 2.3.27. 234*4882a593Smuzhiyun 235*4882a593SmuzhiyunSun Oct 3 19:00 1999 Gerard Roudier (groudier@club-internet.fr) 236*4882a593Smuzhiyun * version sym53c8xx-1.5f 237*4882a593Smuzhiyun - Change the way the driver checks the PCI clock frequency, so 238*4882a593Smuzhiyun that overclocked PCI BUS up to 48 MHz will not be refused. 239*4882a593Smuzhiyun The more the BUS is overclocked, the less the driver will 240*4882a593Smuzhiyun guarantee that its measure of the SCSI clock is correct. 241*4882a593Smuzhiyun - Backport some minor improvements of SCRIPTS from the sym_hipd 242*4882a593Smuzhiyun driver. 243*4882a593Smuzhiyun - Backport the code rewrite of the START QUEUE dequeuing (on 244*4882a593Smuzhiyun bad scsi status received) from the sym_hipd driver. 245*4882a593Smuzhiyun 246*4882a593SmuzhiyunSat Sep 11 11:00 1999 Gerard Roudier (groudier@club-internet.fr) 247*4882a593Smuzhiyun * version sym53c8xx-1.5e 248*4882a593Smuzhiyun - New linux-2.3.13 __setup scheme support added. 249*4882a593Smuzhiyun - Cleanup of the extended error status handling: 250*4882a593Smuzhiyun Use 1 bit per error type. 251*4882a593Smuzhiyun - Also save the extended error status prior to auto-sense. 252*4882a593Smuzhiyun - Add the FE_DIFF chip feature bit to indicate support of 253*4882a593Smuzhiyun diff probing from GPIO3 (825/825A/876/875). 254*4882a593Smuzhiyun - Remove the quirk handling that has been useless since day one. 255*4882a593Smuzhiyun - Work-around PCI chips being reported twice on some platforms. 256*4882a593Smuzhiyun - Add some redundant PCI reads in order to deal with common 257*4882a593Smuzhiyun bridge misbehaviour regarding posted write flushing. 258*4882a593Smuzhiyun - Add some other conditionnal code for people who have to deal 259*4882a593Smuzhiyun with really broken bridges (they will have to edit a source 260*4882a593Smuzhiyun file to try these options). 261*4882a593Smuzhiyun - Handle correctly (hopefully) jiffies wrap-around. 262*4882a593Smuzhiyun - Restore the entry used to detect 875 until revision 0xff. 263*4882a593Smuzhiyun (I removed it inadvertently, it seems :) ) 264*4882a593Smuzhiyun - Replace __initfunc() which is deprecated stuff by __init which 265*4882a593Smuzhiyun is not yet so. ;-) 266*4882a593Smuzhiyun - Rewrite the MESSAGE IN scripts more generic by using a MOVE 267*4882a593Smuzhiyun table indirect. Extended messages of any size are accepted now. 268*4882a593Smuzhiyun (Size is limited to 8 for now, but a constant is just to be 269*4882a593Smuzhiyun increased if necessary) 270*4882a593Smuzhiyun - Fix some bug in the fully untested MDP handling:) and share 271*4882a593Smuzhiyun some code between MDP handling and residual calculation. 272*4882a593Smuzhiyun - Calculate the data transfer residual as the 2's complement 273*4882a593Smuzhiyun integer (A positive value in returned on data overrun, and 274*4882a593Smuzhiyun a negative one on underrun). 275*4882a593Smuzhiyun - Add support of some 'resource handling' for linux-2.3.13. 276*4882a593Smuzhiyun Basically the BARs have been changed to something more complex 277*4882a593Smuzhiyun in the pci_dev structure. 278*4882a593Smuzhiyun - Remove some deprecated code. 279*4882a593Smuzhiyun 280*4882a593SmuzhiyunSat Jun 5 11:00 1999 Gerard Roudier (groudier@club-internet.fr) 281*4882a593Smuzhiyun * version sym53c8xx-1.5c 282*4882a593Smuzhiyun - Do not negotiate on auto-sense if we are currently using 8 bit 283*4882a593Smuzhiyun async transfer for the target. 284*4882a593Smuzhiyun - Only check for SISL/RAID on i386 platforms. 285*4882a593Smuzhiyun (A problem has been reported on PPC with that code). 286*4882a593Smuzhiyun - On MSG REJECT for a negotiation, the driver attempted to restart 287*4882a593Smuzhiyun the SCRIPT processor when this one was already running. 288*4882a593Smuzhiyun 289*4882a593SmuzhiyunSat May 29 12:00 1999 Gerard Roudier (groudier@club-internet.fr) 290*4882a593Smuzhiyun * version sym53c8xx-1.5b 291*4882a593Smuzhiyun - Force negotiation prior auto-sense. 292*4882a593Smuzhiyun This ensures that the driver will be able to grab the sense data 293*4882a593Smuzhiyun from a device that has received a BUS DEVICE RESET message from 294*4882a593Smuzhiyun another initiator. 295*4882a593Smuzhiyun - Complete all disconnected CCBs for a logical UNIT if we are told 296*4882a593Smuzhiyun about a UNIT ATTENTION for a RESET condition by this target. 297*4882a593Smuzhiyun - Add the control command 'cleardev' that allows to send a ABORT 298*4882a593Smuzhiyun message to a logical UNIT (for test purpose). 299*4882a593Smuzhiyun 300*4882a593SmuzhiyunTue May 25 23:00 1999 Gerard Roudier (groudier@club-internet.fr) 301*4882a593Smuzhiyun * version sym53c8xx-1.5a 302*4882a593Smuzhiyun - Add support for task abort and bus device reset SCSI message 303*4882a593Smuzhiyun and implement proper synchonisation with SCRIPTS to handle 304*4882a593Smuzhiyun correctly task abortion without races. 305*4882a593Smuzhiyun - Send an ABORT message (if untagged) or ABORT TAG message (if tagged) 306*4882a593Smuzhiyun when the driver is told to abort a command that is disconnected and 307*4882a593Smuzhiyun complete the command with appropriate error. 308*4882a593Smuzhiyun If the aborted command is not yet started, remove it from the start 309*4882a593Smuzhiyun queue and complete it with error. 310*4882a593Smuzhiyun - Add the control command 'resetdev' that allows to send a BUS 311*4882a593Smuzhiyun DEVICE RESET message to a target (for test purpose). 312*4882a593Smuzhiyun - Clean-up some unused or useless code. 313*4882a593Smuzhiyun 314*4882a593SmuzhiyunFri May 21 23:00 1999 Gerard Roudier (groudier@club-internet.fr) 315*4882a593Smuzhiyun * version sym53c8xx-1.5 316*4882a593Smuzhiyun - Add support for CHMOV with Wide controllers. 317*4882a593Smuzhiyun - Handling of the SWIDE (low byte residue at the end of a CHMOV 318*4882a593Smuzhiyun in DATA IN phase with WIDE transfer when the byte count gets odd). 319*4882a593Smuzhiyun - Handling of the IGNORE WIDE RESIDUE message. 320*4882a593Smuzhiyun Handled from SCRIPTS as possible with some optimizations when both 321*4882a593Smuzhiyun a wide device and the controller are odd at the same time (SWIDE 322*4882a593Smuzhiyun present and IGNORE WIDE RESIDUE message on the BUS at the same time). 323*4882a593Smuzhiyun - Check against data OVERRUN/UNDERRUN condition at the end of a data 324*4882a593Smuzhiyun transfer, whatever a SWIDE is present (OVERRUN in DATA IN phase) 325*4882a593Smuzhiyun or the SODL is full (UNDERRUN in DATA out phase). 326*4882a593Smuzhiyun - Handling of the MODIFY DATA POINTER message. 327*4882a593Smuzhiyun This one cannot be handled from SCRIPTS, but hopefully it will not 328*4882a593Smuzhiyun happen very often. :) 329*4882a593Smuzhiyun - Large rewrite of the SCSI MESSAGE handling. 330*4882a593Smuzhiyun 331*4882a593SmuzhiyunSun May 9 11:00 1999 Gerard Roudier (groudier@club-internet.fr) 332*4882a593Smuzhiyun * version sym53c8xx-1.4 333*4882a593Smuzhiyun - Support for IMMEDIATE ARBITRATION. 334*4882a593Smuzhiyun See the README file for detailed information about this feature. 335*4882a593Smuzhiyun Requires both a compile option and a boot option. 336*4882a593Smuzhiyun - Minor SCRIPTS optimization in reselection pattern for LUN 0. 337*4882a593Smuzhiyun - Simpler algorithm to deal with SCSI command starvation. 338*4882a593Smuzhiyun Just use 2 tag counters in flip/flop and switch to the other 339*4882a593Smuzhiyun one every 3 seconds. 340*4882a593Smuzhiyun - Do some work in SCRIPTS after the SELECT instruction and prior 341*4882a593Smuzhiyun to testing for a PHASE. SYMBIOS say this feature is working fine. 342*4882a593Smuzhiyun (Btw, only problems with Toshiba 3401B had been reported). 343*4882a593Smuzhiyun - Measure the PCI clock speed and do not attach controllers if 344*4882a593Smuzhiyun result is greater than 37 MHz. Since the precision of the 345*4882a593Smuzhiyun algorithm (from Stefan Esser) is better than 2%, this should 346*4882a593Smuzhiyun be fine. 347*4882a593Smuzhiyun - Fix the misdetection of SYM53C875E (was detected as a 876). 348*4882a593Smuzhiyun - Fix the misdetection of SYM53C810 not A (was detected as a 810A). 349*4882a593Smuzhiyun - Support for up to 256 TAGS per LUN (CMD_PER_LUN). 350*4882a593Smuzhiyun Currently limited to 255 due to Linux limitation. :) 351*4882a593Smuzhiyun - Support for up to 508 active commands (CAN_QUEUE). 352*4882a593Smuzhiyun - Support for the 53C895A by Pamela Delaney <pam.delaney@lsil.com> 353*4882a593Smuzhiyun The 53C895A contains all of the features of the 896 but has only 354*4882a593Smuzhiyun one channel and has a 32 bit PCI bus. It does 64 bit PCI addressing 355*4882a593Smuzhiyun using dual cycle PCI data transfers. 356*4882a593Smuzhiyun - Miscellaneous minor fixes. 357*4882a593Smuzhiyun - Some additions to the README.ncr53c8xx file. 358*4882a593Smuzhiyun 359*4882a593SmuzhiyunTue Apr 15 10:00 1999 Gerard Roudier (groudier@club-internet.fr) 360*4882a593Smuzhiyun * version sym53c8xx-1.3e 361*4882a593Smuzhiyun - Support for any number of LUNs (64) (SPI2-compliant). 362*4882a593Smuzhiyun (Btw, this may only be ever useful under linux-2.2 ;-)) 363*4882a593Smuzhiyun 364*4882a593SmuzhiyunSun Apr 11 10:00 1999 Gerard Roudier (groudier@club-internet.fr) 365*4882a593Smuzhiyun * version sym53c8xx-1.3d 366*4882a593Smuzhiyun - Add 'hostid:#id' boot option. This option allows to change the 367*4882a593Smuzhiyun default SCSI id the driver uses for controllers. 368*4882a593Smuzhiyun - Make SCRIPTS not use self-mastering for PCI. 369*4882a593Smuzhiyun There were still 2 places the driver used this feature of the 370*4882a593Smuzhiyun 53C8XX family. 371*4882a593Smuzhiyun - Move some data structures (nvram layouts and driver set-up) to 372*4882a593Smuzhiyun the sym53c8xx_defs.h file. So, the both drivers will share them. 373*4882a593Smuzhiyun - Set MAX LUNS to 16 (instead of 8). 374*4882a593Smuzhiyun 375*4882a593SmuzhiyunSat Mar 20 21:00 1999 Gerard Roudier (groudier@club-internet.fr) 376*4882a593Smuzhiyun * version sym53c8xx-1.3b 377*4882a593Smuzhiyun - Add support for NCR PQS PDS. 378*4882a593Smuzhiyun James Bottomley <James.Bottomley@columbiasc.ncr.com> 379*4882a593Smuzhiyun - Allow value 0 for host ID. 380*4882a593Smuzhiyun - Support more than 8 controllers (> 40 in fact :-) ) 381*4882a593Smuzhiyun - Add 'excl=#ioaddr' boot option: exclude controller. 382*4882a593Smuzhiyun (Version 1.3a driver) 383*4882a593Smuzhiyun 384*4882a593SmuzhiyunThu Mar 11 23:00 1999 Gerard Roudier (groudier@club-internet.fr) 385*4882a593Smuzhiyun * version sym53c8xx-1.3 (8xx-896 driver bundle) 386*4882a593Smuzhiyun - Equivalent changes as ncr53c8xx-3.2 due to the driver bundle. 387*4882a593Smuzhiyun (See Changelog.ncr53c8xx) 388*4882a593Smuzhiyun - Do a normal soft reset as first chip reset, since aborting current 389*4882a593Smuzhiyun operation may raise an interrupt we are not able to handle since 390*4882a593Smuzhiyun the interrupt handler is not yet established. 391*4882a593Smuzhiyun 392*4882a593SmuzhiyunSat Mar 6 11:00 1999 Gerard Roudier (groudier@club-internet.fr) 393*4882a593Smuzhiyun * version sym53c8xx-1.2b 394*4882a593Smuzhiyun - Fix some oooold bug that hangs the bus if a device rejects a 395*4882a593Smuzhiyun negotiation. Btw, the corresponding stuff also needed some cleanup 396*4882a593Smuzhiyun and thus the change is a bit larger than it could have been. 397*4882a593Smuzhiyun - Still some typo that made compilation fail for 64 bit (trivial fix). 398*4882a593Smuzhiyun 399*4882a593SmuzhiyunSun Feb 21 20:00 1999 Gerard Roudier (groudier@club-internet.fr) 400*4882a593Smuzhiyun * version sym53c8xx-1.2a 401*4882a593Smuzhiyun - The rewrite of the interrupt handling broke the SBMC interrupt 402*4882a593Smuzhiyun handling due to a 1 bit mask tiny error. Hopefully fixed. 403*4882a593Smuzhiyun - If INQUIRY came from a scatter list, the driver looked into 404*4882a593Smuzhiyun the scatterlist instead of the data.:) Since this should never 405*4882a593Smuzhiyun happen, we just discard the data if use_sg is not zero. 406*4882a593Smuzhiyun 407*4882a593SmuzhiyunFri Feb 12 23:00 1999 Gerard Roudier (groudier@club-internet.fr) 408*4882a593Smuzhiyun * version sym53c8xx-1.2 409*4882a593Smuzhiyun - Major rewrite of the interrupt handling and recovery stuff for 410*4882a593Smuzhiyun the support of non compliant SCSI removal, insertion and all 411*4882a593Smuzhiyun kinds of screw-up that may happen on the SCSI BUS. 412*4882a593Smuzhiyun Hopefully, the driver is now unbreakable or may-be, it is just 413*4882a593Smuzhiyun quite brocken. :-) 414*4882a593Smuzhiyun Many thanks to Johnson Russel (Symbios) for having responded to 415*4882a593Smuzhiyun my questions and for his interesting advices and comments about 416*4882a593Smuzhiyun support of SCSI hot-plug. 417*4882a593Smuzhiyun - Add 'recovery' option to driver set-up. 418*4882a593Smuzhiyun - Negotiate SYNC data transfers with CCS devices. 419*4882a593Smuzhiyun - Deal correctly with 64 bit PCI address registers on Linux 2.2. 420*4882a593Smuzhiyun Pointed out by Leonard Zubkoff. 421*4882a593Smuzhiyun 422*4882a593SmuzhiyunSun Jan 31 18:00 1999 Gerard Roudier (groudier@club-internet.fr) 423*4882a593Smuzhiyun * version sym53c8xx-1.1a 424*4882a593Smuzhiyun - Some 896 chip revisions (all for now :-)), may hang-up if the 425*4882a593Smuzhiyun soft reset bit is set at the wrong time while SCRIPTS are running. 426*4882a593Smuzhiyun We need to first abort the current SCRIPTS operation prior to 427*4882a593Smuzhiyun resetting the chip. This fix has been sent to me by SYMBIOS/LSI 428*4882a593Smuzhiyun and I just translated it into ncr53c8xx syntax. 429*4882a593Smuzhiyun Must be considered 100 % trustable, unless I did some mistake 430*4882a593Smuzhiyun when translating it. :-) 431*4882a593Smuzhiyun 432*4882a593SmuzhiyunSun Jan 24 18:00 1999 Gerard Roudier (groudier@club-internet.fr) 433*4882a593Smuzhiyun * version sym53c8xx-1.1 434*4882a593Smuzhiyun - Major rewrite of the SCSI parity error handling. 435*4882a593Smuzhiyun The informations contained in the data manuals are incomplete about 436*4882a593Smuzhiyun this feature. 437*4882a593Smuzhiyun I asked SYMBIOS about and got in reply the explanations that are 438*4882a593Smuzhiyun _indeed_ missing in the data manuals. 439*4882a593Smuzhiyun - Allow to tune request_irq() flags from the boot command line using 440*4882a593Smuzhiyun ncr53c8xx=irqm:??, as follows: 441*4882a593Smuzhiyun a) If bit 0x10 is set in irqm, SA_SHIRQ flag is not used. 442*4882a593Smuzhiyun b) If bit 0x20 is set in irqm, SA_INTERRUPT flag is not used. 443*4882a593Smuzhiyun By default the driver uses both SA_SHIRQ and SA_INTERRUPT. 444*4882a593Smuzhiyun Option 'ncr53c8xx=irqm:0x20' may be used when an IRQ is shared by 445*4882a593Smuzhiyun a 53C8XX adapter and a network board. 446*4882a593Smuzhiyun - Fix for 64 bit PCI address register calculation. (Lance Robinson) 447*4882a593Smuzhiyun - Fix for big-endian in phase mismatch handling. (Michal Jaegermann) 448*4882a593Smuzhiyun 449*4882a593SmuzhiyunFri Jan 1 20:00 1999 Gerard Roudier (groudier@club-internet.fr) 450*4882a593Smuzhiyun * version sym53c8xx-1.0a 451*4882a593Smuzhiyun - Waiting list look-up didn't work for the first command of the list. 452*4882a593Smuzhiyun Hopefully fixed, but tested on paper only. ;) 453*4882a593Smuzhiyun - Remove the most part of PPC specific code for Linux-2.2. 454*4882a593Smuzhiyun Thanks to Cort. 455*4882a593Smuzhiyun - Some other minors changes. 456*4882a593Smuzhiyun 457*4882a593SmuzhiyunSat Dec 19 21:00 1998 Gerard Roudier (groudier@club-internet.fr) 458*4882a593Smuzhiyun * version sym53c8xx-1.0 459*4882a593Smuzhiyun - Define some new IO registers for the 896 (istat1, mbox0, mbox1) 460*4882a593Smuzhiyun - Revamp slightly the Symbios NVRAM lay-out based on the excerpt of 461*4882a593Smuzhiyun the header file I received from Symbios. 462*4882a593Smuzhiyun - Check the PCI bus number for the boot order (Using a fast 463*4882a593Smuzhiyun PCI controller behing a PCI-PCI bridge seems sub-optimal). 464*4882a593Smuzhiyun - Disable overlapped PCI arbitration for the 896 revision 1. 465*4882a593Smuzhiyun - Reduce a bit the number of IO register reads for phase mismatch 466*4882a593Smuzhiyun by reading DWORDS at a time instead of BYTES. 467*4882a593Smuzhiyun 468*4882a593SmuzhiyunThu Dec 3 24:00 1998 Gerard Roudier (groudier@club-internet.fr) 469*4882a593Smuzhiyun * version pre-sym53c8xx-0.18 470*4882a593Smuzhiyun - I received this afternoon a 896 from SYMBIOS and started testing 471*4882a593Smuzhiyun the driver with this beast. After having fixed 3 buglets, it worked 472*4882a593Smuzhiyun with all features enabled including the phase mismatch handling 473*4882a593Smuzhiyun from SCRIPTS. Since this feature is not yet tested enough, the 474*4882a593Smuzhiyun boot option 'ncr53c8xx=specf:1' is still required to enable the 475*4882a593Smuzhiyun driver to handle PM from SCRIPTS. 476*4882a593Smuzhiyun 477*4882a593SmuzhiyunSun Nov 29 18:00 1998 Gerard Roudier (groudier@club-internet.fr) 478*4882a593Smuzhiyun * version pre-sym53c8xx-0.17 479*4882a593Smuzhiyun - The SISL RAID change requires now remap_pci_mem() stuff to be 480*4882a593Smuzhiyun compiled for __i386__ when normal IOs are used. 481*4882a593Smuzhiyun - The PCI memory read from SCRIPTS that should ensure ordering 482*4882a593Smuzhiyun was in fact misplaced. BTW, this may explain why broken PCI 483*4882a593Smuzhiyun device drivers regarding ordering are working so well. ;-) 484*4882a593Smuzhiyun - Rewrite ncr53c8xx_setup (boot command line options) since the 485*4882a593Smuzhiyun binary code was a bit too bloated in my opinion. 486*4882a593Smuzhiyun - Make the code simpler in the wakeup_done routine. 487*4882a593Smuzhiyun 488*4882a593SmuzhiyunTue Nov 24 23:00 1998 Gerard Roudier (groudier@club-internet.fr) 489*4882a593Smuzhiyun * version pre-sym53c8xx-0.16 490*4882a593Smuzhiyun - Add SCSI_NCR_OPTIMIZE_896_1 compile option and 'optim' boot option. 491*4882a593Smuzhiyun When set, the driver unconditionnaly assumes that the interrupt 492*4882a593Smuzhiyun handler is called for command completion, then clears INTF, scans 493*4882a593Smuzhiyun the done queue and returns if some completed CCB is found. If no 494*4882a593Smuzhiyun completed CCB are found, interrupt handling will proceed normally. 495*4882a593Smuzhiyun With a 896 that handles MA from SCRIPTS, this can be a great win, 496*4882a593Smuzhiyun since the driver will never performs PCI read transactions, but 497*4882a593Smuzhiyun only PCI write transactions that may be posted. 498*4882a593Smuzhiyun If the driver haven't to also raise the SIGP this would be perfect. 499*4882a593Smuzhiyun Even with this penalty, I think that this will work great. 500*4882a593Smuzhiyun Obviously this optimization makes sense only if the IRQ is not 501*4882a593Smuzhiyun shared with another device. 502*4882a593Smuzhiyun - Still a buglet in the tags initial settings that needed to be fixed. 503*4882a593Smuzhiyun It was not possible to disable TGQ at system startup for devices 504*4882a593Smuzhiyun that claim TGQ support. The driver used at least 2 for the queue 505*4882a593Smuzhiyun depth but did'nt keep track of user settings for tags depth lower 506*4882a593Smuzhiyun than 2. 507*4882a593Smuzhiyun 508*4882a593SmuzhiyunThu Nov 19 23:00 1998 Gerard Roudier (groudier@club-internet.fr) 509*4882a593Smuzhiyun * version pre-sym53c8xx-0.15 510*4882a593Smuzhiyun - Add support for hardware LED control of the 896. 511*4882a593Smuzhiyun - Ignore chips that are driven by SISL RAID (DAC 960). 512*4882a593Smuzhiyun Change sent by Leonard Zubkoff and slightly reworked. 513*4882a593Smuzhiyun - Prevent 810A rev 11 and 860 rev 1 from using cache line based 514*4882a593Smuzhiyun transactions since those early chip revisions may use such on 515*4882a593Smuzhiyun LOAD/STORE instructions (work-around). 516*4882a593Smuzhiyun - Remove some useless and bloat code from the pci init stuff. 517*4882a593Smuzhiyun - Do not use the readX()/writeX() kernel functions for __i386__, 518*4882a593Smuzhiyun since they perform useless masking operations in order to deal 519*4882a593Smuzhiyun with broken driver in 2.1.X kernel. 520*4882a593Smuzhiyun 521*4882a593SmuzhiyunWed Nov 11 10:00 1998 Gerard Roudier (groudier@club-internet.fr) 522*4882a593Smuzhiyun * version pre-sym53c8xx-0.14 523*4882a593Smuzhiyun - The driver was unhappy when configured with default_tags > MAX_TAGS 524*4882a593Smuzhiyun Hopefully doubly-fixed. 525*4882a593Smuzhiyun - Set PCI_PARITY in PCI_COMMAND register in not set (PCI fix-up). 526*4882a593Smuzhiyun - Print out some message if phase mismatch is handled from SCRIPTS. 527*4882a593Smuzhiyun 528*4882a593SmuzhiyunSun Nov 1 14H00 1998 Gerard Roudier (groudier@club-internet.fr) 529*4882a593Smuzhiyun * version pre-sym53c8xx-0.13 530*4882a593Smuzhiyun - Some rewrite of the device detection code. This code had been 531*4882a593Smuzhiyun patched too much and needed to be face-lifted a bit. 532*4882a593Smuzhiyun Remove all platform dependent fix-ups that was not needed or 533*4882a593Smuzhiyun conflicted with some other driver code as work-arounds. 534*4882a593Smuzhiyun Reread the NVRAM before the calling of ncr_attach(). This spares 535*4882a593Smuzhiyun stack space and so allows to handle more boards. 536*4882a593Smuzhiyun Handle 64 bit base addresses under linux-2.0.X. 537*4882a593Smuzhiyun Set MASTER bit in PCI COMMAND register if not set. 538*4882a593Smuzhiyun 539*4882a593SmuzhiyunWed Oct 30 22H00 1998 Gerard Roudier (groudier@club-internet.fr) 540*4882a593Smuzhiyun * version pre-sym53c8xx-0.12 541*4882a593Smuzhiyun - Damned! I just broke the driver for Alpha by leaving a stale 542*4882a593Smuzhiyun instruction in the source code. Hopefully fixed. 543*4882a593Smuzhiyun - Do not set PFEN when it is useless. Doing so we are sure that BOF 544*4882a593Smuzhiyun will be active, since the manual appears to be very unclear on what 545*4882a593Smuzhiyun feature is actually used by the chip when both PFEN and BOF are 546*4882a593Smuzhiyun set. 547*4882a593Smuzhiyun 548*4882a593SmuzhiyunSat Oct 24 16H00 1998 Gerard Roudier (groudier@club-internet.fr) 549*4882a593Smuzhiyun * version pre-sym53c8xx-0.11 550*4882a593Smuzhiyun - LOAD/STORE instructions were miscompiled for register offsets 551*4882a593Smuzhiyun beyond 0x7f. This broke accesses to 896' new registers. 552*4882a593Smuzhiyun - Disable by default Phase Mismatch handling from SCRIPTS, since 553*4882a593Smuzhiyun current 896 rev.1 seems not to operate safely with the driver 554*4882a593Smuzhiyun when this feature is enabled (and above LOAD/STORE fix applied). 555*4882a593Smuzhiyun I will change the default to 'enabled' when this problem will be 556*4882a593Smuzhiyun solved. 557*4882a593Smuzhiyun Using boot option 'ncr53c8xx=specf:1' enables this feature. 558*4882a593Smuzhiyun - Implement a work-around (DEL 472 - ITEM 5) that should allow the 559*4882a593Smuzhiyun driver to safely enable hardware phase mismatch with 896 rev. 1. 560*4882a593Smuzhiyun 561*4882a593SmuzhiyunTue Oct 20 22H00 1998 Gerard Roudier (groudier@club-internet.fr) 562*4882a593Smuzhiyun * version pre-sym53c8xx-0.10 563*4882a593Smuzhiyun - Add the 53c876 description to the chip table. This is only useful 564*4882a593Smuzhiyun for printing the right name of the controller. 565*4882a593Smuzhiyun - Add additional checking of INQUIRY data: 566*4882a593Smuzhiyun Check INQUIRY data received length is at least 7. Byte 7 of 567*4882a593Smuzhiyun inquiry data contains device features bits and the driver might 568*4882a593Smuzhiyun be confused by garbage. Also check peripheral qualifier. 569*4882a593Smuzhiyun - Use a 1,3,5,...MAXTAGS*2+1 tag numbering. Previous driver could 570*4882a593Smuzhiyun use any tag number from 1 to 253 and some non conformant devices 571*4882a593Smuzhiyun might have problems with large tag numbers. 572*4882a593Smuzhiyun - Use NAME53C and NAME53C8XX for chip name prefix chip family name. 573*4882a593Smuzhiyun Just give a try using "sym53c" and "sym53c8xx" instead of "ncr53c" 574*4882a593Smuzhiyun and "ncr53c8xx". :-) 575*4882a593Smuzhiyun 576*4882a593SmuzhiyunSun Oct 11 17H00 1998 Gerard Roudier (groudier@club-internet.fr) 577*4882a593Smuzhiyun * version pre-sym53c8xx-0.9 578*4882a593Smuzhiyun - DEL-441 Item 2 work-around for the 53c876 rev <= 5 (0x15). 579*4882a593Smuzhiyun - Break ncr_scatter() into 2 functions in order to guarantee best 580*4882a593Smuzhiyun possible code optimization for the case we get a scatter list. 581*4882a593Smuzhiyun - Add the code intended to support up to 1 tera-byte for 64 bit systems. 582*4882a593Smuzhiyun It is probably too early, but I wanted to complete the thing. 583*4882a593Smuzhiyun 584*4882a593SmuzhiyunSat Oct 3 14H00 1998 Gerard Roudier (groudier@club-internet.fr) 585*4882a593Smuzhiyun * version pre-sym53c8xx-0.8 586*4882a593Smuzhiyun - Do some testing with io_mapped and fix what needed to be so. 587*4882a593Smuzhiyun - Wait for SCSI selection to complete or time-out immediately after 588*4882a593Smuzhiyun the chip won arbitration, since executing SCRIPTS while the SCSI 589*4882a593Smuzhiyun core is performing SCSI selection breaks the selection procedure 590*4882a593Smuzhiyun at least for some chip revisions. 591*4882a593Smuzhiyun - Interrupt the SCRIPTS if a device does not go to MSG OUT phase after 592*4882a593Smuzhiyun having been selected with ATN. Such a situation is not recoverable, 593*4882a593Smuzhiyun better to fail when we are stuck. 594