1 |
1275 |
phoenix |
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 modutils some
|
55 |
|
|
stuff. Add the following line to your modutils config-file
|
56 |
|
|
(e.g. /etc/modules.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 |
|
|
|
90 |
|
|
append="parport=0x378,7,3"
|
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 for cleanups, the proc-filesystem
|
169 |
|
|
and much more
|
170 |
|
|
- Henry Bruce for providing developers information about
|
171 |
|
|
the CPiA chip, I wish all companies would treat Linux as seriously
|
172 |
|
|
- Karoly Erdei 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 for providing help
|
176 |
|
|
with Isabel (http://isabel.dit.upm.es/)
|
177 |
|
|
- Bas Huisman for writing the initial parport code
|
178 |
|
|
- Jarl Totland for setting up the mailing list
|
179 |
|
|
and maintaining the web-server[3]
|
180 |
|
|
- Chris Whiteford 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/
|