1da177e4c3
Initial git repository build. I'm not bothering with the full history, even though we have it. We can create a separate "historical" git archive of that later if we want to, and in the meantime it's about 3.2GB when imported into git - space that would just make the early git days unnecessarily complicated, when we don't have a lot of good infrastructure for it. Let it rip!
191 lines
7.1 KiB
Text
191 lines
7.1 KiB
Text
This is a driver for the CPiA PPC2 driven parallel connected
|
|
Camera. For example the Creative WebcamII is CPiA driven.
|
|
|
|
) [1]Peter Pregler, Linz 2000, published under the [2]GNU GPL
|
|
|
|
---------------------------------------------------------------------------
|
|
|
|
USAGE:
|
|
|
|
General:
|
|
========
|
|
|
|
1) Make sure you have created the video devices (/dev/video*):
|
|
|
|
- if you have a recent MAKEDEV do a 'cd /dev;./MAKEDEV video'
|
|
- otherwise do a:
|
|
|
|
cd /dev
|
|
mknod video0 c 81 0
|
|
ln -s video0 video
|
|
|
|
2) Compile the kernel (see below for the list of options to use),
|
|
configure your parport and reboot.
|
|
|
|
3) If all worked well you should get messages similar
|
|
to the following (your versions may be different) on the console:
|
|
|
|
V4L-Driver for Vision CPiA based cameras v0.7.4
|
|
parport0: read2 timeout.
|
|
parport0: Multimedia device, VLSI Vision Ltd PPC2
|
|
Parallel port driver for Vision CPiA based camera
|
|
CPIA Version: 1.20 (2.0)
|
|
CPIA PnP-ID: 0553:0002:0100
|
|
VP-Version: 1.0 0100
|
|
1 camera(s) found
|
|
|
|
|
|
As modules:
|
|
===========
|
|
|
|
Make sure you have selected the following kernel options (you can
|
|
select all stuff as modules):
|
|
|
|
The cpia-stuff is in the section 'Character devices -> Video For Linux'.
|
|
|
|
CONFIG_PARPORT=m
|
|
CONFIG_PARPORT_PC=m
|
|
CONFIG_PARPORT_PC_FIFO=y
|
|
CONFIG_PARPORT_1284=y
|
|
CONFIG_VIDEO_DEV=m
|
|
CONFIG_VIDEO_CPIA=m
|
|
CONFIG_VIDEO_CPIA_PP=m
|
|
|
|
For autoloading of all those modules you need to tell module-init-tools
|
|
some stuff. Add the following line to your module-init-tools config-file
|
|
(e.g. /etc/modprobe.conf or wherever your distribution does store that
|
|
stuff):
|
|
|
|
options parport_pc io=0x378 irq=7 dma=3
|
|
alias char-major-81 cpia_pp
|
|
|
|
The first line tells the dma/irq channels to use. Those _must_ match
|
|
the settings of your BIOS. Do NOT simply use the values above. See
|
|
Documentation/parport.txt for more information about this. The second
|
|
line associates the video-device file with the driver. Of cause you
|
|
can also load the modules once upon boot (usually done in /etc/modules).
|
|
|
|
Linked into the kernel:
|
|
=======================
|
|
|
|
Make sure you have selected the following kernel options. Note that
|
|
you cannot compile the parport-stuff as modules and the cpia-driver
|
|
statically (the other way round is okay though).
|
|
|
|
The cpia-stuff is in the section 'Character devices -> Video For Linux'.
|
|
|
|
CONFIG_PARPORT=y
|
|
CONFIG_PARPORT_PC=y
|
|
CONFIG_PARPORT_PC_FIFO=y
|
|
CONFIG_PARPORT_1284=y
|
|
CONFIG_VIDEO_DEV=y
|
|
CONFIG_VIDEO_CPIA=y
|
|
CONFIG_VIDEO_CPIA_PP=y
|
|
|
|
To use DMA/irq you will need to tell the kernel upon boot time the
|
|
hardware configuration of the parport. You can give the boot-parameter
|
|
at the LILO-prompt or specify it in lilo.conf. I use the following
|
|
append-line in lilo.conf:
|
|
|
|
append="parport=0x378,7,3"
|
|
|
|
See Documentation/parport.txt for more information about the
|
|
configuration of the parport and the values given above. Do not simply
|
|
use the values given above.
|
|
|
|
---------------------------------------------------------------------------
|
|
FEATURES:
|
|
|
|
- mmap/read v4l-interface (but no overlay)
|
|
- image formats: CIF/QCIF, SIF/QSIF, various others used by isabel;
|
|
note: all sizes except CIF/QCIF are implemented by clipping, i.e.
|
|
pixels are not uploaded from the camera
|
|
- palettes: VIDEO_PALETTE_GRAY, VIDEO_PALETTE_RGB565, VIDEO_PALETTE_RGB555,
|
|
VIDEO_PALETTE_RGB24, VIDEO_PALETTE_RGB32, VIDEO_PALETTE_YUYV,
|
|
VIDEO_PALETTE_UYVY, VIDEO_PALETTE_YUV422
|
|
- state information (color balance, exposure, ...) is preserved between
|
|
device opens
|
|
- complete control over camera via proc-interface (_all_ camera settings are
|
|
supported), there is also a python-gtk application available for this [3]
|
|
- works under SMP (but the driver is completely serialized and synchronous)
|
|
so you get no benefit from SMP, but at least it does not crash your box
|
|
- might work for non-Intel architecture, let us know about this
|
|
|
|
---------------------------------------------------------------------------
|
|
TESTED APPLICATIONS:
|
|
|
|
- a simple test application based on Xt is available at [3]
|
|
- another test-application based on gqcam-0.4 (uses GTK)
|
|
- gqcam-0.6 should work
|
|
- xawtv-3.x (also the webcam software)
|
|
- xawtv-2.46
|
|
- w3cam (cgi-interface and vidcat, e.g. you may try out 'vidcat |xv
|
|
-maxpect -root -quit +noresetroot -rmode 5 -')
|
|
- vic, the MBONE video conferencing tool (version 2.8ucl4-1)
|
|
- isabel 3R4beta (barely working, but AFAICT all the problems are on
|
|
their side)
|
|
- camserv-0.40
|
|
|
|
See [3] for pointers to v4l-applications.
|
|
|
|
---------------------------------------------------------------------------
|
|
KNOWN PROBLEMS:
|
|
|
|
- some applications do not handle the image format correctly, you will
|
|
see strange horizontal stripes instead of a nice picture -> make sure
|
|
your application does use a supported image size or queries the driver
|
|
for the actually used size (reason behind this: the camera cannot
|
|
provide any image format, so if size NxM is requested the driver will
|
|
use a format to the closest fitting N1xM1, the application should now
|
|
query for this granted size, most applications do not).
|
|
- all the todo ;)
|
|
- if there is not enough light and the picture is too dark try to
|
|
adjust the SetSensorFPS setting, automatic frame rate adjustment
|
|
has its price
|
|
- do not try out isabel 3R4beta (built 135), you will be disappointed
|
|
|
|
---------------------------------------------------------------------------
|
|
TODO:
|
|
|
|
- multiple camera support (struct camera or something) - This should work,
|
|
but hasn't been tested yet.
|
|
- architecture independence?
|
|
- SMP-safe asynchronous mmap interface
|
|
- nibble mode for old parport interfaces
|
|
- streaming capture, this should give a performance gain
|
|
|
|
---------------------------------------------------------------------------
|
|
IMPLEMENTATION NOTES:
|
|
|
|
The camera can act in two modes, streaming or grabbing. Right now a
|
|
polling grab-scheme is used. Maybe interrupt driven streaming will be
|
|
used for a asynchronous mmap interface in the next major release of the
|
|
driver. This might give a better frame rate.
|
|
|
|
---------------------------------------------------------------------------
|
|
THANKS (in no particular order):
|
|
|
|
- Scott J. Bertin <sbertin@mindspring.com> for cleanups, the proc-filesystem
|
|
and much more
|
|
- Henry Bruce <whb@vvl.co.uk> for providing developers information about
|
|
the CPiA chip, I wish all companies would treat Linux as seriously
|
|
- Karoly Erdei <Karoly.Erdei@risc.uni-linz.ac.at> and RISC-Linz for being
|
|
my boss ;) resp. my employer and for providing me the hardware and
|
|
allow me to devote some working time to this project
|
|
- Manuel J. Petit de Gabriel <mpetit@dit.upm.es> for providing help
|
|
with Isabel (http://isabel.dit.upm.es/)
|
|
- Bas Huisman <bhuism@cs.utwente.nl> for writing the initial parport code
|
|
- Jarl Totland <Jarl.Totland@bdc.no> for setting up the mailing list
|
|
and maintaining the web-server[3]
|
|
- Chris Whiteford <Chris@informinteractive.com> for fixes related to the
|
|
1.02 firmware
|
|
- special kudos to all the tester whose machines crashed and/or
|
|
will crash. :)
|
|
|
|
---------------------------------------------------------------------------
|
|
REFERENCES
|
|
|
|
1. http://www.risc.uni-linz.ac.at/people/ppregler
|
|
mailto:Peter_Pregler@email.com
|
|
2. see the file COPYING in the top directory of the kernel tree
|
|
3. http://webcam.sourceforge.net/
|