diff options
author | Mauro Carvalho Chehab <mchehab@s-opensource.com> | 2016-07-17 16:20:26 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@s-opensource.com> | 2016-07-17 21:49:56 -0400 |
commit | ba9f270e018b4ec20fa763e16d13ec240a95cd68 (patch) | |
tree | c296bdbbb30ca3cbc32ace4b1a18803cbe155b0a | |
parent | f3d295c5e28803555329f652c94fe9657c6af016 (diff) |
[media] doc-rst: add documentation for cpia2 driver
Convert the documentation to rst, merge the two files and
add to the index.rst.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
-rw-r--r-- | Documentation/media/v4l-drivers/cpia2.rst | 212 | ||||
-rw-r--r-- | Documentation/media/v4l-drivers/cpia2_overview.rst | 38 | ||||
-rw-r--r-- | Documentation/media/v4l-drivers/cx18.rst | 7 | ||||
-rw-r--r-- | Documentation/media/v4l-drivers/index.rst | 2 |
4 files changed, 145 insertions, 114 deletions
diff --git a/Documentation/media/v4l-drivers/cpia2.rst b/Documentation/media/v4l-drivers/cpia2.rst index 38e742fd0df7..763705c1f50f 100644 --- a/Documentation/media/v4l-drivers/cpia2.rst +++ b/Documentation/media/v4l-drivers/cpia2.rst | |||
@@ -1,107 +1,132 @@ | |||
1 | $Id: README,v 1.7 2005/08/29 23:39:57 sbertin Exp $ | 1 | The cpia2 driver |
2 | ================ | ||
2 | 3 | ||
3 | 1. Introduction | 4 | Authors: Peter Pregler <Peter_Pregler@email.com>, |
5 | Scott J. Bertin <scottbertin@yahoo.com>, and | ||
6 | Jarl Totland <Jarl.Totland@bdc.no> for the original cpia driver, which | ||
7 | this one was modelled from. | ||
4 | 8 | ||
5 | This is a driver for STMicroelectronics's CPiA2 (second generation | 9 | Introduction |
10 | ------------ | ||
11 | |||
12 | This is a driver for STMicroelectronics's CPiA2 (second generation | ||
6 | Colour Processor Interface ASIC) based cameras. This camera outputs an MJPEG | 13 | Colour Processor Interface ASIC) based cameras. This camera outputs an MJPEG |
7 | stream at up to vga size. It implements the Video4Linux interface as much as | 14 | stream at up to vga size. It implements the Video4Linux interface as much as |
8 | possible. Since the V4L interface does not support compressed formats, only | 15 | possible. Since the V4L interface does not support compressed formats, only |
9 | an mjpeg enabled application can be used with the camera. We have modified the | 16 | an mjpeg enabled application can be used with the camera. We have modified the |
10 | gqcam application to view this stream. | 17 | gqcam application to view this stream. |
11 | 18 | ||
12 | The driver is implemented as two kernel modules. The cpia2 module | 19 | The driver is implemented as two kernel modules. The cpia2 module |
13 | contains the camera functions and the V4L interface. The cpia2_usb module | 20 | contains the camera functions and the V4L interface. The cpia2_usb module |
14 | contains usb specific functions. The main reason for this was the size of the | 21 | contains usb specific functions. The main reason for this was the size of the |
15 | module was getting out of hand, so I separated them. It is not likely that | 22 | module was getting out of hand, so I separated them. It is not likely that |
16 | there will be a parallel port version. | 23 | there will be a parallel port version. |
17 | 24 | ||
18 | FEATURES: | 25 | Features |
19 | - Supports cameras with the Vision stv6410 (CIF) and stv6500 (VGA) cmos | 26 | -------- |
20 | sensors. I only have the vga sensor, so can't test the other. | 27 | |
21 | - Image formats: VGA, QVGA, CIF, QCIF, and a number of sizes in between. | 28 | - Supports cameras with the Vision stv6410 (CIF) and stv6500 (VGA) cmos |
22 | VGA and QVGA are the native image sizes for the VGA camera. CIF is done | 29 | sensors. I only have the vga sensor, so can't test the other. |
23 | in the coprocessor by scaling QVGA. All other sizes are done by clipping. | 30 | - Image formats: VGA, QVGA, CIF, QCIF, and a number of sizes in between. |
24 | - Palette: YCrCb, compressed with MJPEG. | 31 | VGA and QVGA are the native image sizes for the VGA camera. CIF is done |
25 | - Some compression parameters are settable. | 32 | in the coprocessor by scaling QVGA. All other sizes are done by clipping. |
26 | - Sensor framerate is adjustable (up to 30 fps CIF, 15 fps VGA). | 33 | - Palette: YCrCb, compressed with MJPEG. |
27 | - Adjust brightness, color, contrast while streaming. | 34 | - Some compression parameters are settable. |
28 | - Flicker control settable for 50 or 60 Hz mains frequency. | 35 | - Sensor framerate is adjustable (up to 30 fps CIF, 15 fps VGA). |
29 | 36 | - Adjust brightness, color, contrast while streaming. | |
30 | 2. Making and installing the stv672 driver modules: | 37 | - Flicker control settable for 50 or 60 Hz mains frequency. |
31 | 38 | ||
32 | Requirements: | 39 | Making and installing the stv672 driver modules |
33 | ------------- | 40 | ----------------------------------------------- |
34 | This should work with 2.4 (2.4.23 and later) and 2.6 kernels, but has | 41 | |
35 | only been tested on 2.6. Video4Linux must be either compiled into the kernel or | 42 | Requirements |
43 | ~~~~~~~~~~~~ | ||
44 | |||
45 | Video4Linux must be either compiled into the kernel or | ||
36 | available as a module. Video4Linux2 is automatically detected and made | 46 | available as a module. Video4Linux2 is automatically detected and made |
37 | available at compile time. | 47 | available at compile time. |
38 | 48 | ||
39 | Compiling: | 49 | Setup |
40 | ---------- | 50 | ~~~~~ |
41 | As root, do a make install. This will compile and install the modules | ||
42 | into the media/video directory in the module tree. For 2.4 kernels, use | ||
43 | Makefile_2.4 (aka do make -f Makefile_2.4 install). | ||
44 | 51 | ||
45 | Setup: | 52 | Use 'modprobe cpia2' to load and 'modprobe -r cpia2' to unload. This |
46 | ------ | ||
47 | Use 'modprobe cpia2' to load and 'modprobe -r cpia2' to unload. This | ||
48 | may be done automatically by your distribution. | 53 | may be done automatically by your distribution. |
49 | 54 | ||
50 | 3. Driver options | 55 | Driver options |
51 | 56 | ~~~~~~~~~~~~~~ | |
52 | Option Description | 57 | |
53 | ------ ----------- | 58 | ============== ======================================================== |
54 | video_nr video device to register (0=/dev/video0, etc) | 59 | Option Description |
55 | range -1 to 64. default is -1 (first available) | 60 | ============== ======================================================== |
56 | If you have more than 1 camera, this MUST be -1. | 61 | video_nr video device to register (0=/dev/video0, etc) |
57 | buffer_size Size for each frame buffer in bytes (default 68k) | 62 | range -1 to 64. default is -1 (first available) |
58 | num_buffers Number of frame buffers (1-32, default 3) | 63 | If you have more than 1 camera, this MUST be -1. |
59 | alternate USB Alternate (2-7, default 7) | 64 | buffer_size Size for each frame buffer in bytes (default 68k) |
60 | flicker_freq Frequency for flicker reduction(50 or 60, default 60) | 65 | num_buffers Number of frame buffers (1-32, default 3) |
61 | flicker_mode 0 to disable, or 1 to enable flicker reduction. | 66 | alternate USB Alternate (2-7, default 7) |
62 | (default 0). This is only effective if the camera | 67 | flicker_freq Frequency for flicker reduction(50 or 60, default 60) |
63 | uses a stv0672 coprocessor. | 68 | flicker_mode 0 to disable, or 1 to enable flicker reduction. |
64 | 69 | (default 0). This is only effective if the camera | |
65 | Setting the options: | 70 | uses a stv0672 coprocessor. |
66 | -------------------- | 71 | ============== ======================================================== |
67 | If you are using modules, edit /etc/modules.conf and add an options | 72 | |
73 | Setting the options | ||
74 | ~~~~~~~~~~~~~~~~~~~ | ||
75 | |||
76 | If you are using modules, edit /etc/modules.conf and add an options | ||
68 | line like this: | 77 | line like this: |
78 | |||
79 | .. code-block:: none | ||
80 | |||
69 | options cpia2 num_buffers=3 buffer_size=65535 | 81 | options cpia2 num_buffers=3 buffer_size=65535 |
70 | 82 | ||
71 | If the driver is compiled into the kernel, at boot time specify them | 83 | If the driver is compiled into the kernel, at boot time specify them |
72 | like this: | 84 | like this: |
85 | |||
86 | .. code-block:: none | ||
87 | |||
73 | cpia2.num_buffers=3 cpia2.buffer_size=65535 | 88 | cpia2.num_buffers=3 cpia2.buffer_size=65535 |
74 | 89 | ||
75 | What buffer size should I use? | 90 | What buffer size should I use? |
76 | ------------------------------ | 91 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
77 | The maximum image size depends on the alternate you choose, and the | 92 | |
93 | The maximum image size depends on the alternate you choose, and the | ||
78 | frame rate achieved by the camera. If the compression engine is able to | 94 | frame rate achieved by the camera. If the compression engine is able to |
79 | keep up with the frame rate, the maximum image size is given by the table | 95 | keep up with the frame rate, the maximum image size is given by the table |
80 | below. | 96 | below. |
81 | The compression engine starts out at maximum compression, and will | 97 | |
98 | The compression engine starts out at maximum compression, and will | ||
82 | increase image quality until it is close to the size in the table. As long | 99 | increase image quality until it is close to the size in the table. As long |
83 | as the compression engine can keep up with the frame rate, after a short time | 100 | as the compression engine can keep up with the frame rate, after a short time |
84 | the images will all be about the size in the table, regardless of resolution. | 101 | the images will all be about the size in the table, regardless of resolution. |
85 | At low alternate settings, the compression engine may not be able to | 102 | |
103 | At low alternate settings, the compression engine may not be able to | ||
86 | compress the image enough and will reduce the frame rate by producing larger | 104 | compress the image enough and will reduce the frame rate by producing larger |
87 | images. | 105 | images. |
88 | The default of 68k should be good for most users. This will handle | 106 | |
107 | The default of 68k should be good for most users. This will handle | ||
89 | any alternate at frame rates down to 15fps. For lower frame rates, it may | 108 | any alternate at frame rates down to 15fps. For lower frame rates, it may |
90 | be necessary to increase the buffer size to avoid having frames dropped due | 109 | be necessary to increase the buffer size to avoid having frames dropped due |
91 | to insufficient space. | 110 | to insufficient space. |
92 | 111 | ||
93 | Image size(bytes) | 112 | ========== ========== ======== ===== |
94 | Alternate bytes/ms 15fps 30fps | 113 | Alternate bytes/ms 15fps 30fps |
95 | 2 128 8533 4267 | 114 | ========== ========== ======== ===== |
96 | 3 384 25600 12800 | 115 | 2 128 8533 4267 |
97 | 4 640 42667 21333 | 116 | 3 384 25600 12800 |
98 | 5 768 51200 25600 | 117 | 4 640 42667 21333 |
99 | 6 896 59733 29867 | 118 | 5 768 51200 25600 |
100 | 7 1023 68200 34100 | 119 | 6 896 59733 29867 |
101 | 120 | 7 1023 68200 34100 | |
102 | How many buffers should I use? | 121 | ========== ========== ======== ===== |
103 | ------------------------------ | 122 | |
104 | For normal streaming, 3 should give the best results. With only 2, | 123 | Table: Image size(bytes) |
124 | |||
125 | |||
126 | How many buffers should I use? | ||
127 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
128 | |||
129 | For normal streaming, 3 should give the best results. With only 2, | ||
105 | it is possible for the camera to finish sending one image just after a | 130 | it is possible for the camera to finish sending one image just after a |
106 | program has started reading the other. If this happens, the driver must drop | 131 | program has started reading the other. If this happens, the driver must drop |
107 | a frame. The exception to this is if you have a heavily loaded machine. In | 132 | a frame. The exception to this is if you have a heavily loaded machine. In |
@@ -110,21 +135,56 @@ If the camera can send multiple images before a read finishes, it could | |||
110 | overwrite the third buffer before the read finishes, leading to a corrupt | 135 | overwrite the third buffer before the read finishes, leading to a corrupt |
111 | image. Single and double buffering have extra checks to avoid overwriting. | 136 | image. Single and double buffering have extra checks to avoid overwriting. |
112 | 137 | ||
113 | 4. Using the camera | 138 | Using the camera |
139 | ~~~~~~~~~~~~~~~~ | ||
114 | 140 | ||
115 | We are providing a modified gqcam application to view the output. In | 141 | We are providing a modified gqcam application to view the output. In |
116 | order to avoid confusion, here it is called mview. There is also the qx5view | 142 | order to avoid confusion, here it is called mview. There is also the qx5view |
117 | program which can also control the lights on the qx5 microscope. MJPEG Tools | 143 | program which can also control the lights on the qx5 microscope. MJPEG Tools |
118 | (http://mjpeg.sourceforge.net) can also be used to record from the camera. | 144 | (http://mjpeg.sourceforge.net) can also be used to record from the camera. |
119 | 145 | ||
120 | 5. Notes to developers: | 146 | Notes to developers |
147 | ~~~~~~~~~~~~~~~~~~~ | ||
121 | 148 | ||
122 | - This is a driver version stripped of the 2.4 back compatibility | 149 | - This is a driver version stripped of the 2.4 back compatibility |
123 | and old MJPEG ioctl API. See cpia2.sf.net for 2.4 support. | 150 | and old MJPEG ioctl API. See cpia2.sf.net for 2.4 support. |
124 | 151 | ||
125 | 6. Thanks: | 152 | Programmer's overview of cpia2 driver |
126 | 153 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
127 | - Peter Pregler <Peter_Pregler@email.com>, | 154 | |
128 | Scott J. Bertin <scottbertin@yahoo.com>, and | 155 | Cpia2 is the second generation video coprocessor from VLSI Vision Ltd (now a |
129 | Jarl Totland <Jarl.Totland@bdc.no> for the original cpia driver, which | 156 | division of ST Microelectronics). There are two versions. The first is the |
130 | this one was modelled from. | 157 | STV0672, which is capable of up to 30 frames per second (fps) in frame sizes |
158 | up to CIF, and 15 fps for VGA frames. The STV0676 is an improved version, | ||
159 | which can handle up to 30 fps VGA. Both coprocessors can be attached to two | ||
160 | CMOS sensors - the vvl6410 CIF sensor and the vvl6500 VGA sensor. These will | ||
161 | be referred to as the 410 and the 500 sensors, or the CIF and VGA sensors. | ||
162 | |||
163 | The two chipsets operate almost identically. The core is an 8051 processor, | ||
164 | running two different versions of firmware. The 672 runs the VP4 video | ||
165 | processor code, the 676 runs VP5. There are a few differences in register | ||
166 | mappings for the two chips. In these cases, the symbols defined in the | ||
167 | header files are marked with VP4 or VP5 as part of the symbol name. | ||
168 | |||
169 | The cameras appear externally as three sets of registers. Setting register | ||
170 | values is the only way to control the camera. Some settings are | ||
171 | interdependant, such as the sequence required to power up the camera. I will | ||
172 | try to make note of all of these cases. | ||
173 | |||
174 | The register sets are called blocks. Block 0 is the system block. This | ||
175 | section is always powered on when the camera is plugged in. It contains | ||
176 | registers that control housekeeping functions such as powering up the video | ||
177 | processor. The video processor is the VP block. These registers control | ||
178 | how the video from the sensor is processed. Examples are timing registers, | ||
179 | user mode (vga, qvga), scaling, cropping, framerates, and so on. The last | ||
180 | block is the video compressor (VC). The video stream sent from the camera is | ||
181 | compressed as Motion JPEG (JPEGA). The VC controls all of the compression | ||
182 | parameters. Looking at the file cpia2_registers.h, you can get a full view | ||
183 | of these registers and the possible values for most of them. | ||
184 | |||
185 | One or more registers can be set or read by sending a usb control message to | ||
186 | the camera. There are three modes for this. Block mode requests a number | ||
187 | of contiguous registers. Random mode reads or writes random registers with | ||
188 | a tuple structure containing address/value pairs. The repeat mode is only | ||
189 | used by VP4 to load a firmware patch. It contains a starting address and | ||
190 | a sequence of bytes to be written into a gpio port. | ||
diff --git a/Documentation/media/v4l-drivers/cpia2_overview.rst b/Documentation/media/v4l-drivers/cpia2_overview.rst deleted file mode 100644 index ad6adbedfe50..000000000000 --- a/Documentation/media/v4l-drivers/cpia2_overview.rst +++ /dev/null | |||
@@ -1,38 +0,0 @@ | |||
1 | Programmer's View of Cpia2 | ||
2 | |||
3 | Cpia2 is the second generation video coprocessor from VLSI Vision Ltd (now a | ||
4 | division of ST Microelectronics). There are two versions. The first is the | ||
5 | STV0672, which is capable of up to 30 frames per second (fps) in frame sizes | ||
6 | up to CIF, and 15 fps for VGA frames. The STV0676 is an improved version, | ||
7 | which can handle up to 30 fps VGA. Both coprocessors can be attached to two | ||
8 | CMOS sensors - the vvl6410 CIF sensor and the vvl6500 VGA sensor. These will | ||
9 | be referred to as the 410 and the 500 sensors, or the CIF and VGA sensors. | ||
10 | |||
11 | The two chipsets operate almost identically. The core is an 8051 processor, | ||
12 | running two different versions of firmware. The 672 runs the VP4 video | ||
13 | processor code, the 676 runs VP5. There are a few differences in register | ||
14 | mappings for the two chips. In these cases, the symbols defined in the | ||
15 | header files are marked with VP4 or VP5 as part of the symbol name. | ||
16 | |||
17 | The cameras appear externally as three sets of registers. Setting register | ||
18 | values is the only way to control the camera. Some settings are | ||
19 | interdependant, such as the sequence required to power up the camera. I will | ||
20 | try to make note of all of these cases. | ||
21 | |||
22 | The register sets are called blocks. Block 0 is the system block. This | ||
23 | section is always powered on when the camera is plugged in. It contains | ||
24 | registers that control housekeeping functions such as powering up the video | ||
25 | processor. The video processor is the VP block. These registers control | ||
26 | how the video from the sensor is processed. Examples are timing registers, | ||
27 | user mode (vga, qvga), scaling, cropping, framerates, and so on. The last | ||
28 | block is the video compressor (VC). The video stream sent from the camera is | ||
29 | compressed as Motion JPEG (JPEGA). The VC controls all of the compression | ||
30 | parameters. Looking at the file cpia2_registers.h, you can get a full view | ||
31 | of these registers and the possible values for most of them. | ||
32 | |||
33 | One or more registers can be set or read by sending a usb control message to | ||
34 | the camera. There are three modes for this. Block mode requests a number | ||
35 | of contiguous registers. Random mode reads or writes random registers with | ||
36 | a tuple structure containing address/value pairs. The repeat mode is only | ||
37 | used by VP4 to load a firmware patch. It contains a starting address and | ||
38 | a sequence of bytes to be written into a gpio port. | ||
diff --git a/Documentation/media/v4l-drivers/cx18.rst b/Documentation/media/v4l-drivers/cx18.rst index 4652c0f5da32..afa03f65b01c 100644 --- a/Documentation/media/v4l-drivers/cx18.rst +++ b/Documentation/media/v4l-drivers/cx18.rst | |||
@@ -1,3 +1,10 @@ | |||
1 | The cx18 driver | ||
2 | =============== | ||
3 | |||
4 | .. note:: | ||
5 | |||
6 | This documentation is outdated. | ||
7 | |||
1 | Some notes regarding the cx18 driver for the Conexant CX23418 MPEG | 8 | Some notes regarding the cx18 driver for the Conexant CX23418 MPEG |
2 | encoder chip: | 9 | encoder chip: |
3 | 10 | ||
diff --git a/Documentation/media/v4l-drivers/index.rst b/Documentation/media/v4l-drivers/index.rst index 264ff5cf85f4..07dc2596b0bd 100644 --- a/Documentation/media/v4l-drivers/index.rst +++ b/Documentation/media/v4l-drivers/index.rst | |||
@@ -21,4 +21,6 @@ License". | |||
21 | fourcc | 21 | fourcc |
22 | cardlist | 22 | cardlist |
23 | cafe_ccic | 23 | cafe_ccic |
24 | cpia2 | ||
25 | cx18 | ||
24 | zr364xx | 26 | zr364xx |