aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/DocBook
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2010-10-28 12:35:11 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2010-10-28 12:35:11 -0400
commit0851668fdd97e526b2a41f794b785c204dd3d3e0 (patch)
tree4ef7c20a8be8393006c6fe9627eb29dd30877d61 /Documentation/DocBook
parent00ebb6382b8d9c7c15b5f8ad230670d8161d38dd (diff)
parent7655e594945289b418af39f6669fea4666a7b520 (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/DocBook')
-rw-r--r--Documentation/DocBook/media-entities.tmpl6
-rw-r--r--Documentation/DocBook/v4l/compat.xml24
-rw-r--r--Documentation/DocBook/v4l/controls.xml12
-rw-r--r--Documentation/DocBook/v4l/dev-rds.xml68
-rw-r--r--Documentation/DocBook/v4l/dev-teletext.xml29
-rw-r--r--Documentation/DocBook/v4l/pixfmt-packed-rgb.xml2
-rw-r--r--Documentation/DocBook/v4l/pixfmt-srggb10.xml90
-rw-r--r--Documentation/DocBook/v4l/pixfmt-srggb8.xml67
-rw-r--r--Documentation/DocBook/v4l/pixfmt-y10.xml79
-rw-r--r--Documentation/DocBook/v4l/pixfmt.xml32
-rw-r--r--Documentation/DocBook/v4l/v4l2.xml10
-rw-r--r--Documentation/DocBook/v4l/videodev2.h.xml106
-rw-r--r--Documentation/DocBook/v4l/vidioc-g-dv-preset.xml3
-rw-r--r--Documentation/DocBook/v4l/vidioc-g-dv-timings.xml3
-rw-r--r--Documentation/DocBook/v4l/vidioc-query-dv-preset.xml2
-rw-r--r--Documentation/DocBook/v4l/vidioc-querycap.xml7
-rw-r--r--Documentation/DocBook/v4l/vidioc-queryctrl.xml18
-rw-r--r--Documentation/DocBook/v4l/vidioc-s-hw-freq-seek.xml10
18 files changed, 478 insertions, 90 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
24recommended for V4L2 video capture, overlay, radio, teletext and raw 24recommended for V4L2 video capture, overlay, radio and raw
25vbi capture devices did not change from those used by V4L. They are 25vbi capture devices did not change from those used by V4L. They are
26listed in <xref linkend="devices" /> and below in <xref 26listed 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
30V4L2 and no longer exist. There is no hardware available anymore for handling
31pure 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
30assigns minor numbers to drivers in load order, depending on the 34assigns minor numbers to drivers in load order, depending on the
31registered device type. We recommend that V4L2 drivers by default 35registered 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
2350used and no hardware exists to verify the API. Nor were any userspace applications found
2351that 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;, &amp;querymenu)) { 365 if (0 == ioctl (fd, &VIDIOC-QUERYMENU;, &amp;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
4information in binary format, for example the station name or travel 4information in binary format, for example the station name or travel
5information, on an inaudible audio subcarrier of a radio program. This 5information, on an inaudible audio subcarrier of a radio program. This
6interface is aimed at devices capable of receiving and decoding RDS 6interface is aimed at devices capable of receiving and/or transmitting RDS
7information.</para> 7information.</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" />
10and the RBDS standard <xref linkend="nrsc4" />.</para> 10and 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
13to the RDS standard. Any RDS decoder can also handle RBDS. Only some of the fields 13to the RDS standard. Any RDS decoder/encoder can also handle RBDS. Only some of the
14have slightly different meanings. See the RBDS standard for more information.</para> 14fields have slightly different meanings. See the RBDS standard for more
15information.</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).
17This is a proprietary format which seems to be discontinued. The RDS interface does not 18This 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
25set the <constant>V4L2_CAP_RDS_CAPTURE</constant> flag in 26the <constant>V4L2_CAP_RDS_CAPTURE</constant> flag in
26the <structfield>capabilities</structfield> field of &v4l2-capability; 27the <structfield>capabilities</structfield> field of &v4l2-capability;
27returned by the &VIDIOC-QUERYCAP; ioctl. 28returned by the &VIDIOC-QUERYCAP; ioctl. Any tuner that supports RDS
28Any tuner that supports RDS will set the 29will set the <constant>V4L2_TUNER_CAP_RDS</constant> flag in
29<constant>V4L2_TUNER_CAP_RDS</constant> flag in the <structfield>capability</structfield> 30the <structfield>capability</structfield> field of &v4l2-tuner;. If
30field of &v4l2-tuner;. 31the driver only passes RDS blocks without interpreting the data
31Whether an RDS signal is present can be detected by looking at 32the <constant>V4L2_TUNER_SUB_RDS_BLOCK_IO</constant> flag has to be
32the <structfield>rxsubchans</structfield> field of &v4l2-tuner;: the 33set, 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> 34For future use the
35flag <constant>V4L2_TUNER_SUB_RDS_CONTROLS</constant> has also been
36defined. However, a driver for a radio tuner with this capability does
37not yet exist, so if you are planning to write such a driver you
38should 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
41at the <structfield>rxsubchans</structfield> field of &v4l2-tuner;:
42the <constant>V4L2_TUNER_SUB_RDS</constant> will be set if RDS data
43was detected.</para>
34 44
35 <para>Devices supporting the RDS output API 45 <para>Devices supporting the RDS output API
36set the <constant>V4L2_CAP_RDS_OUTPUT</constant> flag in 46set 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>
41field of &v4l2-modulator;. 51field of &v4l2-modulator;.
42In order to enable the RDS transmission one must set the <constant>V4L2_TUNER_SUB_RDS</constant> 52In order to enable the RDS transmission one must set the <constant>V4L2_TUNER_SUB_RDS</constant>
43bit in the <structfield>txsubchans</structfield> field of &v4l2-modulator;.</para> 53bit in the <structfield>txsubchans</structfield> field of &v4l2-modulator;.
44 54If the driver only passes RDS blocks without interpreting the data
55the <constant>V4L2_TUNER_SUB_RDS_BLOCK_IO</constant> flag has to be set. If the
56tuner is capable of handling RDS entities like program identification codes and radio
57text, the flag <constant>V4L2_TUNER_SUB_RDS_CONTROLS</constant> should be set,
58see <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
51with the &func-read; function. The data is packed in groups of three bytes, 66with 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
73with the &func-write; function. The data is packed in groups of three bytes,
52as follows:</para> 74as 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
4Teletext data [<xref linkend="ets300706" />, <xref linkend="itu653" />], evaluating the 4Teletext data [<xref linkend="ets300706" />, <xref linkend="itu653" />], evaluating the
5Teletext packages and storing formatted pages in cache memory. Such 5Teletext packages and storing formatted pages in cache memory. Such
6devices are usually implemented as microcontrollers with serial 6devices are usually implemented as microcontrollers with serial
7interface (I<superscript>2</superscript>C) and can be found on older 7interface (I<superscript>2</superscript>C) and could be found on old
8TV cards, dedicated Teletext decoding cards and home-brew devices 8TV cards, dedicated Teletext decoding cards and home-brew devices
9connected to the PC parallel port.</para> 9connected 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
12the kernel header file <filename>linux/videotext.h</filename>, the 12the kernel header file <filename>linux/videotext.h</filename>, the
13specification is available from <ulink url="ftp://ftp.gwdg.de/pub/linux/misc/videotext/"> 13specification is available from <ulink url="ftp://ftp.gwdg.de/pub/linux/misc/videotext/">
14ftp://ftp.gwdg.de/pub/linux/misc/videotext/</ulink>. (Videotext is the name of 14ftp://ftp.gwdg.de/pub/linux/misc/videotext/</ulink>. (Videotext is the name of
15the German public television Teletext service.) Conventional character 15the German public television Teletext service.)</para>
16device file names are <filename>/dev/vtx</filename> and
17<filename>/dev/vttuner</filename>, with device number 83, 0 and 83, 16
18respectively. A similar interface exists for the Philips SAA5249
19Teletext 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
23with character device file names <filename>/dev/vtx0</filename> to 18with 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
25192 to 223. For reference the V4L Teletext API specification is 20192 to 223.</para>
26reproduced here in full: "Teletext interfaces talk the existing VTX
27API." Teletext devices with major number 83 and 102 will be removed in
28Linux 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
31it into V4L2. Please write to the linux-media mailing list: &v4l-ml; 23generic VBI demodulators and those dedicated teletext decoders no longer exist.
32when the need arises.</para> 24For many years the vtx devices were still around, even though nobody used
25them. So the decision was made to finally remove support for the Teletext API in
26kernel 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 <!--
35Local Variables: 32Local 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
2110 bits per colour. Each colour component is stored in a 16-bit word, with 6
22unused high bits filled with zeros. Each n-pixel row contains n/2 green samples
23and n/2 blue or red samples, with alternating red and blue rows. Bytes are
24stored in memory in little endian order. They are conventionally described
25as GRGR... BGBG..., RGRG... GBGB..., etc. Below is an example of one of these
26formats</para>
27
28 <example>
29 <title><constant>V4L2_PIX_FMT_SBGGR10</constant> 4 &times; 4
30pixel 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&nbsp;+&nbsp;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&nbsp;+&nbsp;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&nbsp;+&nbsp;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&nbsp;+&nbsp;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,
14reflecting the arrangement of sensors on the CCD device. Only one red,
15green or blue value is given for each pixel. Missing components must
16be interpolated from neighbouring pixels. From left to right the first
17row consists of a red and green value, the second row of a green and
18blue value. This scheme repeats to the right and down for every two
19columns and rows.</para>
20
21 <example>
22 <title><constant>V4L2_PIX_FMT_SRGGB8</constant> 4 &times; 4
23pixel 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&nbsp;+&nbsp;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&nbsp;+&nbsp;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&nbsp;+&nbsp;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&nbsp;+&nbsp;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
14are stored in 16-bit words with unused high bits padded with 0. The least
15significant byte is stored at lower memory addresses (little-endian).</para>
16
17 <example>
18 <title><constant>V4L2_PIX_FMT_Y10</constant> 4 &times; 4
19pixel 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&nbsp;+&nbsp;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&nbsp;+&nbsp;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&nbsp;+&nbsp;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&nbsp;+&nbsp;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
685kernel sources in the file <filename>Documentation/video4linux/cx2341x/README.hm12</filename> 688kernel 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
103Rubli, Andy Walls, Muralidharan Karicheri, Mauro Carvalho Chehab</holder> 104Rubli, 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,
112structs, ioctls) must be noted in more detail in the history chapter 113structs, 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
114applications. --> 115applications. -->
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
164enum <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
174enum <link linkend="v4l2-tuner-type">v4l2_tuner_type</link> { 164enum <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) &amp; 0x0fff0000UL) 938#define V4L2_CTRL_ID2CLASS(id) ((id) &amp; 0x0fff0000UL)
935#define V4L2_CTRL_DRIVER_PRIV(id) (((id) &amp; 0xffff) &gt;= 0x1000) 939#define V4L2_CTRL_DRIVER_PRIV(id) (((id) &amp; 0xffff) &gt;= 0x1000)
936 940
941enum <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 */
938struct <link linkend="v4l2-queryctrl">v4l2_queryctrl</link> { 952struct <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 */
1661struct <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
1666struct <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
1678struct <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>
206hardware frequency seeking.</entry> 206hardware 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
104by calling <constant>VIDIOC_QUERYMENU</constant> with successive 104by 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
108for <constant>VIDIOC_QUERYMENU</constant> to return an &EINVAL; for some
109indices between <structfield>minimum</structfield> and <structfield>maximum</structfield>.
110In that case that particular menu item is not supported by this driver. Also note that
111the <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
141bound for <constant>V4L2_CTRL_TYPE_INTEGER</constant> controls and the 145bound for <constant>V4L2_CTRL_TYPE_INTEGER</constant> controls and the
142lowest valid index (always 0) for <constant>V4L2_CTRL_TYPE_MENU</constant> controls. 146lowest valid index for <constant>V4L2_CTRL_TYPE_MENU</constant> controls.
143For <constant>V4L2_CTRL_TYPE_STRING</constant> controls the minimum value 147For <constant>V4L2_CTRL_TYPE_STRING</constant> controls the minimum value
144gives the minimum length of the string. This length <emphasis>does not include the terminating 148gives the minimum length of the string. This length <emphasis>does not include the terminating
145zero</emphasis>. It may not be valid for any other type of control, including 149zero</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>&ge; 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>
408is invalid. The &v4l2-querymenu; <structfield>id</structfield> or 412is invalid. The &v4l2-querymenu; <structfield>id</structfield> is
409<structfield>index</structfield> is invalid.</para> 413invalid or <structfield>index</structfield> is out of range (less than
414<structfield>minimum</structfield> or greater than <structfield>maximum</structfield>)
415or 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.
53To do this applications initialize the <structfield>tuner</structfield>, 53To 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
57call the <constant>VIDIOC_S_HW_FREQ_SEEK</constant> ioctl with a pointer 58call 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>