Sat Dec 30 21:30 2000 Gerard Roudier 
	* version sym-2.1.0-20001230
	- Initial release of SYM-2.

Mon Jan 08 21:30 2001 Gerard Roudier 
	* version sym-2.1.1-20010108
	- Change a couple of defines containing ncr or NCR by their 
	  equivalent containing sym or SYM instead.

Sun Jan 14 22:30 2001 Gerard Roudier 
	* version sym-2.1.2-20010114
	- Fix a couple of printfs:
	  * Add the target number to the display of transfer parameters.
	  * Make the display of TCQ and queue depth clearer.

Wed Jan 17 23:30 2001 Gerard Roudier 
	* version sym-2.1.3-20010117
	- Wrong residual values were returned in some situations.
	  This broke cdrecord with linux-2.4.0, for example.

Sat Jan 20 18:00 2001 Gerard Roudier 
	* version sym-2.1.4-20010120
	- Add year 2001 to Copyright.
	- A tiny bug in the dma memory freeing path has been fixed.
	  (Driver unload failed with a bad address reference).

Wed Jan 24 21:00 2001 Gerard Roudier 
	* version sym-2.1.5-20010124
	- Make the driver work under Linux-2.4.x when statically linked 
	  with the kernel.
	- Check against memory allocation failure for SCRIPTZ and add the 
	  missing free of this memory on instance detach.
	- Check against GPIO3 pulled low for HVD controllers (driver did 
	  just the opposite).
	  Misdetection of BUS mode was triggered on module reload only, 
	  since BIOS settings were trusted instead on first load.

Wed Feb 7 21:00 2001 Gerard Roudier 
	* version sym-2.1.6-20010207
	- Call pci_enable_device() as wished by kernel maintainers.
	- Change the sym_queue_scsiio() interface.
	  This is intended to simplify portability.
	- Move the code intended to deal with the downloading of SCRIPTS
	  from SCRIPTS :) in the patch method (was wrongly placed in 
	  the SCRIPTS setup method).
	- Add a missing cpu_to_scr()  (np->abort_tbl.addr)
	- Remove a wrong cpu_to_scr() (np->targtbl_ba)
	- Cleanup a bit the PPR failure recovery code.

Sat Mar 3 21:00 2001 Gerard Roudier 
	- Add option SYM_OPT_ANNOUNCE_TRANSFER_RATE and move the 
	  corresponding code to file sym_misc.c.
	  Also move the code that sniffes INQUIRY to sym_misc.c.
	  This allows to share the corresponding code with NetBSD 
	  without polluating the core driver source (sym_hipd.c).
	- Add optional code that handles IO timeouts from the driver.
	  (not used under Linux, but required for NetBSD)
	- Do not assume any longer that PAGE_SHIFT and PAGE_SIZE are
	  defined at compile time, as at least NetBSD uses variables 
	  in memory for that.
	- Refine a work-around for the C1010-33 that consists in 
	  disabling internal LOAD/STORE. Was applied up to revision 1.
	  Is now only applied to revision 0.
	- Some code reorganisations due to code moves between files.

Tues Apr 10 21:00 2001 Gerard Roudier 
	* version sym-2.1.9-20010412
	- Reset 53C896 and 53C1010 chip according to the manual.
	  (i.e.: set the ABRT bit in ISTAT if SCRIPTS are running)
	- Set #LUN in request sense only if scsi version <= 2 and
	  #LUN <= 7.
	- Set busy_itl in LCB to 1 if the LCB is allocated and a 
	  SCSI command is active. This is a simplification.
	- In sym_hcb_free(), do not scan the free_ccbq if no CCBs 
	  has been allocated. This fixes a panic if attach failed.
	- Add DT/ST (double/simple transition) in the transfer 
	  negotiation announce.
	- Forces the max number of tasks per LUN to at least 64.
	- Use pci_set_dma_mask() for linux-2.4.3 and above.
	- A couple of comments fixes.

Wed May 22:00 2001 Gerard Roudier 
	* version sym-2.1.10-20010509
	- Mask GPCNTL against 0x1c (was 0xfc) for the reading of the NVRAM.
	  This ensure LEDC bit will not be set on 896 and later chips.
	  Fix sent by Chip Salzenberg <chip@perlsupport.com>.
	- Define the number of PQS BUSes supported.
	  Fix sent by Stig Telfer <stig@api-networks.com>
	- Miscellaneous common code rearrangements due to NetBSD accel 
	  ioctl support, without impact on Linux (hopefully).

Mon July 2 12:00 2001 Gerard Roudier 
	* version sym-2.1.11-20010702
	- Add Tekram 390 U2B/U2W SCSI LED handling.
	  Submitted by Chip Salzenberg <chip@valinux.com>
	- Add call to scsi_set_pci_device() for kernels >= 2.4.4.
	- Check pci dma mapping failures and complete the IO with some 
	  error when such mapping fails.
	- Fill in instance->max_cmd_len for kernels > 2.4.0.
	- A couple of tiny fixes ...

Sun Sep 9 18:00 2001 Gerard Roudier 
	* version sym-2.1.12-20010909
	- Change my email address.
	- Add infrastructure for the forthcoming 64 bit DMA addressing support.
	  (Based on PCI 64 bit patch from David S. Miller)
	- Do not use anymore vm_offset_t type.

Sat Sep 15 20:00 2001 Gerard Roudier 
	* version sym-2.1.13-20010916
	- Add support for 64 bit DMA addressing using segment registers.
	  16 registers for up to 4 GB x 16 -> 64 GB.

Sat Sep 22 12:00 2001 Gerard Roudier 
	* version sym-2.1.14-20010922
	- Complete rewrite of the eh handling. The driver is now using a 
	  semaphore in order to behave synchronously as required by the eh 
	  threads. A timer is also used to prevent from waiting indefinitely.

Sun Sep 30 17:00 2001 Gerard Roudier 
	* version sym-2.1.15-20010930
	- Include <linux/module.h> unconditionally as expected by latest
	  kernels.
	- Use del_timer_sync() for recent kernels to kill the driver timer 
	  on module release.

Sun Oct 28 15:00 2001 Gerard Roudier 
	* version sym-2.1.16-20011028
	- Slightly simplify driver configuration.
	- Prepare a new patch against linux-2.4.13.

Sat Nov 17 10:00 2001 Gerard Roudier 
	* version sym-2.1.17
	- Fix a couple of gcc/gcc3 warnings.
	- Allocate separately from the HCB the array for CCBs hashed by DSA.
	  All driver memory allocations are now not greater than 1 PAGE 
	  even on PPC64 / 4KB PAGE surprising setup.

Sat Dec 01 18:00 2001 Gerard Roudier 
	* version sym-2.1.17a
	- Use u_long instead of U32 for the IO base cookie. This is more 
	  consistent with what archs are expecting.
	- Use MMIO per default for Power PC instead of some fake normal IO,
	  as Paul Mackerras stated that MMIO works fine now on this arch.
