| 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/ |