Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | |
Michael Krufky | 6e20409 | 2006-05-23 17:41:31 -0300 | [diff] [blame] | 2 | W996[87]CF JPEG USB Dual Mode Camera Chip |
| 3 | Driver for Linux 2.6 (basic version) |
| 4 | ========================================= |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 5 | |
Michael Krufky | 6e20409 | 2006-05-23 17:41:31 -0300 | [diff] [blame] | 6 | - Documentation - |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 7 | |
| 8 | |
| 9 | Index |
| 10 | ===== |
| 11 | 1. Copyright |
| 12 | 2. Disclaimer |
| 13 | 3. License |
| 14 | 4. Overview |
| 15 | 5. Supported devices |
| 16 | 6. Module dependencies |
| 17 | 7. Module loading |
| 18 | 8. Module paramaters |
| 19 | 9. Contact information |
| 20 | 10. Credits |
| 21 | |
| 22 | |
| 23 | 1. Copyright |
| 24 | ============ |
| 25 | Copyright (C) 2002-2004 by Luca Risolia <luca.risolia@studio.unibo.it> |
| 26 | |
| 27 | |
| 28 | 2. Disclaimer |
| 29 | ============= |
| 30 | Winbond is a trademark of Winbond Electronics Corporation. |
| 31 | This software is not sponsored or developed by Winbond. |
| 32 | |
| 33 | |
| 34 | 3. License |
| 35 | ========== |
| 36 | This program is free software; you can redistribute it and/or modify |
| 37 | it under the terms of the GNU General Public License as published by |
| 38 | the Free Software Foundation; either version 2 of the License, or |
| 39 | (at your option) any later version. |
| 40 | |
| 41 | This program is distributed in the hope that it will be useful, |
| 42 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 43 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 44 | GNU General Public License for more details. |
| 45 | |
| 46 | You should have received a copy of the GNU General Public License |
| 47 | along with this program; if not, write to the Free Software |
| 48 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
| 49 | |
| 50 | |
| 51 | 4. Overview |
| 52 | =========== |
| 53 | This driver supports the video streaming capabilities of the devices mounting |
| 54 | Winbond W9967CF and Winbond W9968CF JPEG USB Dual Mode Camera Chips. OV681 |
| 55 | based cameras should be supported as well. |
| 56 | |
| 57 | The driver is divided into two modules: the basic one, "w9968cf", is needed for |
| 58 | the supported devices to work; the second one, "w9968cf-vpp", is an optional |
| 59 | module, which provides some useful video post-processing functions like video |
Adrian Bunk | 7f2c01a | 2006-01-09 00:43:39 +0100 | [diff] [blame] | 60 | decoding, up-scaling and colour conversions. |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 61 | |
Adrian Bunk | 7f2c01a | 2006-01-09 00:43:39 +0100 | [diff] [blame] | 62 | Note that the official kernels do neither include nor support the second |
| 63 | module for performance purposes. Therefore, it is always recommended to |
| 64 | download and install the latest and complete release of the driver, |
| 65 | replacing the existing one, if present. |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 66 | |
| 67 | The latest and full-featured version of the W996[87]CF driver can be found at: |
| 68 | http://www.linux-projects.org. Please refer to the documentation included in |
| 69 | that package, if you are going to use it. |
| 70 | |
| 71 | Up to 32 cameras can be handled at the same time. They can be connected and |
| 72 | disconnected from the host many times without turning off the computer, if |
| 73 | your system supports the hotplug facility. |
| 74 | |
| 75 | To change the default settings for each camera, many parameters can be passed |
| 76 | through command line when the module is loaded into memory. |
| 77 | |
| 78 | The driver relies on the Video4Linux, USB and I2C core modules. It has been |
| 79 | designed to run properly on SMP systems as well. An additional module, |
| 80 | "ovcamchip", is mandatory; it provides support for some OmniVision image |
| 81 | sensors connected to the W996[87]CF chips; if found in the system, the module |
| 82 | will be automatically loaded by default (provided that the kernel has been |
| 83 | compiled with the automatic module loading option). |
| 84 | |
| 85 | |
| 86 | 5. Supported devices |
| 87 | ==================== |
| 88 | At the moment, known W996[87]CF and OV681 based devices are: |
| 89 | - Aroma Digi Pen VGA Dual Mode ADG-5000 (unknown image sensor) |
| 90 | - AVerMedia AVerTV USB (SAA7111A, Philips FI1216Mk2 tuner, PT2313L audio chip) |
| 91 | - Creative Labs Video Blaster WebCam Go (OmniVision OV7610 sensor) |
| 92 | - Creative Labs Video Blaster WebCam Go Plus (OmniVision OV7620 sensor) |
| 93 | - Lebon LDC-035A (unknown image sensor) |
| 94 | - Ezonics EZ-802 EZMega Cam (OmniVision OV8610C sensor) |
| 95 | - OmniVision OV8610-EDE (OmniVision OV8610 sensor) |
| 96 | - OPCOM Digi Pen VGA Dual Mode Pen Camera (unknown image sensor) |
| 97 | - Pretec Digi Pen-II (OmniVision OV7620 sensor) |
| 98 | - Pretec DigiPen-480 (OmniVision OV8610 sensor) |
| 99 | |
| 100 | If you know any other W996[87]CF or OV681 based cameras, please contact me. |
| 101 | |
| 102 | The list above does not imply that all those devices work with this driver: up |
| 103 | until now only webcams that have an image sensor supported by the "ovcamchip" |
| 104 | module work. Kernel messages will always tell you whether this is case. |
| 105 | |
| 106 | Possible external microcontrollers of those webcams are not supported: this |
| 107 | means that still images cannot be downloaded from the device memory. |
| 108 | |
| 109 | Furthermore, it's worth to note that I was only able to run tests on my |
| 110 | "Creative Labs Video Blaster WebCam Go". Donations of other models, for |
| 111 | additional testing and full support, would be much appreciated. |
| 112 | |
| 113 | |
| 114 | 6. Module dependencies |
| 115 | ====================== |
| 116 | For it to work properly, the driver needs kernel support for Video4Linux, USB |
| 117 | and I2C, and the "ovcamchip" module for the image sensor. Make sure you are not |
Michael Krufky | 1864cfb | 2006-04-02 03:14:11 -0300 | [diff] [blame] | 118 | actually using any external "ovcamchip" module, given that the W996[87]CF |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 119 | driver depends on the version of the module present in the official kernels. |
| 120 | |
| 121 | The following options of the kernel configuration file must be enabled and |
| 122 | corresponding modules must be compiled: |
| 123 | |
| 124 | # Multimedia devices |
| 125 | # |
| 126 | CONFIG_VIDEO_DEV=m |
| 127 | |
| 128 | # I2C support |
| 129 | # |
| 130 | CONFIG_I2C=m |
| 131 | |
| 132 | The I2C core module can be compiled statically in the kernel as well. |
| 133 | |
| 134 | # OmniVision Camera Chip support |
| 135 | # |
| 136 | CONFIG_VIDEO_OVCAMCHIP=m |
| 137 | |
| 138 | # USB support |
| 139 | # |
| 140 | CONFIG_USB=m |
| 141 | |
| 142 | In addition, depending on the hardware being used, only one of the modules |
| 143 | below is necessary: |
| 144 | |
| 145 | # USB Host Controller Drivers |
| 146 | # |
| 147 | CONFIG_USB_EHCI_HCD=m |
| 148 | CONFIG_USB_UHCI_HCD=m |
| 149 | CONFIG_USB_OHCI_HCD=m |
| 150 | |
| 151 | And finally: |
| 152 | |
| 153 | # USB Multimedia devices |
| 154 | # |
| 155 | CONFIG_USB_W9968CF=m |
| 156 | |
| 157 | |
| 158 | 7. Module loading |
| 159 | ================= |
| 160 | To use the driver, it is necessary to load the "w9968cf" module into memory |
| 161 | after every other module required. |
| 162 | |
| 163 | Loading can be done this way, from root: |
| 164 | |
| 165 | [root@localhost home]# modprobe usbcore |
| 166 | [root@localhost home]# modprobe i2c-core |
| 167 | [root@localhost home]# modprobe videodev |
| 168 | [root@localhost home]# modprobe w9968cf |
| 169 | |
| 170 | At this point the pertinent devices should be recognized: "dmesg" can be used |
| 171 | to analyze kernel messages: |
| 172 | |
| 173 | [user@localhost home]$ dmesg |
| 174 | |
| 175 | There are a lot of parameters the module can use to change the default |
| 176 | settings for each device. To list every possible parameter with a brief |
| 177 | explanation about them and which syntax to use, it is recommended to run the |
| 178 | "modinfo" command: |
| 179 | |
| 180 | [root@locahost home]# modinfo w9968cf |
| 181 | |
| 182 | |
| 183 | 8. Module parameters |
| 184 | ==================== |
| 185 | Module parameters are listed below: |
| 186 | ------------------------------------------------------------------------------- |
| 187 | Name: ovmod_load |
| 188 | Type: bool |
| 189 | Syntax: <0|1> |
| 190 | Description: Automatic 'ovcamchip' module loading: 0 disabled, 1 enabled. |
Michael Krufky | 6e20409 | 2006-05-23 17:41:31 -0300 | [diff] [blame] | 191 | If enabled, 'insmod' searches for the required 'ovcamchip' |
| 192 | module in the system, according to its configuration, and |
| 193 | loads that module automatically. This action is performed as |
| 194 | once soon as the 'w9968cf' module is loaded into memory. |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 195 | Default: 1 |
| 196 | Note: The kernel must be compiled with the CONFIG_KMOD option |
Michael Krufky | 6e20409 | 2006-05-23 17:41:31 -0300 | [diff] [blame] | 197 | enabled for the 'ovcamchip' module to be loaded and for |
| 198 | this parameter to be present. |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 199 | ------------------------------------------------------------------------------- |
Michael Krufky | 1864cfb | 2006-04-02 03:14:11 -0300 | [diff] [blame] | 200 | Name: simcams |
| 201 | Type: int |
| 202 | Syntax: <n> |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 203 | Description: Number of cameras allowed to stream simultaneously. |
Michael Krufky | 6e20409 | 2006-05-23 17:41:31 -0300 | [diff] [blame] | 204 | n may vary from 0 to 32. |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 205 | Default: 32 |
| 206 | ------------------------------------------------------------------------------- |
| 207 | Name: video_nr |
| 208 | Type: int array (min = 0, max = 32) |
Michael Krufky | 1864cfb | 2006-04-02 03:14:11 -0300 | [diff] [blame] | 209 | Syntax: <-1|n[,...]> |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 210 | Description: Specify V4L minor mode number. |
Michael Krufky | 6e20409 | 2006-05-23 17:41:31 -0300 | [diff] [blame] | 211 | -1 = use next available |
| 212 | n = use minor number n |
| 213 | You can specify up to 32 cameras this way. |
| 214 | For example: |
| 215 | video_nr=-1,2,-1 would assign minor number 2 to the second |
| 216 | recognized camera and use auto for the first one and for every |
| 217 | other camera. |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 218 | Default: -1 |
| 219 | ------------------------------------------------------------------------------- |
| 220 | Name: packet_size |
| 221 | Type: int array (min = 0, max = 32) |
Michael Krufky | 1864cfb | 2006-04-02 03:14:11 -0300 | [diff] [blame] | 222 | Syntax: <n[,...]> |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 223 | Description: Specify the maximum data payload size in bytes for alternate |
Michael Krufky | 6e20409 | 2006-05-23 17:41:31 -0300 | [diff] [blame] | 224 | settings, for each device. n is scaled between 63 and 1023. |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 225 | Default: 1023 |
| 226 | ------------------------------------------------------------------------------- |
| 227 | Name: max_buffers |
| 228 | Type: int array (min = 0, max = 32) |
| 229 | Syntax: <n[,...]> |
| 230 | Description: For advanced users. |
Michael Krufky | 6e20409 | 2006-05-23 17:41:31 -0300 | [diff] [blame] | 231 | Specify the maximum number of video frame buffers to allocate |
| 232 | for each device, from 2 to 32. |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 233 | Default: 2 |
| 234 | ------------------------------------------------------------------------------- |
| 235 | Name: double_buffer |
| 236 | Type: bool array (min = 0, max = 32) |
Michael Krufky | 1864cfb | 2006-04-02 03:14:11 -0300 | [diff] [blame] | 237 | Syntax: <0|1[,...]> |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 238 | Description: Hardware double buffering: 0 disabled, 1 enabled. |
Michael Krufky | 6e20409 | 2006-05-23 17:41:31 -0300 | [diff] [blame] | 239 | It should be enabled if you want smooth video output: if you |
| 240 | obtain out of sync. video, disable it, or try to |
| 241 | decrease the 'clockdiv' module parameter value. |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 242 | Default: 1 for every device. |
| 243 | ------------------------------------------------------------------------------- |
| 244 | Name: clamping |
| 245 | Type: bool array (min = 0, max = 32) |
Michael Krufky | 1864cfb | 2006-04-02 03:14:11 -0300 | [diff] [blame] | 246 | Syntax: <0|1[,...]> |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 247 | Description: Video data clamping: 0 disabled, 1 enabled. |
| 248 | Default: 0 for every device. |
| 249 | ------------------------------------------------------------------------------- |
| 250 | Name: filter_type |
| 251 | Type: int array (min = 0, max = 32) |
Michael Krufky | 1864cfb | 2006-04-02 03:14:11 -0300 | [diff] [blame] | 252 | Syntax: <0|1|2[,...]> |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 253 | Description: Video filter type. |
Michael Krufky | 6e20409 | 2006-05-23 17:41:31 -0300 | [diff] [blame] | 254 | 0 none, 1 (1-2-1) 3-tap filter, 2 (2-3-6-3-2) 5-tap filter. |
| 255 | The filter is used to reduce noise and aliasing artifacts |
| 256 | produced by the CCD or CMOS image sensor. |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 257 | Default: 0 for every device. |
| 258 | ------------------------------------------------------------------------------- |
| 259 | Name: largeview |
| 260 | Type: bool array (min = 0, max = 32) |
Michael Krufky | 1864cfb | 2006-04-02 03:14:11 -0300 | [diff] [blame] | 261 | Syntax: <0|1[,...]> |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 262 | Description: Large view: 0 disabled, 1 enabled. |
| 263 | Default: 1 for every device. |
| 264 | ------------------------------------------------------------------------------- |
| 265 | Name: upscaling |
| 266 | Type: bool array (min = 0, max = 32) |
Michael Krufky | 1864cfb | 2006-04-02 03:14:11 -0300 | [diff] [blame] | 267 | Syntax: <0|1[,...]> |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 268 | Description: Software scaling (for non-compressed video only): |
Michael Krufky | 6e20409 | 2006-05-23 17:41:31 -0300 | [diff] [blame] | 269 | 0 disabled, 1 enabled. |
| 270 | Disable it if you have a slow CPU or you don't have enough |
| 271 | memory. |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 272 | Default: 0 for every device. |
| 273 | Note: If 'w9968cf-vpp' is not present, this parameter is set to 0. |
| 274 | ------------------------------------------------------------------------------- |
| 275 | Name: decompression |
| 276 | Type: int array (min = 0, max = 32) |
| 277 | Syntax: <0|1|2[,...]> |
| 278 | Description: Software video decompression: |
Michael Krufky | 6e20409 | 2006-05-23 17:41:31 -0300 | [diff] [blame] | 279 | 0 = disables decompression |
| 280 | (doesn't allow formats needing decompression). |
| 281 | 1 = forces decompression |
| 282 | (allows formats needing decompression only). |
| 283 | 2 = allows any permitted formats. |
| 284 | Formats supporting (de)compressed video are YUV422P and |
| 285 | YUV420P/YUV420 in any resolutions where width and height are |
| 286 | multiples of 16. |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 287 | Default: 2 for every device. |
| 288 | Note: If 'w9968cf-vpp' is not present, forcing decompression is not |
Michael Krufky | 6e20409 | 2006-05-23 17:41:31 -0300 | [diff] [blame] | 289 | allowed; in this case this parameter is set to 2. |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 290 | ------------------------------------------------------------------------------- |
| 291 | Name: force_palette |
| 292 | Type: int array (min = 0, max = 32) |
| 293 | Syntax: <0|9|10|13|15|8|7|1|6|3|4|5[,...]> |
| 294 | Description: Force picture palette. |
Michael Krufky | 6e20409 | 2006-05-23 17:41:31 -0300 | [diff] [blame] | 295 | In order: |
| 296 | 0 = Off - allows any of the following formats: |
| 297 | 9 = UYVY 16 bpp - Original video, compression disabled |
| 298 | 10 = YUV420 12 bpp - Original video, compression enabled |
| 299 | 13 = YUV422P 16 bpp - Original video, compression enabled |
| 300 | 15 = YUV420P 12 bpp - Original video, compression enabled |
| 301 | 8 = YUVY 16 bpp - Software conversion from UYVY |
| 302 | 7 = YUV422 16 bpp - Software conversion from UYVY |
| 303 | 1 = GREY 8 bpp - Software conversion from UYVY |
| 304 | 6 = RGB555 16 bpp - Software conversion from UYVY |
| 305 | 3 = RGB565 16 bpp - Software conversion from UYVY |
| 306 | 4 = RGB24 24 bpp - Software conversion from UYVY |
| 307 | 5 = RGB32 32 bpp - Software conversion from UYVY |
| 308 | When not 0, this parameter will override 'decompression'. |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 309 | Default: 0 for every device. Initial palette is 9 (UYVY). |
| 310 | Note: If 'w9968cf-vpp' is not present, this parameter is set to 9. |
| 311 | ------------------------------------------------------------------------------- |
| 312 | Name: force_rgb |
| 313 | Type: bool array (min = 0, max = 32) |
| 314 | Syntax: <0|1[,...]> |
| 315 | Description: Read RGB video data instead of BGR: |
Michael Krufky | 6e20409 | 2006-05-23 17:41:31 -0300 | [diff] [blame] | 316 | 1 = use RGB component ordering. |
| 317 | 0 = use BGR component ordering. |
| 318 | This parameter has effect when using RGBX palettes only. |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 319 | Default: 0 for every device. |
| 320 | ------------------------------------------------------------------------------- |
| 321 | Name: autobright |
| 322 | Type: bool array (min = 0, max = 32) |
| 323 | Syntax: <0|1[,...]> |
| 324 | Description: Image sensor automatically changes brightness: |
Michael Krufky | 6e20409 | 2006-05-23 17:41:31 -0300 | [diff] [blame] | 325 | 0 = no, 1 = yes |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 326 | Default: 0 for every device. |
| 327 | ------------------------------------------------------------------------------- |
| 328 | Name: autoexp |
| 329 | Type: bool array (min = 0, max = 32) |
| 330 | Syntax: <0|1[,...]> |
| 331 | Description: Image sensor automatically changes exposure: |
Michael Krufky | 6e20409 | 2006-05-23 17:41:31 -0300 | [diff] [blame] | 332 | 0 = no, 1 = yes |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 333 | Default: 1 for every device. |
| 334 | ------------------------------------------------------------------------------- |
| 335 | Name: lightfreq |
| 336 | Type: int array (min = 0, max = 32) |
| 337 | Syntax: <50|60[,...]> |
| 338 | Description: Light frequency in Hz: |
Michael Krufky | 6e20409 | 2006-05-23 17:41:31 -0300 | [diff] [blame] | 339 | 50 for European and Asian lighting, 60 for American lighting. |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 340 | Default: 50 for every device. |
| 341 | ------------------------------------------------------------------------------- |
| 342 | Name: bandingfilter |
| 343 | Type: bool array (min = 0, max = 32) |
Michael Krufky | 1864cfb | 2006-04-02 03:14:11 -0300 | [diff] [blame] | 344 | Syntax: <0|1[,...]> |
| 345 | Description: Banding filter to reduce effects of fluorescent |
Michael Krufky | 6e20409 | 2006-05-23 17:41:31 -0300 | [diff] [blame] | 346 | lighting: |
| 347 | 0 disabled, 1 enabled. |
| 348 | This filter tries to reduce the pattern of horizontal |
| 349 | light/dark bands caused by some (usually fluorescent) lighting. |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 350 | Default: 0 for every device. |
| 351 | ------------------------------------------------------------------------------- |
| 352 | Name: clockdiv |
| 353 | Type: int array (min = 0, max = 32) |
| 354 | Syntax: <-1|n[,...]> |
| 355 | Description: Force pixel clock divisor to a specific value (for experts): |
Michael Krufky | 6e20409 | 2006-05-23 17:41:31 -0300 | [diff] [blame] | 356 | n may vary from 0 to 127. |
| 357 | -1 for automatic value. |
| 358 | See also the 'double_buffer' module parameter. |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 359 | Default: -1 for every device. |
| 360 | ------------------------------------------------------------------------------- |
| 361 | Name: backlight |
| 362 | Type: bool array (min = 0, max = 32) |
| 363 | Syntax: <0|1[,...]> |
| 364 | Description: Objects are lit from behind: |
Michael Krufky | 6e20409 | 2006-05-23 17:41:31 -0300 | [diff] [blame] | 365 | 0 = no, 1 = yes |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 366 | Default: 0 for every device. |
| 367 | ------------------------------------------------------------------------------- |
| 368 | Name: mirror |
| 369 | Type: bool array (min = 0, max = 32) |
| 370 | Syntax: <0|1[,...]> |
| 371 | Description: Reverse image horizontally: |
Michael Krufky | 6e20409 | 2006-05-23 17:41:31 -0300 | [diff] [blame] | 372 | 0 = no, 1 = yes |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 373 | Default: 0 for every device. |
| 374 | ------------------------------------------------------------------------------- |
| 375 | Name: monochrome |
| 376 | Type: bool array (min = 0, max = 32) |
Michael Krufky | 1864cfb | 2006-04-02 03:14:11 -0300 | [diff] [blame] | 377 | Syntax: <0|1[,...]> |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 378 | Description: The image sensor is monochrome: |
Michael Krufky | 6e20409 | 2006-05-23 17:41:31 -0300 | [diff] [blame] | 379 | 0 = no, 1 = yes |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 380 | Default: 0 for every device. |
| 381 | ------------------------------------------------------------------------------- |
| 382 | Name: brightness |
| 383 | Type: long array (min = 0, max = 32) |
| 384 | Syntax: <n[,...]> |
| 385 | Description: Set picture brightness (0-65535). |
Michael Krufky | 6e20409 | 2006-05-23 17:41:31 -0300 | [diff] [blame] | 386 | This parameter has no effect if 'autobright' is enabled. |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 387 | Default: 31000 for every device. |
| 388 | ------------------------------------------------------------------------------- |
| 389 | Name: hue |
| 390 | Type: long array (min = 0, max = 32) |
| 391 | Syntax: <n[,...]> |
| 392 | Description: Set picture hue (0-65535). |
| 393 | Default: 32768 for every device. |
| 394 | ------------------------------------------------------------------------------- |
| 395 | Name: colour |
| 396 | Type: long array (min = 0, max = 32) |
| 397 | Syntax: <n[,...]> |
| 398 | Description: Set picture saturation (0-65535). |
| 399 | Default: 32768 for every device. |
| 400 | ------------------------------------------------------------------------------- |
| 401 | Name: contrast |
| 402 | Type: long array (min = 0, max = 32) |
Michael Krufky | 1864cfb | 2006-04-02 03:14:11 -0300 | [diff] [blame] | 403 | Syntax: <n[,...]> |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 404 | Description: Set picture contrast (0-65535). |
| 405 | Default: 50000 for every device. |
| 406 | ------------------------------------------------------------------------------- |
| 407 | Name: whiteness |
| 408 | Type: long array (min = 0, max = 32) |
Michael Krufky | 1864cfb | 2006-04-02 03:14:11 -0300 | [diff] [blame] | 409 | Syntax: <n[,...]> |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 410 | Description: Set picture whiteness (0-65535). |
| 411 | Default: 32768 for every device. |
| 412 | ------------------------------------------------------------------------------- |
| 413 | Name: debug |
| 414 | Type: int |
Michael Krufky | 1864cfb | 2006-04-02 03:14:11 -0300 | [diff] [blame] | 415 | Syntax: <n> |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 416 | Description: Debugging information level, from 0 to 6: |
Michael Krufky | 6e20409 | 2006-05-23 17:41:31 -0300 | [diff] [blame] | 417 | 0 = none (use carefully) |
| 418 | 1 = critical errors |
| 419 | 2 = significant informations |
| 420 | 3 = configuration or general messages |
| 421 | 4 = warnings |
| 422 | 5 = called functions |
| 423 | 6 = function internals |
| 424 | Level 5 and 6 are useful for testing only, when only one |
| 425 | device is used. |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 426 | Default: 2 |
| 427 | ------------------------------------------------------------------------------- |
| 428 | Name: specific_debug |
| 429 | Type: bool |
| 430 | Syntax: <0|1> |
| 431 | Description: Enable or disable specific debugging messages: |
Michael Krufky | 6e20409 | 2006-05-23 17:41:31 -0300 | [diff] [blame] | 432 | 0 = print messages concerning every level <= 'debug' level. |
| 433 | 1 = print messages concerning the level indicated by 'debug'. |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 434 | Default: 0 |
| 435 | ------------------------------------------------------------------------------- |
| 436 | |
| 437 | |
| 438 | 9. Contact information |
| 439 | ====================== |
| 440 | I may be contacted by e-mail at <luca.risolia@studio.unibo.it>. |
| 441 | |
| 442 | I can accept GPG/PGP encrypted e-mail. My GPG key ID is 'FCE635A4'. |
| 443 | My public 1024-bit key should be available at your keyserver; the fingerprint |
| 444 | is: '88E8 F32F 7244 68BA 3958 5D40 99DA 5D2A FCE6 35A4'. |
| 445 | |
| 446 | |
| 447 | 10. Credits |
| 448 | ========== |
| 449 | The development would not have proceed much further without having looked at |
| 450 | the source code of other drivers and without the help of several persons; in |
| 451 | particular: |
| 452 | |
| 453 | - the I2C interface to kernel and high-level image sensor control routines have |
| 454 | been taken from the OV511 driver by Mark McClelland; |
| 455 | |
| 456 | - memory management code has been copied from the bttv driver by Ralph Metzler, |
| 457 | Marcus Metzler and Gerd Knorr; |
| 458 | |
| 459 | - the low-level I2C read function has been written by Frederic Jouault; |
| 460 | |
| 461 | - the low-level I2C fast write function has been written by Piotr Czerczak. |