Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 | |
Mauro Carvalho Chehab | 48773e6 | 2006-03-25 09:21:43 -0300 | [diff] [blame] | 90 | append="parport=0x378,7,3" |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 |
Mauro Carvalho Chehab | 48773e6 | 2006-03-25 09:21:43 -0300 | [diff] [blame] | 178 | - Jarl Totland <Jarl.Totland@bdc.no> for setting up the mailing list |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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/ |