diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-10-28 12:35:11 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-10-28 12:35:11 -0400 |
commit | 0851668fdd97e526b2a41f794b785c204dd3d3e0 (patch) | |
tree | 4ef7c20a8be8393006c6fe9627eb29dd30877d61 /Documentation | |
parent | 00ebb6382b8d9c7c15b5f8ad230670d8161d38dd (diff) | |
parent | 7655e594945289b418af39f6669fea4666a7b520 (diff) |
Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6
* 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6: (505 commits)
[media] af9015: Fix max I2C message size when used with tda18271
[media] IR: initialize ir_raw_event in few more drivers
[media] Guard a divide in v4l1 compat layer
[media] imon: fix nomouse modprobe option
[media] imon: remove redundant change_protocol call
[media] imon: fix my egregious brown paper bag w/rdev/idev split
[media] cafe_ccic: Configure ov7670 correctly
[media] ov7670: allow configuration of image size, clock speed, and I/O method
[media] af9015: support for DigitalNow TinyTwin v3 [1f4d:9016]
[media] af9015: map DigitalNow TinyTwin v2 remote
[media] DigitalNow TinyTwin remote controller
[media] af9015: RC fixes and improvements
videodev2.h.xml: Update to reflect the latest changes at videodev2.h
[media] v4l: document new Bayer and monochrome pixel formats
[media] DocBook/v4l: Add missing formats used on gspca cpia1 and sn9c2028
[media] firedtv: add parameter to fake ca_system_ids in CA_INFO
[media] tm6000: fix a macro coding style issue
tm6000: Remove some ugly debug code
[media] Nova-S-Plus audio line input
[media] [RFC,1/1] V4L2: Use new CAP bits in existing RDS capable drivers
...
Diffstat (limited to 'Documentation')
29 files changed, 632 insertions, 128 deletions
diff --git a/Documentation/DocBook/media-entities.tmpl b/Documentation/DocBook/media-entities.tmpl index 6ae97157b1c7..be34dcbe0d90 100644 --- a/Documentation/DocBook/media-entities.tmpl +++ b/Documentation/DocBook/media-entities.tmpl | |||
@@ -250,6 +250,9 @@ | |||
250 | <!ENTITY sub-yuv422p SYSTEM "v4l/pixfmt-yuv422p.xml"> | 250 | <!ENTITY sub-yuv422p SYSTEM "v4l/pixfmt-yuv422p.xml"> |
251 | <!ENTITY sub-yuyv SYSTEM "v4l/pixfmt-yuyv.xml"> | 251 | <!ENTITY sub-yuyv SYSTEM "v4l/pixfmt-yuyv.xml"> |
252 | <!ENTITY sub-yvyu SYSTEM "v4l/pixfmt-yvyu.xml"> | 252 | <!ENTITY sub-yvyu SYSTEM "v4l/pixfmt-yvyu.xml"> |
253 | <!ENTITY sub-srggb10 SYSTEM "v4l/pixfmt-srggb10.xml"> | ||
254 | <!ENTITY sub-srggb8 SYSTEM "v4l/pixfmt-srggb8.xml"> | ||
255 | <!ENTITY sub-y10 SYSTEM "v4l/pixfmt-y10.xml"> | ||
253 | <!ENTITY sub-pixfmt SYSTEM "v4l/pixfmt.xml"> | 256 | <!ENTITY sub-pixfmt SYSTEM "v4l/pixfmt.xml"> |
254 | <!ENTITY sub-cropcap SYSTEM "v4l/vidioc-cropcap.xml"> | 257 | <!ENTITY sub-cropcap SYSTEM "v4l/vidioc-cropcap.xml"> |
255 | <!ENTITY sub-dbg-g-register SYSTEM "v4l/vidioc-dbg-g-register.xml"> | 258 | <!ENTITY sub-dbg-g-register SYSTEM "v4l/vidioc-dbg-g-register.xml"> |
@@ -347,6 +350,9 @@ | |||
347 | <!ENTITY yuv422p SYSTEM "v4l/pixfmt-yuv422p.xml"> | 350 | <!ENTITY yuv422p SYSTEM "v4l/pixfmt-yuv422p.xml"> |
348 | <!ENTITY yuyv SYSTEM "v4l/pixfmt-yuyv.xml"> | 351 | <!ENTITY yuyv SYSTEM "v4l/pixfmt-yuyv.xml"> |
349 | <!ENTITY yvyu SYSTEM "v4l/pixfmt-yvyu.xml"> | 352 | <!ENTITY yvyu SYSTEM "v4l/pixfmt-yvyu.xml"> |
353 | <!ENTITY srggb10 SYSTEM "v4l/pixfmt-srggb10.xml"> | ||
354 | <!ENTITY srggb8 SYSTEM "v4l/pixfmt-srggb8.xml"> | ||
355 | <!ENTITY y10 SYSTEM "v4l/pixfmt-y10.xml"> | ||
350 | <!ENTITY cropcap SYSTEM "v4l/vidioc-cropcap.xml"> | 356 | <!ENTITY cropcap SYSTEM "v4l/vidioc-cropcap.xml"> |
351 | <!ENTITY dbg-g-register SYSTEM "v4l/vidioc-dbg-g-register.xml"> | 357 | <!ENTITY dbg-g-register SYSTEM "v4l/vidioc-dbg-g-register.xml"> |
352 | <!ENTITY encoder-cmd SYSTEM "v4l/vidioc-encoder-cmd.xml"> | 358 | <!ENTITY encoder-cmd SYSTEM "v4l/vidioc-encoder-cmd.xml"> |
diff --git a/Documentation/DocBook/v4l/compat.xml b/Documentation/DocBook/v4l/compat.xml index 54447f0d0784..c9ce61d981f5 100644 --- a/Documentation/DocBook/v4l/compat.xml +++ b/Documentation/DocBook/v4l/compat.xml | |||
@@ -21,11 +21,15 @@ API.</para> | |||
21 | <title>Opening and Closing Devices</title> | 21 | <title>Opening and Closing Devices</title> |
22 | 22 | ||
23 | <para>For compatibility reasons the character device file names | 23 | <para>For compatibility reasons the character device file names |
24 | recommended for V4L2 video capture, overlay, radio, teletext and raw | 24 | recommended for V4L2 video capture, overlay, radio and raw |
25 | vbi capture devices did not change from those used by V4L. They are | 25 | vbi capture devices did not change from those used by V4L. They are |
26 | listed in <xref linkend="devices" /> and below in <xref | 26 | listed in <xref linkend="devices" /> and below in <xref |
27 | linkend="v4l-dev" />.</para> | 27 | linkend="v4l-dev" />.</para> |
28 | 28 | ||
29 | <para>The teletext devices (minor range 192-223) have been removed in | ||
30 | V4L2 and no longer exist. There is no hardware available anymore for handling | ||
31 | pure teletext. Instead raw or sliced VBI is used.</para> | ||
32 | |||
29 | <para>The V4L <filename>videodev</filename> module automatically | 33 | <para>The V4L <filename>videodev</filename> module automatically |
30 | assigns minor numbers to drivers in load order, depending on the | 34 | assigns minor numbers to drivers in load order, depending on the |
31 | registered device type. We recommend that V4L2 drivers by default | 35 | registered device type. We recommend that V4L2 drivers by default |
@@ -66,13 +70,6 @@ not compatible with V4L or V4L2.</para> </footnote>, | |||
66 | <entry>64-127</entry> | 70 | <entry>64-127</entry> |
67 | </row> | 71 | </row> |
68 | <row> | 72 | <row> |
69 | <entry>Teletext decoder</entry> | ||
70 | <entry><para><filename>/dev/vtx</filename>, | ||
71 | <filename>/dev/vtx0</filename> to | ||
72 | <filename>/dev/vtx31</filename></para></entry> | ||
73 | <entry>192-223</entry> | ||
74 | </row> | ||
75 | <row> | ||
76 | <entry>Raw VBI capture</entry> | 73 | <entry>Raw VBI capture</entry> |
77 | <entry><para><filename>/dev/vbi</filename>, | 74 | <entry><para><filename>/dev/vbi</filename>, |
78 | <filename>/dev/vbi0</filename> to | 75 | <filename>/dev/vbi0</filename> to |
@@ -2345,6 +2342,17 @@ more information.</para> | |||
2345 | </listitem> | 2342 | </listitem> |
2346 | </orderedlist> | 2343 | </orderedlist> |
2347 | </section> | 2344 | </section> |
2345 | <section> | ||
2346 | <title>V4L2 in Linux 2.6.37</title> | ||
2347 | <orderedlist> | ||
2348 | <listitem> | ||
2349 | <para>Remove the vtx (videotext/teletext) API. This API was no longer | ||
2350 | used and no hardware exists to verify the API. Nor were any userspace applications found | ||
2351 | that used it. It was originally scheduled for removal in 2.6.35. | ||
2352 | </para> | ||
2353 | </listitem> | ||
2354 | </orderedlist> | ||
2355 | </section> | ||
2348 | 2356 | ||
2349 | <section id="other"> | 2357 | <section id="other"> |
2350 | <title>Relation of V4L2 to other Linux multimedia APIs</title> | 2358 | <title>Relation of V4L2 to other Linux multimedia APIs</title> |
diff --git a/Documentation/DocBook/v4l/controls.xml b/Documentation/DocBook/v4l/controls.xml index 8408caaee276..2fae3e87ce73 100644 --- a/Documentation/DocBook/v4l/controls.xml +++ b/Documentation/DocBook/v4l/controls.xml | |||
@@ -312,10 +312,17 @@ minimum value disables backlight compensation.</entry> | |||
312 | information and bits 24-31 must be zero.</entry> | 312 | information and bits 24-31 must be zero.</entry> |
313 | </row> | 313 | </row> |
314 | <row> | 314 | <row> |
315 | <entry><constant>V4L2_CID_ILLUMINATORS_1</constant> | ||
316 | <constant>V4L2_CID_ILLUMINATORS_2</constant></entry> | ||
317 | <entry>boolean</entry> | ||
318 | <entry>Switch on or off the illuminator 1 or 2 of the device | ||
319 | (usually a microscope).</entry> | ||
320 | </row> | ||
321 | <row> | ||
315 | <entry><constant>V4L2_CID_LASTP1</constant></entry> | 322 | <entry><constant>V4L2_CID_LASTP1</constant></entry> |
316 | <entry></entry> | 323 | <entry></entry> |
317 | <entry>End of the predefined control IDs (currently | 324 | <entry>End of the predefined control IDs (currently |
318 | <constant>V4L2_CID_BG_COLOR</constant> + 1).</entry> | 325 | <constant>V4L2_CID_ILLUMINATORS_2</constant> + 1).</entry> |
319 | </row> | 326 | </row> |
320 | <row> | 327 | <row> |
321 | <entry><constant>V4L2_CID_PRIVATE_BASE</constant></entry> | 328 | <entry><constant>V4L2_CID_PRIVATE_BASE</constant></entry> |
@@ -357,9 +364,6 @@ enumerate_menu (void) | |||
357 | querymenu.index++) { | 364 | querymenu.index++) { |
358 | if (0 == ioctl (fd, &VIDIOC-QUERYMENU;, &querymenu)) { | 365 | if (0 == ioctl (fd, &VIDIOC-QUERYMENU;, &querymenu)) { |
359 | printf (" %s\n", querymenu.name); | 366 | printf (" %s\n", querymenu.name); |
360 | } else { | ||
361 | perror ("VIDIOC_QUERYMENU"); | ||
362 | exit (EXIT_FAILURE); | ||
363 | } | 367 | } |
364 | } | 368 | } |
365 | } | 369 | } |
diff --git a/Documentation/DocBook/v4l/dev-rds.xml b/Documentation/DocBook/v4l/dev-rds.xml index 0869d701b1e5..360d2737e649 100644 --- a/Documentation/DocBook/v4l/dev-rds.xml +++ b/Documentation/DocBook/v4l/dev-rds.xml | |||
@@ -3,15 +3,16 @@ | |||
3 | <para>The Radio Data System transmits supplementary | 3 | <para>The Radio Data System transmits supplementary |
4 | information in binary format, for example the station name or travel | 4 | information in binary format, for example the station name or travel |
5 | information, on an inaudible audio subcarrier of a radio program. This | 5 | information, on an inaudible audio subcarrier of a radio program. This |
6 | interface is aimed at devices capable of receiving and decoding RDS | 6 | interface is aimed at devices capable of receiving and/or transmitting RDS |
7 | information.</para> | 7 | information.</para> |
8 | 8 | ||
9 | <para>For more information see the core RDS standard <xref linkend="en50067" /> | 9 | <para>For more information see the core RDS standard <xref linkend="en50067" /> |
10 | and the RBDS standard <xref linkend="nrsc4" />.</para> | 10 | and the RBDS standard <xref linkend="nrsc4" />.</para> |
11 | 11 | ||
12 | <para>Note that the RBDS standard as is used in the USA is almost identical | 12 | <para>Note that the RBDS standard as is used in the USA is almost identical |
13 | to the RDS standard. Any RDS decoder can also handle RBDS. Only some of the fields | 13 | to the RDS standard. Any RDS decoder/encoder can also handle RBDS. Only some of the |
14 | have slightly different meanings. See the RBDS standard for more information.</para> | 14 | fields have slightly different meanings. See the RBDS standard for more |
15 | information.</para> | ||
15 | 16 | ||
16 | <para>The RBDS standard also specifies support for MMBS (Modified Mobile Search). | 17 | <para>The RBDS standard also specifies support for MMBS (Modified Mobile Search). |
17 | This is a proprietary format which seems to be discontinued. The RDS interface does not | 18 | This is a proprietary format which seems to be discontinued. The RDS interface does not |
@@ -21,16 +22,25 @@ be needed, then please contact the linux-media mailing list: &v4l-ml;.</para> | |||
21 | <section> | 22 | <section> |
22 | <title>Querying Capabilities</title> | 23 | <title>Querying Capabilities</title> |
23 | 24 | ||
24 | <para>Devices supporting the RDS capturing API | 25 | <para>Devices supporting the RDS capturing API set |
25 | set the <constant>V4L2_CAP_RDS_CAPTURE</constant> flag in | 26 | the <constant>V4L2_CAP_RDS_CAPTURE</constant> flag in |
26 | the <structfield>capabilities</structfield> field of &v4l2-capability; | 27 | the <structfield>capabilities</structfield> field of &v4l2-capability; |
27 | returned by the &VIDIOC-QUERYCAP; ioctl. | 28 | returned by the &VIDIOC-QUERYCAP; ioctl. Any tuner that supports RDS |
28 | Any tuner that supports RDS will set the | 29 | will set the <constant>V4L2_TUNER_CAP_RDS</constant> flag in |
29 | <constant>V4L2_TUNER_CAP_RDS</constant> flag in the <structfield>capability</structfield> | 30 | the <structfield>capability</structfield> field of &v4l2-tuner;. If |
30 | field of &v4l2-tuner;. | 31 | the driver only passes RDS blocks without interpreting the data |
31 | Whether an RDS signal is present can be detected by looking at | 32 | the <constant>V4L2_TUNER_SUB_RDS_BLOCK_IO</constant> flag has to be |
32 | the <structfield>rxsubchans</structfield> field of &v4l2-tuner;: the | 33 | set, see <link linkend="reading-rds-data">Reading RDS data</link>. |
33 | <constant>V4L2_TUNER_SUB_RDS</constant> will be set if RDS data was detected.</para> | 34 | For future use the |
35 | flag <constant>V4L2_TUNER_SUB_RDS_CONTROLS</constant> has also been | ||
36 | defined. However, a driver for a radio tuner with this capability does | ||
37 | not yet exist, so if you are planning to write such a driver you | ||
38 | should discuss this on the linux-media mailing list: &v4l-ml;.</para> | ||
39 | |||
40 | <para> Whether an RDS signal is present can be detected by looking | ||
41 | at the <structfield>rxsubchans</structfield> field of &v4l2-tuner;: | ||
42 | the <constant>V4L2_TUNER_SUB_RDS</constant> will be set if RDS data | ||
43 | was detected.</para> | ||
34 | 44 | ||
35 | <para>Devices supporting the RDS output API | 45 | <para>Devices supporting the RDS output API |
36 | set the <constant>V4L2_CAP_RDS_OUTPUT</constant> flag in | 46 | set the <constant>V4L2_CAP_RDS_OUTPUT</constant> flag in |
@@ -40,16 +50,31 @@ Any modulator that supports RDS will set the | |||
40 | <constant>V4L2_TUNER_CAP_RDS</constant> flag in the <structfield>capability</structfield> | 50 | <constant>V4L2_TUNER_CAP_RDS</constant> flag in the <structfield>capability</structfield> |
41 | field of &v4l2-modulator;. | 51 | field of &v4l2-modulator;. |
42 | In order to enable the RDS transmission one must set the <constant>V4L2_TUNER_SUB_RDS</constant> | 52 | In order to enable the RDS transmission one must set the <constant>V4L2_TUNER_SUB_RDS</constant> |
43 | bit in the <structfield>txsubchans</structfield> field of &v4l2-modulator;.</para> | 53 | bit in the <structfield>txsubchans</structfield> field of &v4l2-modulator;. |
44 | 54 | If the driver only passes RDS blocks without interpreting the data | |
55 | the <constant>V4L2_TUNER_SUB_RDS_BLOCK_IO</constant> flag has to be set. If the | ||
56 | tuner is capable of handling RDS entities like program identification codes and radio | ||
57 | text, the flag <constant>V4L2_TUNER_SUB_RDS_CONTROLS</constant> should be set, | ||
58 | see <link linkend="writing-rds-data">Writing RDS data</link> and | ||
59 | <link linkend="fm-tx-controls">FM Transmitter Control Reference</link>.</para> | ||
45 | </section> | 60 | </section> |
46 | 61 | ||
47 | <section> | 62 | <section id="reading-rds-data"> |
48 | <title>Reading RDS data</title> | 63 | <title>Reading RDS data</title> |
49 | 64 | ||
50 | <para>RDS data can be read from the radio device | 65 | <para>RDS data can be read from the radio device |
51 | with the &func-read; function. The data is packed in groups of three bytes, | 66 | with the &func-read; function. The data is packed in groups of three bytes.</para> |
67 | </section> | ||
68 | |||
69 | <section id="writing-rds-data"> | ||
70 | <title>Writing RDS data</title> | ||
71 | |||
72 | <para>RDS data can be written to the radio device | ||
73 | with the &func-write; function. The data is packed in groups of three bytes, | ||
52 | as follows:</para> | 74 | as follows:</para> |
75 | </section> | ||
76 | |||
77 | <section> | ||
53 | <table frame="none" pgwide="1" id="v4l2-rds-data"> | 78 | <table frame="none" pgwide="1" id="v4l2-rds-data"> |
54 | <title>struct | 79 | <title>struct |
55 | <structname>v4l2_rds_data</structname></title> | 80 | <structname>v4l2_rds_data</structname></title> |
@@ -111,48 +136,57 @@ as follows:</para> | |||
111 | <tbody valign="top"> | 136 | <tbody valign="top"> |
112 | <row> | 137 | <row> |
113 | <entry>V4L2_RDS_BLOCK_MSK</entry> | 138 | <entry>V4L2_RDS_BLOCK_MSK</entry> |
139 | <entry> </entry> | ||
114 | <entry>7</entry> | 140 | <entry>7</entry> |
115 | <entry>Mask for bits 0-2 to get the block ID.</entry> | 141 | <entry>Mask for bits 0-2 to get the block ID.</entry> |
116 | </row> | 142 | </row> |
117 | <row> | 143 | <row> |
118 | <entry>V4L2_RDS_BLOCK_A</entry> | 144 | <entry>V4L2_RDS_BLOCK_A</entry> |
145 | <entry> </entry> | ||
119 | <entry>0</entry> | 146 | <entry>0</entry> |
120 | <entry>Block A.</entry> | 147 | <entry>Block A.</entry> |
121 | </row> | 148 | </row> |
122 | <row> | 149 | <row> |
123 | <entry>V4L2_RDS_BLOCK_B</entry> | 150 | <entry>V4L2_RDS_BLOCK_B</entry> |
151 | <entry> </entry> | ||
124 | <entry>1</entry> | 152 | <entry>1</entry> |
125 | <entry>Block B.</entry> | 153 | <entry>Block B.</entry> |
126 | </row> | 154 | </row> |
127 | <row> | 155 | <row> |
128 | <entry>V4L2_RDS_BLOCK_C</entry> | 156 | <entry>V4L2_RDS_BLOCK_C</entry> |
157 | <entry> </entry> | ||
129 | <entry>2</entry> | 158 | <entry>2</entry> |
130 | <entry>Block C.</entry> | 159 | <entry>Block C.</entry> |
131 | </row> | 160 | </row> |
132 | <row> | 161 | <row> |
133 | <entry>V4L2_RDS_BLOCK_D</entry> | 162 | <entry>V4L2_RDS_BLOCK_D</entry> |
163 | <entry> </entry> | ||
134 | <entry>3</entry> | 164 | <entry>3</entry> |
135 | <entry>Block D.</entry> | 165 | <entry>Block D.</entry> |
136 | </row> | 166 | </row> |
137 | <row> | 167 | <row> |
138 | <entry>V4L2_RDS_BLOCK_C_ALT</entry> | 168 | <entry>V4L2_RDS_BLOCK_C_ALT</entry> |
169 | <entry> </entry> | ||
139 | <entry>4</entry> | 170 | <entry>4</entry> |
140 | <entry>Block C'.</entry> | 171 | <entry>Block C'.</entry> |
141 | </row> | 172 | </row> |
142 | <row> | 173 | <row> |
143 | <entry>V4L2_RDS_BLOCK_INVALID</entry> | 174 | <entry>V4L2_RDS_BLOCK_INVALID</entry> |
175 | <entry>read-only</entry> | ||
144 | <entry>7</entry> | 176 | <entry>7</entry> |
145 | <entry>An invalid block.</entry> | 177 | <entry>An invalid block.</entry> |
146 | </row> | 178 | </row> |
147 | <row> | 179 | <row> |
148 | <entry>V4L2_RDS_BLOCK_CORRECTED</entry> | 180 | <entry>V4L2_RDS_BLOCK_CORRECTED</entry> |
181 | <entry>read-only</entry> | ||
149 | <entry>0x40</entry> | 182 | <entry>0x40</entry> |
150 | <entry>A bit error was detected but corrected.</entry> | 183 | <entry>A bit error was detected but corrected.</entry> |
151 | </row> | 184 | </row> |
152 | <row> | 185 | <row> |
153 | <entry>V4L2_RDS_BLOCK_ERROR</entry> | 186 | <entry>V4L2_RDS_BLOCK_ERROR</entry> |
187 | <entry>read-only</entry> | ||
154 | <entry>0x80</entry> | 188 | <entry>0x80</entry> |
155 | <entry>An incorrectable error occurred.</entry> | 189 | <entry>An uncorrectable error occurred.</entry> |
156 | </row> | 190 | </row> |
157 | </tbody> | 191 | </tbody> |
158 | </tgroup> | 192 | </tgroup> |
diff --git a/Documentation/DocBook/v4l/dev-teletext.xml b/Documentation/DocBook/v4l/dev-teletext.xml index 76184e8ed618..414b1cfff9f4 100644 --- a/Documentation/DocBook/v4l/dev-teletext.xml +++ b/Documentation/DocBook/v4l/dev-teletext.xml | |||
@@ -1,35 +1,32 @@ | |||
1 | <title>Teletext Interface</title> | 1 | <title>Teletext Interface</title> |
2 | 2 | ||
3 | <para>This interface aims at devices receiving and demodulating | 3 | <para>This interface was aimed at devices receiving and demodulating |
4 | Teletext data [<xref linkend="ets300706" />, <xref linkend="itu653" />], evaluating the | 4 | Teletext data [<xref linkend="ets300706" />, <xref linkend="itu653" />], evaluating the |
5 | Teletext packages and storing formatted pages in cache memory. Such | 5 | Teletext packages and storing formatted pages in cache memory. Such |
6 | devices are usually implemented as microcontrollers with serial | 6 | devices are usually implemented as microcontrollers with serial |
7 | interface (I<superscript>2</superscript>C) and can be found on older | 7 | interface (I<superscript>2</superscript>C) and could be found on old |
8 | TV cards, dedicated Teletext decoding cards and home-brew devices | 8 | TV cards, dedicated Teletext decoding cards and home-brew devices |
9 | connected to the PC parallel port.</para> | 9 | connected to the PC parallel port.</para> |
10 | 10 | ||
11 | <para>The Teletext API was designed by Martin Buck. It is defined in | 11 | <para>The Teletext API was designed by Martin Buck. It was defined in |
12 | the kernel header file <filename>linux/videotext.h</filename>, the | 12 | the kernel header file <filename>linux/videotext.h</filename>, the |
13 | specification is available from <ulink url="ftp://ftp.gwdg.de/pub/linux/misc/videotext/"> | 13 | specification is available from <ulink url="ftp://ftp.gwdg.de/pub/linux/misc/videotext/"> |
14 | ftp://ftp.gwdg.de/pub/linux/misc/videotext/</ulink>. (Videotext is the name of | 14 | ftp://ftp.gwdg.de/pub/linux/misc/videotext/</ulink>. (Videotext is the name of |
15 | the German public television Teletext service.) Conventional character | 15 | the German public television Teletext service.)</para> |
16 | device file names are <filename>/dev/vtx</filename> and | ||
17 | <filename>/dev/vttuner</filename>, with device number 83, 0 and 83, 16 | ||
18 | respectively. A similar interface exists for the Philips SAA5249 | ||
19 | Teletext decoder [specification?] with character device file names | ||
20 | <filename>/dev/tlkN</filename>, device number 102, N.</para> | ||
21 | 16 | ||
22 | <para>Eventually the Teletext API was integrated into the V4L API | 17 | <para>Eventually the Teletext API was integrated into the V4L API |
23 | with character device file names <filename>/dev/vtx0</filename> to | 18 | with character device file names <filename>/dev/vtx0</filename> to |
24 | <filename>/dev/vtx31</filename>, device major number 81, minor numbers | 19 | <filename>/dev/vtx31</filename>, device major number 81, minor numbers |
25 | 192 to 223. For reference the V4L Teletext API specification is | 20 | 192 to 223.</para> |
26 | reproduced here in full: "Teletext interfaces talk the existing VTX | ||
27 | API." Teletext devices with major number 83 and 102 will be removed in | ||
28 | Linux 2.6.</para> | ||
29 | 21 | ||
30 | <para>There are no plans to replace the Teletext API or to integrate | 22 | <para>However, teletext decoders were quickly replaced by more |
31 | it into V4L2. Please write to the linux-media mailing list: &v4l-ml; | 23 | generic VBI demodulators and those dedicated teletext decoders no longer exist. |
32 | when the need arises.</para> | 24 | For many years the vtx devices were still around, even though nobody used |
25 | them. So the decision was made to finally remove support for the Teletext API in | ||
26 | kernel 2.6.37.</para> | ||
27 | |||
28 | <para>Modern devices all use the <link linkend="raw-vbi">raw</link> or | ||
29 | <link linkend="sliced">sliced</link> VBI API.</para> | ||
33 | 30 | ||
34 | <!-- | 31 | <!-- |
35 | Local Variables: | 32 | Local Variables: |
diff --git a/Documentation/DocBook/v4l/pixfmt-packed-rgb.xml b/Documentation/DocBook/v4l/pixfmt-packed-rgb.xml index 26e879231088..4db272b8a0d3 100644 --- a/Documentation/DocBook/v4l/pixfmt-packed-rgb.xml +++ b/Documentation/DocBook/v4l/pixfmt-packed-rgb.xml | |||
@@ -739,7 +739,7 @@ defined in error. Drivers may interpret them as in <xref | |||
739 | <entry>b<subscript>1</subscript></entry> | 739 | <entry>b<subscript>1</subscript></entry> |
740 | <entry>b<subscript>0</subscript></entry> | 740 | <entry>b<subscript>0</subscript></entry> |
741 | </row> | 741 | </row> |
742 | <row id="V4L2-PIX-FMT-BGR666"> | 742 | <row><!-- id="V4L2-PIX-FMT-BGR666" --> |
743 | <entry><constant>V4L2_PIX_FMT_BGR666</constant></entry> | 743 | <entry><constant>V4L2_PIX_FMT_BGR666</constant></entry> |
744 | <entry>'BGRH'</entry> | 744 | <entry>'BGRH'</entry> |
745 | <entry></entry> | 745 | <entry></entry> |
diff --git a/Documentation/DocBook/v4l/pixfmt-srggb10.xml b/Documentation/DocBook/v4l/pixfmt-srggb10.xml new file mode 100644 index 000000000000..7b274092e60c --- /dev/null +++ b/Documentation/DocBook/v4l/pixfmt-srggb10.xml | |||
@@ -0,0 +1,90 @@ | |||
1 | <refentry> | ||
2 | <refmeta> | ||
3 | <refentrytitle>V4L2_PIX_FMT_SRGGB10 ('RG10'), | ||
4 | V4L2_PIX_FMT_SGRBG10 ('BA10'), | ||
5 | V4L2_PIX_FMT_SGBRG10 ('GB10'), | ||
6 | V4L2_PIX_FMT_SBGGR10 ('BG10'), | ||
7 | </refentrytitle> | ||
8 | &manvol; | ||
9 | </refmeta> | ||
10 | <refnamediv> | ||
11 | <refname id="V4L2-PIX-FMT-SRGGB10"><constant>V4L2_PIX_FMT_SRGGB10</constant></refname> | ||
12 | <refname id="V4L2-PIX-FMT-SGRBG10"><constant>V4L2_PIX_FMT_SGRBG10</constant></refname> | ||
13 | <refname id="V4L2-PIX-FMT-SGBRG10"><constant>V4L2_PIX_FMT_SGBRG10</constant></refname> | ||
14 | <refname id="V4L2-PIX-FMT-SBGGR10"><constant>V4L2_PIX_FMT_SBGGR10</constant></refname> | ||
15 | <refpurpose>10-bit Bayer formats expanded to 16 bits</refpurpose> | ||
16 | </refnamediv> | ||
17 | <refsect1> | ||
18 | <title>Description</title> | ||
19 | |||
20 | <para>The following four pixel formats are raw sRGB / Bayer formats with | ||
21 | 10 bits per colour. Each colour component is stored in a 16-bit word, with 6 | ||
22 | unused high bits filled with zeros. Each n-pixel row contains n/2 green samples | ||
23 | and n/2 blue or red samples, with alternating red and blue rows. Bytes are | ||
24 | stored in memory in little endian order. They are conventionally described | ||
25 | as GRGR... BGBG..., RGRG... GBGB..., etc. Below is an example of one of these | ||
26 | formats</para> | ||
27 | |||
28 | <example> | ||
29 | <title><constant>V4L2_PIX_FMT_SBGGR10</constant> 4 × 4 | ||
30 | pixel image</title> | ||
31 | |||
32 | <formalpara> | ||
33 | <title>Byte Order.</title> | ||
34 | <para>Each cell is one byte, high 6 bits in high bytes are 0. | ||
35 | <informaltable frame="none"> | ||
36 | <tgroup cols="5" align="center"> | ||
37 | <colspec align="left" colwidth="2*" /> | ||
38 | <tbody valign="top"> | ||
39 | <row> | ||
40 | <entry>start + 0:</entry> | ||
41 | <entry>B<subscript>00low</subscript></entry> | ||
42 | <entry>B<subscript>00high</subscript></entry> | ||
43 | <entry>G<subscript>01low</subscript></entry> | ||
44 | <entry>G<subscript>01high</subscript></entry> | ||
45 | <entry>B<subscript>02low</subscript></entry> | ||
46 | <entry>B<subscript>02high</subscript></entry> | ||
47 | <entry>G<subscript>03low</subscript></entry> | ||
48 | <entry>G<subscript>03high</subscript></entry> | ||
49 | </row> | ||
50 | <row> | ||
51 | <entry>start + 8:</entry> | ||
52 | <entry>G<subscript>10low</subscript></entry> | ||
53 | <entry>G<subscript>10high</subscript></entry> | ||
54 | <entry>R<subscript>11low</subscript></entry> | ||
55 | <entry>R<subscript>11high</subscript></entry> | ||
56 | <entry>G<subscript>12low</subscript></entry> | ||
57 | <entry>G<subscript>12high</subscript></entry> | ||
58 | <entry>R<subscript>13low</subscript></entry> | ||
59 | <entry>R<subscript>13high</subscript></entry> | ||
60 | </row> | ||
61 | <row> | ||
62 | <entry>start + 16:</entry> | ||
63 | <entry>B<subscript>20low</subscript></entry> | ||
64 | <entry>B<subscript>20high</subscript></entry> | ||
65 | <entry>G<subscript>21low</subscript></entry> | ||
66 | <entry>G<subscript>21high</subscript></entry> | ||
67 | <entry>B<subscript>22low</subscript></entry> | ||
68 | <entry>B<subscript>22high</subscript></entry> | ||
69 | <entry>G<subscript>23low</subscript></entry> | ||
70 | <entry>G<subscript>23high</subscript></entry> | ||
71 | </row> | ||
72 | <row> | ||
73 | <entry>start + 24:</entry> | ||
74 | <entry>G<subscript>30low</subscript></entry> | ||
75 | <entry>G<subscript>30high</subscript></entry> | ||
76 | <entry>R<subscript>31low</subscript></entry> | ||
77 | <entry>R<subscript>31high</subscript></entry> | ||
78 | <entry>G<subscript>32low</subscript></entry> | ||
79 | <entry>G<subscript>32high</subscript></entry> | ||
80 | <entry>R<subscript>33low</subscript></entry> | ||
81 | <entry>R<subscript>33high</subscript></entry> | ||
82 | </row> | ||
83 | </tbody> | ||
84 | </tgroup> | ||
85 | </informaltable> | ||
86 | </para> | ||
87 | </formalpara> | ||
88 | </example> | ||
89 | </refsect1> | ||
90 | </refentry> | ||
diff --git a/Documentation/DocBook/v4l/pixfmt-srggb8.xml b/Documentation/DocBook/v4l/pixfmt-srggb8.xml new file mode 100644 index 000000000000..2570e3be3cf1 --- /dev/null +++ b/Documentation/DocBook/v4l/pixfmt-srggb8.xml | |||
@@ -0,0 +1,67 @@ | |||
1 | <refentry id="V4L2-PIX-FMT-SRGGB8"> | ||
2 | <refmeta> | ||
3 | <refentrytitle>V4L2_PIX_FMT_SRGGB8 ('RGGB')</refentrytitle> | ||
4 | &manvol; | ||
5 | </refmeta> | ||
6 | <refnamediv> | ||
7 | <refname><constant>V4L2_PIX_FMT_SRGGB8</constant></refname> | ||
8 | <refpurpose>Bayer RGB format</refpurpose> | ||
9 | </refnamediv> | ||
10 | <refsect1> | ||
11 | <title>Description</title> | ||
12 | |||
13 | <para>This is commonly the native format of digital cameras, | ||
14 | reflecting the arrangement of sensors on the CCD device. Only one red, | ||
15 | green or blue value is given for each pixel. Missing components must | ||
16 | be interpolated from neighbouring pixels. From left to right the first | ||
17 | row consists of a red and green value, the second row of a green and | ||
18 | blue value. This scheme repeats to the right and down for every two | ||
19 | columns and rows.</para> | ||
20 | |||
21 | <example> | ||
22 | <title><constant>V4L2_PIX_FMT_SRGGB8</constant> 4 × 4 | ||
23 | pixel image</title> | ||
24 | |||
25 | <formalpara> | ||
26 | <title>Byte Order.</title> | ||
27 | <para>Each cell is one byte. | ||
28 | <informaltable frame="none"> | ||
29 | <tgroup cols="5" align="center"> | ||
30 | <colspec align="left" colwidth="2*" /> | ||
31 | <tbody valign="top"> | ||
32 | <row> | ||
33 | <entry>start + 0:</entry> | ||
34 | <entry>R<subscript>00</subscript></entry> | ||
35 | <entry>G<subscript>01</subscript></entry> | ||
36 | <entry>R<subscript>02</subscript></entry> | ||
37 | <entry>G<subscript>03</subscript></entry> | ||
38 | </row> | ||
39 | <row> | ||
40 | <entry>start + 4:</entry> | ||
41 | <entry>G<subscript>10</subscript></entry> | ||
42 | <entry>B<subscript>11</subscript></entry> | ||
43 | <entry>G<subscript>12</subscript></entry> | ||
44 | <entry>B<subscript>13</subscript></entry> | ||
45 | </row> | ||
46 | <row> | ||
47 | <entry>start + 8:</entry> | ||
48 | <entry>R<subscript>20</subscript></entry> | ||
49 | <entry>G<subscript>21</subscript></entry> | ||
50 | <entry>R<subscript>22</subscript></entry> | ||
51 | <entry>G<subscript>23</subscript></entry> | ||
52 | </row> | ||
53 | <row> | ||
54 | <entry>start + 12:</entry> | ||
55 | <entry>G<subscript>30</subscript></entry> | ||
56 | <entry>B<subscript>31</subscript></entry> | ||
57 | <entry>G<subscript>32</subscript></entry> | ||
58 | <entry>B<subscript>33</subscript></entry> | ||
59 | </row> | ||
60 | </tbody> | ||
61 | </tgroup> | ||
62 | </informaltable> | ||
63 | </para> | ||
64 | </formalpara> | ||
65 | </example> | ||
66 | </refsect1> | ||
67 | </refentry> | ||
diff --git a/Documentation/DocBook/v4l/pixfmt-y10.xml b/Documentation/DocBook/v4l/pixfmt-y10.xml new file mode 100644 index 000000000000..d065043db8d8 --- /dev/null +++ b/Documentation/DocBook/v4l/pixfmt-y10.xml | |||
@@ -0,0 +1,79 @@ | |||
1 | <refentry id="V4L2-PIX-FMT-Y10"> | ||
2 | <refmeta> | ||
3 | <refentrytitle>V4L2_PIX_FMT_Y10 ('Y10 ')</refentrytitle> | ||
4 | &manvol; | ||
5 | </refmeta> | ||
6 | <refnamediv> | ||
7 | <refname><constant>V4L2_PIX_FMT_Y10</constant></refname> | ||
8 | <refpurpose>Grey-scale image</refpurpose> | ||
9 | </refnamediv> | ||
10 | <refsect1> | ||
11 | <title>Description</title> | ||
12 | |||
13 | <para>This is a grey-scale image with a depth of 10 bits per pixel. Pixels | ||
14 | are stored in 16-bit words with unused high bits padded with 0. The least | ||
15 | significant byte is stored at lower memory addresses (little-endian).</para> | ||
16 | |||
17 | <example> | ||
18 | <title><constant>V4L2_PIX_FMT_Y10</constant> 4 × 4 | ||
19 | pixel image</title> | ||
20 | |||
21 | <formalpara> | ||
22 | <title>Byte Order.</title> | ||
23 | <para>Each cell is one byte. | ||
24 | <informaltable frame="none"> | ||
25 | <tgroup cols="9" align="center"> | ||
26 | <colspec align="left" colwidth="2*" /> | ||
27 | <tbody valign="top"> | ||
28 | <row> | ||
29 | <entry>start + 0:</entry> | ||
30 | <entry>Y'<subscript>00low</subscript></entry> | ||
31 | <entry>Y'<subscript>00high</subscript></entry> | ||
32 | <entry>Y'<subscript>01low</subscript></entry> | ||
33 | <entry>Y'<subscript>01high</subscript></entry> | ||
34 | <entry>Y'<subscript>02low</subscript></entry> | ||
35 | <entry>Y'<subscript>02high</subscript></entry> | ||
36 | <entry>Y'<subscript>03low</subscript></entry> | ||
37 | <entry>Y'<subscript>03high</subscript></entry> | ||
38 | </row> | ||
39 | <row> | ||
40 | <entry>start + 8:</entry> | ||
41 | <entry>Y'<subscript>10low</subscript></entry> | ||
42 | <entry>Y'<subscript>10high</subscript></entry> | ||
43 | <entry>Y'<subscript>11low</subscript></entry> | ||
44 | <entry>Y'<subscript>11high</subscript></entry> | ||
45 | <entry>Y'<subscript>12low</subscript></entry> | ||
46 | <entry>Y'<subscript>12high</subscript></entry> | ||
47 | <entry>Y'<subscript>13low</subscript></entry> | ||
48 | <entry>Y'<subscript>13high</subscript></entry> | ||
49 | </row> | ||
50 | <row> | ||
51 | <entry>start + 16:</entry> | ||
52 | <entry>Y'<subscript>20low</subscript></entry> | ||
53 | <entry>Y'<subscript>20high</subscript></entry> | ||
54 | <entry>Y'<subscript>21low</subscript></entry> | ||
55 | <entry>Y'<subscript>21high</subscript></entry> | ||
56 | <entry>Y'<subscript>22low</subscript></entry> | ||
57 | <entry>Y'<subscript>22high</subscript></entry> | ||
58 | <entry>Y'<subscript>23low</subscript></entry> | ||
59 | <entry>Y'<subscript>23high</subscript></entry> | ||
60 | </row> | ||
61 | <row> | ||
62 | <entry>start + 24:</entry> | ||
63 | <entry>Y'<subscript>30low</subscript></entry> | ||
64 | <entry>Y'<subscript>30high</subscript></entry> | ||
65 | <entry>Y'<subscript>31low</subscript></entry> | ||
66 | <entry>Y'<subscript>31high</subscript></entry> | ||
67 | <entry>Y'<subscript>32low</subscript></entry> | ||
68 | <entry>Y'<subscript>32high</subscript></entry> | ||
69 | <entry>Y'<subscript>33low</subscript></entry> | ||
70 | <entry>Y'<subscript>33high</subscript></entry> | ||
71 | </row> | ||
72 | </tbody> | ||
73 | </tgroup> | ||
74 | </informaltable> | ||
75 | </para> | ||
76 | </formalpara> | ||
77 | </example> | ||
78 | </refsect1> | ||
79 | </refentry> | ||
diff --git a/Documentation/DocBook/v4l/pixfmt.xml b/Documentation/DocBook/v4l/pixfmt.xml index c4ad0a8e42dc..d7c467187095 100644 --- a/Documentation/DocBook/v4l/pixfmt.xml +++ b/Documentation/DocBook/v4l/pixfmt.xml | |||
@@ -566,7 +566,9 @@ access the palette, this must be done with ioctls of the Linux framebuffer API.< | |||
566 | &sub-sbggr8; | 566 | &sub-sbggr8; |
567 | &sub-sgbrg8; | 567 | &sub-sgbrg8; |
568 | &sub-sgrbg8; | 568 | &sub-sgrbg8; |
569 | &sub-srggb8; | ||
569 | &sub-sbggr16; | 570 | &sub-sbggr16; |
571 | &sub-srggb10; | ||
570 | </section> | 572 | </section> |
571 | 573 | ||
572 | <section id="yuv-formats"> | 574 | <section id="yuv-formats"> |
@@ -589,6 +591,7 @@ information.</para> | |||
589 | 591 | ||
590 | &sub-packed-yuv; | 592 | &sub-packed-yuv; |
591 | &sub-grey; | 593 | &sub-grey; |
594 | &sub-y10; | ||
592 | &sub-y16; | 595 | &sub-y16; |
593 | &sub-yuyv; | 596 | &sub-yuyv; |
594 | &sub-uyvy; | 597 | &sub-uyvy; |
@@ -685,6 +688,11 @@ http://www.ivtvdriver.org/</ulink></para><para>The format is documented in the | |||
685 | kernel sources in the file <filename>Documentation/video4linux/cx2341x/README.hm12</filename> | 688 | kernel sources in the file <filename>Documentation/video4linux/cx2341x/README.hm12</filename> |
686 | </para></entry> | 689 | </para></entry> |
687 | </row> | 690 | </row> |
691 | <row id="V4L2-PIX-FMT-CPIA1"> | ||
692 | <entry><constant>V4L2_PIX_FMT_CPIA1</constant></entry> | ||
693 | <entry>'CPIA'</entry> | ||
694 | <entry>YUV format used by the gspca cpia1 driver.</entry> | ||
695 | </row> | ||
688 | <row id="V4L2-PIX-FMT-SPCA501"> | 696 | <row id="V4L2-PIX-FMT-SPCA501"> |
689 | <entry><constant>V4L2_PIX_FMT_SPCA501</constant></entry> | 697 | <entry><constant>V4L2_PIX_FMT_SPCA501</constant></entry> |
690 | <entry>'S501'</entry> | 698 | <entry>'S501'</entry> |
@@ -705,11 +713,6 @@ kernel sources in the file <filename>Documentation/video4linux/cx2341x/README.hm | |||
705 | <entry>'S561'</entry> | 713 | <entry>'S561'</entry> |
706 | <entry>Compressed GBRG Bayer format used by the gspca driver.</entry> | 714 | <entry>Compressed GBRG Bayer format used by the gspca driver.</entry> |
707 | </row> | 715 | </row> |
708 | <row id="V4L2-PIX-FMT-SGRBG10"> | ||
709 | <entry><constant>V4L2_PIX_FMT_SGRBG10</constant></entry> | ||
710 | <entry>'DA10'</entry> | ||
711 | <entry>10 bit raw Bayer, expanded to 16 bits.</entry> | ||
712 | </row> | ||
713 | <row id="V4L2-PIX-FMT-SGRBG10DPCM8"> | 716 | <row id="V4L2-PIX-FMT-SGRBG10DPCM8"> |
714 | <entry><constant>V4L2_PIX_FMT_SGRBG10DPCM8</constant></entry> | 717 | <entry><constant>V4L2_PIX_FMT_SGRBG10DPCM8</constant></entry> |
715 | <entry>'DB10'</entry> | 718 | <entry>'DB10'</entry> |
@@ -770,6 +773,11 @@ kernel sources in the file <filename>Documentation/video4linux/cx2341x/README.hm | |||
770 | <entry>'S920'</entry> | 773 | <entry>'S920'</entry> |
771 | <entry>YUV 4:2:0 format of the gspca sn9c20x driver.</entry> | 774 | <entry>YUV 4:2:0 format of the gspca sn9c20x driver.</entry> |
772 | </row> | 775 | </row> |
776 | <row id="V4L2-PIX-FMT-SN9C2028"> | ||
777 | <entry><constant>V4L2_PIX_FMT_SN9C2028</constant></entry> | ||
778 | <entry>'SONX'</entry> | ||
779 | <entry>Compressed GBRG bayer format of the gspca sn9c2028 driver.</entry> | ||
780 | </row> | ||
773 | <row id="V4L2-PIX-FMT-STV0680"> | 781 | <row id="V4L2-PIX-FMT-STV0680"> |
774 | <entry><constant>V4L2_PIX_FMT_STV0680</constant></entry> | 782 | <entry><constant>V4L2_PIX_FMT_STV0680</constant></entry> |
775 | <entry>'S680'</entry> | 783 | <entry>'S680'</entry> |
@@ -787,6 +795,20 @@ http://www.thedirks.org/winnov/</ulink></para></entry> | |||
787 | <entry>'TM60'</entry> | 795 | <entry>'TM60'</entry> |
788 | <entry><para>Used by Trident tm6000</para></entry> | 796 | <entry><para>Used by Trident tm6000</para></entry> |
789 | </row> | 797 | </row> |
798 | <row id="V4L2-PIX-FMT-CIT-YYVYUY"> | ||
799 | <entry><constant>V4L2_PIX_FMT_CIT_YYVYUY</constant></entry> | ||
800 | <entry>'CITV'</entry> | ||
801 | <entry><para>Used by xirlink CIT, found at IBM webcams.</para> | ||
802 | <para>Uses one line of Y then 1 line of VYUY</para> | ||
803 | </entry> | ||
804 | </row> | ||
805 | <row id="V4L2-PIX-FMT-KONICA420"> | ||
806 | <entry><constant>V4L2_PIX_FMT_KONICA420</constant></entry> | ||
807 | <entry>'KONI'</entry> | ||
808 | <entry><para>Used by Konica webcams.</para> | ||
809 | <para>YUV420 planar in blocks of 256 pixels.</para> | ||
810 | </entry> | ||
811 | </row> | ||
790 | <row id="V4L2-PIX-FMT-YYUV"> | 812 | <row id="V4L2-PIX-FMT-YYUV"> |
791 | <entry><constant>V4L2_PIX_FMT_YYUV</constant></entry> | 813 | <entry><constant>V4L2_PIX_FMT_YYUV</constant></entry> |
792 | <entry>'YYUV'</entry> | 814 | <entry>'YYUV'</entry> |
diff --git a/Documentation/DocBook/v4l/v4l2.xml b/Documentation/DocBook/v4l/v4l2.xml index 7c3c098d5d08..839e93e875ae 100644 --- a/Documentation/DocBook/v4l/v4l2.xml +++ b/Documentation/DocBook/v4l/v4l2.xml | |||
@@ -99,6 +99,7 @@ Remote Controller chapter.</contrib> | |||
99 | <year>2007</year> | 99 | <year>2007</year> |
100 | <year>2008</year> | 100 | <year>2008</year> |
101 | <year>2009</year> | 101 | <year>2009</year> |
102 | <year>2010</year> | ||
102 | <holder>Bill Dirks, Michael H. Schimek, Hans Verkuil, Martin | 103 | <holder>Bill Dirks, Michael H. Schimek, Hans Verkuil, Martin |
103 | Rubli, Andy Walls, Muralidharan Karicheri, Mauro Carvalho Chehab</holder> | 104 | Rubli, Andy Walls, Muralidharan Karicheri, Mauro Carvalho Chehab</holder> |
104 | </copyright> | 105 | </copyright> |
@@ -110,10 +111,17 @@ Rubli, Andy Walls, Muralidharan Karicheri, Mauro Carvalho Chehab</holder> | |||
110 | <!-- Put document revisions here, newest first. --> | 111 | <!-- Put document revisions here, newest first. --> |
111 | <!-- API revisions (changes and additions of defines, enums, | 112 | <!-- API revisions (changes and additions of defines, enums, |
112 | structs, ioctls) must be noted in more detail in the history chapter | 113 | structs, ioctls) must be noted in more detail in the history chapter |
113 | (compat.sgml), along with the possible impact on existing drivers and | 114 | (compat.xml), along with the possible impact on existing drivers and |
114 | applications. --> | 115 | applications. --> |
115 | 116 | ||
116 | <revision> | 117 | <revision> |
118 | <revnumber>2.6.37</revnumber> | ||
119 | <date>2010-08-06</date> | ||
120 | <authorinitials>hv</authorinitials> | ||
121 | <revremark>Removed obsolete vtx (videotext) API.</revremark> | ||
122 | </revision> | ||
123 | |||
124 | <revision> | ||
117 | <revnumber>2.6.33</revnumber> | 125 | <revnumber>2.6.33</revnumber> |
118 | <date>2009-12-03</date> | 126 | <date>2009-12-03</date> |
119 | <authorinitials>mk</authorinitials> | 127 | <authorinitials>mk</authorinitials> |
diff --git a/Documentation/DocBook/v4l/videodev2.h.xml b/Documentation/DocBook/v4l/videodev2.h.xml index 865b06d9e679..325b23b6964c 100644 --- a/Documentation/DocBook/v4l/videodev2.h.xml +++ b/Documentation/DocBook/v4l/videodev2.h.xml | |||
@@ -154,23 +154,13 @@ enum <link linkend="v4l2-buf-type">v4l2_buf_type</link> { | |||
154 | V4L2_BUF_TYPE_VBI_OUTPUT = 5, | 154 | V4L2_BUF_TYPE_VBI_OUTPUT = 5, |
155 | V4L2_BUF_TYPE_SLICED_VBI_CAPTURE = 6, | 155 | V4L2_BUF_TYPE_SLICED_VBI_CAPTURE = 6, |
156 | V4L2_BUF_TYPE_SLICED_VBI_OUTPUT = 7, | 156 | V4L2_BUF_TYPE_SLICED_VBI_OUTPUT = 7, |
157 | #if 1 /*KEEP*/ | 157 | #if 1 |
158 | /* Experimental */ | 158 | /* Experimental */ |
159 | V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY = 8, | 159 | V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY = 8, |
160 | #endif | 160 | #endif |
161 | V4L2_BUF_TYPE_PRIVATE = 0x80, | 161 | V4L2_BUF_TYPE_PRIVATE = 0x80, |
162 | }; | 162 | }; |
163 | 163 | ||
164 | enum <link linkend="v4l2-ctrl-type">v4l2_ctrl_type</link> { | ||
165 | V4L2_CTRL_TYPE_INTEGER = 1, | ||
166 | V4L2_CTRL_TYPE_BOOLEAN = 2, | ||
167 | V4L2_CTRL_TYPE_MENU = 3, | ||
168 | V4L2_CTRL_TYPE_BUTTON = 4, | ||
169 | V4L2_CTRL_TYPE_INTEGER64 = 5, | ||
170 | V4L2_CTRL_TYPE_CTRL_CLASS = 6, | ||
171 | V4L2_CTRL_TYPE_STRING = 7, | ||
172 | }; | ||
173 | |||
174 | enum <link linkend="v4l2-tuner-type">v4l2_tuner_type</link> { | 164 | enum <link linkend="v4l2-tuner-type">v4l2_tuner_type</link> { |
175 | V4L2_TUNER_RADIO = 1, | 165 | V4L2_TUNER_RADIO = 1, |
176 | V4L2_TUNER_ANALOG_TV = 2, | 166 | V4L2_TUNER_ANALOG_TV = 2, |
@@ -288,6 +278,7 @@ struct <link linkend="v4l2-pix-format">v4l2_pix_format</link> { | |||
288 | #define <link linkend="V4L2-PIX-FMT-RGB565">V4L2_PIX_FMT_RGB565</link> v4l2_fourcc('R', 'G', 'B', 'P') /* 16 RGB-5-6-5 */ | 278 | #define <link linkend="V4L2-PIX-FMT-RGB565">V4L2_PIX_FMT_RGB565</link> v4l2_fourcc('R', 'G', 'B', 'P') /* 16 RGB-5-6-5 */ |
289 | #define <link linkend="V4L2-PIX-FMT-RGB555X">V4L2_PIX_FMT_RGB555X</link> v4l2_fourcc('R', 'G', 'B', 'Q') /* 16 RGB-5-5-5 BE */ | 279 | #define <link linkend="V4L2-PIX-FMT-RGB555X">V4L2_PIX_FMT_RGB555X</link> v4l2_fourcc('R', 'G', 'B', 'Q') /* 16 RGB-5-5-5 BE */ |
290 | #define <link linkend="V4L2-PIX-FMT-RGB565X">V4L2_PIX_FMT_RGB565X</link> v4l2_fourcc('R', 'G', 'B', 'R') /* 16 RGB-5-6-5 BE */ | 280 | #define <link linkend="V4L2-PIX-FMT-RGB565X">V4L2_PIX_FMT_RGB565X</link> v4l2_fourcc('R', 'G', 'B', 'R') /* 16 RGB-5-6-5 BE */ |
281 | #define <link linkend="V4L2-PIX-FMT-BGR666">V4L2_PIX_FMT_BGR666</link> v4l2_fourcc('B', 'G', 'R', 'H') /* 18 BGR-6-6-6 */ | ||
291 | #define <link linkend="V4L2-PIX-FMT-BGR24">V4L2_PIX_FMT_BGR24</link> v4l2_fourcc('B', 'G', 'R', '3') /* 24 BGR-8-8-8 */ | 282 | #define <link linkend="V4L2-PIX-FMT-BGR24">V4L2_PIX_FMT_BGR24</link> v4l2_fourcc('B', 'G', 'R', '3') /* 24 BGR-8-8-8 */ |
292 | #define <link linkend="V4L2-PIX-FMT-RGB24">V4L2_PIX_FMT_RGB24</link> v4l2_fourcc('R', 'G', 'B', '3') /* 24 RGB-8-8-8 */ | 283 | #define <link linkend="V4L2-PIX-FMT-RGB24">V4L2_PIX_FMT_RGB24</link> v4l2_fourcc('R', 'G', 'B', '3') /* 24 RGB-8-8-8 */ |
293 | #define <link linkend="V4L2-PIX-FMT-BGR32">V4L2_PIX_FMT_BGR32</link> v4l2_fourcc('B', 'G', 'R', '4') /* 32 BGR-8-8-8-8 */ | 284 | #define <link linkend="V4L2-PIX-FMT-BGR32">V4L2_PIX_FMT_BGR32</link> v4l2_fourcc('B', 'G', 'R', '4') /* 32 BGR-8-8-8-8 */ |
@@ -295,6 +286,9 @@ struct <link linkend="v4l2-pix-format">v4l2_pix_format</link> { | |||
295 | 286 | ||
296 | /* Grey formats */ | 287 | /* Grey formats */ |
297 | #define <link linkend="V4L2-PIX-FMT-GREY">V4L2_PIX_FMT_GREY</link> v4l2_fourcc('G', 'R', 'E', 'Y') /* 8 Greyscale */ | 288 | #define <link linkend="V4L2-PIX-FMT-GREY">V4L2_PIX_FMT_GREY</link> v4l2_fourcc('G', 'R', 'E', 'Y') /* 8 Greyscale */ |
289 | #define <link linkend="V4L2-PIX-FMT-Y4">V4L2_PIX_FMT_Y4</link> v4l2_fourcc('Y', '0', '4', ' ') /* 4 Greyscale */ | ||
290 | #define <link linkend="V4L2-PIX-FMT-Y6">V4L2_PIX_FMT_Y6</link> v4l2_fourcc('Y', '0', '6', ' ') /* 6 Greyscale */ | ||
291 | #define <link linkend="V4L2-PIX-FMT-Y10">V4L2_PIX_FMT_Y10</link> v4l2_fourcc('Y', '1', '0', ' ') /* 10 Greyscale */ | ||
298 | #define <link linkend="V4L2-PIX-FMT-Y16">V4L2_PIX_FMT_Y16</link> v4l2_fourcc('Y', '1', '6', ' ') /* 16 Greyscale */ | 292 | #define <link linkend="V4L2-PIX-FMT-Y16">V4L2_PIX_FMT_Y16</link> v4l2_fourcc('Y', '1', '6', ' ') /* 16 Greyscale */ |
299 | 293 | ||
300 | /* Palette formats */ | 294 | /* Palette formats */ |
@@ -330,7 +324,11 @@ struct <link linkend="v4l2-pix-format">v4l2_pix_format</link> { | |||
330 | #define <link linkend="V4L2-PIX-FMT-SBGGR8">V4L2_PIX_FMT_SBGGR8</link> v4l2_fourcc('B', 'A', '8', '1') /* 8 BGBG.. GRGR.. */ | 324 | #define <link linkend="V4L2-PIX-FMT-SBGGR8">V4L2_PIX_FMT_SBGGR8</link> v4l2_fourcc('B', 'A', '8', '1') /* 8 BGBG.. GRGR.. */ |
331 | #define <link linkend="V4L2-PIX-FMT-SGBRG8">V4L2_PIX_FMT_SGBRG8</link> v4l2_fourcc('G', 'B', 'R', 'G') /* 8 GBGB.. RGRG.. */ | 325 | #define <link linkend="V4L2-PIX-FMT-SGBRG8">V4L2_PIX_FMT_SGBRG8</link> v4l2_fourcc('G', 'B', 'R', 'G') /* 8 GBGB.. RGRG.. */ |
332 | #define <link linkend="V4L2-PIX-FMT-SGRBG8">V4L2_PIX_FMT_SGRBG8</link> v4l2_fourcc('G', 'R', 'B', 'G') /* 8 GRGR.. BGBG.. */ | 326 | #define <link linkend="V4L2-PIX-FMT-SGRBG8">V4L2_PIX_FMT_SGRBG8</link> v4l2_fourcc('G', 'R', 'B', 'G') /* 8 GRGR.. BGBG.. */ |
333 | #define <link linkend="V4L2-PIX-FMT-SGRBG10">V4L2_PIX_FMT_SGRBG10</link> v4l2_fourcc('B', 'A', '1', '0') /* 10bit raw bayer */ | 327 | #define <link linkend="V4L2-PIX-FMT-SRGGB8">V4L2_PIX_FMT_SRGGB8</link> v4l2_fourcc('R', 'G', 'G', 'B') /* 8 RGRG.. GBGB.. */ |
328 | #define <link linkend="V4L2-PIX-FMT-SBGGR10">V4L2_PIX_FMT_SBGGR10</link> v4l2_fourcc('B', 'G', '1', '0') /* 10 BGBG.. GRGR.. */ | ||
329 | #define <link linkend="V4L2-PIX-FMT-SGBRG10">V4L2_PIX_FMT_SGBRG10</link> v4l2_fourcc('G', 'B', '1', '0') /* 10 GBGB.. RGRG.. */ | ||
330 | #define <link linkend="V4L2-PIX-FMT-SGRBG10">V4L2_PIX_FMT_SGRBG10</link> v4l2_fourcc('B', 'A', '1', '0') /* 10 GRGR.. BGBG.. */ | ||
331 | #define <link linkend="V4L2-PIX-FMT-SRGGB10">V4L2_PIX_FMT_SRGGB10</link> v4l2_fourcc('R', 'G', '1', '0') /* 10 RGRG.. GBGB.. */ | ||
334 | /* 10bit raw bayer DPCM compressed to 8 bits */ | 332 | /* 10bit raw bayer DPCM compressed to 8 bits */ |
335 | #define <link linkend="V4L2-PIX-FMT-SGRBG10DPCM8">V4L2_PIX_FMT_SGRBG10DPCM8</link> v4l2_fourcc('B', 'D', '1', '0') | 333 | #define <link linkend="V4L2-PIX-FMT-SGRBG10DPCM8">V4L2_PIX_FMT_SGRBG10DPCM8</link> v4l2_fourcc('B', 'D', '1', '0') |
336 | /* | 334 | /* |
@@ -346,6 +344,7 @@ struct <link linkend="v4l2-pix-format">v4l2_pix_format</link> { | |||
346 | #define <link linkend="V4L2-PIX-FMT-MPEG">V4L2_PIX_FMT_MPEG</link> v4l2_fourcc('M', 'P', 'E', 'G') /* MPEG-1/2/4 */ | 344 | #define <link linkend="V4L2-PIX-FMT-MPEG">V4L2_PIX_FMT_MPEG</link> v4l2_fourcc('M', 'P', 'E', 'G') /* MPEG-1/2/4 */ |
347 | 345 | ||
348 | /* Vendor-specific formats */ | 346 | /* Vendor-specific formats */ |
347 | #define <link linkend="V4L2-PIX-FMT-CPIA1">V4L2_PIX_FMT_CPIA1</link> v4l2_fourcc('C', 'P', 'I', 'A') /* cpia1 YUV */ | ||
349 | #define <link linkend="V4L2-PIX-FMT-WNVA">V4L2_PIX_FMT_WNVA</link> v4l2_fourcc('W', 'N', 'V', 'A') /* Winnov hw compress */ | 348 | #define <link linkend="V4L2-PIX-FMT-WNVA">V4L2_PIX_FMT_WNVA</link> v4l2_fourcc('W', 'N', 'V', 'A') /* Winnov hw compress */ |
350 | #define <link linkend="V4L2-PIX-FMT-SN9C10X">V4L2_PIX_FMT_SN9C10X</link> v4l2_fourcc('S', '9', '1', '0') /* SN9C10x compression */ | 349 | #define <link linkend="V4L2-PIX-FMT-SN9C10X">V4L2_PIX_FMT_SN9C10X</link> v4l2_fourcc('S', '9', '1', '0') /* SN9C10x compression */ |
351 | #define <link linkend="V4L2-PIX-FMT-SN9C20X-I420">V4L2_PIX_FMT_SN9C20X_I420</link> v4l2_fourcc('S', '9', '2', '0') /* SN9C20x YUV 4:2:0 */ | 350 | #define <link linkend="V4L2-PIX-FMT-SN9C20X-I420">V4L2_PIX_FMT_SN9C20X_I420</link> v4l2_fourcc('S', '9', '2', '0') /* SN9C20x YUV 4:2:0 */ |
@@ -358,12 +357,15 @@ struct <link linkend="v4l2-pix-format">v4l2_pix_format</link> { | |||
358 | #define <link linkend="V4L2-PIX-FMT-SPCA561">V4L2_PIX_FMT_SPCA561</link> v4l2_fourcc('S', '5', '6', '1') /* compressed GBRG bayer */ | 357 | #define <link linkend="V4L2-PIX-FMT-SPCA561">V4L2_PIX_FMT_SPCA561</link> v4l2_fourcc('S', '5', '6', '1') /* compressed GBRG bayer */ |
359 | #define <link linkend="V4L2-PIX-FMT-PAC207">V4L2_PIX_FMT_PAC207</link> v4l2_fourcc('P', '2', '0', '7') /* compressed BGGR bayer */ | 358 | #define <link linkend="V4L2-PIX-FMT-PAC207">V4L2_PIX_FMT_PAC207</link> v4l2_fourcc('P', '2', '0', '7') /* compressed BGGR bayer */ |
360 | #define <link linkend="V4L2-PIX-FMT-MR97310A">V4L2_PIX_FMT_MR97310A</link> v4l2_fourcc('M', '3', '1', '0') /* compressed BGGR bayer */ | 359 | #define <link linkend="V4L2-PIX-FMT-MR97310A">V4L2_PIX_FMT_MR97310A</link> v4l2_fourcc('M', '3', '1', '0') /* compressed BGGR bayer */ |
360 | #define <link linkend="V4L2-PIX-FMT-SN9C2028">V4L2_PIX_FMT_SN9C2028</link> v4l2_fourcc('S', 'O', 'N', 'X') /* compressed GBRG bayer */ | ||
361 | #define <link linkend="V4L2-PIX-FMT-SQ905C">V4L2_PIX_FMT_SQ905C</link> v4l2_fourcc('9', '0', '5', 'C') /* compressed RGGB bayer */ | 361 | #define <link linkend="V4L2-PIX-FMT-SQ905C">V4L2_PIX_FMT_SQ905C</link> v4l2_fourcc('9', '0', '5', 'C') /* compressed RGGB bayer */ |
362 | #define <link linkend="V4L2-PIX-FMT-PJPG">V4L2_PIX_FMT_PJPG</link> v4l2_fourcc('P', 'J', 'P', 'G') /* Pixart 73xx JPEG */ | 362 | #define <link linkend="V4L2-PIX-FMT-PJPG">V4L2_PIX_FMT_PJPG</link> v4l2_fourcc('P', 'J', 'P', 'G') /* Pixart 73xx JPEG */ |
363 | #define <link linkend="V4L2-PIX-FMT-OV511">V4L2_PIX_FMT_OV511</link> v4l2_fourcc('O', '5', '1', '1') /* ov511 JPEG */ | 363 | #define <link linkend="V4L2-PIX-FMT-OV511">V4L2_PIX_FMT_OV511</link> v4l2_fourcc('O', '5', '1', '1') /* ov511 JPEG */ |
364 | #define <link linkend="V4L2-PIX-FMT-OV518">V4L2_PIX_FMT_OV518</link> v4l2_fourcc('O', '5', '1', '8') /* ov518 JPEG */ | 364 | #define <link linkend="V4L2-PIX-FMT-OV518">V4L2_PIX_FMT_OV518</link> v4l2_fourcc('O', '5', '1', '8') /* ov518 JPEG */ |
365 | #define <link linkend="V4L2-PIX-FMT-TM6000">V4L2_PIX_FMT_TM6000</link> v4l2_fourcc('T', 'M', '6', '0') /* tm5600/tm60x0 */ | ||
366 | #define <link linkend="V4L2-PIX-FMT-STV0680">V4L2_PIX_FMT_STV0680</link> v4l2_fourcc('S', '6', '8', '0') /* stv0680 bayer */ | 365 | #define <link linkend="V4L2-PIX-FMT-STV0680">V4L2_PIX_FMT_STV0680</link> v4l2_fourcc('S', '6', '8', '0') /* stv0680 bayer */ |
366 | #define <link linkend="V4L2-PIX-FMT-TM6000">V4L2_PIX_FMT_TM6000</link> v4l2_fourcc('T', 'M', '6', '0') /* tm5600/tm60x0 */ | ||
367 | #define <link linkend="V4L2-PIX-FMT-CIT-YYVYUY">V4L2_PIX_FMT_CIT_YYVYUY</link> v4l2_fourcc('C', 'I', 'T', 'V') /* one line of Y then 1 line of VYUY */ | ||
368 | #define <link linkend="V4L2-PIX-FMT-KONICA420">V4L2_PIX_FMT_KONICA420</link> v4l2_fourcc('K', 'O', 'N', 'I') /* YUV420 planar in blocks of 256 pixels */ | ||
367 | 369 | ||
368 | /* | 370 | /* |
369 | * F O R M A T E N U M E R A T I O N | 371 | * F O R M A T E N U M E R A T I O N |
@@ -380,7 +382,7 @@ struct <link linkend="v4l2-fmtdesc">v4l2_fmtdesc</link> { | |||
380 | #define V4L2_FMT_FLAG_COMPRESSED 0x0001 | 382 | #define V4L2_FMT_FLAG_COMPRESSED 0x0001 |
381 | #define V4L2_FMT_FLAG_EMULATED 0x0002 | 383 | #define V4L2_FMT_FLAG_EMULATED 0x0002 |
382 | 384 | ||
383 | #if 1 /*KEEP*/ | 385 | #if 1 |
384 | /* Experimental Frame Size and frame rate enumeration */ | 386 | /* Experimental Frame Size and frame rate enumeration */ |
385 | /* | 387 | /* |
386 | * F R A M E S I Z E E N U M E R A T I O N | 388 | * F R A M E S I Z E E N U M E R A T I O N |
@@ -544,6 +546,8 @@ struct <link linkend="v4l2-buffer">v4l2_buffer</link> { | |||
544 | #define V4L2_BUF_FLAG_KEYFRAME 0x0008 /* Image is a keyframe (I-frame) */ | 546 | #define V4L2_BUF_FLAG_KEYFRAME 0x0008 /* Image is a keyframe (I-frame) */ |
545 | #define V4L2_BUF_FLAG_PFRAME 0x0010 /* Image is a P-frame */ | 547 | #define V4L2_BUF_FLAG_PFRAME 0x0010 /* Image is a P-frame */ |
546 | #define V4L2_BUF_FLAG_BFRAME 0x0020 /* Image is a B-frame */ | 548 | #define V4L2_BUF_FLAG_BFRAME 0x0020 /* Image is a B-frame */ |
549 | /* Buffer is ready, but the data contained within is corrupted. */ | ||
550 | #define V4L2_BUF_FLAG_ERROR 0x0040 | ||
547 | #define V4L2_BUF_FLAG_TIMECODE 0x0100 /* timecode field is valid */ | 551 | #define V4L2_BUF_FLAG_TIMECODE 0x0100 /* timecode field is valid */ |
548 | #define V4L2_BUF_FLAG_INPUT 0x0200 /* input field is valid */ | 552 | #define V4L2_BUF_FLAG_INPUT 0x0200 /* input field is valid */ |
549 | 553 | ||
@@ -934,6 +938,16 @@ struct <link linkend="v4l2-ext-controls">v4l2_ext_controls</link> { | |||
934 | #define V4L2_CTRL_ID2CLASS(id) ((id) & 0x0fff0000UL) | 938 | #define V4L2_CTRL_ID2CLASS(id) ((id) & 0x0fff0000UL) |
935 | #define V4L2_CTRL_DRIVER_PRIV(id) (((id) & 0xffff) >= 0x1000) | 939 | #define V4L2_CTRL_DRIVER_PRIV(id) (((id) & 0xffff) >= 0x1000) |
936 | 940 | ||
941 | enum <link linkend="v4l2-ctrl-type">v4l2_ctrl_type</link> { | ||
942 | V4L2_CTRL_TYPE_INTEGER = 1, | ||
943 | V4L2_CTRL_TYPE_BOOLEAN = 2, | ||
944 | V4L2_CTRL_TYPE_MENU = 3, | ||
945 | V4L2_CTRL_TYPE_BUTTON = 4, | ||
946 | V4L2_CTRL_TYPE_INTEGER64 = 5, | ||
947 | V4L2_CTRL_TYPE_CTRL_CLASS = 6, | ||
948 | V4L2_CTRL_TYPE_STRING = 7, | ||
949 | }; | ||
950 | |||
937 | /* Used in the VIDIOC_QUERYCTRL ioctl for querying controls */ | 951 | /* Used in the VIDIOC_QUERYCTRL ioctl for querying controls */ |
938 | struct <link linkend="v4l2-queryctrl">v4l2_queryctrl</link> { | 952 | struct <link linkend="v4l2-queryctrl">v4l2_queryctrl</link> { |
939 | __u32 id; | 953 | __u32 id; |
@@ -1018,21 +1032,27 @@ enum <link linkend="v4l2-colorfx">v4l2_colorfx</link> { | |||
1018 | V4L2_COLORFX_NONE = 0, | 1032 | V4L2_COLORFX_NONE = 0, |
1019 | V4L2_COLORFX_BW = 1, | 1033 | V4L2_COLORFX_BW = 1, |
1020 | V4L2_COLORFX_SEPIA = 2, | 1034 | V4L2_COLORFX_SEPIA = 2, |
1021 | V4L2_COLORFX_NEGATIVE = 3, | 1035 | V4L2_COLORFX_NEGATIVE = 3, |
1022 | V4L2_COLORFX_EMBOSS = 4, | 1036 | V4L2_COLORFX_EMBOSS = 4, |
1023 | V4L2_COLORFX_SKETCH = 5, | 1037 | V4L2_COLORFX_SKETCH = 5, |
1024 | V4L2_COLORFX_SKY_BLUE = 6, | 1038 | V4L2_COLORFX_SKY_BLUE = 6, |
1025 | V4L2_COLORFX_GRASS_GREEN = 7, | 1039 | V4L2_COLORFX_GRASS_GREEN = 7, |
1026 | V4L2_COLORFX_SKIN_WHITEN = 8, | 1040 | V4L2_COLORFX_SKIN_WHITEN = 8, |
1027 | V4L2_COLORFX_VIVID = 9. | 1041 | V4L2_COLORFX_VIVID = 9, |
1028 | }; | 1042 | }; |
1029 | #define V4L2_CID_AUTOBRIGHTNESS (V4L2_CID_BASE+32) | 1043 | #define V4L2_CID_AUTOBRIGHTNESS (V4L2_CID_BASE+32) |
1030 | #define V4L2_CID_BAND_STOP_FILTER (V4L2_CID_BASE+33) | 1044 | #define V4L2_CID_BAND_STOP_FILTER (V4L2_CID_BASE+33) |
1031 | 1045 | ||
1032 | #define V4L2_CID_ROTATE (V4L2_CID_BASE+34) | 1046 | #define V4L2_CID_ROTATE (V4L2_CID_BASE+34) |
1033 | #define V4L2_CID_BG_COLOR (V4L2_CID_BASE+35) | 1047 | #define V4L2_CID_BG_COLOR (V4L2_CID_BASE+35) |
1048 | |||
1049 | #define V4L2_CID_CHROMA_GAIN (V4L2_CID_BASE+36) | ||
1050 | |||
1051 | #define V4L2_CID_ILLUMINATORS_1 (V4L2_CID_BASE+37) | ||
1052 | #define V4L2_CID_ILLUMINATORS_2 (V4L2_CID_BASE+38) | ||
1053 | |||
1034 | /* last CID + 1 */ | 1054 | /* last CID + 1 */ |
1035 | #define V4L2_CID_LASTP1 (V4L2_CID_BASE+36) | 1055 | #define V4L2_CID_LASTP1 (V4L2_CID_BASE+39) |
1036 | 1056 | ||
1037 | /* MPEG-class control IDs defined by V4L2 */ | 1057 | /* MPEG-class control IDs defined by V4L2 */ |
1038 | #define V4L2_CID_MPEG_BASE (V4L2_CTRL_CLASS_MPEG | 0x900) | 1058 | #define V4L2_CID_MPEG_BASE (V4L2_CTRL_CLASS_MPEG | 0x900) |
@@ -1349,6 +1369,8 @@ struct <link linkend="v4l2-modulator">v4l2_modulator</link> { | |||
1349 | #define V4L2_TUNER_CAP_SAP 0x0020 | 1369 | #define V4L2_TUNER_CAP_SAP 0x0020 |
1350 | #define V4L2_TUNER_CAP_LANG1 0x0040 | 1370 | #define V4L2_TUNER_CAP_LANG1 0x0040 |
1351 | #define V4L2_TUNER_CAP_RDS 0x0080 | 1371 | #define V4L2_TUNER_CAP_RDS 0x0080 |
1372 | #define V4L2_TUNER_CAP_RDS_BLOCK_IO 0x0100 | ||
1373 | #define V4L2_TUNER_CAP_RDS_CONTROLS 0x0200 | ||
1352 | 1374 | ||
1353 | /* Flags for the 'rxsubchans' field */ | 1375 | /* Flags for the 'rxsubchans' field */ |
1354 | #define V4L2_TUNER_SUB_MONO 0x0001 | 1376 | #define V4L2_TUNER_SUB_MONO 0x0001 |
@@ -1378,7 +1400,8 @@ struct <link linkend="v4l2-hw-freq-seek">v4l2_hw_freq_seek</link> { | |||
1378 | enum <link linkend="v4l2-tuner-type">v4l2_tuner_type</link> type; | 1400 | enum <link linkend="v4l2-tuner-type">v4l2_tuner_type</link> type; |
1379 | __u32 seek_upward; | 1401 | __u32 seek_upward; |
1380 | __u32 wrap_around; | 1402 | __u32 wrap_around; |
1381 | __u32 reserved[8]; | 1403 | __u32 spacing; |
1404 | __u32 reserved[7]; | ||
1382 | }; | 1405 | }; |
1383 | 1406 | ||
1384 | /* | 1407 | /* |
@@ -1433,7 +1456,7 @@ struct <link linkend="v4l2-audioout">v4l2_audioout</link> { | |||
1433 | * | 1456 | * |
1434 | * NOTE: EXPERIMENTAL API | 1457 | * NOTE: EXPERIMENTAL API |
1435 | */ | 1458 | */ |
1436 | #if 1 /*KEEP*/ | 1459 | #if 1 |
1437 | #define V4L2_ENC_IDX_FRAME_I (0) | 1460 | #define V4L2_ENC_IDX_FRAME_I (0) |
1438 | #define V4L2_ENC_IDX_FRAME_P (1) | 1461 | #define V4L2_ENC_IDX_FRAME_P (1) |
1439 | #define V4L2_ENC_IDX_FRAME_B (2) | 1462 | #define V4L2_ENC_IDX_FRAME_B (2) |
@@ -1626,6 +1649,38 @@ struct <link linkend="v4l2-streamparm">v4l2_streamparm</link> { | |||
1626 | }; | 1649 | }; |
1627 | 1650 | ||
1628 | /* | 1651 | /* |
1652 | * E V E N T S | ||
1653 | */ | ||
1654 | |||
1655 | #define V4L2_EVENT_ALL 0 | ||
1656 | #define V4L2_EVENT_VSYNC 1 | ||
1657 | #define V4L2_EVENT_EOS 2 | ||
1658 | #define V4L2_EVENT_PRIVATE_START 0x08000000 | ||
1659 | |||
1660 | /* Payload for V4L2_EVENT_VSYNC */ | ||
1661 | struct <link linkend="v4l2-event-vsync">v4l2_event_vsync</link> { | ||
1662 | /* Can be V4L2_FIELD_ANY, _NONE, _TOP or _BOTTOM */ | ||
1663 | __u8 field; | ||
1664 | } __attribute__ ((packed)); | ||
1665 | |||
1666 | struct <link linkend="v4l2-event">v4l2_event</link> { | ||
1667 | __u32 type; | ||
1668 | union { | ||
1669 | struct <link linkend="v4l2-event-vsync">v4l2_event_vsync</link> vsync; | ||
1670 | __u8 data[64]; | ||
1671 | } u; | ||
1672 | __u32 pending; | ||
1673 | __u32 sequence; | ||
1674 | struct timespec timestamp; | ||
1675 | __u32 reserved[9]; | ||
1676 | }; | ||
1677 | |||
1678 | struct <link linkend="v4l2-event-subscription">v4l2_event_subscription</link> { | ||
1679 | __u32 type; | ||
1680 | __u32 reserved[7]; | ||
1681 | }; | ||
1682 | |||
1683 | /* | ||
1629 | * A D V A N C E D D E B U G G I N G | 1684 | * A D V A N C E D D E B U G G I N G |
1630 | * | 1685 | * |
1631 | * NOTE: EXPERIMENTAL API, NEVER RELY ON THIS IN APPLICATIONS! | 1686 | * NOTE: EXPERIMENTAL API, NEVER RELY ON THIS IN APPLICATIONS! |
@@ -1720,7 +1775,7 @@ struct <link linkend="v4l2-dbg-chip-ident">v4l2_dbg_chip_ident</link> { | |||
1720 | #define VIDIOC_G_EXT_CTRLS _IOWR('V', 71, struct <link linkend="v4l2-ext-controls">v4l2_ext_controls</link>) | 1775 | #define VIDIOC_G_EXT_CTRLS _IOWR('V', 71, struct <link linkend="v4l2-ext-controls">v4l2_ext_controls</link>) |
1721 | #define VIDIOC_S_EXT_CTRLS _IOWR('V', 72, struct <link linkend="v4l2-ext-controls">v4l2_ext_controls</link>) | 1776 | #define VIDIOC_S_EXT_CTRLS _IOWR('V', 72, struct <link linkend="v4l2-ext-controls">v4l2_ext_controls</link>) |
1722 | #define VIDIOC_TRY_EXT_CTRLS _IOWR('V', 73, struct <link linkend="v4l2-ext-controls">v4l2_ext_controls</link>) | 1777 | #define VIDIOC_TRY_EXT_CTRLS _IOWR('V', 73, struct <link linkend="v4l2-ext-controls">v4l2_ext_controls</link>) |
1723 | #if 1 /*KEEP*/ | 1778 | #if 1 |
1724 | #define VIDIOC_ENUM_FRAMESIZES _IOWR('V', 74, struct <link linkend="v4l2-frmsizeenum">v4l2_frmsizeenum</link>) | 1779 | #define VIDIOC_ENUM_FRAMESIZES _IOWR('V', 74, struct <link linkend="v4l2-frmsizeenum">v4l2_frmsizeenum</link>) |
1725 | #define VIDIOC_ENUM_FRAMEINTERVALS _IOWR('V', 75, struct <link linkend="v4l2-frmivalenum">v4l2_frmivalenum</link>) | 1780 | #define VIDIOC_ENUM_FRAMEINTERVALS _IOWR('V', 75, struct <link linkend="v4l2-frmivalenum">v4l2_frmivalenum</link>) |
1726 | #define VIDIOC_G_ENC_INDEX _IOR('V', 76, struct <link linkend="v4l2-enc-idx">v4l2_enc_idx</link>) | 1781 | #define VIDIOC_G_ENC_INDEX _IOR('V', 76, struct <link linkend="v4l2-enc-idx">v4l2_enc_idx</link>) |
@@ -1728,7 +1783,7 @@ struct <link linkend="v4l2-dbg-chip-ident">v4l2_dbg_chip_ident</link> { | |||
1728 | #define VIDIOC_TRY_ENCODER_CMD _IOWR('V', 78, struct <link linkend="v4l2-encoder-cmd">v4l2_encoder_cmd</link>) | 1783 | #define VIDIOC_TRY_ENCODER_CMD _IOWR('V', 78, struct <link linkend="v4l2-encoder-cmd">v4l2_encoder_cmd</link>) |
1729 | #endif | 1784 | #endif |
1730 | 1785 | ||
1731 | #if 1 /*KEEP*/ | 1786 | #if 1 |
1732 | /* Experimental, meant for debugging, testing and internal use. | 1787 | /* Experimental, meant for debugging, testing and internal use. |
1733 | Only implemented if CONFIG_VIDEO_ADV_DEBUG is defined. | 1788 | Only implemented if CONFIG_VIDEO_ADV_DEBUG is defined. |
1734 | You must be root to use these ioctls. Never use these in applications! */ | 1789 | You must be root to use these ioctls. Never use these in applications! */ |
@@ -1747,6 +1802,9 @@ struct <link linkend="v4l2-dbg-chip-ident">v4l2_dbg_chip_ident</link> { | |||
1747 | #define VIDIOC_QUERY_DV_PRESET _IOR('V', 86, struct <link linkend="v4l2-dv-preset">v4l2_dv_preset</link>) | 1802 | #define VIDIOC_QUERY_DV_PRESET _IOR('V', 86, struct <link linkend="v4l2-dv-preset">v4l2_dv_preset</link>) |
1748 | #define VIDIOC_S_DV_TIMINGS _IOWR('V', 87, struct <link linkend="v4l2-dv-timings">v4l2_dv_timings</link>) | 1803 | #define VIDIOC_S_DV_TIMINGS _IOWR('V', 87, struct <link linkend="v4l2-dv-timings">v4l2_dv_timings</link>) |
1749 | #define VIDIOC_G_DV_TIMINGS _IOWR('V', 88, struct <link linkend="v4l2-dv-timings">v4l2_dv_timings</link>) | 1804 | #define VIDIOC_G_DV_TIMINGS _IOWR('V', 88, struct <link linkend="v4l2-dv-timings">v4l2_dv_timings</link>) |
1805 | #define VIDIOC_DQEVENT _IOR('V', 89, struct <link linkend="v4l2-event">v4l2_event</link>) | ||
1806 | #define VIDIOC_SUBSCRIBE_EVENT _IOW('V', 90, struct <link linkend="v4l2-event-subscription">v4l2_event_subscription</link>) | ||
1807 | #define VIDIOC_UNSUBSCRIBE_EVENT _IOW('V', 91, struct <link linkend="v4l2-event-subscription">v4l2_event_subscription</link>) | ||
1750 | 1808 | ||
1751 | /* Reminder: when adding new ioctls please add support for them to | 1809 | /* Reminder: when adding new ioctls please add support for them to |
1752 | drivers/media/video/v4l2-compat-ioctl32.c as well! */ | 1810 | drivers/media/video/v4l2-compat-ioctl32.c as well! */ |
diff --git a/Documentation/DocBook/v4l/vidioc-g-dv-preset.xml b/Documentation/DocBook/v4l/vidioc-g-dv-preset.xml index 3c6784e132f3..d733721a7519 100644 --- a/Documentation/DocBook/v4l/vidioc-g-dv-preset.xml +++ b/Documentation/DocBook/v4l/vidioc-g-dv-preset.xml | |||
@@ -16,8 +16,7 @@ | |||
16 | <funcdef>int <function>ioctl</function></funcdef> | 16 | <funcdef>int <function>ioctl</function></funcdef> |
17 | <paramdef>int <parameter>fd</parameter></paramdef> | 17 | <paramdef>int <parameter>fd</parameter></paramdef> |
18 | <paramdef>int <parameter>request</parameter></paramdef> | 18 | <paramdef>int <parameter>request</parameter></paramdef> |
19 | <paramdef>&v4l2-dv-preset; | 19 | <paramdef>struct v4l2_dv_preset *<parameter>argp</parameter></paramdef> |
20 | *<parameter>argp</parameter></paramdef> | ||
21 | </funcprototype> | 20 | </funcprototype> |
22 | </funcsynopsis> | 21 | </funcsynopsis> |
23 | </refsynopsisdiv> | 22 | </refsynopsisdiv> |
diff --git a/Documentation/DocBook/v4l/vidioc-g-dv-timings.xml b/Documentation/DocBook/v4l/vidioc-g-dv-timings.xml index ecc19576bb8f..d5ec6abf0ce2 100644 --- a/Documentation/DocBook/v4l/vidioc-g-dv-timings.xml +++ b/Documentation/DocBook/v4l/vidioc-g-dv-timings.xml | |||
@@ -16,8 +16,7 @@ | |||
16 | <funcdef>int <function>ioctl</function></funcdef> | 16 | <funcdef>int <function>ioctl</function></funcdef> |
17 | <paramdef>int <parameter>fd</parameter></paramdef> | 17 | <paramdef>int <parameter>fd</parameter></paramdef> |
18 | <paramdef>int <parameter>request</parameter></paramdef> | 18 | <paramdef>int <parameter>request</parameter></paramdef> |
19 | <paramdef>&v4l2-dv-timings; | 19 | <paramdef>struct v4l2_dv_timings *<parameter>argp</parameter></paramdef> |
20 | *<parameter>argp</parameter></paramdef> | ||
21 | </funcprototype> | 20 | </funcprototype> |
22 | </funcsynopsis> | 21 | </funcsynopsis> |
23 | </refsynopsisdiv> | 22 | </refsynopsisdiv> |
diff --git a/Documentation/DocBook/v4l/vidioc-query-dv-preset.xml b/Documentation/DocBook/v4l/vidioc-query-dv-preset.xml index 402229ee06f6..d272f7ab91b8 100644 --- a/Documentation/DocBook/v4l/vidioc-query-dv-preset.xml +++ b/Documentation/DocBook/v4l/vidioc-query-dv-preset.xml | |||
@@ -16,7 +16,7 @@ input</refpurpose> | |||
16 | <funcdef>int <function>ioctl</function></funcdef> | 16 | <funcdef>int <function>ioctl</function></funcdef> |
17 | <paramdef>int <parameter>fd</parameter></paramdef> | 17 | <paramdef>int <parameter>fd</parameter></paramdef> |
18 | <paramdef>int <parameter>request</parameter></paramdef> | 18 | <paramdef>int <parameter>request</parameter></paramdef> |
19 | <paramdef>&v4l2-dv-preset; *<parameter>argp</parameter></paramdef> | 19 | <paramdef>struct v4l2_dv_preset *<parameter>argp</parameter></paramdef> |
20 | </funcprototype> | 20 | </funcprototype> |
21 | </funcsynopsis> | 21 | </funcsynopsis> |
22 | </refsynopsisdiv> | 22 | </refsynopsisdiv> |
diff --git a/Documentation/DocBook/v4l/vidioc-querycap.xml b/Documentation/DocBook/v4l/vidioc-querycap.xml index 6ab7e25b31b6..d499da93a450 100644 --- a/Documentation/DocBook/v4l/vidioc-querycap.xml +++ b/Documentation/DocBook/v4l/vidioc-querycap.xml | |||
@@ -184,7 +184,7 @@ data.</entry> | |||
184 | <row> | 184 | <row> |
185 | <entry><constant>V4L2_CAP_RDS_CAPTURE</constant></entry> | 185 | <entry><constant>V4L2_CAP_RDS_CAPTURE</constant></entry> |
186 | <entry>0x00000100</entry> | 186 | <entry>0x00000100</entry> |
187 | <entry>The device supports the <link linkend="rds">RDS</link> interface.</entry> | 187 | <entry>The device supports the <link linkend="rds">RDS</link> capture interface.</entry> |
188 | </row> | 188 | </row> |
189 | <row> | 189 | <row> |
190 | <entry><constant>V4L2_CAP_VIDEO_OUTPUT_OVERLAY</constant></entry> | 190 | <entry><constant>V4L2_CAP_VIDEO_OUTPUT_OVERLAY</constant></entry> |
@@ -206,6 +206,11 @@ driver capabilities.</para></footnote></entry> | |||
206 | hardware frequency seeking.</entry> | 206 | hardware frequency seeking.</entry> |
207 | </row> | 207 | </row> |
208 | <row> | 208 | <row> |
209 | <entry><constant>V4L2_CAP_RDS_OUTPUT</constant></entry> | ||
210 | <entry>0x00000800</entry> | ||
211 | <entry>The device supports the <link linkend="rds">RDS</link> output interface.</entry> | ||
212 | </row> | ||
213 | <row> | ||
209 | <entry><constant>V4L2_CAP_TUNER</constant></entry> | 214 | <entry><constant>V4L2_CAP_TUNER</constant></entry> |
210 | <entry>0x00010000</entry> | 215 | <entry>0x00010000</entry> |
211 | <entry>The device has some sort of tuner to | 216 | <entry>The device has some sort of tuner to |
diff --git a/Documentation/DocBook/v4l/vidioc-queryctrl.xml b/Documentation/DocBook/v4l/vidioc-queryctrl.xml index 8e0e055ac934..0d5e8283cf32 100644 --- a/Documentation/DocBook/v4l/vidioc-queryctrl.xml +++ b/Documentation/DocBook/v4l/vidioc-queryctrl.xml | |||
@@ -103,8 +103,12 @@ structure. The driver fills the rest of the structure or returns an | |||
103 | <structfield>index</structfield> is invalid. Menu items are enumerated | 103 | <structfield>index</structfield> is invalid. Menu items are enumerated |
104 | by calling <constant>VIDIOC_QUERYMENU</constant> with successive | 104 | by calling <constant>VIDIOC_QUERYMENU</constant> with successive |
105 | <structfield>index</structfield> values from &v4l2-queryctrl; | 105 | <structfield>index</structfield> values from &v4l2-queryctrl; |
106 | <structfield>minimum</structfield> (0) to | 106 | <structfield>minimum</structfield> to |
107 | <structfield>maximum</structfield>, inclusive.</para> | 107 | <structfield>maximum</structfield>, inclusive. Note that it is possible |
108 | for <constant>VIDIOC_QUERYMENU</constant> to return an &EINVAL; for some | ||
109 | indices between <structfield>minimum</structfield> and <structfield>maximum</structfield>. | ||
110 | In that case that particular menu item is not supported by this driver. Also note that | ||
111 | the <structfield>minimum</structfield> value is not necessarily 0.</para> | ||
108 | 112 | ||
109 | <para>See also the examples in <xref linkend="control" />.</para> | 113 | <para>See also the examples in <xref linkend="control" />.</para> |
110 | 114 | ||
@@ -139,7 +143,7 @@ string. This information is intended for the user.</entry> | |||
139 | <entry><structfield>minimum</structfield></entry> | 143 | <entry><structfield>minimum</structfield></entry> |
140 | <entry>Minimum value, inclusive. This field gives a lower | 144 | <entry>Minimum value, inclusive. This field gives a lower |
141 | bound for <constant>V4L2_CTRL_TYPE_INTEGER</constant> controls and the | 145 | bound for <constant>V4L2_CTRL_TYPE_INTEGER</constant> controls and the |
142 | lowest valid index (always 0) for <constant>V4L2_CTRL_TYPE_MENU</constant> controls. | 146 | lowest valid index for <constant>V4L2_CTRL_TYPE_MENU</constant> controls. |
143 | For <constant>V4L2_CTRL_TYPE_STRING</constant> controls the minimum value | 147 | For <constant>V4L2_CTRL_TYPE_STRING</constant> controls the minimum value |
144 | gives the minimum length of the string. This length <emphasis>does not include the terminating | 148 | gives the minimum length of the string. This length <emphasis>does not include the terminating |
145 | zero</emphasis>. It may not be valid for any other type of control, including | 149 | zero</emphasis>. It may not be valid for any other type of control, including |
@@ -279,7 +283,7 @@ values which are actually different on the hardware.</entry> | |||
279 | </row> | 283 | </row> |
280 | <row> | 284 | <row> |
281 | <entry><constant>V4L2_CTRL_TYPE_MENU</constant></entry> | 285 | <entry><constant>V4L2_CTRL_TYPE_MENU</constant></entry> |
282 | <entry>0</entry> | 286 | <entry>≥ 0</entry> |
283 | <entry>1</entry> | 287 | <entry>1</entry> |
284 | <entry>N-1</entry> | 288 | <entry>N-1</entry> |
285 | <entry>The control has a menu of N choices. The names of | 289 | <entry>The control has a menu of N choices. The names of |
@@ -405,8 +409,10 @@ writing a value will cause the device to carry out a given action | |||
405 | <term><errorcode>EINVAL</errorcode></term> | 409 | <term><errorcode>EINVAL</errorcode></term> |
406 | <listitem> | 410 | <listitem> |
407 | <para>The &v4l2-queryctrl; <structfield>id</structfield> | 411 | <para>The &v4l2-queryctrl; <structfield>id</structfield> |
408 | is invalid. The &v4l2-querymenu; <structfield>id</structfield> or | 412 | is invalid. The &v4l2-querymenu; <structfield>id</structfield> is |
409 | <structfield>index</structfield> is invalid.</para> | 413 | invalid or <structfield>index</structfield> is out of range (less than |
414 | <structfield>minimum</structfield> or greater than <structfield>maximum</structfield>) | ||
415 | or this particular menu item is not supported by the driver.</para> | ||
410 | </listitem> | 416 | </listitem> |
411 | </varlistentry> | 417 | </varlistentry> |
412 | <varlistentry> | 418 | <varlistentry> |
diff --git a/Documentation/DocBook/v4l/vidioc-s-hw-freq-seek.xml b/Documentation/DocBook/v4l/vidioc-s-hw-freq-seek.xml index 14b3ec7ed75b..c30dcc4232c0 100644 --- a/Documentation/DocBook/v4l/vidioc-s-hw-freq-seek.xml +++ b/Documentation/DocBook/v4l/vidioc-s-hw-freq-seek.xml | |||
@@ -51,7 +51,8 @@ | |||
51 | 51 | ||
52 | <para>Start a hardware frequency seek from the current frequency. | 52 | <para>Start a hardware frequency seek from the current frequency. |
53 | To do this applications initialize the <structfield>tuner</structfield>, | 53 | To do this applications initialize the <structfield>tuner</structfield>, |
54 | <structfield>type</structfield>, <structfield>seek_upward</structfield> and | 54 | <structfield>type</structfield>, <structfield>seek_upward</structfield>, |
55 | <structfield>spacing</structfield> and | ||
55 | <structfield>wrap_around</structfield> fields, and zero out the | 56 | <structfield>wrap_around</structfield> fields, and zero out the |
56 | <structfield>reserved</structfield> array of a &v4l2-hw-freq-seek; and | 57 | <structfield>reserved</structfield> array of a &v4l2-hw-freq-seek; and |
57 | call the <constant>VIDIOC_S_HW_FREQ_SEEK</constant> ioctl with a pointer | 58 | call the <constant>VIDIOC_S_HW_FREQ_SEEK</constant> ioctl with a pointer |
@@ -89,7 +90,12 @@ field and the &v4l2-tuner; <structfield>index</structfield> field.</entry> | |||
89 | </row> | 90 | </row> |
90 | <row> | 91 | <row> |
91 | <entry>__u32</entry> | 92 | <entry>__u32</entry> |
92 | <entry><structfield>reserved</structfield>[8]</entry> | 93 | <entry><structfield>spacing</structfield></entry> |
94 | <entry>If non-zero, defines the hardware seek resolution in Hz. The driver selects the nearest value that is supported by the device. If spacing is zero a reasonable default value is used.</entry> | ||
95 | </row> | ||
96 | <row> | ||
97 | <entry>__u32</entry> | ||
98 | <entry><structfield>reserved</structfield>[7]</entry> | ||
93 | <entry>Reserved for future extensions. Drivers and | 99 | <entry>Reserved for future extensions. Drivers and |
94 | applications must set the array to zero.</entry> | 100 | applications must set the array to zero.</entry> |
95 | </row> | 101 | </row> |
diff --git a/Documentation/devices.txt b/Documentation/devices.txt index 170cc1e7e135..eccffe715229 100644 --- a/Documentation/devices.txt +++ b/Documentation/devices.txt | |||
@@ -1496,9 +1496,6 @@ Your cooperation is appreciated. | |||
1496 | 64 = /dev/radio0 Radio device | 1496 | 64 = /dev/radio0 Radio device |
1497 | ... | 1497 | ... |
1498 | 127 = /dev/radio63 Radio device | 1498 | 127 = /dev/radio63 Radio device |
1499 | 192 = /dev/vtx0 Teletext device | ||
1500 | ... | ||
1501 | 223 = /dev/vtx31 Teletext device | ||
1502 | 224 = /dev/vbi0 Vertical blank interrupt | 1499 | 224 = /dev/vbi0 Vertical blank interrupt |
1503 | ... | 1500 | ... |
1504 | 255 = /dev/vbi31 Vertical blank interrupt | 1501 | 255 = /dev/vbi31 Vertical blank interrupt |
diff --git a/Documentation/dvb/get_dvb_firmware b/Documentation/dvb/get_dvb_firmware index 350959f4e41b..59690de8ebfe 100644 --- a/Documentation/dvb/get_dvb_firmware +++ b/Documentation/dvb/get_dvb_firmware | |||
@@ -26,7 +26,8 @@ use IO::Handle; | |||
26 | "dec3000s", "vp7041", "dibusb", "nxt2002", "nxt2004", | 26 | "dec3000s", "vp7041", "dibusb", "nxt2002", "nxt2004", |
27 | "or51211", "or51132_qam", "or51132_vsb", "bluebird", | 27 | "or51211", "or51132_qam", "or51132_vsb", "bluebird", |
28 | "opera1", "cx231xx", "cx18", "cx23885", "pvrusb2", "mpc718", | 28 | "opera1", "cx231xx", "cx18", "cx23885", "pvrusb2", "mpc718", |
29 | "af9015", "ngene", "az6027"); | 29 | "af9015", "ngene", "az6027", "lme2510_lg", "lme2510c_s7395", |
30 | "lme2510c_s7395_old"); | ||
30 | 31 | ||
31 | # Check args | 32 | # Check args |
32 | syntax() if (scalar(@ARGV) != 1); | 33 | syntax() if (scalar(@ARGV) != 1); |
@@ -584,6 +585,49 @@ sub az6027{ | |||
584 | 585 | ||
585 | $firmware; | 586 | $firmware; |
586 | } | 587 | } |
588 | |||
589 | sub lme2510_lg { | ||
590 | my $sourcefile = "LMEBDA_DVBS.sys"; | ||
591 | my $hash = "fc6017ad01e79890a97ec53bea157ed2"; | ||
592 | my $outfile = "dvb-usb-lme2510-lg.fw"; | ||
593 | my $hasho = "caa065d5fdbd2c09ad57b399bbf55cad"; | ||
594 | |||
595 | checkstandard(); | ||
596 | |||
597 | verify($sourcefile, $hash); | ||
598 | extract($sourcefile, 4168, 3841, $outfile); | ||
599 | verify($outfile, $hasho); | ||
600 | $outfile; | ||
601 | } | ||
602 | |||
603 | sub lme2510c_s7395 { | ||
604 | my $sourcefile = "US2A0D.sys"; | ||
605 | my $hash = "b0155a8083fb822a3bd47bc360e74601"; | ||
606 | my $outfile = "dvb-usb-lme2510c-s7395.fw"; | ||
607 | my $hasho = "3a3cf1aeebd17b6ddc04cebe131e94cf"; | ||
608 | |||
609 | checkstandard(); | ||
610 | |||
611 | verify($sourcefile, $hash); | ||
612 | extract($sourcefile, 37248, 3720, $outfile); | ||
613 | verify($outfile, $hasho); | ||
614 | $outfile; | ||
615 | } | ||
616 | |||
617 | sub lme2510c_s7395_old { | ||
618 | my $sourcefile = "LMEBDA_DVBS7395C.sys"; | ||
619 | my $hash = "7572ae0eb9cdf91baabd7c0ba9e09b31"; | ||
620 | my $outfile = "dvb-usb-lme2510c-s7395.fw"; | ||
621 | my $hasho = "90430c5b435eb5c6f88fd44a9d950674"; | ||
622 | |||
623 | checkstandard(); | ||
624 | |||
625 | verify($sourcefile, $hash); | ||
626 | extract($sourcefile, 4208, 3881, $outfile); | ||
627 | verify($outfile, $hasho); | ||
628 | $outfile; | ||
629 | } | ||
630 | |||
587 | # --------------------------------------------------------------- | 631 | # --------------------------------------------------------------- |
588 | # Utilities | 632 | # Utilities |
589 | 633 | ||
diff --git a/Documentation/dvb/lmedm04.txt b/Documentation/dvb/lmedm04.txt new file mode 100644 index 000000000000..e175784b89bf --- /dev/null +++ b/Documentation/dvb/lmedm04.txt | |||
@@ -0,0 +1,58 @@ | |||
1 | To extract firmware for the DM04/QQBOX you need to copy the | ||
2 | following file(s) to this directory. | ||
3 | |||
4 | for DM04+/QQBOX LME2510C (Sharp 7395 Tuner) | ||
5 | ------------------------------------------- | ||
6 | |||
7 | The Sharp 7395 driver can be found in windows/system32/driver | ||
8 | |||
9 | US2A0D.sys (dated 17 Mar 2009) | ||
10 | |||
11 | |||
12 | and run | ||
13 | ./get_dvb_firmware lme2510c_s7395 | ||
14 | |||
15 | will produce | ||
16 | dvb-usb-lme2510c-s7395.fw | ||
17 | |||
18 | An alternative but older firmware can be found on the driver | ||
19 | disk DVB-S_EN_3.5A in BDADriver/driver | ||
20 | |||
21 | LMEBDA_DVBS7395C.sys (dated 18 Jan 2008) | ||
22 | |||
23 | and run | ||
24 | ./get_dvb_firmware lme2510c_s7395_old | ||
25 | |||
26 | will produce | ||
27 | dvb-usb-lme2510c-s7395.fw | ||
28 | |||
29 | -------------------------------------------------------------------- | ||
30 | |||
31 | The LG firmware can be found on the driver | ||
32 | disk DM04+_5.1A[LG] in BDADriver/driver | ||
33 | |||
34 | for DM04 LME2510 (LG Tuner) | ||
35 | --------------------------- | ||
36 | |||
37 | LMEBDA_DVBS.sys (dated 13 Nov 2007) | ||
38 | |||
39 | and run | ||
40 | ./get_dvb_firmware lme2510_lg | ||
41 | |||
42 | will produce | ||
43 | dvb-usb-lme2510-lg.fw | ||
44 | |||
45 | |||
46 | Other LG firmware can be extracted manually from US280D.sys | ||
47 | only found in windows/system32/driver. | ||
48 | |||
49 | dd if=US280D.sys ibs=1 skip=42616 count=3668 of=dvb-usb-lme2510-lg.fw | ||
50 | |||
51 | for DM04 LME2510C (LG Tuner) | ||
52 | --------------------------- | ||
53 | |||
54 | dd if=US280D.sys ibs=1 skip=35200 count=3850 of=dvb-usb-lme2510c-lg.fw | ||
55 | |||
56 | --------------------------------------------------------------------- | ||
57 | |||
58 | Copy the firmware file(s) to /lib/firmware | ||
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt index f3da8c0a3af2..d8f36f984faa 100644 --- a/Documentation/feature-removal-schedule.txt +++ b/Documentation/feature-removal-schedule.txt | |||
@@ -98,7 +98,7 @@ Who: Pavel Machek <pavel@ucw.cz> | |||
98 | --------------------------- | 98 | --------------------------- |
99 | 99 | ||
100 | What: Video4Linux API 1 ioctls and from Video devices. | 100 | What: Video4Linux API 1 ioctls and from Video devices. |
101 | When: July 2009 | 101 | When: kernel 2.6.38 |
102 | Files: include/linux/videodev.h | 102 | Files: include/linux/videodev.h |
103 | Check: include/linux/videodev.h | 103 | Check: include/linux/videodev.h |
104 | Why: V4L1 AP1 was replaced by V4L2 API during migration from 2.4 to 2.6 | 104 | Why: V4L1 AP1 was replaced by V4L2 API during migration from 2.4 to 2.6 |
@@ -116,6 +116,21 @@ Who: Mauro Carvalho Chehab <mchehab@infradead.org> | |||
116 | 116 | ||
117 | --------------------------- | 117 | --------------------------- |
118 | 118 | ||
119 | What: Video4Linux obsolete drivers using V4L1 API | ||
120 | When: kernel 2.6.38 | ||
121 | Files: drivers/staging/cpia/* drivers/staging/stradis/* | ||
122 | Check: drivers/staging/cpia/cpia.c drivers/staging/stradis/stradis.c | ||
123 | Why: There are some drivers still using V4L1 API, despite all efforts we've done | ||
124 | to migrate. Those drivers are for obsolete hardware that the old maintainer | ||
125 | didn't care (or not have the hardware anymore), and that no other developer | ||
126 | could find any hardware to buy. They probably have no practical usage today, | ||
127 | and people with such old hardware could probably keep using an older version | ||
128 | of the kernel. Those drivers will be moved to staging on 2.6.37 and, if nobody | ||
129 | care enough to port and test them with V4L2 API, they'll be removed on 2.6.38. | ||
130 | Who: Mauro Carvalho Chehab <mchehab@infradead.org> | ||
131 | |||
132 | --------------------------- | ||
133 | |||
119 | What: sys_sysctl | 134 | What: sys_sysctl |
120 | When: September 2010 | 135 | When: September 2010 |
121 | Option: CONFIG_SYSCTL_SYSCALL | 136 | Option: CONFIG_SYSCTL_SYSCALL |
@@ -470,29 +485,6 @@ When: April 2011 | |||
470 | Why: Superseded by xt_CT | 485 | Why: Superseded by xt_CT |
471 | Who: Netfilter developer team <netfilter-devel@vger.kernel.org> | 486 | Who: Netfilter developer team <netfilter-devel@vger.kernel.org> |
472 | 487 | ||
473 | --------------------------- | ||
474 | |||
475 | What: video4linux /dev/vtx teletext API support | ||
476 | When: 2.6.35 | ||
477 | Files: drivers/media/video/saa5246a.c drivers/media/video/saa5249.c | ||
478 | include/linux/videotext.h | ||
479 | Why: The vtx device nodes have been superseded by vbi device nodes | ||
480 | for many years. No applications exist that use the vtx support. | ||
481 | Of the two i2c drivers that actually support this API the saa5249 | ||
482 | has been impossible to use for a year now and no known hardware | ||
483 | that supports this device exists. The saa5246a is theoretically | ||
484 | supported by the old mxb boards, but it never actually worked. | ||
485 | |||
486 | In summary: there is no hardware that can use this API and there | ||
487 | are no applications actually implementing this API. | ||
488 | |||
489 | The vtx support still reserves minors 192-223 and we would really | ||
490 | like to reuse those for upcoming new functionality. In the unlikely | ||
491 | event that new hardware appears that wants to use the functionality | ||
492 | provided by the vtx API, then that functionality should be build | ||
493 | around the sliced VBI API instead. | ||
494 | Who: Hans Verkuil <hverkuil@xs4all.nl> | ||
495 | |||
496 | ---------------------------- | 488 | ---------------------------- |
497 | 489 | ||
498 | What: IRQF_DISABLED | 490 | What: IRQF_DISABLED |
diff --git a/Documentation/ioctl/ioctl-number.txt b/Documentation/ioctl/ioctl-number.txt index 33223ff121d8..10f5af8b73f7 100644 --- a/Documentation/ioctl/ioctl-number.txt +++ b/Documentation/ioctl/ioctl-number.txt | |||
@@ -278,7 +278,6 @@ Code Seq#(hex) Include File Comments | |||
278 | <mailto:oe@port.de> | 278 | <mailto:oe@port.de> |
279 | 'z' 10-4F drivers/s390/crypto/zcrypt_api.h conflict! | 279 | 'z' 10-4F drivers/s390/crypto/zcrypt_api.h conflict! |
280 | 0x80 00-1F linux/fb.h | 280 | 0x80 00-1F linux/fb.h |
281 | 0x81 00-1F linux/videotext.h | ||
282 | 0x88 00-3F media/ovcamchip.h | 281 | 0x88 00-3F media/ovcamchip.h |
283 | 0x89 00-06 arch/x86/include/asm/sockios.h | 282 | 0x89 00-06 arch/x86/include/asm/sockios.h |
284 | 0x89 0B-DF linux/sockios.h | 283 | 0x89 0B-DF linux/sockios.h |
diff --git a/Documentation/video4linux/CARDLIST.cx88 b/Documentation/video4linux/CARDLIST.cx88 index f2510541373b..42517d9121de 100644 --- a/Documentation/video4linux/CARDLIST.cx88 +++ b/Documentation/video4linux/CARDLIST.cx88 | |||
@@ -83,3 +83,4 @@ | |||
83 | 82 -> WinFast DTV2000 H rev. J [107d:6f2b] | 83 | 82 -> WinFast DTV2000 H rev. J [107d:6f2b] |
84 | 83 -> Prof 7301 DVB-S/S2 [b034:3034] | 84 | 83 -> Prof 7301 DVB-S/S2 [b034:3034] |
85 | 84 -> Samsung SMT 7020 DVB-S [18ac:dc00,18ac:dccd] | 85 | 84 -> Samsung SMT 7020 DVB-S [18ac:dc00,18ac:dccd] |
86 | 85 -> Twinhan VP-1027 DVB-S [1822:0023] | ||
diff --git a/Documentation/video4linux/CARDLIST.em28xx b/Documentation/video4linux/CARDLIST.em28xx index 5c568757c301..ac2616a62fc3 100644 --- a/Documentation/video4linux/CARDLIST.em28xx +++ b/Documentation/video4linux/CARDLIST.em28xx | |||
@@ -31,6 +31,7 @@ | |||
31 | 30 -> Videology 20K14XUSB USB2.0 (em2820/em2840) | 31 | 30 -> Videology 20K14XUSB USB2.0 (em2820/em2840) |
32 | 31 -> Usbgear VD204v9 (em2821) | 32 | 31 -> Usbgear VD204v9 (em2821) |
33 | 32 -> Supercomp USB 2.0 TV (em2821) | 33 | 32 -> Supercomp USB 2.0 TV (em2821) |
34 | 33 -> Elgato Video Capture (em2860) [0fd9:0033] | ||
34 | 34 -> Terratec Cinergy A Hybrid XS (em2860) [0ccd:004f] | 35 | 34 -> Terratec Cinergy A Hybrid XS (em2860) [0ccd:004f] |
35 | 35 -> Typhoon DVD Maker (em2860) | 36 | 35 -> Typhoon DVD Maker (em2860) |
36 | 36 -> NetGMBH Cam (em2860) | 37 | 36 -> NetGMBH Cam (em2860) |
@@ -45,7 +46,7 @@ | |||
45 | 45 -> Pinnacle PCTV DVB-T (em2870) | 46 | 45 -> Pinnacle PCTV DVB-T (em2870) |
46 | 46 -> Compro, VideoMate U3 (em2870) [185b:2870] | 47 | 46 -> Compro, VideoMate U3 (em2870) [185b:2870] |
47 | 47 -> KWorld DVB-T 305U (em2880) [eb1a:e305] | 48 | 47 -> KWorld DVB-T 305U (em2880) [eb1a:e305] |
48 | 48 -> KWorld DVB-T 310U (em2880) [eb1a:e310] | 49 | 48 -> KWorld DVB-T 310U (em2880) |
49 | 49 -> MSI DigiVox A/D (em2880) [eb1a:e310] | 50 | 49 -> MSI DigiVox A/D (em2880) [eb1a:e310] |
50 | 50 -> MSI DigiVox A/D II (em2880) [eb1a:e320] | 51 | 50 -> MSI DigiVox A/D II (em2880) [eb1a:e320] |
51 | 51 -> Terratec Hybrid XS Secam (em2880) [0ccd:004c] | 52 | 51 -> Terratec Hybrid XS Secam (em2880) [0ccd:004c] |
diff --git a/Documentation/video4linux/CARDLIST.saa7134 b/Documentation/video4linux/CARDLIST.saa7134 index 4000c29fcfb6..8d9afc7d8014 100644 --- a/Documentation/video4linux/CARDLIST.saa7134 +++ b/Documentation/video4linux/CARDLIST.saa7134 | |||
@@ -126,7 +126,7 @@ | |||
126 | 125 -> Beholder BeholdTV 409 [0000:4090] | 126 | 125 -> Beholder BeholdTV 409 [0000:4090] |
127 | 126 -> Beholder BeholdTV 505 FM [5ace:5050] | 127 | 126 -> Beholder BeholdTV 505 FM [5ace:5050] |
128 | 127 -> Beholder BeholdTV 507 FM / BeholdTV 509 FM [5ace:5070,5ace:5090] | 128 | 127 -> Beholder BeholdTV 507 FM / BeholdTV 509 FM [5ace:5070,5ace:5090] |
129 | 128 -> Beholder BeholdTV Columbus TVFM [0000:5201] | 129 | 128 -> Beholder BeholdTV Columbus TV/FM [0000:5201] |
130 | 129 -> Beholder BeholdTV 607 FM [5ace:6070] | 130 | 129 -> Beholder BeholdTV 607 FM [5ace:6070] |
131 | 130 -> Beholder BeholdTV M6 [5ace:6190] | 131 | 130 -> Beholder BeholdTV M6 [5ace:6190] |
132 | 131 -> Twinhan Hybrid DTV-DVB 3056 PCI [1822:0022] | 132 | 131 -> Twinhan Hybrid DTV-DVB 3056 PCI [1822:0022] |
diff --git a/Documentation/video4linux/bttv/MAKEDEV b/Documentation/video4linux/bttv/MAKEDEV index 9d112f7fd5f7..093c0cd18042 100644 --- a/Documentation/video4linux/bttv/MAKEDEV +++ b/Documentation/video4linux/bttv/MAKEDEV | |||
@@ -19,7 +19,6 @@ function makedev () { | |||
19 | echo "*** new device names ***" | 19 | echo "*** new device names ***" |
20 | makedev video 0 | 20 | makedev video 0 |
21 | makedev radio 64 | 21 | makedev radio 64 |
22 | makedev vtx 192 | ||
23 | makedev vbi 224 | 22 | makedev vbi 224 |
24 | 23 | ||
25 | #echo "*** old device names (for compatibility only) ***" | 24 | #echo "*** old device names (for compatibility only) ***" |
diff --git a/Documentation/video4linux/gspca.txt b/Documentation/video4linux/gspca.txt index 56ba7bba7168..6a562eeeb4cd 100644 --- a/Documentation/video4linux/gspca.txt +++ b/Documentation/video4linux/gspca.txt | |||
@@ -302,12 +302,14 @@ sonixj 0c45:60fb Surfer NoName | |||
302 | sonixj 0c45:60fc LG-LIC300 | 302 | sonixj 0c45:60fc LG-LIC300 |
303 | sonixj 0c45:60fe Microdia Audio | 303 | sonixj 0c45:60fe Microdia Audio |
304 | sonixj 0c45:6100 PC Camera (SN9C128) | 304 | sonixj 0c45:6100 PC Camera (SN9C128) |
305 | sonixj 0c45:6102 PC Camera (SN9C128) | ||
305 | sonixj 0c45:610a PC Camera (SN9C128) | 306 | sonixj 0c45:610a PC Camera (SN9C128) |
306 | sonixj 0c45:610b PC Camera (SN9C128) | 307 | sonixj 0c45:610b PC Camera (SN9C128) |
307 | sonixj 0c45:610c PC Camera (SN9C128) | 308 | sonixj 0c45:610c PC Camera (SN9C128) |
308 | sonixj 0c45:610e PC Camera (SN9C128) | 309 | sonixj 0c45:610e PC Camera (SN9C128) |
309 | sonixj 0c45:6128 Microdia/Sonix SNP325 | 310 | sonixj 0c45:6128 Microdia/Sonix SNP325 |
310 | sonixj 0c45:612a Avant Camera | 311 | sonixj 0c45:612a Avant Camera |
312 | sonixj 0c45:612b Speed-Link REFLECT2 | ||
311 | sonixj 0c45:612c Typhoon Rasy Cam 1.3MPix | 313 | sonixj 0c45:612c Typhoon Rasy Cam 1.3MPix |
312 | sonixj 0c45:6130 Sonix Pccam | 314 | sonixj 0c45:6130 Sonix Pccam |
313 | sonixj 0c45:6138 Sn9c120 Mo4000 | 315 | sonixj 0c45:6138 Sn9c120 Mo4000 |
diff --git a/Documentation/video4linux/v4l2-framework.txt b/Documentation/video4linux/v4l2-framework.txt index e831aaca66f8..f22f35c271f3 100644 --- a/Documentation/video4linux/v4l2-framework.txt +++ b/Documentation/video4linux/v4l2-framework.txt | |||
@@ -44,8 +44,8 @@ All drivers have the following structure: | |||
44 | 44 | ||
45 | 2) A way of initializing and commanding sub-devices (if any). | 45 | 2) A way of initializing and commanding sub-devices (if any). |
46 | 46 | ||
47 | 3) Creating V4L2 device nodes (/dev/videoX, /dev/vbiX, /dev/radioX and | 47 | 3) Creating V4L2 device nodes (/dev/videoX, /dev/vbiX and /dev/radioX) |
48 | /dev/vtxX) and keeping track of device-node specific data. | 48 | and keeping track of device-node specific data. |
49 | 49 | ||
50 | 4) Filehandle-specific structs containing per-filehandle data; | 50 | 4) Filehandle-specific structs containing per-filehandle data; |
51 | 51 | ||
@@ -192,6 +192,11 @@ You also need a way to go from the low-level struct to v4l2_subdev. For the | |||
192 | common i2c_client struct the i2c_set_clientdata() call is used to store a | 192 | common i2c_client struct the i2c_set_clientdata() call is used to store a |
193 | v4l2_subdev pointer, for other busses you may have to use other methods. | 193 | v4l2_subdev pointer, for other busses you may have to use other methods. |
194 | 194 | ||
195 | Bridges might also need to store per-subdev private data, such as a pointer to | ||
196 | bridge-specific per-subdev private data. The v4l2_subdev structure provides | ||
197 | host private data for that purpose that can be accessed with | ||
198 | v4l2_get_subdev_hostdata() and v4l2_set_subdev_hostdata(). | ||
199 | |||
195 | From the bridge driver perspective you load the sub-device module and somehow | 200 | From the bridge driver perspective you load the sub-device module and somehow |
196 | obtain the v4l2_subdev pointer. For i2c devices this is easy: you call | 201 | obtain the v4l2_subdev pointer. For i2c devices this is easy: you call |
197 | i2c_get_clientdata(). For other busses something similar needs to be done. | 202 | i2c_get_clientdata(). For other busses something similar needs to be done. |
@@ -448,6 +453,10 @@ You should also set these fields: | |||
448 | - ioctl_ops: if you use the v4l2_ioctl_ops to simplify ioctl maintenance | 453 | - ioctl_ops: if you use the v4l2_ioctl_ops to simplify ioctl maintenance |
449 | (highly recommended to use this and it might become compulsory in the | 454 | (highly recommended to use this and it might become compulsory in the |
450 | future!), then set this to your v4l2_ioctl_ops struct. | 455 | future!), then set this to your v4l2_ioctl_ops struct. |
456 | - lock: leave to NULL if you want to do all the locking in the driver. | ||
457 | Otherwise you give it a pointer to a struct mutex_lock and before any | ||
458 | of the v4l2_file_operations is called this lock will be taken by the | ||
459 | core and released afterwards. | ||
451 | - parent: you only set this if v4l2_device was registered with NULL as | 460 | - parent: you only set this if v4l2_device was registered with NULL as |
452 | the parent device struct. This only happens in cases where one hardware | 461 | the parent device struct. This only happens in cases where one hardware |
453 | device has multiple PCI devices that all share the same v4l2_device core. | 462 | device has multiple PCI devices that all share the same v4l2_device core. |
@@ -464,6 +473,22 @@ If you use v4l2_ioctl_ops, then you should set either .unlocked_ioctl or | |||
464 | The v4l2_file_operations struct is a subset of file_operations. The main | 473 | The v4l2_file_operations struct is a subset of file_operations. The main |
465 | difference is that the inode argument is omitted since it is never used. | 474 | difference is that the inode argument is omitted since it is never used. |
466 | 475 | ||
476 | v4l2_file_operations and locking | ||
477 | -------------------------------- | ||
478 | |||
479 | You can set a pointer to a mutex_lock in struct video_device. Usually this | ||
480 | will be either a top-level mutex or a mutex per device node. If you want | ||
481 | finer-grained locking then you have to set it to NULL and do you own locking. | ||
482 | |||
483 | If a lock is specified then all file operations will be serialized on that | ||
484 | lock. If you use videobuf then you must pass the same lock to the videobuf | ||
485 | queue initialize function: if videobuf has to wait for a frame to arrive, then | ||
486 | it will temporarily unlock the lock and relock it afterwards. If your driver | ||
487 | also waits in the code, then you should do the same to allow other processes | ||
488 | to access the device node while the first process is waiting for something. | ||
489 | |||
490 | The implementation of a hotplug disconnect should also take the lock before | ||
491 | calling v4l2_device_disconnect. | ||
467 | 492 | ||
468 | video_device registration | 493 | video_device registration |
469 | ------------------------- | 494 | ------------------------- |
@@ -483,7 +508,6 @@ types exist: | |||
483 | VFL_TYPE_GRABBER: videoX for video input/output devices | 508 | VFL_TYPE_GRABBER: videoX for video input/output devices |
484 | VFL_TYPE_VBI: vbiX for vertical blank data (i.e. closed captions, teletext) | 509 | VFL_TYPE_VBI: vbiX for vertical blank data (i.e. closed captions, teletext) |
485 | VFL_TYPE_RADIO: radioX for radio tuners | 510 | VFL_TYPE_RADIO: radioX for radio tuners |
486 | VFL_TYPE_VTX: vtxX for teletext devices (deprecated, don't use) | ||
487 | 511 | ||
488 | The last argument gives you a certain amount of control over the device | 512 | The last argument gives you a certain amount of control over the device |
489 | device node number used (i.e. the X in videoX). Normally you will pass -1 | 513 | device node number used (i.e. the X in videoX). Normally you will pass -1 |
@@ -547,9 +571,8 @@ from /dev). | |||
547 | 571 | ||
548 | After video_unregister_device() returns no new opens can be done. However, | 572 | After video_unregister_device() returns no new opens can be done. However, |
549 | in the case of USB devices some application might still have one of these | 573 | in the case of USB devices some application might still have one of these |
550 | device nodes open. So after the unregister all file operations will return | 574 | device nodes open. So after the unregister all file operations (except |
551 | an error as well, except for the ioctl and unlocked_ioctl file operations: | 575 | release, of course) will return an error as well. |
552 | those will still be passed on since some buffer ioctls may still be needed. | ||
553 | 576 | ||
554 | When the last user of the video device node exits, then the vdev->release() | 577 | When the last user of the video device node exits, then the vdev->release() |
555 | callback is called and you can do the final cleanup there. | 578 | callback is called and you can do the final cleanup there. |