patch-2.4.25 linux-2.4.25/Documentation/usb/w9968cf.txt
Next file: linux-2.4.25/MAINTAINERS
Previous file: linux-2.4.25/Documentation/s390/cds.txt
Back to the patch index
Back to the overall index
- Lines: 362
- Date:
2004-02-18 05:36:30.000000000 -0800
- Orig file:
linux-2.4.24/Documentation/usb/w9968cf.txt
- Orig date:
2003-11-28 10:26:19.000000000 -0800
diff -urN linux-2.4.24/Documentation/usb/w9968cf.txt linux-2.4.25/Documentation/usb/w9968cf.txt
@@ -1,6 +1,7 @@
- W996[87]CF JPEG USB Dual Mode Camera Chip driver for Linux 2.4
- ==============================================================
+ W996[87]CF JPEG USB Dual Mode Camera Chip
+ Linux 2.4 driver (basic version)
+ =========================================
- Documentation -
@@ -11,7 +12,7 @@
2. License
3. Overview
4. Supported devices
-5. Kernel configuration and third-part module compilation
+5. Module dependencies
6. Module loading
7. Module paramaters
8. Credits
@@ -19,7 +20,7 @@
1. Copyright
============
-Copyright (C) 2002 2003 by Luca Risolia <luca_ing@libero.it>
+Copyright (C) 2002 2003 by Luca Risolia <luca.risolia@studio.unibo.it>
2. License
@@ -45,20 +46,23 @@
Winbond W9967CF and Winbond W9968CF JPEG USB Dual Mode Camera Chips, when they
are being commanded by USB.
-The driver relies on the Video4Linux, USB and I2C core modules of the Linux
-kernel, version 2.4.19 or greater, and is not compatible in any way with
-previous versions. It has been designed to run properly on SMP systems
-as well. At the moment, an additional module, "ovcamchip", is mandatory; it
-provides support for some OmniVision CMOS sensors connected to the W996[87]CF
-chips.
-
-The driver is split into two modules: the basic one, "w9968cf", is needed for
-the supported devices to work; the second one, "w9968cf-vpp", is an optional
-module, which provides some useful video post-processing functions like video
-decoding, up-scaling and colour conversions (these routines can't be included
-into official kernels). Once the driver is installed, every time an application
-tries to open a recognized device, "w9968cf" checks the presence of the
-"w9968cf-vpp" module and loads it automatically by default.
+The full-featured driver is divided into two modules: the basic one, "w9968cf",
+is needed for the supported devices to work; the second one, "w9968cf-vpp",
+is an optional module, which provides some useful video post-processing
+functions like video decoding, up-scaling and colour conversions. Once the
+driver is installed, every time an application tries to open a recognized
+device, "w9968cf" checks the presence of the "w9968cf-vpp" module and loads it
+automatically by default.
+
+Please keep in mind that official kernels do NOT include the second module for
+performance purposes. However it is always recommended to download and install
+the latest and complete release of the driver, replacing the existing one, if
+present: it will be still even possible not to load the "w9968cf-vpp" module at
+all, if you ever want to. Another important missing feature of the version in
+the official Linux 2.4 kernels is the writeable /proc filesystem interface.
+
+The latest and full-featured version of the W996[87]CF driver can be found at:
+http://go.lamarinapunto.com/
Up to 32 cameras can be handled at the same time. They can be connected and
disconnected from the host many times without turning off the computer, if
@@ -67,15 +71,17 @@
To change the default settings for each camera, many paramaters can be passed
through command line when the module is loaded into memory.
-It is recommended to install the latest and full featured version of the
-W996[87]CF driver, which can be found at:
-http://go.lamarinapunto.com/
+The driver relies on the Video4Linux, USB and I2C core modules of the official
+Linux kernels, version 2.4.19 or greater, and is not compatible in any way with
+previous versions. It has been designed to run properly on SMP systems as well.
+At the moment, an additional module, "ovcamchip", is mandatory; it provides
+support for some OmniVision CMOS sensors connected to the W996[87]CF chips.
-The "ovcamchip" module is part of the OV511 driver, version 2.25, which can be
+The "ovcamchip" module is part of the OV511 driver, version 2.27, which can be
downloaded from internet:
http://alpha.dyndns.org/ov511/
-To know how to patch, compile and load it, read the "Kernel configuration"
-paragraph.
+To know how to compile it, read the documentation included in the OV511
+package.
4. Supported devices
@@ -94,22 +100,21 @@
The list above does NOT imply that all those devices work with this driver: up
until now only webcams that have a CMOS sensor supported by the "ovcamchip"
module work.
-For a list of supported CMOS sensors, please visit the module author homepage:
-http://alpha.dyndns.org/ov511/
+For a list of supported CMOS sensors, please visit the the author's homepage on
+this module: http://alpha.dyndns.org/ov511/
Possible external microcontrollers of those webcams are not supported: this
-means that still images can't be downloaded from the device memory.
+means that still images cannot be downloaded from the device memory.
Furthermore, it's worth to note that I was only able to run tests on my
"Creative Labs Video Blaster WebCam Go". Donations of other models, for
additional testing and full support, would be much appreciated.
-5. Kernel configuration and third-part module compilation
-=========================================================
-As noted above, kernel 2.4.19 is the minimum for this driver; for it to work
-properly, the driver needs kernel support for Video4Linux, USB and I2C, and a
-third-part module for the CMOS sensor.
+5. Module dependencies
+======================
+The driver needs kernel support for Video4Linux, USB and I2C, and a third-party
+module for the CMOS sensor.
The following options of the kernel configuration file must be enabled and
corresponding modules must be compiled:
@@ -128,7 +133,7 @@
#
CONFIG_USB=m
-In addition, depending on the hardware being used, just one of the modules
+In addition, depending on the hardware being used, only one of the modules
below is necessary:
# USB Host Controller Drivers
@@ -138,6 +143,12 @@
CONFIG_USB_UHCI_ALT=m
CONFIG_USB_OHCI=m
+And finally:
+
+ # USB Multimedia devices
+ #
+ CONFIG_USB_W9968CF=m
+
Also, make sure "Enforce bandwidth allocation" is NOT enabled.
The /proc filesystem can be optionally built into the kernel:
@@ -150,39 +161,18 @@
#
CONFIG_VIDEO_PROC_FS=y
- # USB Multimedia devices
- #
- CONFIG_USB_W9968CF=m
-
The last module we need is "ovcamchip.o". To obtain it, you have to download
-the OV511 driver, version 2.25 - don't use other versions - which is available
-at http://alpha.dyndns.org/ov511/ . Then you have to download the latest
-version of the full featured W996[87]CF driver, which contains a patch for the
-"ovcamchip" module; it is available at http://go.lamarinapunto.com .
-Once you have obtained the packages, decompress, patch and compile the
-"ovcamchip" module. In other words:
-
- [user@localhost home]$ tar xvzf w9968cf-x.x.tar.gz
- [user@localhost home]$ tar xvjf ov511-2.25.tar.bz2
- [user@localhost home]$ cd ov511-2.25
- [user@localhost ov511-2.25]$ patch -p1 < \
- /path/to/w9968cf-x.x/ov511-2.25.patch
- [user@localhost ov511-2.25]$ make
-
-It's worth to note that the full featured version of the W996[87]CF driver
-can also be installed overwriting the one in the kernel; in this case, read the
-documentation included in the package.
-
-If everything went well, the W996[87]CF driver can be immediatly used (see next
-paragraph).
+the OV511, version 2.27 - don't use other versions - and compile it according
+to its documentation.
+The package is available at http://alpha.dyndns.org/ov511/ .
6. Module loading
=================
To use the driver, it is necessary to load the "w9968cf" module into memory
-after every other module required; they are named, in order: "videodev",
-"usbcore", then "ehci-hcd", "usb-uhci", "uhci", "usb-ohci" (just one), and also
-"i2c-core" and "ovcamchip".
+after every other module required: for the 2.4 series of the kernel, they are
+named, in order: "videodev", "usbcore", then "ehci-hcd", "usb-uhci", "uhci",
+"usb-ohci" (just one), and also "i2c-core" and "ovcamchip".
Loading can be done this way, from root:
@@ -213,11 +203,10 @@
7. Module paramaters
====================
-
Module paramaters are listed below:
-------------------------------------------------------------------------------
Name: vppmod_load
-Type: int
+Type: bool
Syntax: <0|1>
Description: Automatic 'w9968cf-vpp' module loading: 0 disabled, 1 enabled.
If enabled, every time an application attempts to open a
@@ -258,22 +247,22 @@
Name: max_buffers
Type: int array (min = 0, max = 32)
Syntax: <n[,...]>
-Description: Only for advanced users.
+Description: For advanced users.
Specify the maximum number of video frame buffers to allocate
for each device, from 2 to 32.
Default: 2
-------------------------------------------------------------------------------
Name: double_buffer
-Type: int array (min = 0, max = 32)
+Type: bool array (min = 0, max = 32)
Syntax: <0|1[,...]>
Description: Hardware double buffering: 0 disabled, 1 enabled.
It should be enabled if you want smooth video output: if you
- obtain out of sync. video, disable it at all, or try to
+ obtain out of sync. video, disable it, or try to
decrease the 'clockdiv' module paramater value.
Default: 1 for every device.
-------------------------------------------------------------------------------
Name: clamping
-Type: int array (min = 0, max = 32)
+Type: bool array (min = 0, max = 32)
Syntax: <0|1[,...]>
Description: Video data clamping: 0 disabled, 1 enabled.
Default: 0 for every device.
@@ -288,13 +277,13 @@
Default: 0 for every device.
-------------------------------------------------------------------------------
Name: largeview
-Type: int array (min = 0, max = 32)
+Type: bool array (min = 0, max = 32)
Syntax: <0|1[,...]>
Description: Large view: 0 disabled, 1 enabled.
Default: 1 for every device.
-------------------------------------------------------------------------------
Name: upscaling
-Type: int array (min = 0, max = 32)
+Type: bool array (min = 0, max = 32)
Syntax: <0|1[,...]>
Description: Software scaling (for non-compressed video only):
0 disabled, 1 enabled.
@@ -316,9 +305,8 @@
YUV420P/YUV420 in any resolutions where width and height are
multiples of 16.
Default: 2 for every device.
-Note: If 'w9968cf-vpp' is not loaded, this paramater is set to,
- forcing decompression is not allowed; in this case this
- paramater is set to 2.
+Note: If 'w9968cf-vpp' is not loaded, forcing decompression is not
+ allowed; in this case this paramater is set to 2.
-------------------------------------------------------------------------------
Name: force_palette
Type: int array (min = 0, max = 32)
@@ -342,7 +330,7 @@
Note: If 'w9968cf-vpp' is not loaded, this paramater is set to 9.
-------------------------------------------------------------------------------
Name: force_rgb
-Type: int array (min = 0, max = 32)
+Type: bool array (min = 0, max = 32)
Syntax: <0|1[,...]>
Description: Read RGB video data instead of BGR:
1 = use RGB component ordering.
@@ -351,28 +339,28 @@
Default: 0 for every device.
-------------------------------------------------------------------------------
Name: autobright
-Type: long array (min = 0, max = 32)
+Type: bool array (min = 0, max = 32)
Syntax: <0|1[,...]>
Description: CMOS sensor automatically changes brightness:
0 = no, 1 = yes
Default: 0 for every device.
-------------------------------------------------------------------------------
Name: autoexp
-Type: long array (min = 0, max = 32)
+Type: bool array (min = 0, max = 32)
Syntax: <0|1[,...]>
Description: CMOS sensor automatically changes exposure:
0 = no, 1 = yes
Default: 1 for every device.
-------------------------------------------------------------------------------
Name: lightfreq
-Type: long array (min = 0, max = 32)
+Type: int array (min = 0, max = 32)
Syntax: <50|60[,...]>
Description: Light frequency in Hz:
50 for European and Asian lighting, 60 for American lighting.
Default: 50 for every device.
-------------------------------------------------------------------------------
Name: bandingfilter
-Type: long array (min = 0, max = 32)
+Type: bool array (min = 0, max = 32)
Syntax: <0|1[,...]>
Description: Banding filter to reduce effects of fluorescent
lighting:
@@ -382,7 +370,7 @@
Default: 0 for every device.
-------------------------------------------------------------------------------
Name: clockdiv
-Type: long array (min = 0, max = 32)
+Type: int array (min = 0, max = 32)
Syntax: <-1|n[,...]>
Description: Force pixel clock divisor to a specific value (for experts):
n may vary from 0 to 127.
@@ -391,21 +379,21 @@
Default: -1 for every device.
-------------------------------------------------------------------------------
Name: backlight
-Type: long array (min = 0, max = 32)
+Type: bool array (min = 0, max = 32)
Syntax: <0|1[,...]>
Description: Objects are lit from behind:
0 = no, 1 = yes
Default: 0 for every device.
-------------------------------------------------------------------------------
Name: mirror
-Type: long array (min = 0, max = 32)
+Type: bool array (min = 0, max = 32)
Syntax: <0|1[,...]>
Description: Reverse image horizontally:
0 = no, 1 = yes
Default: 0 for every device.
-------------------------------------------------------------------------------
-Name: sensor_mono
-Type: long array (min = 0, max = 32)
+Name: monochrome
+Type: bool array (min = 0, max = 32)
Syntax: <0|1[,...]>
Description: The CMOS sensor is monochrome:
0 = no, 1 = yes
@@ -446,7 +434,7 @@
Type: int
Syntax: <n>
Description: Debugging information level, from 0 to 6:
- 0 = none (be cautious)
+ 0 = none (use carefully)
1 = critical errors
2 = significant informations
3 = configuration or general messages
@@ -458,7 +446,7 @@
Default: 2
-------------------------------------------------------------------------------
Name: specific_debug
-Type: int
+Type: bool
Syntax: <0|1>
Description: Enable or disable specific debugging messages:
0 = print messages concerning every level <= 'debug' level.
@@ -479,8 +467,6 @@
- memory management code has been copied from the bttv driver by Ralph Metzler,
Marcus Metzler and Gerd Knorr;
-- the low-level I2C read function has been written by Frédéric Jouault, who
- also gave me commented logs about sniffed USB traffic taken from another
- driver for another system;
+- the low-level I2C read function has been written by Frederic Jouault;
-- the low-level I2C fast write function has been written by Piotr Czerczak;
+- the low-level I2C fast write function has been written by Piotr Czerczak.
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)