ChangeLog
---------

PER-FILE CHANGES:
(+: New, -: Removed, *: Cleanup, @: Bugfix, =: Sync with kernels)


1.24
----
Linux 2.5.x is not supported anymore.

My e-mail address has changed; this is the new one: 
<luca.risolia@studio.unibo.it>

[w9968cf.c]
+ Sensor initialization is performed once as soon as it is detected
+ Faster opens() and ioctl()'s, since unnecessary sensor commands are not 
  executed here anymore, and faster control through the /proc interface
* The camera picture structure is updated everytime sensor settings are read
* Replace "sensor_mono" module paramater with "monochrome"
* Use new w9968cf_smbus_refresh() to re-enable sbus communication on errors
= Use new video_device*() (V4L interface) under Linux >= 2.4.23 and the 
  V4L structure is allocated dinamically
= Use new module paramater declaration macros under Linux 2.6
= Use usb_set|get_intfdata() under Linux 2.6
@ Remove usb_set_configure() and usb_set_interface() from probe(): this is
  not allowed, becouse of deadlocks in Linux 2.6. Furthermore, the only 
  available configuration and interface should be enabled by default
@ Add 'owner' field to the V4L structure.

[w9968cf.txt]
* Updates

[w9968cf.h]
* Small CLeanups

[Makefile]
* Small Cleanups


1.23
----
[w9968cf.txt]
* Cleanups

[w9968cf.c]
= Use video_set|get_drvdata() from the V4L API for Linux 2.6.0+
* VIDIOCSPICT doesn't fail anymore on wrong picture.depth values (thank me)
@ Avoid race condition during usb_free_urb() in start_transfer() and 
  stop_transfer()


1.22
----
w9968cf_pp* files have been renamed w9968cf_vpp*

[w9968cf.c]
= Sync with kernels 2.4.23+ and 2.6.0-test3+.
   Support for 2.6.0-test0/1/2 is broken.
* I2C low-level functions have been partially rewritten (cleaner code);
  add read_byte() transfer mode.
* Replace "soft_scaling" module paramater with "upscaling"
* Replace "decomp_mode" module paramater with "decompression"
* Small cleanups

[w9968cf_decoder.h]
+ Add quantization tables for high quality video

[w9968cf.txt]
* Updates


1.21
----
[w9968cf.c]
+ Add "capture" paramater to the /proc interface

[w9968cf.txt]
* Cleanups


1.20
----
Now the driver is split into two modules: "w9968cf" and "w9968cf-pp" (optional
video post-processing module). Files have been renamed and reorganized
according to this fact.

[w9968cf-pp]
+ New post-processing module

[w9968cf.c]
+ Add 'ppmod_load' module paramater for automatic "w9968cf-pp" module loading
+ Add intermodule communication functions.
@ Use spin_lock_irqsave() instead of spin_lock() in w9968cf_push_frame_list()

[w9968cf.txt]
+ Includes instructions for driver installation and use under Linux 2.5/2.6
+ Add instructions for patching the OV511-2.25 driver.


1.1
---
[w9968cf_core.c]
+ Now /proc/video/w9968cf/devX is both readable and writeable so that the 
  camera settings can be controlled and fine-tuned on-the-fly
+ Add support for scheduled URBs (higher frame rate)
* Cleanups in urb_complete and cleaner code
* Spinlocks on frame status flags have been removed
* VIDIOCSWIN and VIDIOSPICT don't sleep anymore if there is no need
* /proc/video/w9968cf/main has been replaced with /proc/video/w9968cf/global
* read() has been partially rewritten
@ VIDEO_PALETTE_GREY is correctly supported
@ Add a lock for ioctl and read calls to make sure there is just one active 
  'wait_queue' at the same time
@ read() returns -EWOULDBLOCK on non-blocking requests
@ In stop_transfer(): now the code doesn't sleep with a spinlock held
@ 'w9968cf_dev_list' needs a lock for list traversal
- Remove unnecessary 'fastset' module paramater

[w9968cf_decoder.c]
* Use memset() where possible
* Merge idct() and write_mcu() together

[w9968cf.txt]
+ Add "Module paramaters and fine-tuning on-the-fly" paragraph
+ Add notes about the "double_buffer" paramater


1.00
----
[w9968cf_decoder.h]
[w9968cf_decoder.c]
+ Video decoder

[w9968cf.h]
* Use USB_DEVICE macro in winbond_id_table[]

[w9968cf_core.c]
* /proc interface has been partially rewritten
* Post-processing routines are performed during read() or VIDIOCSYNC
  system calls: urb_complete() and the high-level post-processing routine have
  been partially rewritten. Now there are two different buffers for temporary
  data capture and for post-processing functions
+ Add "decomp_mode" module parameter
+ Integration with the decoder module

[Makefile]
* Cleanups
@ Small bugfix for Linux2.5 use


0.62.1
------
[w9968cf.c]
@ Use _irqsave version of spin locks in stop_transfer() to avoid deadlocks 
  on preemptive kernels.


0.62
----
[w9968cf.c]
- Remove VIDEO_PALETTE_YUV420 as it is the same as VIDEO_PALETTE_YUV420P
- Remove unnecessary "#ifdef MODULE"
- Remove unnecessary "force_uyvy" and "force_depth" module paramaters
- Remove unnecessary "hs_polarity" and "vs_polarity" module paramaters
- Remove some other unnecessary defines
= Replace interruptible_sleep_on() with wait_event_interruptible()
= I2C interface to kernel: sync with 2.5.69 (compat.h) & adapter.class support
= 2.5.68 page reservation changes
= Remove urb->next and resubmit the urb from within the completition handler
* Cleanups in DBG and PDBG macros
* Cleanup in w9968cf_usb_disconnect()
* Convert structure initializers to ISO C99 standard
* Cleanups in w9968cf_set_window: removed FP arithmetics
* Cleanups in w9968cf_set_picture
* Cleanups in w9968cf_valid_depth()
* Macros and defines has been moved from w9968cf.c to w9968cf.h
* Small cleanup in w9968cf_module_init()
* Cleanups in w9968cf_proc_read_cams()
* Other random cleanups
+ Now w9968cf_open() handles O_NDELAY & O_NONBLOCK file flags
+ Add U32RSHIFT(x, n) and U16LSHIFT(x, n) macros for le and be byte orders
+ Add w9968cf_upload_quantizationtables()
@ Fixes in uyvy_to_rgbx()
@ I2C read calls work (400khz max)

[w9968cf.h]
- Remove VIDEO_PALETTE_YUV420 as it is the same as VIDEO_PALETTE_YUV420P
* Cleanups in formatlist[] table
* Macros and defines has been moved from w9968cf.c to w9968cf.h
+ Add enum w9968cf_model_id{}

[w9968cf.txt]
* Small cleanups
+ Add documentation about module paramaters


0.61
----
+ First stable release.
