OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [Documentation/] [usb/] [w9968cf.txt] - Blame information for rev 1774

Go to most recent revision | Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.