Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | This is a driver for the CPiA PPC2 driven parallel connected |
2 | Camera. For example the Creative WebcamII is CPiA driven. | |
3 | ||
4 | ) [1]Peter Pregler, Linz 2000, published under the [2]GNU GPL | |
5 | ||
6 | --------------------------------------------------------------------------- | |
7 | ||
8 | USAGE: | |
9 | ||
10 | General: | |
11 | ======== | |
12 | ||
13 | 1) Make sure you have created the video devices (/dev/video*): | |
14 | ||
15 | - if you have a recent MAKEDEV do a 'cd /dev;./MAKEDEV video' | |
16 | - otherwise do a: | |
17 | ||
18 | cd /dev | |
19 | mknod video0 c 81 0 | |
20 | ln -s video0 video | |
21 | ||
22 | 2) Compile the kernel (see below for the list of options to use), | |
23 | configure your parport and reboot. | |
24 | ||
25 | 3) If all worked well you should get messages similar | |
26 | to the following (your versions may be different) on the console: | |
27 | ||
28 | V4L-Driver for Vision CPiA based cameras v0.7.4 | |
29 | parport0: read2 timeout. | |
30 | parport0: Multimedia device, VLSI Vision Ltd PPC2 | |
31 | Parallel port driver for Vision CPiA based camera | |
32 | CPIA Version: 1.20 (2.0) | |
33 | CPIA PnP-ID: 0553:0002:0100 | |
34 | VP-Version: 1.0 0100 | |
35 | 1 camera(s) found | |
36 | ||
37 | ||
38 | As modules: | |
39 | =========== | |
40 | ||
41 | Make sure you have selected the following kernel options (you can | |
42 | select all stuff as modules): | |
43 | ||
44 | The cpia-stuff is in the section 'Character devices -> Video For Linux'. | |
45 | ||
46 | CONFIG_PARPORT=m | |
47 | CONFIG_PARPORT_PC=m | |
48 | CONFIG_PARPORT_PC_FIFO=y | |
49 | CONFIG_PARPORT_1284=y | |
50 | CONFIG_VIDEO_DEV=m | |
51 | CONFIG_VIDEO_CPIA=m | |
52 | CONFIG_VIDEO_CPIA_PP=m | |
53 | ||
54 | For autoloading of all those modules you need to tell module-init-tools | |
55 | some stuff. Add the following line to your module-init-tools config-file | |
56 | (e.g. /etc/modprobe.conf or wherever your distribution does store that | |
57 | stuff): | |
58 | ||
59 | options parport_pc io=0x378 irq=7 dma=3 | |
60 | alias char-major-81 cpia_pp | |
61 | ||
62 | The first line tells the dma/irq channels to use. Those _must_ match | |
63 | the settings of your BIOS. Do NOT simply use the values above. See | |
64 | Documentation/parport.txt for more information about this. The second | |
65 | line associates the video-device file with the driver. Of cause you | |
66 | can also load the modules once upon boot (usually done in /etc/modules). | |
67 | ||
68 | Linked into the kernel: | |
69 | ======================= | |
70 | ||
71 | Make sure you have selected the following kernel options. Note that | |
72 | you cannot compile the parport-stuff as modules and the cpia-driver | |
73 | statically (the other way round is okay though). | |
74 | ||
75 | The cpia-stuff is in the section 'Character devices -> Video For Linux'. | |
76 | ||
77 | CONFIG_PARPORT=y | |
78 | CONFIG_PARPORT_PC=y | |
79 | CONFIG_PARPORT_PC_FIFO=y | |
80 | CONFIG_PARPORT_1284=y | |
81 | CONFIG_VIDEO_DEV=y | |
82 | CONFIG_VIDEO_CPIA=y | |
83 | CONFIG_VIDEO_CPIA_PP=y | |
84 | ||
85 | To use DMA/irq you will need to tell the kernel upon boot time the | |
86 | hardware configuration of the parport. You can give the boot-parameter | |
87 | at the LILO-prompt or specify it in lilo.conf. I use the following | |
88 | append-line in lilo.conf: | |
89 | ||
48773e68 | 90 | append="parport=0x378,7,3" |
1da177e4 LT |
91 | |
92 | See Documentation/parport.txt for more information about the | |
93 | configuration of the parport and the values given above. Do not simply | |
94 | use the values given above. | |
95 | ||
96 | --------------------------------------------------------------------------- | |
97 | FEATURES: | |
98 | ||
99 | - mmap/read v4l-interface (but no overlay) | |
100 | - image formats: CIF/QCIF, SIF/QSIF, various others used by isabel; | |
101 | note: all sizes except CIF/QCIF are implemented by clipping, i.e. | |
102 | pixels are not uploaded from the camera | |
103 | - palettes: VIDEO_PALETTE_GRAY, VIDEO_PALETTE_RGB565, VIDEO_PALETTE_RGB555, | |
104 | VIDEO_PALETTE_RGB24, VIDEO_PALETTE_RGB32, VIDEO_PALETTE_YUYV, | |
105 | VIDEO_PALETTE_UYVY, VIDEO_PALETTE_YUV422 | |
106 | - state information (color balance, exposure, ...) is preserved between | |
107 | device opens | |
108 | - complete control over camera via proc-interface (_all_ camera settings are | |
109 | supported), there is also a python-gtk application available for this [3] | |
110 | - works under SMP (but the driver is completely serialized and synchronous) | |
111 | so you get no benefit from SMP, but at least it does not crash your box | |
112 | - might work for non-Intel architecture, let us know about this | |
113 | ||
114 | --------------------------------------------------------------------------- | |
115 | TESTED APPLICATIONS: | |
116 | ||
117 | - a simple test application based on Xt is available at [3] | |
118 | - another test-application based on gqcam-0.4 (uses GTK) | |
119 | - gqcam-0.6 should work | |
120 | - xawtv-3.x (also the webcam software) | |
121 | - xawtv-2.46 | |
122 | - w3cam (cgi-interface and vidcat, e.g. you may try out 'vidcat |xv | |
123 | -maxpect -root -quit +noresetroot -rmode 5 -') | |
124 | - vic, the MBONE video conferencing tool (version 2.8ucl4-1) | |
125 | - isabel 3R4beta (barely working, but AFAICT all the problems are on | |
126 | their side) | |
127 | - camserv-0.40 | |
128 | ||
129 | See [3] for pointers to v4l-applications. | |
130 | ||
131 | --------------------------------------------------------------------------- | |
132 | KNOWN PROBLEMS: | |
133 | ||
134 | - some applications do not handle the image format correctly, you will | |
135 | see strange horizontal stripes instead of a nice picture -> make sure | |
136 | your application does use a supported image size or queries the driver | |
137 | for the actually used size (reason behind this: the camera cannot | |
138 | provide any image format, so if size NxM is requested the driver will | |
139 | use a format to the closest fitting N1xM1, the application should now | |
140 | query for this granted size, most applications do not). | |
141 | - all the todo ;) | |
142 | - if there is not enough light and the picture is too dark try to | |
143 | adjust the SetSensorFPS setting, automatic frame rate adjustment | |
144 | has its price | |
145 | - do not try out isabel 3R4beta (built 135), you will be disappointed | |
146 | ||
147 | --------------------------------------------------------------------------- | |
148 | TODO: | |
149 | ||
150 | - multiple camera support (struct camera or something) - This should work, | |
151 | but hasn't been tested yet. | |
152 | - architecture independence? | |
153 | - SMP-safe asynchronous mmap interface | |
154 | - nibble mode for old parport interfaces | |
155 | - streaming capture, this should give a performance gain | |
156 | ||
157 | --------------------------------------------------------------------------- | |
158 | IMPLEMENTATION NOTES: | |
159 | ||
160 | The camera can act in two modes, streaming or grabbing. Right now a | |
161 | polling grab-scheme is used. Maybe interrupt driven streaming will be | |
162 | used for a asynchronous mmap interface in the next major release of the | |
163 | driver. This might give a better frame rate. | |
164 | ||
165 | --------------------------------------------------------------------------- | |
166 | THANKS (in no particular order): | |
167 | ||
168 | - Scott J. Bertin <sbertin@mindspring.com> for cleanups, the proc-filesystem | |
169 | and much more | |
170 | - Henry Bruce <whb@vvl.co.uk> for providing developers information about | |
171 | the CPiA chip, I wish all companies would treat Linux as seriously | |
172 | - Karoly Erdei <Karoly.Erdei@risc.uni-linz.ac.at> and RISC-Linz for being | |
173 | my boss ;) resp. my employer and for providing me the hardware and | |
174 | allow me to devote some working time to this project | |
175 | - Manuel J. Petit de Gabriel <mpetit@dit.upm.es> for providing help | |
176 | with Isabel (http://isabel.dit.upm.es/) | |
177 | - Bas Huisman <bhuism@cs.utwente.nl> for writing the initial parport code | |
48773e68 | 178 | - Jarl Totland <Jarl.Totland@bdc.no> for setting up the mailing list |
1da177e4 LT |
179 | and maintaining the web-server[3] |
180 | - Chris Whiteford <Chris@informinteractive.com> for fixes related to the | |
181 | 1.02 firmware | |
182 | - special kudos to all the tester whose machines crashed and/or | |
183 | will crash. :) | |
184 | ||
185 | --------------------------------------------------------------------------- | |
186 | REFERENCES | |
187 | ||
188 | 1. http://www.risc.uni-linz.ac.at/people/ppregler | |
189 | mailto:Peter_Pregler@email.com | |
190 | 2. see the file COPYING in the top directory of the kernel tree | |
191 | 3. http://webcam.sourceforge.net/ |