summaryrefslogtreecommitdiffstats
path: root/extras/recipes-kernel/linux/linux-omap/media/0028-v4l-v4l2_subdev-userspace-format-API.patch
diff options
context:
space:
mode:
Diffstat (limited to 'extras/recipes-kernel/linux/linux-omap/media/0028-v4l-v4l2_subdev-userspace-format-API.patch')
-rw-r--r--extras/recipes-kernel/linux/linux-omap/media/0028-v4l-v4l2_subdev-userspace-format-API.patch3546
1 files changed, 3546 insertions, 0 deletions
diff --git a/extras/recipes-kernel/linux/linux-omap/media/0028-v4l-v4l2_subdev-userspace-format-API.patch b/extras/recipes-kernel/linux/linux-omap/media/0028-v4l-v4l2_subdev-userspace-format-API.patch
new file mode 100644
index 00000000..2b851d6f
--- /dev/null
+++ b/extras/recipes-kernel/linux/linux-omap/media/0028-v4l-v4l2_subdev-userspace-format-API.patch
@@ -0,0 +1,3546 @@
1From 58fa3ca8af541e6704ac11703fc3091d856e0700 Mon Sep 17 00:00:00 2001
2From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
3Date: Tue, 16 Mar 2010 00:26:04 +0100
4Subject: [PATCH 28/43] v4l: v4l2_subdev userspace format API
5
6Add a userspace API to get, set and enumerate the media format on a
7subdev pad.
8
9The format at the output of a subdev usually depends on the format at
10its input(s). The try format operation is thus not suitable for probing
11format at individual pads, as it can't modify the device state and thus
12can't remember the format tried at the input to compute the output
13format.
14
15To fix the problem, pass an extra argument to the get/set format
16operations to select the 'try' or 'active' format.
17
18The try format is used when probing the subdev. Setting the try format
19must not change the device configuration but can store data for later
20reuse. Data storage is provided at the file-handle level so applications
21probing the subdev concurently won't interfere with each other.
22
23The active format is used when configuring the subdev. It's identical to
24the format handled by the usual get/set operations.
25
26Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
27Signed-off-by: Stanimir Varbanov <svarbanov@mm-sol.com>
28Signed-off-by: Sakari Ailus <sakari.ailus@maxwell.research.nokia.com>
29---
30 Documentation/DocBook/Makefile | 5 +-
31 Documentation/DocBook/media-entities.tmpl | 16 +
32 Documentation/DocBook/v4l/dev-subdev.xml | 274 +++
33 Documentation/DocBook/v4l/subdev-formats.xml | 2416 ++++++++++++++++++++
34 Documentation/DocBook/v4l/v4l2.xml | 4 +
35 Documentation/DocBook/v4l/vidioc-streamon.xml | 9 +
36 .../DocBook/v4l/vidioc-subdev-enum-frame-size.xml | 148 ++
37 .../DocBook/v4l/vidioc-subdev-enum-mbus-code.xml | 113 +
38 Documentation/DocBook/v4l/vidioc-subdev-g-fmt.xml | 174 ++
39 drivers/media/video/v4l2-subdev.c | 49 +
40 include/linux/Kbuild | 1 +
41 include/linux/v4l2-subdev.h | 90 +
42 include/media/v4l2-subdev.h | 10 +
43 13 files changed, 3308 insertions(+), 1 deletions(-)
44 create mode 100644 Documentation/DocBook/v4l/dev-subdev.xml
45 create mode 100644 Documentation/DocBook/v4l/subdev-formats.xml
46 create mode 100644 Documentation/DocBook/v4l/vidioc-subdev-enum-frame-size.xml
47 create mode 100644 Documentation/DocBook/v4l/vidioc-subdev-enum-mbus-code.xml
48 create mode 100644 Documentation/DocBook/v4l/vidioc-subdev-g-fmt.xml
49 create mode 100644 include/linux/v4l2-subdev.h
50
51diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile
52index 8b6e00a..2deb069 100644
53--- a/Documentation/DocBook/Makefile
54+++ b/Documentation/DocBook/Makefile
55@@ -53,7 +53,10 @@ MAN := $(patsubst %.xml, %.9, $(BOOKS))
56 mandocs: $(MAN)
57
58 build_images = mkdir -p $(objtree)/Documentation/DocBook/media/ && \
59- cp $(srctree)/Documentation/DocBook/dvb/*.png $(srctree)/Documentation/DocBook/v4l/*.gif $(objtree)/Documentation/DocBook/media/
60+ cp $(srctree)/Documentation/DocBook/dvb/*.png \
61+ $(srctree)/Documentation/DocBook/v4l/*.gif \
62+ $(srctree)/Documentation/DocBook/v4l/*.png \
63+ $(objtree)/Documentation/DocBook/media/
64
65 xmldoclinks:
66 ifneq ($(objtree),$(srctree))
67diff --git a/Documentation/DocBook/media-entities.tmpl b/Documentation/DocBook/media-entities.tmpl
68index 679c585..538f8fe 100644
69--- a/Documentation/DocBook/media-entities.tmpl
70+++ b/Documentation/DocBook/media-entities.tmpl
71@@ -86,6 +86,10 @@
72 <!ENTITY VIDIOC-S-PRIORITY "<link linkend='vidioc-g-priority'><constant>VIDIOC_S_PRIORITY</constant></link>">
73 <!ENTITY VIDIOC-S-STD "<link linkend='vidioc-g-std'><constant>VIDIOC_S_STD</constant></link>">
74 <!ENTITY VIDIOC-S-TUNER "<link linkend='vidioc-g-tuner'><constant>VIDIOC_S_TUNER</constant></link>">
75+<!ENTITY VIDIOC-SUBDEV-ENUM-FRAME-SIZE "<link linkend='vidioc-subdev-enum-frame-size'><constant>VIDIOC_SUBDEV_ENUM_FRAME_SIZE</constant></link>">
76+<!ENTITY VIDIOC-SUBDEV-ENUM-MBUS-CODE "<link linkend='vidioc-subdev-enum-mbus-code'><constant>VIDIOC_SUBDEV_ENUM_MBUS_CODE</constant></link>">
77+<!ENTITY VIDIOC-SUBDEV-G-FMT "<link linkend='vidioc-subdev-g-fmt'><constant>VIDIOC_SUBDEV_G_FMT</constant></link>">
78+<!ENTITY VIDIOC-SUBDEV-S-FMT "<link linkend='vidioc-subdev-g-fmt'><constant>VIDIOC_SUBDEV_S_FMT</constant></link>">
79 <!ENTITY VIDIOC-TRY-ENCODER-CMD "<link linkend='vidioc-encoder-cmd'><constant>VIDIOC_TRY_ENCODER_CMD</constant></link>">
80 <!ENTITY VIDIOC-TRY-EXT-CTRLS "<link linkend='vidioc-g-ext-ctrls'><constant>VIDIOC_TRY_EXT_CTRLS</constant></link>">
81 <!ENTITY VIDIOC-TRY-FMT "<link linkend='vidioc-g-fmt'><constant>VIDIOC_TRY_FMT</constant></link>">
82@@ -107,6 +111,7 @@
83 <!ENTITY v4l2-field "enum&nbsp;<link linkend='v4l2-field'>v4l2_field</link>">
84 <!ENTITY v4l2-frmivaltypes "enum&nbsp;<link linkend='v4l2-frmivaltypes'>v4l2_frmivaltypes</link>">
85 <!ENTITY v4l2-frmsizetypes "enum&nbsp;<link linkend='v4l2-frmsizetypes'>v4l2_frmsizetypes</link>">
86+<!ENTITY v4l2-mbus-pixelcode "enum&nbsp;<link linkend='v4l2-mbus-pixelcode'>v4l2_mbus_pixelcode</link>">
87 <!ENTITY v4l2-memory "enum&nbsp;<link linkend='v4l2-memory'>v4l2_memory</link>">
88 <!ENTITY v4l2-mpeg-audio-ac3-bitrate "enum&nbsp;<link linkend='v4l2-mpeg-audio-ac3-bitrate'>v4l2_mpeg_audio_ac3_bitrate</link>">
89 <!ENTITY v4l2-mpeg-audio-crc "enum&nbsp;<link linkend='v4l2-mpeg-audio-crc'>v4l2_mpeg_audio_crc</link>">
90@@ -130,6 +135,7 @@
91 <!ENTITY v4l2-mpeg-video-encoding "enum&nbsp;<link linkend='v4l2-mpeg-video-encoding'>v4l2_mpeg_video_encoding</link>">
92 <!ENTITY v4l2-power-line-frequency "enum&nbsp;<link linkend='v4l2-power-line-frequency'>v4l2_power_line_frequency</link>">
93 <!ENTITY v4l2-priority "enum&nbsp;<link linkend='v4l2-priority'>v4l2_priority</link>">
94+<!ENTITY v4l2-subdev-format-whence "enum&nbsp;<link linkend='v4l2-subdev-format-whence'>v4l2_subdev_format_whence</link>">
95 <!ENTITY v4l2-tuner-type "enum&nbsp;<link linkend='v4l2-tuner-type'>v4l2_tuner_type</link>">
96 <!ENTITY v4l2-preemphasis "enum&nbsp;<link linkend='v4l2-preemphasis'>v4l2_preemphasis</link>">
97
98@@ -171,6 +177,7 @@
99 <!ENTITY v4l2-hw-freq-seek "struct&nbsp;<link linkend='v4l2-hw-freq-seek'>v4l2_hw_freq_seek</link>">
100 <!ENTITY v4l2-input "struct&nbsp;<link linkend='v4l2-input'>v4l2_input</link>">
101 <!ENTITY v4l2-jpegcompression "struct&nbsp;<link linkend='v4l2-jpegcompression'>v4l2_jpegcompression</link>">
102+<!ENTITY v4l2-mbus-framefmt "struct&nbsp;<link linkend='v4l2-mbus-framefmt'>v4l2_mbus_framefmt</link>">
103 <!ENTITY v4l2-modulator "struct&nbsp;<link linkend='v4l2-modulator'>v4l2_modulator</link>">
104 <!ENTITY v4l2-mpeg-vbi-fmt-ivtv "struct&nbsp;<link linkend='v4l2-mpeg-vbi-fmt-ivtv'>v4l2_mpeg_vbi_fmt_ivtv</link>">
105 <!ENTITY v4l2-output "struct&nbsp;<link linkend='v4l2-output'>v4l2_output</link>">
106@@ -183,6 +190,9 @@
107 <!ENTITY v4l2-sliced-vbi-cap "struct&nbsp;<link linkend='v4l2-sliced-vbi-cap'>v4l2_sliced_vbi_cap</link>">
108 <!ENTITY v4l2-sliced-vbi-data "struct&nbsp;<link linkend='v4l2-sliced-vbi-data'>v4l2_sliced_vbi_data</link>">
109 <!ENTITY v4l2-sliced-vbi-format "struct&nbsp;<link linkend='v4l2-sliced-vbi-format'>v4l2_sliced_vbi_format</link>">
110+<!ENTITY v4l2-subdev-frame-size-enum "struct&nbsp;<link linkend='v4l2-subdev-frame-size-enum'>v4l2_subdev_frame_size_enum</link>">
111+<!ENTITY v4l2-subdev-format "struct&nbsp;<link linkend='v4l2-subdev-format'>v4l2_subdev_format</link>">
112+<!ENTITY v4l2-subdev-mbus-code-enum "struct&nbsp;<link linkend='v4l2-subdev-mbus-code-enum'>v4l2_subdev_mbus_code_enum</link>">
113 <!ENTITY v4l2-standard "struct&nbsp;<link linkend='v4l2-standard'>v4l2_standard</link>">
114 <!ENTITY v4l2-streamparm "struct&nbsp;<link linkend='v4l2-streamparm'>v4l2_streamparm</link>">
115 <!ENTITY v4l2-timecode "struct&nbsp;<link linkend='v4l2-timecode'>v4l2_timecode</link>">
116@@ -212,6 +222,7 @@
117 <!ENTITY ENXIO "<errorcode>ENXIO</errorcode> error code">
118 <!ENTITY EMFILE "<errorcode>EMFILE</errorcode> error code">
119 <!ENTITY EPERM "<errorcode>EPERM</errorcode> error code">
120+<!ENTITY EPIPE "<errorcode>EPIPE</errorcode> error code">
121 <!ENTITY ERANGE "<errorcode>ERANGE</errorcode> error code">
122
123 <!-- Subsections -->
124@@ -230,6 +241,7 @@
125 <!ENTITY sub-dev-raw-vbi SYSTEM "v4l/dev-raw-vbi.xml">
126 <!ENTITY sub-dev-rds SYSTEM "v4l/dev-rds.xml">
127 <!ENTITY sub-dev-sliced-vbi SYSTEM "v4l/dev-sliced-vbi.xml">
128+<!ENTITY sub-dev-subdev SYSTEM "v4l/dev-subdev.xml">
129 <!ENTITY sub-dev-teletext SYSTEM "v4l/dev-teletext.xml">
130 <!ENTITY sub-driver SYSTEM "v4l/driver.xml">
131 <!ENTITY sub-libv4l SYSTEM "v4l/libv4l.xml">
132@@ -313,6 +325,10 @@
133 <!ENTITY sub-reqbufs SYSTEM "v4l/vidioc-reqbufs.xml">
134 <!ENTITY sub-s-hw-freq-seek SYSTEM "v4l/vidioc-s-hw-freq-seek.xml">
135 <!ENTITY sub-streamon SYSTEM "v4l/vidioc-streamon.xml">
136+<!ENTITY sub-subdev-enum-frame-size SYSTEM "v4l/vidioc-subdev-enum-frame-size.xml">
137+<!ENTITY sub-subdev-enum-mbus-code SYSTEM "v4l/vidioc-subdev-enum-mbus-code.xml">
138+<!ENTITY sub-subdev-formats SYSTEM "v4l/subdev-formats.xml">
139+<!ENTITY sub-subdev-g-fmt SYSTEM "v4l/vidioc-subdev-g-fmt.xml">
140 <!ENTITY sub-capture-c SYSTEM "v4l/capture.c.xml">
141 <!ENTITY sub-keytable-c SYSTEM "v4l/keytable.c.xml">
142 <!ENTITY sub-v4l2grab-c SYSTEM "v4l/v4l2grab.c.xml">
143diff --git a/Documentation/DocBook/v4l/dev-subdev.xml b/Documentation/DocBook/v4l/dev-subdev.xml
144new file mode 100644
145index 0000000..12fdca4
146--- /dev/null
147+++ b/Documentation/DocBook/v4l/dev-subdev.xml
148@@ -0,0 +1,274 @@
149+ <title>Sub-device Interface</title>
150+
151+ <para>The complex nature of V4L2 devices, where hardware is often made of
152+ several integrated circuits that need to interact with each other in a
153+ controlled way, leads to complex V4L2 drivers. The drivers usually reflect
154+ the hardware model in software, and model the different hardware components
155+ as software blocks called sub-devices.</para>
156+
157+ <para>V4L2 sub-devices are usually kernel-only objects. If the V4L2 driver
158+ implements the media device API, they will automatically inherit from media
159+ entities. Applications will be able to enumerate the sub-devices and discover
160+ the hardware topology using the media entities, pads and links enumeration
161+ API.</para>
162+
163+ <para>In addition to make sub-devices discoverable, drivers can also choose
164+ to make them directly configurable by applications. When both the sub-device
165+ driver and the V4L2 device driver support this, sub-devices will feature a
166+ character device node on which ioctls can be called to
167+ <itemizedlist>
168+ <listitem>query, read and write sub-devices controls</listitem>
169+ <listitem>subscribe and unsubscribe to events and retrieve them</listitem>
170+ <listitem>negotiate image formats on individual pads</listitem>
171+ </itemizedlist>
172+ </para>
173+
174+ <para>Sub-device character device nodes, conventionally named
175+ <filename>/dev/v4l-subdev*</filename>, use major number 81.</para>
176+
177+ <section>
178+ <title>Controls</title>
179+ <para>Most V4L2 controls are implemented by sub-device hardware. Drivers
180+ usually merge all controls and expose them through video device nodes.
181+ Applications can control all sub-devices through a single interface.</para>
182+
183+ <para>Complex devices sometimes implement the same control in different
184+ pieces of hardware. This situation is common in embedded platforms, where
185+ both sensors and image processing hardware implement identical functions,
186+ such as contrast adjustment, white balance or faulty pixels correction. As
187+ the V4L2 controls API doesn't support several identical controls in a single
188+ device, all but one of the identical controls are hidden.</para>
189+
190+ <para>Applications can access those hidden controls through the sub-device
191+ node with the V4L2 control API described in <xref linkend="control" />. The
192+ ioctls behave identically as when issued on V4L2 device nodes, with the
193+ exception that they deal only with controls implemented in the sub-device.
194+ </para>
195+
196+ <para>Depending on the driver, those controls might also be exposed through
197+ one (or several) V4L2 device nodes.</para>
198+ </section>
199+
200+ <section>
201+ <title>Events</title>
202+ <para>V4L2 sub-devices can notify applications of events as described in
203+ <xref linkend="event" />. The API behaves identically as when used on V4L2
204+ device nodes, with the exception that it only deals with events generated by
205+ the sub-device. Depending on the driver, those events might also be reported
206+ on one (or several) V4L2 device nodes.</para>
207+ </section>
208+
209+ <section id="pad-level-formats">
210+ <title>Pad-level Formats</title>
211+
212+ <warning>Pad-level formats are only applicable to very complex device that
213+ need to expose low-level format configuration to user space. Generic V4L2
214+ applications do <emphasis>not</emphasis> need to use the API described in
215+ this section.</warning>
216+
217+ <note>For the purpose of this section, the term
218+ <wordasword>format</wordasword> means the combination of media bus data
219+ format, frame width and frame height.</note>
220+
221+ <para>Image formats are typically negotiated on video capture and output
222+ devices using the <link linkend="crop">cropping and scaling</link> ioctls.
223+ The driver is responsible for configuring every block in the video pipeline
224+ according to the requested format at the pipeline input and/or
225+ output.</para>
226+
227+ <para>For complex devices, such as often found in embedded systems,
228+ identical image sizes at the output of a pipeline can be achieved using
229+ different hardware configurations. One such exemple is shown on
230+ <xref linkend="pipeline-scaling" xrefstyle="template: Figure %n" />, where
231+ image scaling can be performed on both the video sensor and the host image
232+ processing hardware.</para>
233+
234+ <figure id="pipeline-scaling">
235+ <title>Image Format Negotation on Pipelines</title>
236+ <mediaobject>
237+ <imageobject>
238+ <imagedata fileref="pipeline.pdf" format="PS" />
239+ </imageobject>
240+ <imageobject>
241+ <imagedata fileref="pipeline.png" format="PNG" />
242+ </imageobject>
243+ <textobject>
244+ <phrase>High quality and high speed pipeline configuration</phrase>
245+ </textobject>
246+ </mediaobject>
247+ </figure>
248+
249+ <para>The sensor scaler is usually of less quality than the host scaler, but
250+ scaling on the sensor is required to achieve higher frame rates. Depending
251+ on the use case (quality vs. speed), the pipeline must be configured
252+ differently. Applications need to configure the formats at every point in
253+ the pipeline explicitly.</para>
254+
255+ <para>Drivers that implement the <link linkend="media-controller-intro">media
256+ API</link> can expose pad-level image format configuration to applications.
257+ When they do, applications can use the &VIDIOC-SUBDEV-G-FMT; and
258+ &VIDIOC-SUBDEV-S-FMT; ioctls. to negotiate formats on a per-pad basis.</para>
259+
260+ <para>Applications are responsible for configuring coherent parameters on
261+ the whole pipeline and making sure that connected pads have compatible
262+ formats. The pipeline is checked for formats mismatch at &VIDIOC-STREAMON;
263+ time, and an &EPIPE; is then returned if the configuration is
264+ invalid.</para>
265+
266+ <para>Pad-level image format configuration support can be tested by calling
267+ the &VIDIOC-SUBDEV-G-FMT; ioctl on pad 0. If the driver returns an &EINVAL;
268+ pad-level format configuration is not supported by the sub-device.</para>
269+
270+ <section>
271+ <title>Format Negotiation</title>
272+
273+ <para>Acceptable formats on pads can (and usually do) depend on a number
274+ of external parameters, such as formats on other pads, active links, or
275+ even controls. Finding a combination of formats on all pads in a video
276+ pipeline, acceptable to both application and driver, can't rely on formats
277+ enumeration only. A format negotiation mechanism is required.</para>
278+
279+ <para>Central to the format negotiation mechanism are the get/set format
280+ operations. When called with the <structfield>which</structfield> argument
281+ set to <constant>V4L2_SUBDEV_FORMAT_TRY</constant>, the
282+ &VIDIOC-SUBDEV-G-FMT; and &VIDIOC-SUBDEV-S-FMT; ioctls operate on a set of
283+ formats parameters that are not connected to the hardware configuration.
284+ Modifying those 'try' formats leaves the device state untouched (this
285+ applies to both the software state stored in the driver and the hardware
286+ state stored in the device itself).</para>
287+
288+ <para>While not kept as part of the device state, try formats are stored
289+ in the sub-device file handles. A &VIDIOC-SUBDEV-G-FMT; call will return
290+ the last try format set <emphasis>on the same sub-device file
291+ handle</emphasis>. Several applications querying the same sub-device at
292+ the same time will thus not interact with each other.</para>
293+
294+ <para>To find out whether a particular format is supported by the device,
295+ applications use the &VIDIOC-SUBDEV-S-FMT; ioctl. Drivers verify and, if
296+ needed, change the requested <structfield>format</structfield> based on
297+ device requirements and return the possibly modified value. Applications
298+ can then choose to try a different format or accept the returned value and
299+ continue.</para>
300+
301+ <para>Formats returned by the driver during a negotiation iteration are
302+ guaranteed to be supported by the device. In particular, drivers guarantee
303+ that a returned format will not be further changed if passed to an
304+ &VIDIOC-SUBDEV-S-FMT; call as-is (as long as external parameters, such as
305+ formats on other pads or links' configuration are not changed).</para>
306+
307+ <para>Drivers automatically propagate formats inside sub-devices. When a
308+ try or active format is set on a pad, corresponding formats on other pads
309+ of the same sub-device can be modified by the driver. Drivers are free to
310+ modify formats as required by the device. However, they should comply with
311+ the following rules when possible:
312+ <itemizedlist>
313+ <listitem>Formats should be propagated from sink pads to source pads.
314+ Modifying a format on a source pad should not modify the format on any
315+ sink pad.</listitem>
316+ <listitem>Sub-devices that scale frames using variable scaling factors
317+ should reset the scale factors to default values when sink pads formats
318+ are modified. If the 1:1 scaling ratio is supported, this means that
319+ source pads formats should be reset to the sink pads formats.</listitem>
320+ </itemizedlist>
321+ </para>
322+
323+ <para>Formats are not propagated across links, as that would involve
324+ propagating them from one sub-device file handle to another. Applications
325+ must then take care to configure both ends of every link explicitly with
326+ compatible formats. Identical formats on the two ends of a link are
327+ guaranteed to be compatible. Drivers are free to accept different formats
328+ matching device requirements as being compatible.</para>
329+
330+ <para><xref linkend="sample-pipeline-config" xrefstyle="template:Table %n"/>
331+ shows a sample configuration sequence for the pipeline described in
332+ <xref linkend="pipeline-scaling" xrefstyle="template:Figure %n"/> (table
333+ columns list entity names and pad numbers).</para>
334+
335+ <table pgwide="0" frame="none" id="sample-pipeline-config">
336+ <title>Sample Pipeline Configuration</title>
337+ <tgroup cols="3">
338+ <colspec colname="what"/>
339+ <colspec colname="sensor-0" />
340+ <colspec colname="frontend-0" />
341+ <colspec colname="frontend-1" />
342+ <colspec colname="scaler-0" />
343+ <colspec colname="scaler-1" />
344+ <thead>
345+ <row>
346+ <entry></entry>
347+ <entry>Sensor/0</entry>
348+ <entry>Frontend/0</entry>
349+ <entry>Frontend/1</entry>
350+ <entry>Scaler/0</entry>
351+ <entry>Scaler/1</entry>
352+ </row>
353+ </thead>
354+ <tbody valign="top">
355+ <row>
356+ <entry>Initial state</entry>
357+ <entry>2048x1536</entry>
358+ <entry>-</entry>
359+ <entry>-</entry>
360+ <entry>-</entry>
361+ <entry>-</entry>
362+ </row>
363+ <row>
364+ <entry>Configure frontend input</entry>
365+ <entry>2048x1536</entry>
366+ <entry><emphasis>2048x1536</emphasis></entry>
367+ <entry><emphasis>2046x1534</emphasis></entry>
368+ <entry>-</entry>
369+ <entry>-</entry>
370+ </row>
371+ <row>
372+ <entry>Configure scaler input</entry>
373+ <entry>2048x1536</entry>
374+ <entry>2048x1536</entry>
375+ <entry>2046x1534</entry>
376+ <entry><emphasis>2046x1534</emphasis></entry>
377+ <entry><emphasis>2046x1534</emphasis></entry>
378+ </row>
379+ <row>
380+ <entry>Configure scaler output</entry>
381+ <entry>2048x1536</entry>
382+ <entry>2048x1536</entry>
383+ <entry>2046x1534</entry>
384+ <entry>2046x1534</entry>
385+ <entry><emphasis>1280x960</emphasis></entry>
386+ </row>
387+ </tbody>
388+ </tgroup>
389+ </table>
390+
391+ <para>
392+ <orderedlist>
393+ <listitem>Initial state. The sensor output is set to its native 3MP
394+ resolution. Resolutions on the host frontend and scaler input and output
395+ pads are undefined.</listitem>
396+ <listitem>The application configures the frontend input pad resolution to
397+ 2048x1536. The driver propagates the format to the frontend output pad.
398+ Note that the propagated output format can be different, as in this case,
399+ than the input format, as the hardware might need to crop pixels (for
400+ instance when converting a Bayer filter pattern to RGB or YUV).</listitem>
401+ <listitem>The application configures the scaler input pad resolution to
402+ 2046x1534 to match the frontend output resolution. The driver propagates
403+ the format to the scaler output pad.</listitem>
404+ <listitem>The application configures the scaler output pad resolution to
405+ 1280x960.</listitem>
406+ </orderedlist>
407+ </para>
408+
409+ <para>When satisfied with the try results, applications can set the active
410+ formats by setting the <structfield>which</structfield> argument to
411+ <constant>V4L2_SUBDEV_FORMAT_TRY</constant>. Active formats are changed
412+ exactly as try formats by drivers. To avoid modifying the hardware state
413+ during format negotiation, applications should negotiate try formats first
414+ and then modify the active settings using the try formats returned during
415+ the last negotiation iteration. This guarantees that the active format
416+ will be applied as-is by the driver without being modified.
417+ </para>
418+ </section>
419+
420+ </section>
421+
422+ &sub-subdev-formats;
423diff --git a/Documentation/DocBook/v4l/subdev-formats.xml b/Documentation/DocBook/v4l/subdev-formats.xml
424new file mode 100644
425index 0000000..0cae572
426--- /dev/null
427+++ b/Documentation/DocBook/v4l/subdev-formats.xml
428@@ -0,0 +1,2416 @@
429+<section id="v4l2-mbus-format">
430+ <title>Media Bus Formats</title>
431+
432+ <table pgwide="1" frame="none" id="v4l2-mbus-framefmt">
433+ <title>struct <structname>v4l2_mbus_framefmt</structname></title>
434+ <tgroup cols="3">
435+ &cs-str;
436+ <tbody valign="top">
437+ <row>
438+ <entry>__u32</entry>
439+ <entry><structfield>width</structfield></entry>
440+ <entry>Image width, in pixels.</entry>
441+ </row>
442+ <row>
443+ <entry>__u32</entry>
444+ <entry><structfield>height</structfield></entry>
445+ <entry>Image height, in pixels.</entry>
446+ </row>
447+ <row>
448+ <entry>__u32</entry>
449+ <entry><structfield>code</structfield></entry>
450+ <entry>Format code, from &v4l2-mbus-pixelcode;.</entry>
451+ </row>
452+ <row>
453+ <entry>__u32</entry>
454+ <entry><structfield>field</structfield></entry>
455+ <entry>Field order, from &v4l2-field;. See
456+ <xref linkend="field-order" /> for details.</entry>
457+ </row>
458+ <row>
459+ <entry>__u32</entry>
460+ <entry><structfield>colorspace</structfield></entry>
461+ <entry>Image colorspace, from &v4l2-colorspace;. See
462+ <xref linkend="colorspaces" /> for details.</entry>
463+ </row>
464+ <row>
465+ <entry>__u32</entry>
466+ <entry><structfield>reserved</structfield>[7]</entry>
467+ <entry>Reserved for future extensions. Applications and drivers must
468+ set the array to zero.</entry>
469+ </row>
470+ </tbody>
471+ </tgroup>
472+ </table>
473+
474+ <section id="v4l2-mbus-pixelcode">
475+ <title>Media Bus Pixel Codes</title>
476+
477+ <para>The media bus pixel codes describe image formats as flowing over
478+ physical busses (both between separate physical components and inside SoC
479+ devices). This should not be confused with the V4L2 pixel formats that
480+ describe, using four character codes, image formats as stored in memory.
481+ </para>
482+
483+ <para>While there is a relationship between image formats on busses and
484+ image formats in memory (a raw Bayer image won't be magically converted to
485+ JPEG just by storing it to memory), there is no one-to-one correspondance
486+ between them.</para>
487+
488+ <section>
489+ <title>Packed RGB Formats</title>
490+
491+ <para>Those formats transfer pixel data as red, green and blue components.
492+ The format code is made of the following information.
493+ <itemizedlist>
494+ <listitem>The red, green and blue components order code, as encoded in a
495+ pixel sample. Possible values are RGB and BGR.</listitem>
496+ <listitem>The number of bits per component, for each component. The values
497+ can be different for all components. Common values are 555 and 565.
498+ </listitem>
499+ <listitem>The number of bus samples per pixel. Pixels that are wider than
500+ the bus width must be transferred in multiple samples. Common values are
501+ 1 and 2.</listitem>
502+ <listitem>The bus width.</listitem>
503+ <listitem>For formats where the total number of bits per pixel is smaller
504+ than the number of bus samples per pixel times the bus width, a padding
505+ value stating if the bytes are padded in their most high order bits
506+ (PADHI) or low order bits (PADLO).</listitem>
507+ <listitem>For formats where the number of bus samples per pixel is larger
508+ than 1, an endianness value stating if the pixel is transferred MSB first
509+ (BE) or LSB first (LE).</listitem>
510+ </itemizedlist>
511+ </para>
512+
513+ <para>For instance, a format where pixels are encoded as 5-bits red, 5-bits
514+ green and 5-bit blue values padded on the high bit, transferred as 2 8-bit
515+ samples per pixel with the most significant bits (padding, red and half of
516+ the green value) transferred first will be named
517+ <constant>V4L2_MBUS_FMT_RGB555_2X8_PADHI_BE</constant>.
518+ </para>
519+
520+ <para>The following tables list existing packet RGB formats.</para>
521+
522+ <table pgwide="0" frame="none" id="v4l2-mbus-pixelcode-rgb">
523+ <title>RGB formats</title>
524+ <tgroup cols="11">
525+ <colspec colname="id" align="left" />
526+ <colspec colname="code" align="center"/>
527+ <colspec colname="bit" />
528+ <colspec colnum="4" colname="b07" align="center" />
529+ <colspec colnum="5" colname="b06" align="center" />
530+ <colspec colnum="6" colname="b05" align="center" />
531+ <colspec colnum="7" colname="b04" align="center" />
532+ <colspec colnum="8" colname="b03" align="center" />
533+ <colspec colnum="9" colname="b02" align="center" />
534+ <colspec colnum="10" colname="b01" align="center" />
535+ <colspec colnum="11" colname="b00" align="center" />
536+ <spanspec namest="b07" nameend="b00" spanname="b0" />
537+ <thead>
538+ <row>
539+ <entry>Identifier</entry>
540+ <entry>Code</entry>
541+ <entry></entry>
542+ <entry spanname="b0">Data organization</entry>
543+ </row>
544+ <row>
545+ <entry></entry>
546+ <entry></entry>
547+ <entry>Bit</entry>
548+ <entry>7</entry>
549+ <entry>6</entry>
550+ <entry>5</entry>
551+ <entry>4</entry>
552+ <entry>3</entry>
553+ <entry>2</entry>
554+ <entry>1</entry>
555+ <entry>0</entry>
556+ </row>
557+ </thead>
558+ <tbody valign="top">
559+ <row id="V4L2-MBUS-FMT-RGB444-2X8-PADHI-BE">
560+ <entry>V4L2_MBUS_FMT_RGB444_2X8_PADHI_BE</entry>
561+ <entry>0x1001</entry>
562+ <entry></entry>
563+ <entry>0</entry>
564+ <entry>0</entry>
565+ <entry>0</entry>
566+ <entry>0</entry>
567+ <entry>r<subscript>3</subscript></entry>
568+ <entry>r<subscript>2</subscript></entry>
569+ <entry>r<subscript>1</subscript></entry>
570+ <entry>r<subscript>0</subscript></entry>
571+ </row>
572+ <row>
573+ <entry></entry>
574+ <entry></entry>
575+ <entry></entry>
576+ <entry>g<subscript>3</subscript></entry>
577+ <entry>g<subscript>2</subscript></entry>
578+ <entry>g<subscript>1</subscript></entry>
579+ <entry>g<subscript>0</subscript></entry>
580+ <entry>b<subscript>3</subscript></entry>
581+ <entry>b<subscript>2</subscript></entry>
582+ <entry>b<subscript>1</subscript></entry>
583+ <entry>b<subscript>0</subscript></entry>
584+ </row>
585+ <row id="V4L2-MBUS-FMT-RGB444-2X8-PADHI-LE">
586+ <entry>V4L2_MBUS_FMT_RGB444_2X8_PADHI_LE</entry>
587+ <entry>0x1002</entry>
588+ <entry></entry>
589+ <entry>g<subscript>3</subscript></entry>
590+ <entry>g<subscript>2</subscript></entry>
591+ <entry>g<subscript>1</subscript></entry>
592+ <entry>g<subscript>0</subscript></entry>
593+ <entry>b<subscript>3</subscript></entry>
594+ <entry>b<subscript>2</subscript></entry>
595+ <entry>b<subscript>1</subscript></entry>
596+ <entry>b<subscript>0</subscript></entry>
597+ </row>
598+ <row>
599+ <entry></entry>
600+ <entry></entry>
601+ <entry></entry>
602+ <entry>0</entry>
603+ <entry>0</entry>
604+ <entry>0</entry>
605+ <entry>0</entry>
606+ <entry>r<subscript>3</subscript></entry>
607+ <entry>r<subscript>2</subscript></entry>
608+ <entry>r<subscript>1</subscript></entry>
609+ <entry>r<subscript>0</subscript></entry>
610+ </row>
611+ <row id="V4L2-MBUS-FMT-RGB555-2X8-PADHI-BE">
612+ <entry>V4L2_MBUS_FMT_RGB555_2X8_PADHI_BE</entry>
613+ <entry>0x1003</entry>
614+ <entry></entry>
615+ <entry>0</entry>
616+ <entry>r<subscript>4</subscript></entry>
617+ <entry>r<subscript>3</subscript></entry>
618+ <entry>r<subscript>2</subscript></entry>
619+ <entry>r<subscript>1</subscript></entry>
620+ <entry>r<subscript>0</subscript></entry>
621+ <entry>g<subscript>4</subscript></entry>
622+ <entry>g<subscript>3</subscript></entry>
623+ </row>
624+ <row>
625+ <entry></entry>
626+ <entry></entry>
627+ <entry></entry>
628+ <entry>g<subscript>2</subscript></entry>
629+ <entry>g<subscript>1</subscript></entry>
630+ <entry>g<subscript>0</subscript></entry>
631+ <entry>b<subscript>4</subscript></entry>
632+ <entry>b<subscript>3</subscript></entry>
633+ <entry>b<subscript>2</subscript></entry>
634+ <entry>b<subscript>1</subscript></entry>
635+ <entry>b<subscript>0</subscript></entry>
636+ </row>
637+ <row id="V4L2-MBUS-FMT-RGB555-2X8-PADHI-LE">
638+ <entry>V4L2_MBUS_FMT_RGB555_2X8_PADHI_LE</entry>
639+ <entry>0x1004</entry>
640+ <entry></entry>
641+ <entry>g<subscript>2</subscript></entry>
642+ <entry>g<subscript>1</subscript></entry>
643+ <entry>g<subscript>0</subscript></entry>
644+ <entry>b<subscript>4</subscript></entry>
645+ <entry>b<subscript>3</subscript></entry>
646+ <entry>b<subscript>2</subscript></entry>
647+ <entry>b<subscript>1</subscript></entry>
648+ <entry>b<subscript>0</subscript></entry>
649+ </row>
650+ <row>
651+ <entry></entry>
652+ <entry></entry>
653+ <entry></entry>
654+ <entry>0</entry>
655+ <entry>r<subscript>4</subscript></entry>
656+ <entry>r<subscript>3</subscript></entry>
657+ <entry>r<subscript>2</subscript></entry>
658+ <entry>r<subscript>1</subscript></entry>
659+ <entry>r<subscript>0</subscript></entry>
660+ <entry>g<subscript>4</subscript></entry>
661+ <entry>g<subscript>3</subscript></entry>
662+ </row>
663+ <row id="V4L2-MBUS-FMT-BGR565-2X8-BE">
664+ <entry>V4L2_MBUS_FMT_BGR565_2X8_BE</entry>
665+ <entry>0x1005</entry>
666+ <entry></entry>
667+ <entry>b<subscript>4</subscript></entry>
668+ <entry>b<subscript>3</subscript></entry>
669+ <entry>b<subscript>2</subscript></entry>
670+ <entry>b<subscript>1</subscript></entry>
671+ <entry>b<subscript>0</subscript></entry>
672+ <entry>g<subscript>5</subscript></entry>
673+ <entry>g<subscript>4</subscript></entry>
674+ <entry>g<subscript>3</subscript></entry>
675+ </row>
676+ <row>
677+ <entry></entry>
678+ <entry></entry>
679+ <entry></entry>
680+ <entry>g<subscript>2</subscript></entry>
681+ <entry>g<subscript>1</subscript></entry>
682+ <entry>g<subscript>0</subscript></entry>
683+ <entry>r<subscript>4</subscript></entry>
684+ <entry>r<subscript>3</subscript></entry>
685+ <entry>r<subscript>2</subscript></entry>
686+ <entry>r<subscript>1</subscript></entry>
687+ <entry>r<subscript>0</subscript></entry>
688+ </row>
689+ <row id="V4L2-MBUS-FMT-BGR565-2X8-LE">
690+ <entry>V4L2_MBUS_FMT_BGR565_2X8_LE</entry>
691+ <entry>0x1006</entry>
692+ <entry></entry>
693+ <entry>g<subscript>2</subscript></entry>
694+ <entry>g<subscript>1</subscript></entry>
695+ <entry>g<subscript>0</subscript></entry>
696+ <entry>r<subscript>4</subscript></entry>
697+ <entry>r<subscript>3</subscript></entry>
698+ <entry>r<subscript>2</subscript></entry>
699+ <entry>r<subscript>1</subscript></entry>
700+ <entry>r<subscript>0</subscript></entry>
701+ </row>
702+ <row>
703+ <entry></entry>
704+ <entry></entry>
705+ <entry></entry>
706+ <entry>b<subscript>4</subscript></entry>
707+ <entry>b<subscript>3</subscript></entry>
708+ <entry>b<subscript>2</subscript></entry>
709+ <entry>b<subscript>1</subscript></entry>
710+ <entry>b<subscript>0</subscript></entry>
711+ <entry>g<subscript>5</subscript></entry>
712+ <entry>g<subscript>4</subscript></entry>
713+ <entry>g<subscript>3</subscript></entry>
714+ </row>
715+ <row id="V4L2-MBUS-FMT-RGB565-2X8-BE">
716+ <entry>V4L2_MBUS_FMT_RGB565_2X8_BE</entry>
717+ <entry>0x1007</entry>
718+ <entry></entry>
719+ <entry>r<subscript>4</subscript></entry>
720+ <entry>r<subscript>3</subscript></entry>
721+ <entry>r<subscript>2</subscript></entry>
722+ <entry>r<subscript>1</subscript></entry>
723+ <entry>r<subscript>0</subscript></entry>
724+ <entry>g<subscript>5</subscript></entry>
725+ <entry>g<subscript>4</subscript></entry>
726+ <entry>g<subscript>3</subscript></entry>
727+ </row>
728+ <row>
729+ <entry></entry>
730+ <entry></entry>
731+ <entry></entry>
732+ <entry>g<subscript>2</subscript></entry>
733+ <entry>g<subscript>1</subscript></entry>
734+ <entry>g<subscript>0</subscript></entry>
735+ <entry>b<subscript>4</subscript></entry>
736+ <entry>b<subscript>3</subscript></entry>
737+ <entry>b<subscript>2</subscript></entry>
738+ <entry>b<subscript>1</subscript></entry>
739+ <entry>b<subscript>0</subscript></entry>
740+ </row>
741+ <row id="V4L2-MBUS-FMT-RGB565-2X8-LE">
742+ <entry>V4L2_MBUS_FMT_RGB565_2X8_LE</entry>
743+ <entry>0x1008</entry>
744+ <entry></entry>
745+ <entry>g<subscript>2</subscript></entry>
746+ <entry>g<subscript>1</subscript></entry>
747+ <entry>g<subscript>0</subscript></entry>
748+ <entry>b<subscript>4</subscript></entry>
749+ <entry>b<subscript>3</subscript></entry>
750+ <entry>b<subscript>2</subscript></entry>
751+ <entry>b<subscript>1</subscript></entry>
752+ <entry>b<subscript>0</subscript></entry>
753+ </row>
754+ <row>
755+ <entry></entry>
756+ <entry></entry>
757+ <entry></entry>
758+ <entry>r<subscript>4</subscript></entry>
759+ <entry>r<subscript>3</subscript></entry>
760+ <entry>r<subscript>2</subscript></entry>
761+ <entry>r<subscript>1</subscript></entry>
762+ <entry>r<subscript>0</subscript></entry>
763+ <entry>g<subscript>5</subscript></entry>
764+ <entry>g<subscript>4</subscript></entry>
765+ <entry>g<subscript>3</subscript></entry>
766+ </row>
767+ </tbody>
768+ </tgroup>
769+ </table>
770+ </section>
771+
772+ <section>
773+ <title>Bayer Formats</title>
774+
775+ <para>Those formats transfer pixel data as red, green and blue components.
776+ The format code is made of the following information.
777+ <itemizedlist>
778+ <listitem>The red, green and blue components order code, as encoded in a
779+ pixel sample. The possible values are shown in <xref
780+ linkend="bayer-patterns" />.</listitem>
781+ <listitem>The number of bits per pixel component. All components are
782+ transferred on the same number of bits. Common values are 8, 10 and 12.
783+ </listitem>
784+ <listitem>If the pixel components are DPCM-compressed, a mention of the
785+ DPCM compression and the number of bits per compressed pixel component.
786+ </listitem>
787+ <listitem>The number of bus samples per pixel. Pixels that are wider than
788+ the bus width must be transferred in multiple samples. Common values are
789+ 1 and 2.</listitem>
790+ <listitem>The bus width.</listitem>
791+ <listitem>For formats where the total number of bits per pixel is smaller
792+ than the number of bus samples per pixel times the bus width, a padding
793+ value stating if the bytes are padded in their most high order bits
794+ (PADHI) or low order bits (PADLO).</listitem>
795+ <listitem>For formats where the number of bus samples per pixel is larger
796+ than 1, an endianness value stating if the pixel is transferred MSB first
797+ (BE) or LSB first (LE).</listitem>
798+ </itemizedlist>
799+ </para>
800+
801+ <para>For instance, a format with uncompressed 10-bit Bayer components
802+ arranged in a red, green, green, blue pattern transferred as 2 8-bit
803+ samples per pixel with the least significant bits transferred first will
804+ be named <constant>V4L2_MBUS_FMT_SRGGB10_2X8_PADHI_LE</constant>.
805+ </para>
806+
807+ <figure id="bayer-patterns">
808+ <title>Bayer Patterns</title>
809+ <mediaobject>
810+ <imageobject>
811+ <imagedata fileref="bayer.pdf" format="PS" />
812+ </imageobject>
813+ <imageobject>
814+ <imagedata fileref="bayer.png" format="PNG" />
815+ </imageobject>
816+ <textobject>
817+ <phrase>Bayer filter color patterns</phrase>
818+ </textobject>
819+ </mediaobject>
820+ </figure>
821+
822+ <para>The following table lists existing packet Bayer formats. The data
823+ organization is given as an example for the first pixel only.</para>
824+
825+ <table pgwide="0" frame="none" id="v4l2-mbus-pixelcode-bayer">
826+ <title>Bayer Formats</title>
827+ <tgroup cols="15">
828+ <colspec colname="id" align="left" />
829+ <colspec colname="code" align="center"/>
830+ <colspec colname="bit" />
831+ <colspec colnum="4" colname="b11" align="center" />
832+ <colspec colnum="5" colname="b10" align="center" />
833+ <colspec colnum="6" colname="b09" align="center" />
834+ <colspec colnum="7" colname="b08" align="center" />
835+ <colspec colnum="8" colname="b07" align="center" />
836+ <colspec colnum="9" colname="b06" align="center" />
837+ <colspec colnum="10" colname="b05" align="center" />
838+ <colspec colnum="11" colname="b04" align="center" />
839+ <colspec colnum="12" colname="b03" align="center" />
840+ <colspec colnum="13" colname="b02" align="center" />
841+ <colspec colnum="14" colname="b01" align="center" />
842+ <colspec colnum="15" colname="b00" align="center" />
843+ <spanspec namest="b11" nameend="b00" spanname="b0" />
844+ <thead>
845+ <row>
846+ <entry>Identifier</entry>
847+ <entry>Code</entry>
848+ <entry></entry>
849+ <entry spanname="b0">Data organization</entry>
850+ </row>
851+ <row>
852+ <entry></entry>
853+ <entry></entry>
854+ <entry>Bit</entry>
855+ <entry>11</entry>
856+ <entry>10</entry>
857+ <entry>9</entry>
858+ <entry>8</entry>
859+ <entry>7</entry>
860+ <entry>6</entry>
861+ <entry>5</entry>
862+ <entry>4</entry>
863+ <entry>3</entry>
864+ <entry>2</entry>
865+ <entry>1</entry>
866+ <entry>0</entry>
867+ </row>
868+ </thead>
869+ <tbody valign="top">
870+ <row id="V4L2-MBUS-FMT-SBGGR8-1X8">
871+ <entry>V4L2_MBUS_FMT_SBGGR8_1X8</entry>
872+ <entry>0x3001</entry>
873+ <entry></entry>
874+ <entry>-</entry>
875+ <entry>-</entry>
876+ <entry>-</entry>
877+ <entry>-</entry>
878+ <entry>b<subscript>7</subscript></entry>
879+ <entry>b<subscript>6</subscript></entry>
880+ <entry>b<subscript>5</subscript></entry>
881+ <entry>b<subscript>4</subscript></entry>
882+ <entry>b<subscript>3</subscript></entry>
883+ <entry>b<subscript>2</subscript></entry>
884+ <entry>b<subscript>1</subscript></entry>
885+ <entry>b<subscript>0</subscript></entry>
886+ </row>
887+ <row id="V4L2-MBUS-FMT-SGRBG8-1X8">
888+ <entry>V4L2_MBUS_FMT_SGRBG8_1X8</entry>
889+ <entry>0x3002</entry>
890+ <entry></entry>
891+ <entry>-</entry>
892+ <entry>-</entry>
893+ <entry>-</entry>
894+ <entry>-</entry>
895+ <entry>g<subscript>7</subscript></entry>
896+ <entry>g<subscript>6</subscript></entry>
897+ <entry>g<subscript>5</subscript></entry>
898+ <entry>g<subscript>4</subscript></entry>
899+ <entry>g<subscript>3</subscript></entry>
900+ <entry>g<subscript>2</subscript></entry>
901+ <entry>g<subscript>1</subscript></entry>
902+ <entry>g<subscript>0</subscript></entry>
903+ </row>
904+ <row id="V4L2-MBUS-FMT-SBGGR10-DPCM8-1X8">
905+ <entry>V4L2_MBUS_FMT_SBGGR10_DPCM8_1X8</entry>
906+ <entry>0x300b</entry>
907+ <entry></entry>
908+ <entry>-</entry>
909+ <entry>-</entry>
910+ <entry>-</entry>
911+ <entry>-</entry>
912+ <entry>b<subscript>7</subscript></entry>
913+ <entry>b<subscript>6</subscript></entry>
914+ <entry>b<subscript>5</subscript></entry>
915+ <entry>b<subscript>4</subscript></entry>
916+ <entry>b<subscript>3</subscript></entry>
917+ <entry>b<subscript>2</subscript></entry>
918+ <entry>b<subscript>1</subscript></entry>
919+ <entry>b<subscript>0</subscript></entry>
920+ </row>
921+ <row id="V4L2-MBUS-FMT-SGBRG10-DPCM8-1X8">
922+ <entry>V4L2_MBUS_FMT_SGBRG10_DPCM8_1X8</entry>
923+ <entry>0x300c</entry>
924+ <entry></entry>
925+ <entry>-</entry>
926+ <entry>-</entry>
927+ <entry>-</entry>
928+ <entry>-</entry>
929+ <entry>g<subscript>7</subscript></entry>
930+ <entry>g<subscript>6</subscript></entry>
931+ <entry>g<subscript>5</subscript></entry>
932+ <entry>g<subscript>4</subscript></entry>
933+ <entry>g<subscript>3</subscript></entry>
934+ <entry>g<subscript>2</subscript></entry>
935+ <entry>g<subscript>1</subscript></entry>
936+ <entry>g<subscript>0</subscript></entry>
937+ </row>
938+ <row id="V4L2-MBUS-FMT-SGRBG10-DPCM8-1X8">
939+ <entry>V4L2_MBUS_FMT_SGRBG10_DPCM8_1X8</entry>
940+ <entry>0x3009</entry>
941+ <entry></entry>
942+ <entry>-</entry>
943+ <entry>-</entry>
944+ <entry>-</entry>
945+ <entry>-</entry>
946+ <entry>g<subscript>7</subscript></entry>
947+ <entry>g<subscript>6</subscript></entry>
948+ <entry>g<subscript>5</subscript></entry>
949+ <entry>g<subscript>4</subscript></entry>
950+ <entry>g<subscript>3</subscript></entry>
951+ <entry>g<subscript>2</subscript></entry>
952+ <entry>g<subscript>1</subscript></entry>
953+ <entry>g<subscript>0</subscript></entry>
954+ </row>
955+ <row id="V4L2-MBUS-FMT-SRGGB10-DPCM8-1X8">
956+ <entry>V4L2_MBUS_FMT_SRGGB10_DPCM8_1X8</entry>
957+ <entry>0x300d</entry>
958+ <entry></entry>
959+ <entry>-</entry>
960+ <entry>-</entry>
961+ <entry>-</entry>
962+ <entry>-</entry>
963+ <entry>r<subscript>7</subscript></entry>
964+ <entry>r<subscript>6</subscript></entry>
965+ <entry>r<subscript>5</subscript></entry>
966+ <entry>r<subscript>4</subscript></entry>
967+ <entry>r<subscript>3</subscript></entry>
968+ <entry>r<subscript>2</subscript></entry>
969+ <entry>r<subscript>1</subscript></entry>
970+ <entry>r<subscript>0</subscript></entry>
971+ </row>
972+ <row id="V4L2-MBUS-FMT-SBGGR10-2X8-PADHI-BE">
973+ <entry>V4L2_MBUS_FMT_SBGGR10_2X8_PADHI_BE</entry>
974+ <entry>0x3003</entry>
975+ <entry></entry>
976+ <entry>-</entry>
977+ <entry>-</entry>
978+ <entry>-</entry>
979+ <entry>-</entry>
980+ <entry>0</entry>
981+ <entry>0</entry>
982+ <entry>0</entry>
983+ <entry>0</entry>
984+ <entry>0</entry>
985+ <entry>0</entry>
986+ <entry>b<subscript>9</subscript></entry>
987+ <entry>b<subscript>8</subscript></entry>
988+ </row>
989+ <row>
990+ <entry></entry>
991+ <entry></entry>
992+ <entry></entry>
993+ <entry>-</entry>
994+ <entry>-</entry>
995+ <entry>-</entry>
996+ <entry>-</entry>
997+ <entry>b<subscript>7</subscript></entry>
998+ <entry>b<subscript>6</subscript></entry>
999+ <entry>b<subscript>5</subscript></entry>
1000+ <entry>b<subscript>4</subscript></entry>
1001+ <entry>b<subscript>3</subscript></entry>
1002+ <entry>b<subscript>2</subscript></entry>
1003+ <entry>b<subscript>1</subscript></entry>
1004+ <entry>b<subscript>0</subscript></entry>
1005+ </row>
1006+ <row id="V4L2-MBUS-FMT-SBGGR10-2X8-PADHI-LE">
1007+ <entry>V4L2_MBUS_FMT_SBGGR10_2X8_PADHI_LE</entry>
1008+ <entry>0x3004</entry>
1009+ <entry></entry>
1010+ <entry>-</entry>
1011+ <entry>-</entry>
1012+ <entry>-</entry>
1013+ <entry>-</entry>
1014+ <entry>b<subscript>7</subscript></entry>
1015+ <entry>b<subscript>6</subscript></entry>
1016+ <entry>b<subscript>5</subscript></entry>
1017+ <entry>b<subscript>4</subscript></entry>
1018+ <entry>b<subscript>3</subscript></entry>
1019+ <entry>b<subscript>2</subscript></entry>
1020+ <entry>b<subscript>1</subscript></entry>
1021+ <entry>b<subscript>0</subscript></entry>
1022+ </row>
1023+ <row>
1024+ <entry></entry>
1025+ <entry></entry>
1026+ <entry></entry>
1027+ <entry>-</entry>
1028+ <entry>-</entry>
1029+ <entry>-</entry>
1030+ <entry>-</entry>
1031+ <entry>0</entry>
1032+ <entry>0</entry>
1033+ <entry>0</entry>
1034+ <entry>0</entry>
1035+ <entry>0</entry>
1036+ <entry>0</entry>
1037+ <entry>b<subscript>9</subscript></entry>
1038+ <entry>b<subscript>8</subscript></entry>
1039+ </row>
1040+ <row id="V4L2-MBUS-FMT-SBGGR10-2X8-PADLO-BE">
1041+ <entry>V4L2_MBUS_FMT_SBGGR10_2X8_PADLO_BE</entry>
1042+ <entry>0x3005</entry>
1043+ <entry></entry>
1044+ <entry>-</entry>
1045+ <entry>-</entry>
1046+ <entry>-</entry>
1047+ <entry>-</entry>
1048+ <entry>b<subscript>9</subscript></entry>
1049+ <entry>b<subscript>8</subscript></entry>
1050+ <entry>b<subscript>7</subscript></entry>
1051+ <entry>b<subscript>6</subscript></entry>
1052+ <entry>b<subscript>5</subscript></entry>
1053+ <entry>b<subscript>4</subscript></entry>
1054+ <entry>b<subscript>3</subscript></entry>
1055+ <entry>b<subscript>2</subscript></entry>
1056+ </row>
1057+ <row>
1058+ <entry></entry>
1059+ <entry></entry>
1060+ <entry></entry>
1061+ <entry>-</entry>
1062+ <entry>-</entry>
1063+ <entry>-</entry>
1064+ <entry>-</entry>
1065+ <entry>b<subscript>1</subscript></entry>
1066+ <entry>b<subscript>0</subscript></entry>
1067+ <entry>0</entry>
1068+ <entry>0</entry>
1069+ <entry>0</entry>
1070+ <entry>0</entry>
1071+ <entry>0</entry>
1072+ <entry>0</entry>
1073+ </row>
1074+ <row id="V4L2-MBUS-FMT-SBGGR10-2X8-PADLO-LE">
1075+ <entry>V4L2_MBUS_FMT_SBGGR10_2X8_PADLO_LE</entry>
1076+ <entry>0x3006</entry>
1077+ <entry></entry>
1078+ <entry>-</entry>
1079+ <entry>-</entry>
1080+ <entry>-</entry>
1081+ <entry>-</entry>
1082+ <entry>b<subscript>1</subscript></entry>
1083+ <entry>b<subscript>0</subscript></entry>
1084+ <entry>0</entry>
1085+ <entry>0</entry>
1086+ <entry>0</entry>
1087+ <entry>0</entry>
1088+ <entry>0</entry>
1089+ <entry>0</entry>
1090+ </row>
1091+ <row>
1092+ <entry></entry>
1093+ <entry></entry>
1094+ <entry></entry>
1095+ <entry>-</entry>
1096+ <entry>-</entry>
1097+ <entry>-</entry>
1098+ <entry>-</entry>
1099+ <entry>b<subscript>9</subscript></entry>
1100+ <entry>b<subscript>8</subscript></entry>
1101+ <entry>b<subscript>7</subscript></entry>
1102+ <entry>b<subscript>6</subscript></entry>
1103+ <entry>b<subscript>5</subscript></entry>
1104+ <entry>b<subscript>4</subscript></entry>
1105+ <entry>b<subscript>3</subscript></entry>
1106+ <entry>b<subscript>2</subscript></entry>
1107+ </row>
1108+ <row id="V4L2-MBUS-FMT-SBGGR10-1X10">
1109+ <entry>V4L2_MBUS_FMT_SBGGR10_1X10</entry>
1110+ <entry>0x3007</entry>
1111+ <entry></entry>
1112+ <entry>-</entry>
1113+ <entry>-</entry>
1114+ <entry>b<subscript>9</subscript></entry>
1115+ <entry>b<subscript>8</subscript></entry>
1116+ <entry>b<subscript>7</subscript></entry>
1117+ <entry>b<subscript>6</subscript></entry>
1118+ <entry>b<subscript>5</subscript></entry>
1119+ <entry>b<subscript>4</subscript></entry>
1120+ <entry>b<subscript>3</subscript></entry>
1121+ <entry>b<subscript>2</subscript></entry>
1122+ <entry>b<subscript>1</subscript></entry>
1123+ <entry>b<subscript>0</subscript></entry>
1124+ </row>
1125+ <row id="V4L2-MBUS-FMT-SGBRG10-1X10">
1126+ <entry>V4L2_MBUS_FMT_SGBRG10_1X10</entry>
1127+ <entry>0x300e</entry>
1128+ <entry></entry>
1129+ <entry>-</entry>
1130+ <entry>-</entry>
1131+ <entry>g<subscript>9</subscript></entry>
1132+ <entry>g<subscript>8</subscript></entry>
1133+ <entry>g<subscript>7</subscript></entry>
1134+ <entry>g<subscript>6</subscript></entry>
1135+ <entry>g<subscript>5</subscript></entry>
1136+ <entry>g<subscript>4</subscript></entry>
1137+ <entry>g<subscript>3</subscript></entry>
1138+ <entry>g<subscript>2</subscript></entry>
1139+ <entry>g<subscript>1</subscript></entry>
1140+ <entry>g<subscript>0</subscript></entry>
1141+ </row>
1142+ <row id="V4L2-MBUS-FMT-SGRBG10-1X10">
1143+ <entry>V4L2_MBUS_FMT_SGRBG10_1X10</entry>
1144+ <entry>0x300a</entry>
1145+ <entry></entry>
1146+ <entry>-</entry>
1147+ <entry>-</entry>
1148+ <entry>g<subscript>9</subscript></entry>
1149+ <entry>g<subscript>8</subscript></entry>
1150+ <entry>g<subscript>7</subscript></entry>
1151+ <entry>g<subscript>6</subscript></entry>
1152+ <entry>g<subscript>5</subscript></entry>
1153+ <entry>g<subscript>4</subscript></entry>
1154+ <entry>g<subscript>3</subscript></entry>
1155+ <entry>g<subscript>2</subscript></entry>
1156+ <entry>g<subscript>1</subscript></entry>
1157+ <entry>g<subscript>0</subscript></entry>
1158+ </row>
1159+ <row id="V4L2-MBUS-FMT-SRGGB10-1X10">
1160+ <entry>V4L2_MBUS_FMT_SRGGB10_1X10</entry>
1161+ <entry>0x300f</entry>
1162+ <entry></entry>
1163+ <entry>-</entry>
1164+ <entry>-</entry>
1165+ <entry>r<subscript>9</subscript></entry>
1166+ <entry>r<subscript>8</subscript></entry>
1167+ <entry>r<subscript>7</subscript></entry>
1168+ <entry>r<subscript>6</subscript></entry>
1169+ <entry>r<subscript>5</subscript></entry>
1170+ <entry>r<subscript>4</subscript></entry>
1171+ <entry>r<subscript>3</subscript></entry>
1172+ <entry>r<subscript>2</subscript></entry>
1173+ <entry>r<subscript>1</subscript></entry>
1174+ <entry>r<subscript>0</subscript></entry>
1175+ </row>
1176+ <row id="V4L2-MBUS-FMT-SBGGR12-1X12">
1177+ <entry>V4L2_MBUS_FMT_SBGGR12_1X12</entry>
1178+ <entry>0x3008</entry>
1179+ <entry></entry>
1180+ <entry>b<subscript>11</subscript></entry>
1181+ <entry>b<subscript>10</subscript></entry>
1182+ <entry>b<subscript>9</subscript></entry>
1183+ <entry>b<subscript>8</subscript></entry>
1184+ <entry>b<subscript>7</subscript></entry>
1185+ <entry>b<subscript>6</subscript></entry>
1186+ <entry>b<subscript>5</subscript></entry>
1187+ <entry>b<subscript>4</subscript></entry>
1188+ <entry>b<subscript>3</subscript></entry>
1189+ <entry>b<subscript>2</subscript></entry>
1190+ <entry>b<subscript>1</subscript></entry>
1191+ <entry>b<subscript>0</subscript></entry>
1192+ </row>
1193+ </tbody>
1194+ </tgroup>
1195+ </table>
1196+ </section>
1197+
1198+ <section>
1199+ <title>Packed YUV Formats</title>
1200+
1201+ <para>Those data formats transfer pixel data as (possibly downsampled) Y, U
1202+ and V components. The format code is made of the following information.
1203+ <itemizedlist>
1204+ <listitem>The Y, U and V components order code, as transferred on the
1205+ bus. Possible values are YUYV, UYVY, YVYU and VYUY.</listitem>
1206+ <listitem>The number of bits per pixel component. All components are
1207+ transferred on the same number of bits. Common values are 8, 10 and 12.
1208+ </listitem>
1209+ <listitem>The number of bus samples per pixel. Pixels that are wider than
1210+ the bus width must be transferred in multiple samples. Common values are
1211+ 1, 1.5 (encoded as 1_5) and 2.</listitem>
1212+ <listitem>The bus width. When the bus width is larger than the number of
1213+ bits per pixel component, several components are packed in a single bus
1214+ sample. The components are ordered as specified by the order code, with
1215+ components on the left of the code transferred in the high order bits.
1216+ Common values are 8 and 16.
1217+ </listitem>
1218+ </itemizedlist>
1219+ </para>
1220+
1221+ <para>For instance, a format where pixels are encoded as 8-bit YUV values
1222+ downsampled to 4:2:2 and transferred as 2 8-bit bus samples per pixel in the
1223+ U, Y, V, Y order will be named <constant>V4L2_MBUS_FMT_UYVY8_2X8</constant>.
1224+ </para>
1225+
1226+ <para>The following table lisst existing packet YUV formats.</para>
1227+
1228+ <table pgwide="0" frame="none" id="v4l2-mbus-pixelcode-yuv8">
1229+ <title>YUV Formats</title>
1230+ <tgroup cols="23">
1231+ <colspec colname="id" align="left" />
1232+ <colspec colname="code" align="center"/>
1233+ <colspec colname="bit" />
1234+ <colspec colnum="4" colname="b19" align="center" />
1235+ <colspec colnum="5" colname="b18" align="center" />
1236+ <colspec colnum="6" colname="b17" align="center" />
1237+ <colspec colnum="7" colname="b16" align="center" />
1238+ <colspec colnum="8" colname="b15" align="center" />
1239+ <colspec colnum="9" colname="b14" align="center" />
1240+ <colspec colnum="10" colname="b13" align="center" />
1241+ <colspec colnum="11" colname="b12" align="center" />
1242+ <colspec colnum="12" colname="b11" align="center" />
1243+ <colspec colnum="13" colname="b10" align="center" />
1244+ <colspec colnum="14" colname="b09" align="center" />
1245+ <colspec colnum="15" colname="b08" align="center" />
1246+ <colspec colnum="16" colname="b07" align="center" />
1247+ <colspec colnum="17" colname="b06" align="center" />
1248+ <colspec colnum="18" colname="b05" align="center" />
1249+ <colspec colnum="19" colname="b04" align="center" />
1250+ <colspec colnum="20" colname="b03" align="center" />
1251+ <colspec colnum="21" colname="b02" align="center" />
1252+ <colspec colnum="22" colname="b01" align="center" />
1253+ <colspec colnum="23" colname="b00" align="center" />
1254+ <spanspec namest="b19" nameend="b00" spanname="b0" />
1255+ <thead>
1256+ <row>
1257+ <entry>Identifier</entry>
1258+ <entry>Code</entry>
1259+ <entry></entry>
1260+ <entry spanname="b0">Data organization</entry>
1261+ </row>
1262+ <row>
1263+ <entry></entry>
1264+ <entry></entry>
1265+ <entry>Bit</entry>
1266+ <entry>19</entry>
1267+ <entry>18</entry>
1268+ <entry>17</entry>
1269+ <entry>16</entry>
1270+ <entry>15</entry>
1271+ <entry>14</entry>
1272+ <entry>13</entry>
1273+ <entry>12</entry>
1274+ <entry>11</entry>
1275+ <entry>10</entry>
1276+ <entry>9</entry>
1277+ <entry>8</entry>
1278+ <entry>7</entry>
1279+ <entry>6</entry>
1280+ <entry>5</entry>
1281+ <entry>4</entry>
1282+ <entry>3</entry>
1283+ <entry>2</entry>
1284+ <entry>1</entry>
1285+ <entry>0</entry>
1286+ </row>
1287+ </thead>
1288+ <tbody valign="top">
1289+ <row id="V4L2-MBUS-FMT-Y8-1X8">
1290+ <entry>V4L2_MBUS_FMT_Y8_1X8</entry>
1291+ <entry>0x2001</entry>
1292+ <entry></entry>
1293+ <entry>-</entry>
1294+ <entry>-</entry>
1295+ <entry>-</entry>
1296+ <entry>-</entry>
1297+ <entry>-</entry>
1298+ <entry>-</entry>
1299+ <entry>-</entry>
1300+ <entry>-</entry>
1301+ <entry>-</entry>
1302+ <entry>-</entry>
1303+ <entry>-</entry>
1304+ <entry>-</entry>
1305+ <entry>y<subscript>7</subscript></entry>
1306+ <entry>y<subscript>6</subscript></entry>
1307+ <entry>y<subscript>5</subscript></entry>
1308+ <entry>y<subscript>4</subscript></entry>
1309+ <entry>y<subscript>3</subscript></entry>
1310+ <entry>y<subscript>2</subscript></entry>
1311+ <entry>y<subscript>1</subscript></entry>
1312+ <entry>y<subscript>0</subscript></entry>
1313+ </row>
1314+ <row id="V4L2-MBUS-FMT-UYVY8-1_5X8">
1315+ <entry>V4L2_MBUS_FMT_UYVY8_1_5X8</entry>
1316+ <entry>0x2002</entry>
1317+ <entry></entry>
1318+ <entry>-</entry>
1319+ <entry>-</entry>
1320+ <entry>-</entry>
1321+ <entry>-</entry>
1322+ <entry>-</entry>
1323+ <entry>-</entry>
1324+ <entry>-</entry>
1325+ <entry>-</entry>
1326+ <entry>-</entry>
1327+ <entry>-</entry>
1328+ <entry>-</entry>
1329+ <entry>-</entry>
1330+ <entry>u<subscript>7</subscript></entry>
1331+ <entry>u<subscript>6</subscript></entry>
1332+ <entry>u<subscript>5</subscript></entry>
1333+ <entry>u<subscript>4</subscript></entry>
1334+ <entry>u<subscript>3</subscript></entry>
1335+ <entry>u<subscript>2</subscript></entry>
1336+ <entry>u<subscript>1</subscript></entry>
1337+ <entry>u<subscript>0</subscript></entry>
1338+ </row>
1339+ <row>
1340+ <entry></entry>
1341+ <entry></entry>
1342+ <entry></entry>
1343+ <entry>-</entry>
1344+ <entry>-</entry>
1345+ <entry>-</entry>
1346+ <entry>-</entry>
1347+ <entry>-</entry>
1348+ <entry>-</entry>
1349+ <entry>-</entry>
1350+ <entry>-</entry>
1351+ <entry>-</entry>
1352+ <entry>-</entry>
1353+ <entry>-</entry>
1354+ <entry>-</entry>
1355+ <entry>y<subscript>7</subscript></entry>
1356+ <entry>y<subscript>6</subscript></entry>
1357+ <entry>y<subscript>5</subscript></entry>
1358+ <entry>y<subscript>4</subscript></entry>
1359+ <entry>y<subscript>3</subscript></entry>
1360+ <entry>y<subscript>2</subscript></entry>
1361+ <entry>y<subscript>1</subscript></entry>
1362+ <entry>y<subscript>0</subscript></entry>
1363+ </row>
1364+ <row>
1365+ <entry></entry>
1366+ <entry></entry>
1367+ <entry></entry>
1368+ <entry>-</entry>
1369+ <entry>-</entry>
1370+ <entry>-</entry>
1371+ <entry>-</entry>
1372+ <entry>-</entry>
1373+ <entry>-</entry>
1374+ <entry>-</entry>
1375+ <entry>-</entry>
1376+ <entry>-</entry>
1377+ <entry>-</entry>
1378+ <entry>-</entry>
1379+ <entry>-</entry>
1380+ <entry>y<subscript>7</subscript></entry>
1381+ <entry>y<subscript>6</subscript></entry>
1382+ <entry>y<subscript>5</subscript></entry>
1383+ <entry>y<subscript>4</subscript></entry>
1384+ <entry>y<subscript>3</subscript></entry>
1385+ <entry>y<subscript>2</subscript></entry>
1386+ <entry>y<subscript>1</subscript></entry>
1387+ <entry>y<subscript>0</subscript></entry>
1388+ </row>
1389+ <row>
1390+ <entry></entry>
1391+ <entry></entry>
1392+ <entry></entry>
1393+ <entry>-</entry>
1394+ <entry>-</entry>
1395+ <entry>-</entry>
1396+ <entry>-</entry>
1397+ <entry>-</entry>
1398+ <entry>-</entry>
1399+ <entry>-</entry>
1400+ <entry>-</entry>
1401+ <entry>-</entry>
1402+ <entry>-</entry>
1403+ <entry>-</entry>
1404+ <entry>-</entry>
1405+ <entry>v<subscript>7</subscript></entry>
1406+ <entry>v<subscript>6</subscript></entry>
1407+ <entry>v<subscript>5</subscript></entry>
1408+ <entry>v<subscript>4</subscript></entry>
1409+ <entry>v<subscript>3</subscript></entry>
1410+ <entry>v<subscript>2</subscript></entry>
1411+ <entry>v<subscript>1</subscript></entry>
1412+ <entry>v<subscript>0</subscript></entry>
1413+ </row>
1414+ <row>
1415+ <entry></entry>
1416+ <entry></entry>
1417+ <entry></entry>
1418+ <entry>-</entry>
1419+ <entry>-</entry>
1420+ <entry>-</entry>
1421+ <entry>-</entry>
1422+ <entry>-</entry>
1423+ <entry>-</entry>
1424+ <entry>-</entry>
1425+ <entry>-</entry>
1426+ <entry>-</entry>
1427+ <entry>-</entry>
1428+ <entry>-</entry>
1429+ <entry>-</entry>
1430+ <entry>y<subscript>7</subscript></entry>
1431+ <entry>y<subscript>6</subscript></entry>
1432+ <entry>y<subscript>5</subscript></entry>
1433+ <entry>y<subscript>4</subscript></entry>
1434+ <entry>y<subscript>3</subscript></entry>
1435+ <entry>y<subscript>2</subscript></entry>
1436+ <entry>y<subscript>1</subscript></entry>
1437+ <entry>y<subscript>0</subscript></entry>
1438+ </row>
1439+ <row>
1440+ <entry></entry>
1441+ <entry></entry>
1442+ <entry></entry>
1443+ <entry>-</entry>
1444+ <entry>-</entry>
1445+ <entry>-</entry>
1446+ <entry>-</entry>
1447+ <entry>-</entry>
1448+ <entry>-</entry>
1449+ <entry>-</entry>
1450+ <entry>-</entry>
1451+ <entry>-</entry>
1452+ <entry>-</entry>
1453+ <entry>-</entry>
1454+ <entry>-</entry>
1455+ <entry>y<subscript>7</subscript></entry>
1456+ <entry>y<subscript>6</subscript></entry>
1457+ <entry>y<subscript>5</subscript></entry>
1458+ <entry>y<subscript>4</subscript></entry>
1459+ <entry>y<subscript>3</subscript></entry>
1460+ <entry>y<subscript>2</subscript></entry>
1461+ <entry>y<subscript>1</subscript></entry>
1462+ <entry>y<subscript>0</subscript></entry>
1463+ </row>
1464+ <row id="V4L2-MBUS-FMT-VYUY8-1_5X8">
1465+ <entry>V4L2_MBUS_FMT_VYUY8_1_5X8</entry>
1466+ <entry>0x2003</entry>
1467+ <entry></entry>
1468+ <entry>-</entry>
1469+ <entry>-</entry>
1470+ <entry>-</entry>
1471+ <entry>-</entry>
1472+ <entry>-</entry>
1473+ <entry>-</entry>
1474+ <entry>-</entry>
1475+ <entry>-</entry>
1476+ <entry>-</entry>
1477+ <entry>-</entry>
1478+ <entry>-</entry>
1479+ <entry>-</entry>
1480+ <entry>v<subscript>7</subscript></entry>
1481+ <entry>v<subscript>6</subscript></entry>
1482+ <entry>v<subscript>5</subscript></entry>
1483+ <entry>v<subscript>4</subscript></entry>
1484+ <entry>v<subscript>3</subscript></entry>
1485+ <entry>v<subscript>2</subscript></entry>
1486+ <entry>v<subscript>1</subscript></entry>
1487+ <entry>v<subscript>0</subscript></entry>
1488+ </row>
1489+ <row>
1490+ <entry></entry>
1491+ <entry></entry>
1492+ <entry></entry>
1493+ <entry>-</entry>
1494+ <entry>-</entry>
1495+ <entry>-</entry>
1496+ <entry>-</entry>
1497+ <entry>-</entry>
1498+ <entry>-</entry>
1499+ <entry>-</entry>
1500+ <entry>-</entry>
1501+ <entry>-</entry>
1502+ <entry>-</entry>
1503+ <entry>-</entry>
1504+ <entry>-</entry>
1505+ <entry>y<subscript>7</subscript></entry>
1506+ <entry>y<subscript>6</subscript></entry>
1507+ <entry>y<subscript>5</subscript></entry>
1508+ <entry>y<subscript>4</subscript></entry>
1509+ <entry>y<subscript>3</subscript></entry>
1510+ <entry>y<subscript>2</subscript></entry>
1511+ <entry>y<subscript>1</subscript></entry>
1512+ <entry>y<subscript>0</subscript></entry>
1513+ </row>
1514+ <row>
1515+ <entry></entry>
1516+ <entry></entry>
1517+ <entry></entry>
1518+ <entry>-</entry>
1519+ <entry>-</entry>
1520+ <entry>-</entry>
1521+ <entry>-</entry>
1522+ <entry>-</entry>
1523+ <entry>-</entry>
1524+ <entry>-</entry>
1525+ <entry>-</entry>
1526+ <entry>-</entry>
1527+ <entry>-</entry>
1528+ <entry>-</entry>
1529+ <entry>-</entry>
1530+ <entry>y<subscript>7</subscript></entry>
1531+ <entry>y<subscript>6</subscript></entry>
1532+ <entry>y<subscript>5</subscript></entry>
1533+ <entry>y<subscript>4</subscript></entry>
1534+ <entry>y<subscript>3</subscript></entry>
1535+ <entry>y<subscript>2</subscript></entry>
1536+ <entry>y<subscript>1</subscript></entry>
1537+ <entry>y<subscript>0</subscript></entry>
1538+ </row>
1539+ <row>
1540+ <entry></entry>
1541+ <entry></entry>
1542+ <entry></entry>
1543+ <entry>-</entry>
1544+ <entry>-</entry>
1545+ <entry>-</entry>
1546+ <entry>-</entry>
1547+ <entry>-</entry>
1548+ <entry>-</entry>
1549+ <entry>-</entry>
1550+ <entry>-</entry>
1551+ <entry>-</entry>
1552+ <entry>-</entry>
1553+ <entry>-</entry>
1554+ <entry>-</entry>
1555+ <entry>u<subscript>7</subscript></entry>
1556+ <entry>u<subscript>6</subscript></entry>
1557+ <entry>u<subscript>5</subscript></entry>
1558+ <entry>u<subscript>4</subscript></entry>
1559+ <entry>u<subscript>3</subscript></entry>
1560+ <entry>u<subscript>2</subscript></entry>
1561+ <entry>u<subscript>1</subscript></entry>
1562+ <entry>u<subscript>0</subscript></entry>
1563+ </row>
1564+ <row>
1565+ <entry></entry>
1566+ <entry></entry>
1567+ <entry></entry>
1568+ <entry>-</entry>
1569+ <entry>-</entry>
1570+ <entry>-</entry>
1571+ <entry>-</entry>
1572+ <entry>-</entry>
1573+ <entry>-</entry>
1574+ <entry>-</entry>
1575+ <entry>-</entry>
1576+ <entry>-</entry>
1577+ <entry>-</entry>
1578+ <entry>-</entry>
1579+ <entry>-</entry>
1580+ <entry>y<subscript>7</subscript></entry>
1581+ <entry>y<subscript>6</subscript></entry>
1582+ <entry>y<subscript>5</subscript></entry>
1583+ <entry>y<subscript>4</subscript></entry>
1584+ <entry>y<subscript>3</subscript></entry>
1585+ <entry>y<subscript>2</subscript></entry>
1586+ <entry>y<subscript>1</subscript></entry>
1587+ <entry>y<subscript>0</subscript></entry>
1588+ </row>
1589+ <row>
1590+ <entry></entry>
1591+ <entry></entry>
1592+ <entry></entry>
1593+ <entry>-</entry>
1594+ <entry>-</entry>
1595+ <entry>-</entry>
1596+ <entry>-</entry>
1597+ <entry>-</entry>
1598+ <entry>-</entry>
1599+ <entry>-</entry>
1600+ <entry>-</entry>
1601+ <entry>-</entry>
1602+ <entry>-</entry>
1603+ <entry>-</entry>
1604+ <entry>-</entry>
1605+ <entry>y<subscript>7</subscript></entry>
1606+ <entry>y<subscript>6</subscript></entry>
1607+ <entry>y<subscript>5</subscript></entry>
1608+ <entry>y<subscript>4</subscript></entry>
1609+ <entry>y<subscript>3</subscript></entry>
1610+ <entry>y<subscript>2</subscript></entry>
1611+ <entry>y<subscript>1</subscript></entry>
1612+ <entry>y<subscript>0</subscript></entry>
1613+ </row>
1614+ <row id="V4L2-MBUS-FMT-YUYV8-1_5X8">
1615+ <entry>V4L2_MBUS_FMT_YUYV8_1_5X8</entry>
1616+ <entry>0x2004</entry>
1617+ <entry></entry>
1618+ <entry>-</entry>
1619+ <entry>-</entry>
1620+ <entry>-</entry>
1621+ <entry>-</entry>
1622+ <entry>-</entry>
1623+ <entry>-</entry>
1624+ <entry>-</entry>
1625+ <entry>-</entry>
1626+ <entry>-</entry>
1627+ <entry>-</entry>
1628+ <entry>-</entry>
1629+ <entry>-</entry>
1630+ <entry>y<subscript>7</subscript></entry>
1631+ <entry>y<subscript>6</subscript></entry>
1632+ <entry>y<subscript>5</subscript></entry>
1633+ <entry>y<subscript>4</subscript></entry>
1634+ <entry>y<subscript>3</subscript></entry>
1635+ <entry>y<subscript>2</subscript></entry>
1636+ <entry>y<subscript>1</subscript></entry>
1637+ <entry>y<subscript>0</subscript></entry>
1638+ </row>
1639+ <row>
1640+ <entry></entry>
1641+ <entry></entry>
1642+ <entry></entry>
1643+ <entry>-</entry>
1644+ <entry>-</entry>
1645+ <entry>-</entry>
1646+ <entry>-</entry>
1647+ <entry>-</entry>
1648+ <entry>-</entry>
1649+ <entry>-</entry>
1650+ <entry>-</entry>
1651+ <entry>-</entry>
1652+ <entry>-</entry>
1653+ <entry>-</entry>
1654+ <entry>-</entry>
1655+ <entry>y<subscript>7</subscript></entry>
1656+ <entry>y<subscript>6</subscript></entry>
1657+ <entry>y<subscript>5</subscript></entry>
1658+ <entry>y<subscript>4</subscript></entry>
1659+ <entry>y<subscript>3</subscript></entry>
1660+ <entry>y<subscript>2</subscript></entry>
1661+ <entry>y<subscript>1</subscript></entry>
1662+ <entry>y<subscript>0</subscript></entry>
1663+ </row>
1664+ <row>
1665+ <entry></entry>
1666+ <entry></entry>
1667+ <entry></entry>
1668+ <entry>-</entry>
1669+ <entry>-</entry>
1670+ <entry>-</entry>
1671+ <entry>-</entry>
1672+ <entry>-</entry>
1673+ <entry>-</entry>
1674+ <entry>-</entry>
1675+ <entry>-</entry>
1676+ <entry>-</entry>
1677+ <entry>-</entry>
1678+ <entry>-</entry>
1679+ <entry>-</entry>
1680+ <entry>u<subscript>7</subscript></entry>
1681+ <entry>u<subscript>6</subscript></entry>
1682+ <entry>u<subscript>5</subscript></entry>
1683+ <entry>u<subscript>4</subscript></entry>
1684+ <entry>u<subscript>3</subscript></entry>
1685+ <entry>u<subscript>2</subscript></entry>
1686+ <entry>u<subscript>1</subscript></entry>
1687+ <entry>u<subscript>0</subscript></entry>
1688+ </row>
1689+ <row>
1690+ <entry></entry>
1691+ <entry></entry>
1692+ <entry></entry>
1693+ <entry>-</entry>
1694+ <entry>-</entry>
1695+ <entry>-</entry>
1696+ <entry>-</entry>
1697+ <entry>-</entry>
1698+ <entry>-</entry>
1699+ <entry>-</entry>
1700+ <entry>-</entry>
1701+ <entry>-</entry>
1702+ <entry>-</entry>
1703+ <entry>-</entry>
1704+ <entry>-</entry>
1705+ <entry>y<subscript>7</subscript></entry>
1706+ <entry>y<subscript>6</subscript></entry>
1707+ <entry>y<subscript>5</subscript></entry>
1708+ <entry>y<subscript>4</subscript></entry>
1709+ <entry>y<subscript>3</subscript></entry>
1710+ <entry>y<subscript>2</subscript></entry>
1711+ <entry>y<subscript>1</subscript></entry>
1712+ <entry>y<subscript>0</subscript></entry>
1713+ </row>
1714+ <row>
1715+ <entry></entry>
1716+ <entry></entry>
1717+ <entry></entry>
1718+ <entry>-</entry>
1719+ <entry>-</entry>
1720+ <entry>-</entry>
1721+ <entry>-</entry>
1722+ <entry>-</entry>
1723+ <entry>-</entry>
1724+ <entry>-</entry>
1725+ <entry>-</entry>
1726+ <entry>-</entry>
1727+ <entry>-</entry>
1728+ <entry>-</entry>
1729+ <entry>-</entry>
1730+ <entry>y<subscript>7</subscript></entry>
1731+ <entry>y<subscript>6</subscript></entry>
1732+ <entry>y<subscript>5</subscript></entry>
1733+ <entry>y<subscript>4</subscript></entry>
1734+ <entry>y<subscript>3</subscript></entry>
1735+ <entry>y<subscript>2</subscript></entry>
1736+ <entry>y<subscript>1</subscript></entry>
1737+ <entry>y<subscript>0</subscript></entry>
1738+ </row>
1739+ <row>
1740+ <entry></entry>
1741+ <entry></entry>
1742+ <entry></entry>
1743+ <entry>-</entry>
1744+ <entry>-</entry>
1745+ <entry>-</entry>
1746+ <entry>-</entry>
1747+ <entry>-</entry>
1748+ <entry>-</entry>
1749+ <entry>-</entry>
1750+ <entry>-</entry>
1751+ <entry>-</entry>
1752+ <entry>-</entry>
1753+ <entry>-</entry>
1754+ <entry>-</entry>
1755+ <entry>v<subscript>7</subscript></entry>
1756+ <entry>v<subscript>6</subscript></entry>
1757+ <entry>v<subscript>5</subscript></entry>
1758+ <entry>v<subscript>4</subscript></entry>
1759+ <entry>v<subscript>3</subscript></entry>
1760+ <entry>v<subscript>2</subscript></entry>
1761+ <entry>v<subscript>1</subscript></entry>
1762+ <entry>v<subscript>0</subscript></entry>
1763+ </row>
1764+ <row id="V4L2-MBUS-FMT-YVYU8-1_5X8">
1765+ <entry>V4L2_MBUS_FMT_YVYU8_1_5X8</entry>
1766+ <entry>0x2005</entry>
1767+ <entry></entry>
1768+ <entry>-</entry>
1769+ <entry>-</entry>
1770+ <entry>-</entry>
1771+ <entry>-</entry>
1772+ <entry>-</entry>
1773+ <entry>-</entry>
1774+ <entry>-</entry>
1775+ <entry>-</entry>
1776+ <entry>-</entry>
1777+ <entry>-</entry>
1778+ <entry>-</entry>
1779+ <entry>-</entry>
1780+ <entry>y<subscript>7</subscript></entry>
1781+ <entry>y<subscript>6</subscript></entry>
1782+ <entry>y<subscript>5</subscript></entry>
1783+ <entry>y<subscript>4</subscript></entry>
1784+ <entry>y<subscript>3</subscript></entry>
1785+ <entry>y<subscript>2</subscript></entry>
1786+ <entry>y<subscript>1</subscript></entry>
1787+ <entry>y<subscript>0</subscript></entry>
1788+ </row>
1789+ <row>
1790+ <entry></entry>
1791+ <entry></entry>
1792+ <entry></entry>
1793+ <entry>-</entry>
1794+ <entry>-</entry>
1795+ <entry>-</entry>
1796+ <entry>-</entry>
1797+ <entry>-</entry>
1798+ <entry>-</entry>
1799+ <entry>-</entry>
1800+ <entry>-</entry>
1801+ <entry>-</entry>
1802+ <entry>-</entry>
1803+ <entry>-</entry>
1804+ <entry>-</entry>
1805+ <entry>y<subscript>7</subscript></entry>
1806+ <entry>y<subscript>6</subscript></entry>
1807+ <entry>y<subscript>5</subscript></entry>
1808+ <entry>y<subscript>4</subscript></entry>
1809+ <entry>y<subscript>3</subscript></entry>
1810+ <entry>y<subscript>2</subscript></entry>
1811+ <entry>y<subscript>1</subscript></entry>
1812+ <entry>y<subscript>0</subscript></entry>
1813+ </row>
1814+ <row>
1815+ <entry></entry>
1816+ <entry></entry>
1817+ <entry></entry>
1818+ <entry>-</entry>
1819+ <entry>-</entry>
1820+ <entry>-</entry>
1821+ <entry>-</entry>
1822+ <entry>-</entry>
1823+ <entry>-</entry>
1824+ <entry>-</entry>
1825+ <entry>-</entry>
1826+ <entry>-</entry>
1827+ <entry>-</entry>
1828+ <entry>-</entry>
1829+ <entry>-</entry>
1830+ <entry>v<subscript>7</subscript></entry>
1831+ <entry>v<subscript>6</subscript></entry>
1832+ <entry>v<subscript>5</subscript></entry>
1833+ <entry>v<subscript>4</subscript></entry>
1834+ <entry>v<subscript>3</subscript></entry>
1835+ <entry>v<subscript>2</subscript></entry>
1836+ <entry>v<subscript>1</subscript></entry>
1837+ <entry>v<subscript>0</subscript></entry>
1838+ </row>
1839+ <row>
1840+ <entry></entry>
1841+ <entry></entry>
1842+ <entry></entry>
1843+ <entry>-</entry>
1844+ <entry>-</entry>
1845+ <entry>-</entry>
1846+ <entry>-</entry>
1847+ <entry>-</entry>
1848+ <entry>-</entry>
1849+ <entry>-</entry>
1850+ <entry>-</entry>
1851+ <entry>-</entry>
1852+ <entry>-</entry>
1853+ <entry>-</entry>
1854+ <entry>-</entry>
1855+ <entry>y<subscript>7</subscript></entry>
1856+ <entry>y<subscript>6</subscript></entry>
1857+ <entry>y<subscript>5</subscript></entry>
1858+ <entry>y<subscript>4</subscript></entry>
1859+ <entry>y<subscript>3</subscript></entry>
1860+ <entry>y<subscript>2</subscript></entry>
1861+ <entry>y<subscript>1</subscript></entry>
1862+ <entry>y<subscript>0</subscript></entry>
1863+ </row>
1864+ <row>
1865+ <entry></entry>
1866+ <entry></entry>
1867+ <entry></entry>
1868+ <entry>-</entry>
1869+ <entry>-</entry>
1870+ <entry>-</entry>
1871+ <entry>-</entry>
1872+ <entry>-</entry>
1873+ <entry>-</entry>
1874+ <entry>-</entry>
1875+ <entry>-</entry>
1876+ <entry>-</entry>
1877+ <entry>-</entry>
1878+ <entry>-</entry>
1879+ <entry>-</entry>
1880+ <entry>y<subscript>7</subscript></entry>
1881+ <entry>y<subscript>6</subscript></entry>
1882+ <entry>y<subscript>5</subscript></entry>
1883+ <entry>y<subscript>4</subscript></entry>
1884+ <entry>y<subscript>3</subscript></entry>
1885+ <entry>y<subscript>2</subscript></entry>
1886+ <entry>y<subscript>1</subscript></entry>
1887+ <entry>y<subscript>0</subscript></entry>
1888+ </row>
1889+ <row>
1890+ <entry></entry>
1891+ <entry></entry>
1892+ <entry></entry>
1893+ <entry>-</entry>
1894+ <entry>-</entry>
1895+ <entry>-</entry>
1896+ <entry>-</entry>
1897+ <entry>-</entry>
1898+ <entry>-</entry>
1899+ <entry>-</entry>
1900+ <entry>-</entry>
1901+ <entry>-</entry>
1902+ <entry>-</entry>
1903+ <entry>-</entry>
1904+ <entry>-</entry>
1905+ <entry>u<subscript>7</subscript></entry>
1906+ <entry>u<subscript>6</subscript></entry>
1907+ <entry>u<subscript>5</subscript></entry>
1908+ <entry>u<subscript>4</subscript></entry>
1909+ <entry>u<subscript>3</subscript></entry>
1910+ <entry>u<subscript>2</subscript></entry>
1911+ <entry>u<subscript>1</subscript></entry>
1912+ <entry>u<subscript>0</subscript></entry>
1913+ </row>
1914+ <row id="V4L2-MBUS-FMT-UYVY8-2X8">
1915+ <entry>V4L2_MBUS_FMT_UYVY8_2X8</entry>
1916+ <entry>0x2006</entry>
1917+ <entry></entry>
1918+ <entry>-</entry>
1919+ <entry>-</entry>
1920+ <entry>-</entry>
1921+ <entry>-</entry>
1922+ <entry>-</entry>
1923+ <entry>-</entry>
1924+ <entry>-</entry>
1925+ <entry>-</entry>
1926+ <entry>-</entry>
1927+ <entry>-</entry>
1928+ <entry>-</entry>
1929+ <entry>-</entry>
1930+ <entry>u<subscript>7</subscript></entry>
1931+ <entry>u<subscript>6</subscript></entry>
1932+ <entry>u<subscript>5</subscript></entry>
1933+ <entry>u<subscript>4</subscript></entry>
1934+ <entry>u<subscript>3</subscript></entry>
1935+ <entry>u<subscript>2</subscript></entry>
1936+ <entry>u<subscript>1</subscript></entry>
1937+ <entry>u<subscript>0</subscript></entry>
1938+ </row>
1939+ <row>
1940+ <entry></entry>
1941+ <entry></entry>
1942+ <entry></entry>
1943+ <entry>-</entry>
1944+ <entry>-</entry>
1945+ <entry>-</entry>
1946+ <entry>-</entry>
1947+ <entry>-</entry>
1948+ <entry>-</entry>
1949+ <entry>-</entry>
1950+ <entry>-</entry>
1951+ <entry>-</entry>
1952+ <entry>-</entry>
1953+ <entry>-</entry>
1954+ <entry>-</entry>
1955+ <entry>y<subscript>7</subscript></entry>
1956+ <entry>y<subscript>6</subscript></entry>
1957+ <entry>y<subscript>5</subscript></entry>
1958+ <entry>y<subscript>4</subscript></entry>
1959+ <entry>y<subscript>3</subscript></entry>
1960+ <entry>y<subscript>2</subscript></entry>
1961+ <entry>y<subscript>1</subscript></entry>
1962+ <entry>y<subscript>0</subscript></entry>
1963+ </row>
1964+ <row>
1965+ <entry></entry>
1966+ <entry></entry>
1967+ <entry></entry>
1968+ <entry>-</entry>
1969+ <entry>-</entry>
1970+ <entry>-</entry>
1971+ <entry>-</entry>
1972+ <entry>-</entry>
1973+ <entry>-</entry>
1974+ <entry>-</entry>
1975+ <entry>-</entry>
1976+ <entry>-</entry>
1977+ <entry>-</entry>
1978+ <entry>-</entry>
1979+ <entry>-</entry>
1980+ <entry>v<subscript>7</subscript></entry>
1981+ <entry>v<subscript>6</subscript></entry>
1982+ <entry>v<subscript>5</subscript></entry>
1983+ <entry>v<subscript>4</subscript></entry>
1984+ <entry>v<subscript>3</subscript></entry>
1985+ <entry>v<subscript>2</subscript></entry>
1986+ <entry>v<subscript>1</subscript></entry>
1987+ <entry>v<subscript>0</subscript></entry>
1988+ </row>
1989+ <row>
1990+ <entry></entry>
1991+ <entry></entry>
1992+ <entry></entry>
1993+ <entry>-</entry>
1994+ <entry>-</entry>
1995+ <entry>-</entry>
1996+ <entry>-</entry>
1997+ <entry>-</entry>
1998+ <entry>-</entry>
1999+ <entry>-</entry>
2000+ <entry>-</entry>
2001+ <entry>-</entry>
2002+ <entry>-</entry>
2003+ <entry>-</entry>
2004+ <entry>-</entry>
2005+ <entry>y<subscript>7</subscript></entry>
2006+ <entry>y<subscript>6</subscript></entry>
2007+ <entry>y<subscript>5</subscript></entry>
2008+ <entry>y<subscript>4</subscript></entry>
2009+ <entry>y<subscript>3</subscript></entry>
2010+ <entry>y<subscript>2</subscript></entry>
2011+ <entry>y<subscript>1</subscript></entry>
2012+ <entry>y<subscript>0</subscript></entry>
2013+ </row>
2014+ <row id="V4L2-MBUS-FMT-VYUY8-2X8">
2015+ <entry>V4L2_MBUS_FMT_VYUY8_2X8</entry>
2016+ <entry>0x2007</entry>
2017+ <entry></entry>
2018+ <entry>-</entry>
2019+ <entry>-</entry>
2020+ <entry>-</entry>
2021+ <entry>-</entry>
2022+ <entry>-</entry>
2023+ <entry>-</entry>
2024+ <entry>-</entry>
2025+ <entry>-</entry>
2026+ <entry>-</entry>
2027+ <entry>-</entry>
2028+ <entry>-</entry>
2029+ <entry>-</entry>
2030+ <entry>v<subscript>7</subscript></entry>
2031+ <entry>v<subscript>6</subscript></entry>
2032+ <entry>v<subscript>5</subscript></entry>
2033+ <entry>v<subscript>4</subscript></entry>
2034+ <entry>v<subscript>3</subscript></entry>
2035+ <entry>v<subscript>2</subscript></entry>
2036+ <entry>v<subscript>1</subscript></entry>
2037+ <entry>v<subscript>0</subscript></entry>
2038+ </row>
2039+ <row>
2040+ <entry></entry>
2041+ <entry></entry>
2042+ <entry></entry>
2043+ <entry>-</entry>
2044+ <entry>-</entry>
2045+ <entry>-</entry>
2046+ <entry>-</entry>
2047+ <entry>-</entry>
2048+ <entry>-</entry>
2049+ <entry>-</entry>
2050+ <entry>-</entry>
2051+ <entry>-</entry>
2052+ <entry>-</entry>
2053+ <entry>-</entry>
2054+ <entry>-</entry>
2055+ <entry>y<subscript>7</subscript></entry>
2056+ <entry>y<subscript>6</subscript></entry>
2057+ <entry>y<subscript>5</subscript></entry>
2058+ <entry>y<subscript>4</subscript></entry>
2059+ <entry>y<subscript>3</subscript></entry>
2060+ <entry>y<subscript>2</subscript></entry>
2061+ <entry>y<subscript>1</subscript></entry>
2062+ <entry>y<subscript>0</subscript></entry>
2063+ </row>
2064+ <row>
2065+ <entry></entry>
2066+ <entry></entry>
2067+ <entry></entry>
2068+ <entry>-</entry>
2069+ <entry>-</entry>
2070+ <entry>-</entry>
2071+ <entry>-</entry>
2072+ <entry>-</entry>
2073+ <entry>-</entry>
2074+ <entry>-</entry>
2075+ <entry>-</entry>
2076+ <entry>-</entry>
2077+ <entry>-</entry>
2078+ <entry>-</entry>
2079+ <entry>-</entry>
2080+ <entry>u<subscript>7</subscript></entry>
2081+ <entry>u<subscript>6</subscript></entry>
2082+ <entry>u<subscript>5</subscript></entry>
2083+ <entry>u<subscript>4</subscript></entry>
2084+ <entry>u<subscript>3</subscript></entry>
2085+ <entry>u<subscript>2</subscript></entry>
2086+ <entry>u<subscript>1</subscript></entry>
2087+ <entry>u<subscript>0</subscript></entry>
2088+ </row>
2089+ <row>
2090+ <entry></entry>
2091+ <entry></entry>
2092+ <entry></entry>
2093+ <entry>-</entry>
2094+ <entry>-</entry>
2095+ <entry>-</entry>
2096+ <entry>-</entry>
2097+ <entry>-</entry>
2098+ <entry>-</entry>
2099+ <entry>-</entry>
2100+ <entry>-</entry>
2101+ <entry>-</entry>
2102+ <entry>-</entry>
2103+ <entry>-</entry>
2104+ <entry>-</entry>
2105+ <entry>y<subscript>7</subscript></entry>
2106+ <entry>y<subscript>6</subscript></entry>
2107+ <entry>y<subscript>5</subscript></entry>
2108+ <entry>y<subscript>4</subscript></entry>
2109+ <entry>y<subscript>3</subscript></entry>
2110+ <entry>y<subscript>2</subscript></entry>
2111+ <entry>y<subscript>1</subscript></entry>
2112+ <entry>y<subscript>0</subscript></entry>
2113+ </row>
2114+ <row id="V4L2-MBUS-FMT-YUYV8-2X8">
2115+ <entry>V4L2_MBUS_FMT_YUYV8_2X8</entry>
2116+ <entry>0x2008</entry>
2117+ <entry></entry>
2118+ <entry>-</entry>
2119+ <entry>-</entry>
2120+ <entry>-</entry>
2121+ <entry>-</entry>
2122+ <entry>-</entry>
2123+ <entry>-</entry>
2124+ <entry>-</entry>
2125+ <entry>-</entry>
2126+ <entry>-</entry>
2127+ <entry>-</entry>
2128+ <entry>-</entry>
2129+ <entry>-</entry>
2130+ <entry>y<subscript>7</subscript></entry>
2131+ <entry>y<subscript>6</subscript></entry>
2132+ <entry>y<subscript>5</subscript></entry>
2133+ <entry>y<subscript>4</subscript></entry>
2134+ <entry>y<subscript>3</subscript></entry>
2135+ <entry>y<subscript>2</subscript></entry>
2136+ <entry>y<subscript>1</subscript></entry>
2137+ <entry>y<subscript>0</subscript></entry>
2138+ </row>
2139+ <row>
2140+ <entry></entry>
2141+ <entry></entry>
2142+ <entry></entry>
2143+ <entry>-</entry>
2144+ <entry>-</entry>
2145+ <entry>-</entry>
2146+ <entry>-</entry>
2147+ <entry>-</entry>
2148+ <entry>-</entry>
2149+ <entry>-</entry>
2150+ <entry>-</entry>
2151+ <entry>-</entry>
2152+ <entry>-</entry>
2153+ <entry>-</entry>
2154+ <entry>-</entry>
2155+ <entry>u<subscript>7</subscript></entry>
2156+ <entry>u<subscript>6</subscript></entry>
2157+ <entry>u<subscript>5</subscript></entry>
2158+ <entry>u<subscript>4</subscript></entry>
2159+ <entry>u<subscript>3</subscript></entry>
2160+ <entry>u<subscript>2</subscript></entry>
2161+ <entry>u<subscript>1</subscript></entry>
2162+ <entry>u<subscript>0</subscript></entry>
2163+ </row>
2164+ <row>
2165+ <entry></entry>
2166+ <entry></entry>
2167+ <entry></entry>
2168+ <entry>-</entry>
2169+ <entry>-</entry>
2170+ <entry>-</entry>
2171+ <entry>-</entry>
2172+ <entry>-</entry>
2173+ <entry>-</entry>
2174+ <entry>-</entry>
2175+ <entry>-</entry>
2176+ <entry>-</entry>
2177+ <entry>-</entry>
2178+ <entry>-</entry>
2179+ <entry>-</entry>
2180+ <entry>y<subscript>7</subscript></entry>
2181+ <entry>y<subscript>6</subscript></entry>
2182+ <entry>y<subscript>5</subscript></entry>
2183+ <entry>y<subscript>4</subscript></entry>
2184+ <entry>y<subscript>3</subscript></entry>
2185+ <entry>y<subscript>2</subscript></entry>
2186+ <entry>y<subscript>1</subscript></entry>
2187+ <entry>y<subscript>0</subscript></entry>
2188+ </row>
2189+ <row>
2190+ <entry></entry>
2191+ <entry></entry>
2192+ <entry></entry>
2193+ <entry>-</entry>
2194+ <entry>-</entry>
2195+ <entry>-</entry>
2196+ <entry>-</entry>
2197+ <entry>-</entry>
2198+ <entry>-</entry>
2199+ <entry>-</entry>
2200+ <entry>-</entry>
2201+ <entry>-</entry>
2202+ <entry>-</entry>
2203+ <entry>-</entry>
2204+ <entry>-</entry>
2205+ <entry>v<subscript>7</subscript></entry>
2206+ <entry>v<subscript>6</subscript></entry>
2207+ <entry>v<subscript>5</subscript></entry>
2208+ <entry>v<subscript>4</subscript></entry>
2209+ <entry>v<subscript>3</subscript></entry>
2210+ <entry>v<subscript>2</subscript></entry>
2211+ <entry>v<subscript>1</subscript></entry>
2212+ <entry>v<subscript>0</subscript></entry>
2213+ </row>
2214+ <row id="V4L2-MBUS-FMT-YVYU8-2X8">
2215+ <entry>V4L2_MBUS_FMT_YVYU8_2X8</entry>
2216+ <entry>0x2009</entry>
2217+ <entry></entry>
2218+ <entry>-</entry>
2219+ <entry>-</entry>
2220+ <entry>-</entry>
2221+ <entry>-</entry>
2222+ <entry>-</entry>
2223+ <entry>-</entry>
2224+ <entry>-</entry>
2225+ <entry>-</entry>
2226+ <entry>-</entry>
2227+ <entry>-</entry>
2228+ <entry>-</entry>
2229+ <entry>-</entry>
2230+ <entry>y<subscript>7</subscript></entry>
2231+ <entry>y<subscript>6</subscript></entry>
2232+ <entry>y<subscript>5</subscript></entry>
2233+ <entry>y<subscript>4</subscript></entry>
2234+ <entry>y<subscript>3</subscript></entry>
2235+ <entry>y<subscript>2</subscript></entry>
2236+ <entry>y<subscript>1</subscript></entry>
2237+ <entry>y<subscript>0</subscript></entry>
2238+ </row>
2239+ <row>
2240+ <entry></entry>
2241+ <entry></entry>
2242+ <entry></entry>
2243+ <entry>-</entry>
2244+ <entry>-</entry>
2245+ <entry>-</entry>
2246+ <entry>-</entry>
2247+ <entry>-</entry>
2248+ <entry>-</entry>
2249+ <entry>-</entry>
2250+ <entry>-</entry>
2251+ <entry>-</entry>
2252+ <entry>-</entry>
2253+ <entry>-</entry>
2254+ <entry>-</entry>
2255+ <entry>v<subscript>7</subscript></entry>
2256+ <entry>v<subscript>6</subscript></entry>
2257+ <entry>v<subscript>5</subscript></entry>
2258+ <entry>v<subscript>4</subscript></entry>
2259+ <entry>v<subscript>3</subscript></entry>
2260+ <entry>v<subscript>2</subscript></entry>
2261+ <entry>v<subscript>1</subscript></entry>
2262+ <entry>v<subscript>0</subscript></entry>
2263+ </row>
2264+ <row>
2265+ <entry></entry>
2266+ <entry></entry>
2267+ <entry></entry>
2268+ <entry>-</entry>
2269+ <entry>-</entry>
2270+ <entry>-</entry>
2271+ <entry>-</entry>
2272+ <entry>-</entry>
2273+ <entry>-</entry>
2274+ <entry>-</entry>
2275+ <entry>-</entry>
2276+ <entry>-</entry>
2277+ <entry>-</entry>
2278+ <entry>-</entry>
2279+ <entry>-</entry>
2280+ <entry>y<subscript>7</subscript></entry>
2281+ <entry>y<subscript>6</subscript></entry>
2282+ <entry>y<subscript>5</subscript></entry>
2283+ <entry>y<subscript>4</subscript></entry>
2284+ <entry>y<subscript>3</subscript></entry>
2285+ <entry>y<subscript>2</subscript></entry>
2286+ <entry>y<subscript>1</subscript></entry>
2287+ <entry>y<subscript>0</subscript></entry>
2288+ </row>
2289+ <row>
2290+ <entry></entry>
2291+ <entry></entry>
2292+ <entry></entry>
2293+ <entry>-</entry>
2294+ <entry>-</entry>
2295+ <entry>-</entry>
2296+ <entry>-</entry>
2297+ <entry>-</entry>
2298+ <entry>-</entry>
2299+ <entry>-</entry>
2300+ <entry>-</entry>
2301+ <entry>-</entry>
2302+ <entry>-</entry>
2303+ <entry>-</entry>
2304+ <entry>-</entry>
2305+ <entry>u<subscript>7</subscript></entry>
2306+ <entry>u<subscript>6</subscript></entry>
2307+ <entry>u<subscript>5</subscript></entry>
2308+ <entry>u<subscript>4</subscript></entry>
2309+ <entry>u<subscript>3</subscript></entry>
2310+ <entry>u<subscript>2</subscript></entry>
2311+ <entry>u<subscript>1</subscript></entry>
2312+ <entry>u<subscript>0</subscript></entry>
2313+ </row>
2314+ <row id="V4L2-MBUS-FMT-Y10-1X10">
2315+ <entry>V4L2_MBUS_FMT_Y10_1X10</entry>
2316+ <entry>0x200a</entry>
2317+ <entry></entry>
2318+ <entry>-</entry>
2319+ <entry>-</entry>
2320+ <entry>-</entry>
2321+ <entry>-</entry>
2322+ <entry>-</entry>
2323+ <entry>-</entry>
2324+ <entry>-</entry>
2325+ <entry>-</entry>
2326+ <entry>-</entry>
2327+ <entry>-</entry>
2328+ <entry>y<subscript>9</subscript></entry>
2329+ <entry>y<subscript>8</subscript></entry>
2330+ <entry>y<subscript>7</subscript></entry>
2331+ <entry>y<subscript>6</subscript></entry>
2332+ <entry>y<subscript>5</subscript></entry>
2333+ <entry>y<subscript>4</subscript></entry>
2334+ <entry>y<subscript>3</subscript></entry>
2335+ <entry>y<subscript>2</subscript></entry>
2336+ <entry>y<subscript>1</subscript></entry>
2337+ <entry>y<subscript>0</subscript></entry>
2338+ </row>
2339+ <row id="V4L2-MBUS-FMT-YUYV10-2X10">
2340+ <entry>V4L2_MBUS_FMT_YUYV10_2X10</entry>
2341+ <entry>0x200b</entry>
2342+ <entry></entry>
2343+ <entry>-</entry>
2344+ <entry>-</entry>
2345+ <entry>-</entry>
2346+ <entry>-</entry>
2347+ <entry>-</entry>
2348+ <entry>-</entry>
2349+ <entry>-</entry>
2350+ <entry>-</entry>
2351+ <entry>-</entry>
2352+ <entry>-</entry>
2353+ <entry>y<subscript>9</subscript></entry>
2354+ <entry>y<subscript>8</subscript></entry>
2355+ <entry>y<subscript>7</subscript></entry>
2356+ <entry>y<subscript>6</subscript></entry>
2357+ <entry>y<subscript>5</subscript></entry>
2358+ <entry>y<subscript>4</subscript></entry>
2359+ <entry>y<subscript>3</subscript></entry>
2360+ <entry>y<subscript>2</subscript></entry>
2361+ <entry>y<subscript>1</subscript></entry>
2362+ <entry>y<subscript>0</subscript></entry>
2363+ </row>
2364+ <row>
2365+ <entry></entry>
2366+ <entry></entry>
2367+ <entry></entry>
2368+ <entry>-</entry>
2369+ <entry>-</entry>
2370+ <entry>-</entry>
2371+ <entry>-</entry>
2372+ <entry>-</entry>
2373+ <entry>-</entry>
2374+ <entry>-</entry>
2375+ <entry>-</entry>
2376+ <entry>-</entry>
2377+ <entry>-</entry>
2378+ <entry>u<subscript>9</subscript></entry>
2379+ <entry>u<subscript>8</subscript></entry>
2380+ <entry>u<subscript>7</subscript></entry>
2381+ <entry>u<subscript>6</subscript></entry>
2382+ <entry>u<subscript>5</subscript></entry>
2383+ <entry>u<subscript>4</subscript></entry>
2384+ <entry>u<subscript>3</subscript></entry>
2385+ <entry>u<subscript>2</subscript></entry>
2386+ <entry>u<subscript>1</subscript></entry>
2387+ <entry>u<subscript>0</subscript></entry>
2388+ </row>
2389+ <row>
2390+ <entry></entry>
2391+ <entry></entry>
2392+ <entry></entry>
2393+ <entry>-</entry>
2394+ <entry>-</entry>
2395+ <entry>-</entry>
2396+ <entry>-</entry>
2397+ <entry>-</entry>
2398+ <entry>-</entry>
2399+ <entry>-</entry>
2400+ <entry>-</entry>
2401+ <entry>-</entry>
2402+ <entry>-</entry>
2403+ <entry>y<subscript>9</subscript></entry>
2404+ <entry>y<subscript>8</subscript></entry>
2405+ <entry>y<subscript>7</subscript></entry>
2406+ <entry>y<subscript>6</subscript></entry>
2407+ <entry>y<subscript>5</subscript></entry>
2408+ <entry>y<subscript>4</subscript></entry>
2409+ <entry>y<subscript>3</subscript></entry>
2410+ <entry>y<subscript>2</subscript></entry>
2411+ <entry>y<subscript>1</subscript></entry>
2412+ <entry>y<subscript>0</subscript></entry>
2413+ </row>
2414+ <row>
2415+ <entry></entry>
2416+ <entry></entry>
2417+ <entry></entry>
2418+ <entry>-</entry>
2419+ <entry>-</entry>
2420+ <entry>-</entry>
2421+ <entry>-</entry>
2422+ <entry>-</entry>
2423+ <entry>-</entry>
2424+ <entry>-</entry>
2425+ <entry>-</entry>
2426+ <entry>-</entry>
2427+ <entry>-</entry>
2428+ <entry>v<subscript>9</subscript></entry>
2429+ <entry>v<subscript>8</subscript></entry>
2430+ <entry>v<subscript>7</subscript></entry>
2431+ <entry>v<subscript>6</subscript></entry>
2432+ <entry>v<subscript>5</subscript></entry>
2433+ <entry>v<subscript>4</subscript></entry>
2434+ <entry>v<subscript>3</subscript></entry>
2435+ <entry>v<subscript>2</subscript></entry>
2436+ <entry>v<subscript>1</subscript></entry>
2437+ <entry>v<subscript>0</subscript></entry>
2438+ </row>
2439+ <row id="V4L2-MBUS-FMT-YVYU10-2X10">
2440+ <entry>V4L2_MBUS_FMT_YVYU10_2X10</entry>
2441+ <entry>0x200c</entry>
2442+ <entry></entry>
2443+ <entry>-</entry>
2444+ <entry>-</entry>
2445+ <entry>-</entry>
2446+ <entry>-</entry>
2447+ <entry>-</entry>
2448+ <entry>-</entry>
2449+ <entry>-</entry>
2450+ <entry>-</entry>
2451+ <entry>-</entry>
2452+ <entry>-</entry>
2453+ <entry>y<subscript>9</subscript></entry>
2454+ <entry>y<subscript>8</subscript></entry>
2455+ <entry>y<subscript>7</subscript></entry>
2456+ <entry>y<subscript>6</subscript></entry>
2457+ <entry>y<subscript>5</subscript></entry>
2458+ <entry>y<subscript>4</subscript></entry>
2459+ <entry>y<subscript>3</subscript></entry>
2460+ <entry>y<subscript>2</subscript></entry>
2461+ <entry>y<subscript>1</subscript></entry>
2462+ <entry>y<subscript>0</subscript></entry>
2463+ </row>
2464+ <row>
2465+ <entry></entry>
2466+ <entry></entry>
2467+ <entry></entry>
2468+ <entry>-</entry>
2469+ <entry>-</entry>
2470+ <entry>-</entry>
2471+ <entry>-</entry>
2472+ <entry>-</entry>
2473+ <entry>-</entry>
2474+ <entry>-</entry>
2475+ <entry>-</entry>
2476+ <entry>-</entry>
2477+ <entry>-</entry>
2478+ <entry>v<subscript>9</subscript></entry>
2479+ <entry>v<subscript>8</subscript></entry>
2480+ <entry>v<subscript>7</subscript></entry>
2481+ <entry>v<subscript>6</subscript></entry>
2482+ <entry>v<subscript>5</subscript></entry>
2483+ <entry>v<subscript>4</subscript></entry>
2484+ <entry>v<subscript>3</subscript></entry>
2485+ <entry>v<subscript>2</subscript></entry>
2486+ <entry>v<subscript>1</subscript></entry>
2487+ <entry>v<subscript>0</subscript></entry>
2488+ </row>
2489+ <row>
2490+ <entry></entry>
2491+ <entry></entry>
2492+ <entry></entry>
2493+ <entry>-</entry>
2494+ <entry>-</entry>
2495+ <entry>-</entry>
2496+ <entry>-</entry>
2497+ <entry>-</entry>
2498+ <entry>-</entry>
2499+ <entry>-</entry>
2500+ <entry>-</entry>
2501+ <entry>-</entry>
2502+ <entry>-</entry>
2503+ <entry>y<subscript>9</subscript></entry>
2504+ <entry>y<subscript>8</subscript></entry>
2505+ <entry>y<subscript>7</subscript></entry>
2506+ <entry>y<subscript>6</subscript></entry>
2507+ <entry>y<subscript>5</subscript></entry>
2508+ <entry>y<subscript>4</subscript></entry>
2509+ <entry>y<subscript>3</subscript></entry>
2510+ <entry>y<subscript>2</subscript></entry>
2511+ <entry>y<subscript>1</subscript></entry>
2512+ <entry>y<subscript>0</subscript></entry>
2513+ </row>
2514+ <row>
2515+ <entry></entry>
2516+ <entry></entry>
2517+ <entry></entry>
2518+ <entry>-</entry>
2519+ <entry>-</entry>
2520+ <entry>-</entry>
2521+ <entry>-</entry>
2522+ <entry>-</entry>
2523+ <entry>-</entry>
2524+ <entry>-</entry>
2525+ <entry>-</entry>
2526+ <entry>-</entry>
2527+ <entry>-</entry>
2528+ <entry>u<subscript>9</subscript></entry>
2529+ <entry>u<subscript>8</subscript></entry>
2530+ <entry>u<subscript>7</subscript></entry>
2531+ <entry>u<subscript>6</subscript></entry>
2532+ <entry>u<subscript>5</subscript></entry>
2533+ <entry>u<subscript>4</subscript></entry>
2534+ <entry>u<subscript>3</subscript></entry>
2535+ <entry>u<subscript>2</subscript></entry>
2536+ <entry>u<subscript>1</subscript></entry>
2537+ <entry>u<subscript>0</subscript></entry>
2538+ </row>
2539+ <row id="V4L2-MBUS-FMT-UYVY8-1X16">
2540+ <entry>V4L2_MBUS_FMT_UYVY8_1X16</entry>
2541+ <entry>0x200f</entry>
2542+ <entry></entry>
2543+ <entry>-</entry>
2544+ <entry>-</entry>
2545+ <entry>-</entry>
2546+ <entry>-</entry>
2547+ <entry>u<subscript>7</subscript></entry>
2548+ <entry>u<subscript>6</subscript></entry>
2549+ <entry>u<subscript>5</subscript></entry>
2550+ <entry>u<subscript>4</subscript></entry>
2551+ <entry>u<subscript>3</subscript></entry>
2552+ <entry>u<subscript>2</subscript></entry>
2553+ <entry>u<subscript>1</subscript></entry>
2554+ <entry>u<subscript>0</subscript></entry>
2555+ <entry>y<subscript>7</subscript></entry>
2556+ <entry>y<subscript>6</subscript></entry>
2557+ <entry>y<subscript>5</subscript></entry>
2558+ <entry>y<subscript>4</subscript></entry>
2559+ <entry>y<subscript>3</subscript></entry>
2560+ <entry>y<subscript>2</subscript></entry>
2561+ <entry>y<subscript>1</subscript></entry>
2562+ <entry>y<subscript>0</subscript></entry>
2563+ </row>
2564+ <row>
2565+ <entry></entry>
2566+ <entry></entry>
2567+ <entry></entry>
2568+ <entry>-</entry>
2569+ <entry>-</entry>
2570+ <entry>-</entry>
2571+ <entry>-</entry>
2572+ <entry>v<subscript>7</subscript></entry>
2573+ <entry>v<subscript>6</subscript></entry>
2574+ <entry>v<subscript>5</subscript></entry>
2575+ <entry>v<subscript>4</subscript></entry>
2576+ <entry>v<subscript>3</subscript></entry>
2577+ <entry>v<subscript>2</subscript></entry>
2578+ <entry>v<subscript>1</subscript></entry>
2579+ <entry>v<subscript>0</subscript></entry>
2580+ <entry>y<subscript>7</subscript></entry>
2581+ <entry>y<subscript>6</subscript></entry>
2582+ <entry>y<subscript>5</subscript></entry>
2583+ <entry>y<subscript>4</subscript></entry>
2584+ <entry>y<subscript>3</subscript></entry>
2585+ <entry>y<subscript>2</subscript></entry>
2586+ <entry>y<subscript>1</subscript></entry>
2587+ <entry>y<subscript>0</subscript></entry>
2588+ </row>
2589+ <row id="V4L2-MBUS-FMT-VYUY8-1X16">
2590+ <entry>V4L2_MBUS_FMT_VYUY8_1X16</entry>
2591+ <entry>0x2010</entry>
2592+ <entry></entry>
2593+ <entry>-</entry>
2594+ <entry>-</entry>
2595+ <entry>-</entry>
2596+ <entry>-</entry>
2597+ <entry>v<subscript>7</subscript></entry>
2598+ <entry>v<subscript>6</subscript></entry>
2599+ <entry>v<subscript>5</subscript></entry>
2600+ <entry>v<subscript>4</subscript></entry>
2601+ <entry>v<subscript>3</subscript></entry>
2602+ <entry>v<subscript>2</subscript></entry>
2603+ <entry>v<subscript>1</subscript></entry>
2604+ <entry>v<subscript>0</subscript></entry>
2605+ <entry>y<subscript>7</subscript></entry>
2606+ <entry>y<subscript>6</subscript></entry>
2607+ <entry>y<subscript>5</subscript></entry>
2608+ <entry>y<subscript>4</subscript></entry>
2609+ <entry>y<subscript>3</subscript></entry>
2610+ <entry>y<subscript>2</subscript></entry>
2611+ <entry>y<subscript>1</subscript></entry>
2612+ <entry>y<subscript>0</subscript></entry>
2613+ </row>
2614+ <row>
2615+ <entry></entry>
2616+ <entry></entry>
2617+ <entry></entry>
2618+ <entry>-</entry>
2619+ <entry>-</entry>
2620+ <entry>-</entry>
2621+ <entry>-</entry>
2622+ <entry>u<subscript>7</subscript></entry>
2623+ <entry>u<subscript>6</subscript></entry>
2624+ <entry>u<subscript>5</subscript></entry>
2625+ <entry>u<subscript>4</subscript></entry>
2626+ <entry>u<subscript>3</subscript></entry>
2627+ <entry>u<subscript>2</subscript></entry>
2628+ <entry>u<subscript>1</subscript></entry>
2629+ <entry>u<subscript>0</subscript></entry>
2630+ <entry>y<subscript>7</subscript></entry>
2631+ <entry>y<subscript>6</subscript></entry>
2632+ <entry>y<subscript>5</subscript></entry>
2633+ <entry>y<subscript>4</subscript></entry>
2634+ <entry>y<subscript>3</subscript></entry>
2635+ <entry>y<subscript>2</subscript></entry>
2636+ <entry>y<subscript>1</subscript></entry>
2637+ <entry>y<subscript>0</subscript></entry>
2638+ </row>
2639+ <row id="V4L2-MBUS-FMT-YUYV8-1X16">
2640+ <entry>V4L2_MBUS_FMT_YUYV8_1X16</entry>
2641+ <entry>0x2011</entry>
2642+ <entry></entry>
2643+ <entry>-</entry>
2644+ <entry>-</entry>
2645+ <entry>-</entry>
2646+ <entry>-</entry>
2647+ <entry>y<subscript>7</subscript></entry>
2648+ <entry>y<subscript>6</subscript></entry>
2649+ <entry>y<subscript>5</subscript></entry>
2650+ <entry>y<subscript>4</subscript></entry>
2651+ <entry>y<subscript>3</subscript></entry>
2652+ <entry>y<subscript>2</subscript></entry>
2653+ <entry>y<subscript>1</subscript></entry>
2654+ <entry>y<subscript>0</subscript></entry>
2655+ <entry>u<subscript>7</subscript></entry>
2656+ <entry>u<subscript>6</subscript></entry>
2657+ <entry>u<subscript>5</subscript></entry>
2658+ <entry>u<subscript>4</subscript></entry>
2659+ <entry>u<subscript>3</subscript></entry>
2660+ <entry>u<subscript>2</subscript></entry>
2661+ <entry>u<subscript>1</subscript></entry>
2662+ <entry>u<subscript>0</subscript></entry>
2663+ </row>
2664+ <row>
2665+ <entry></entry>
2666+ <entry></entry>
2667+ <entry></entry>
2668+ <entry>-</entry>
2669+ <entry>-</entry>
2670+ <entry>-</entry>
2671+ <entry>-</entry>
2672+ <entry>y<subscript>7</subscript></entry>
2673+ <entry>y<subscript>6</subscript></entry>
2674+ <entry>y<subscript>5</subscript></entry>
2675+ <entry>y<subscript>4</subscript></entry>
2676+ <entry>y<subscript>3</subscript></entry>
2677+ <entry>y<subscript>2</subscript></entry>
2678+ <entry>y<subscript>1</subscript></entry>
2679+ <entry>y<subscript>0</subscript></entry>
2680+ <entry>v<subscript>7</subscript></entry>
2681+ <entry>v<subscript>6</subscript></entry>
2682+ <entry>v<subscript>5</subscript></entry>
2683+ <entry>v<subscript>4</subscript></entry>
2684+ <entry>v<subscript>3</subscript></entry>
2685+ <entry>v<subscript>2</subscript></entry>
2686+ <entry>v<subscript>1</subscript></entry>
2687+ <entry>v<subscript>0</subscript></entry>
2688+ </row>
2689+ <row id="V4L2-MBUS-FMT-YVYU8-1X16">
2690+ <entry>V4L2_MBUS_FMT_YVYU8_1X16</entry>
2691+ <entry>0x2012</entry>
2692+ <entry></entry>
2693+ <entry>-</entry>
2694+ <entry>-</entry>
2695+ <entry>-</entry>
2696+ <entry>-</entry>
2697+ <entry>y<subscript>7</subscript></entry>
2698+ <entry>y<subscript>6</subscript></entry>
2699+ <entry>y<subscript>5</subscript></entry>
2700+ <entry>y<subscript>4</subscript></entry>
2701+ <entry>y<subscript>3</subscript></entry>
2702+ <entry>y<subscript>2</subscript></entry>
2703+ <entry>y<subscript>1</subscript></entry>
2704+ <entry>y<subscript>0</subscript></entry>
2705+ <entry>v<subscript>7</subscript></entry>
2706+ <entry>v<subscript>6</subscript></entry>
2707+ <entry>v<subscript>5</subscript></entry>
2708+ <entry>v<subscript>4</subscript></entry>
2709+ <entry>v<subscript>3</subscript></entry>
2710+ <entry>v<subscript>2</subscript></entry>
2711+ <entry>v<subscript>1</subscript></entry>
2712+ <entry>v<subscript>0</subscript></entry>
2713+ </row>
2714+ <row>
2715+ <entry></entry>
2716+ <entry></entry>
2717+ <entry></entry>
2718+ <entry>-</entry>
2719+ <entry>-</entry>
2720+ <entry>-</entry>
2721+ <entry>-</entry>
2722+ <entry>y<subscript>7</subscript></entry>
2723+ <entry>y<subscript>6</subscript></entry>
2724+ <entry>y<subscript>5</subscript></entry>
2725+ <entry>y<subscript>4</subscript></entry>
2726+ <entry>y<subscript>3</subscript></entry>
2727+ <entry>y<subscript>2</subscript></entry>
2728+ <entry>y<subscript>1</subscript></entry>
2729+ <entry>y<subscript>0</subscript></entry>
2730+ <entry>u<subscript>7</subscript></entry>
2731+ <entry>u<subscript>6</subscript></entry>
2732+ <entry>u<subscript>5</subscript></entry>
2733+ <entry>u<subscript>4</subscript></entry>
2734+ <entry>u<subscript>3</subscript></entry>
2735+ <entry>u<subscript>2</subscript></entry>
2736+ <entry>u<subscript>1</subscript></entry>
2737+ <entry>u<subscript>0</subscript></entry>
2738+ </row>
2739+ <row id="V4L2-MBUS-FMT-YUYV10-1X20">
2740+ <entry>V4L2_MBUS_FMT_YUYV10_1X20</entry>
2741+ <entry>0x200d</entry>
2742+ <entry></entry>
2743+ <entry>y<subscript>9</subscript></entry>
2744+ <entry>y<subscript>8</subscript></entry>
2745+ <entry>y<subscript>7</subscript></entry>
2746+ <entry>y<subscript>6</subscript></entry>
2747+ <entry>y<subscript>5</subscript></entry>
2748+ <entry>y<subscript>4</subscript></entry>
2749+ <entry>y<subscript>3</subscript></entry>
2750+ <entry>y<subscript>2</subscript></entry>
2751+ <entry>y<subscript>1</subscript></entry>
2752+ <entry>y<subscript>0</subscript></entry>
2753+ <entry>u<subscript>9</subscript></entry>
2754+ <entry>u<subscript>8</subscript></entry>
2755+ <entry>u<subscript>7</subscript></entry>
2756+ <entry>u<subscript>6</subscript></entry>
2757+ <entry>u<subscript>5</subscript></entry>
2758+ <entry>u<subscript>4</subscript></entry>
2759+ <entry>u<subscript>3</subscript></entry>
2760+ <entry>u<subscript>2</subscript></entry>
2761+ <entry>u<subscript>1</subscript></entry>
2762+ <entry>u<subscript>0</subscript></entry>
2763+ </row>
2764+ <row>
2765+ <entry></entry>
2766+ <entry></entry>
2767+ <entry></entry>
2768+ <entry>y<subscript>9</subscript></entry>
2769+ <entry>y<subscript>8</subscript></entry>
2770+ <entry>y<subscript>7</subscript></entry>
2771+ <entry>y<subscript>6</subscript></entry>
2772+ <entry>y<subscript>5</subscript></entry>
2773+ <entry>y<subscript>4</subscript></entry>
2774+ <entry>y<subscript>3</subscript></entry>
2775+ <entry>y<subscript>2</subscript></entry>
2776+ <entry>y<subscript>1</subscript></entry>
2777+ <entry>y<subscript>0</subscript></entry>
2778+ <entry>v<subscript>9</subscript></entry>
2779+ <entry>v<subscript>8</subscript></entry>
2780+ <entry>v<subscript>7</subscript></entry>
2781+ <entry>v<subscript>6</subscript></entry>
2782+ <entry>v<subscript>5</subscript></entry>
2783+ <entry>v<subscript>4</subscript></entry>
2784+ <entry>v<subscript>3</subscript></entry>
2785+ <entry>v<subscript>2</subscript></entry>
2786+ <entry>v<subscript>1</subscript></entry>
2787+ <entry>v<subscript>0</subscript></entry>
2788+ </row>
2789+ <row id="V4L2-MBUS-FMT-YVYU10-1X20">
2790+ <entry>V4L2_MBUS_FMT_YVYU10_1X20</entry>
2791+ <entry>0x200e</entry>
2792+ <entry></entry>
2793+ <entry>y<subscript>9</subscript></entry>
2794+ <entry>y<subscript>8</subscript></entry>
2795+ <entry>y<subscript>7</subscript></entry>
2796+ <entry>y<subscript>6</subscript></entry>
2797+ <entry>y<subscript>5</subscript></entry>
2798+ <entry>y<subscript>4</subscript></entry>
2799+ <entry>y<subscript>3</subscript></entry>
2800+ <entry>y<subscript>2</subscript></entry>
2801+ <entry>y<subscript>1</subscript></entry>
2802+ <entry>y<subscript>0</subscript></entry>
2803+ <entry>v<subscript>9</subscript></entry>
2804+ <entry>v<subscript>8</subscript></entry>
2805+ <entry>v<subscript>7</subscript></entry>
2806+ <entry>v<subscript>6</subscript></entry>
2807+ <entry>v<subscript>5</subscript></entry>
2808+ <entry>v<subscript>4</subscript></entry>
2809+ <entry>v<subscript>3</subscript></entry>
2810+ <entry>v<subscript>2</subscript></entry>
2811+ <entry>v<subscript>1</subscript></entry>
2812+ <entry>v<subscript>0</subscript></entry>
2813+ </row>
2814+ <row>
2815+ <entry></entry>
2816+ <entry></entry>
2817+ <entry></entry>
2818+ <entry>y<subscript>9</subscript></entry>
2819+ <entry>y<subscript>8</subscript></entry>
2820+ <entry>y<subscript>7</subscript></entry>
2821+ <entry>y<subscript>6</subscript></entry>
2822+ <entry>y<subscript>5</subscript></entry>
2823+ <entry>y<subscript>4</subscript></entry>
2824+ <entry>y<subscript>3</subscript></entry>
2825+ <entry>y<subscript>2</subscript></entry>
2826+ <entry>y<subscript>1</subscript></entry>
2827+ <entry>y<subscript>0</subscript></entry>
2828+ <entry>u<subscript>9</subscript></entry>
2829+ <entry>u<subscript>8</subscript></entry>
2830+ <entry>u<subscript>7</subscript></entry>
2831+ <entry>u<subscript>6</subscript></entry>
2832+ <entry>u<subscript>5</subscript></entry>
2833+ <entry>u<subscript>4</subscript></entry>
2834+ <entry>u<subscript>3</subscript></entry>
2835+ <entry>u<subscript>2</subscript></entry>
2836+ <entry>u<subscript>1</subscript></entry>
2837+ <entry>u<subscript>0</subscript></entry>
2838+ </row>
2839+ </tbody>
2840+ </tgroup>
2841+ </table>
2842+ </section>
2843+ </section>
2844+</section>
2845diff --git a/Documentation/DocBook/v4l/v4l2.xml b/Documentation/DocBook/v4l/v4l2.xml
2846index 839e93e..695e3bf 100644
2847--- a/Documentation/DocBook/v4l/v4l2.xml
2848+++ b/Documentation/DocBook/v4l/v4l2.xml
2849@@ -410,6 +410,7 @@ and discussions on the V4L mailing list.</revremark>
2850 <section id="radio"> &sub-dev-radio; </section>
2851 <section id="rds"> &sub-dev-rds; </section>
2852 <section id="event"> &sub-dev-event; </section>
2853+ <section id="subdev"> &sub-dev-subdev; </section>
2854 </chapter>
2855
2856 <chapter id="driver">
2857@@ -477,6 +478,9 @@ and discussions on the V4L mailing list.</revremark>
2858 &sub-reqbufs;
2859 &sub-s-hw-freq-seek;
2860 &sub-streamon;
2861+ &sub-subdev-enum-frame-size;
2862+ &sub-subdev-enum-mbus-code;
2863+ &sub-subdev-g-fmt;
2864 &sub-subscribe-event;
2865 <!-- End of ioctls. -->
2866 &sub-mmap;
2867diff --git a/Documentation/DocBook/v4l/vidioc-streamon.xml b/Documentation/DocBook/v4l/vidioc-streamon.xml
2868index e42bff1..75ed39b 100644
2869--- a/Documentation/DocBook/v4l/vidioc-streamon.xml
2870+++ b/Documentation/DocBook/v4l/vidioc-streamon.xml
2871@@ -93,6 +93,15 @@ synchronize with other events.</para>
2872 been allocated (memory mapping) or enqueued (output) yet.</para>
2873 </listitem>
2874 </varlistentry>
2875+ <varlistentry>
2876+ <term><errorcode>EPIPE</errorcode></term>
2877+ <listitem>
2878+ <para>The driver implements <link
2879+ linkend="pad-level-formats">pad-level format configuration</link> and
2880+ the pipeline configuration is invalid.
2881+ </para>
2882+ </listitem>
2883+ </varlistentry>
2884 </variablelist>
2885 </refsect1>
2886 </refentry>
2887diff --git a/Documentation/DocBook/v4l/vidioc-subdev-enum-frame-size.xml b/Documentation/DocBook/v4l/vidioc-subdev-enum-frame-size.xml
2888new file mode 100644
2889index 0000000..209e983
2890--- /dev/null
2891+++ b/Documentation/DocBook/v4l/vidioc-subdev-enum-frame-size.xml
2892@@ -0,0 +1,148 @@
2893+<refentry id="vidioc-subdev-enum-frame-size">
2894+ <refmeta>
2895+ <refentrytitle>ioctl VIDIOC_SUBDEV_ENUM_FRAME_SIZE</refentrytitle>
2896+ &manvol;
2897+ </refmeta>
2898+
2899+ <refnamediv>
2900+ <refname>VIDIOC_SUBDEV_ENUM_FRAME_SIZE</refname>
2901+ <refpurpose>Enumerate media bus frame sizes</refpurpose>
2902+ </refnamediv>
2903+
2904+ <refsynopsisdiv>
2905+ <funcsynopsis>
2906+ <funcprototype>
2907+ <funcdef>int <function>ioctl</function></funcdef>
2908+ <paramdef>int <parameter>fd</parameter></paramdef>
2909+ <paramdef>int <parameter>request</parameter></paramdef>
2910+ <paramdef>struct v4l2_subdev_frame_size_enum *
2911+ <parameter>argp</parameter></paramdef>
2912+ </funcprototype>
2913+ </funcsynopsis>
2914+ </refsynopsisdiv>
2915+
2916+ <refsect1>
2917+ <title>Arguments</title>
2918+
2919+ <variablelist>
2920+ <varlistentry>
2921+ <term><parameter>fd</parameter></term>
2922+ <listitem>
2923+ <para>&fd;</para>
2924+ </listitem>
2925+ </varlistentry>
2926+ <varlistentry>
2927+ <term><parameter>request</parameter></term>
2928+ <listitem>
2929+ <para>VIDIOC_SUBDEV_ENUM_FRAME_SIZE</para>
2930+ </listitem>
2931+ </varlistentry>
2932+ <varlistentry>
2933+ <term><parameter>argp</parameter></term>
2934+ <listitem>
2935+ <para></para>
2936+ </listitem>
2937+ </varlistentry>
2938+ </variablelist>
2939+ </refsect1>
2940+
2941+ <refsect1>
2942+ <title>Description</title>
2943+
2944+ <para>This ioctl allows applications to enumerate all frame sizes
2945+ supported by a sub-device on the given pad for the given media bus format.
2946+ Supported formats can be retrieved with the &VIDIOC-SUBDEV-ENUM-MBUS-CODE;
2947+ ioctl.</para>
2948+
2949+ <para>To enumerate frame sizes applications initialize the
2950+ <structfield>pad</structfield>, <structfield>code</structfield> and
2951+ <structfield>index</structfield> fields of the
2952+ &v4l2-subdev-mbus-code-enum; and call the
2953+ <constant>VIDIOC_SUBDEV_ENUM_FRAME_SIZE</constant> ioctl with a pointer to
2954+ the structure. Drivers fill the minimum and maximum frame sizes or return
2955+ an &EINVAL; if one of the input parameters is invalid.</para>
2956+
2957+ <para>Sub-devices that only support discrete frame sizes (such as most
2958+ sensors) will return one or more frame sizes with identical minimum and
2959+ maximum values.</para>
2960+
2961+ <para>Not all possible sizes in given [minimum, maximum] ranges need to be
2962+ supported. For instance, a scaler that uses a fixed-point scaling ratio
2963+ might not be able to produce every frame size between the minimum and
2964+ maximum values. Applications must use the &VIDIOC-SUBDEV-S-FMT; ioctl to
2965+ try the sub-device for an exact supported frame size.</para>
2966+
2967+ <para>Available frame sizes may depend on the current 'try' formats at other
2968+ pads of the sub-device, as well as on the current active links and the
2969+ current values of V4L2 controls. See &VIDIOC-SUBDEV-G-FMT; for more
2970+ information about try formats.</para>
2971+
2972+ <table pgwide="1" frame="none" id="v4l2-subdev-frame-size-enum">
2973+ <title>struct <structname>v4l2_subdev_frame_size_enum</structname></title>
2974+ <tgroup cols="3">
2975+ &cs-str;
2976+ <tbody valign="top">
2977+ <row>
2978+ <entry>__u32</entry>
2979+ <entry><structfield>index</structfield></entry>
2980+ <entry>Number of the format in the enumeration, set by the
2981+ application.</entry>
2982+ </row>
2983+ <row>
2984+ <entry>__u32</entry>
2985+ <entry><structfield>pad</structfield></entry>
2986+ <entry>Pad number as reported by the media controller API.</entry>
2987+ </row>
2988+ <row>
2989+ <entry>__u32</entry>
2990+ <entry><structfield>code</structfield></entry>
2991+ <entry>The media bus format code, as defined in
2992+ <xref linkend="v4l2-mbus-format" />.</entry>
2993+ </row>
2994+ <row>
2995+ <entry>__u32</entry>
2996+ <entry><structfield>min_width</structfield></entry>
2997+ <entry>Minimum frame width, in pixels.</entry>
2998+ </row>
2999+ <row>
3000+ <entry>__u32</entry>
3001+ <entry><structfield>max_width</structfield></entry>
3002+ <entry>Maximum frame width, in pixels.</entry>
3003+ </row>
3004+ <row>
3005+ <entry>__u32</entry>
3006+ <entry><structfield>min_height</structfield></entry>
3007+ <entry>Minimum frame height, in pixels.</entry>
3008+ </row>
3009+ <row>
3010+ <entry>__u32</entry>
3011+ <entry><structfield>max_height</structfield></entry>
3012+ <entry>Maximum frame height, in pixels.</entry>
3013+ </row>
3014+ <row>
3015+ <entry>__u32</entry>
3016+ <entry><structfield>reserved</structfield>[9]</entry>
3017+ <entry>Reserved for future extensions. Applications and drivers must
3018+ set the array to zero.</entry>
3019+ </row>
3020+ </tbody>
3021+ </tgroup>
3022+ </table>
3023+ </refsect1>
3024+
3025+ <refsect1>
3026+ &return-value;
3027+
3028+ <variablelist>
3029+ <varlistentry>
3030+ <term><errorcode>EINVAL</errorcode></term>
3031+ <listitem>
3032+ <para>The &v4l2-subdev-frame-size-enum; <structfield>pad</structfield>
3033+ references a non-existing pad, the <structfield>code</structfield> is
3034+ invalid for the given pad or the <structfield>index</structfield>
3035+ field is out of bounds.</para>
3036+ </listitem>
3037+ </varlistentry>
3038+ </variablelist>
3039+ </refsect1>
3040+</refentry>
3041diff --git a/Documentation/DocBook/v4l/vidioc-subdev-enum-mbus-code.xml b/Documentation/DocBook/v4l/vidioc-subdev-enum-mbus-code.xml
3042new file mode 100644
3043index 0000000..763dbc7
3044--- /dev/null
3045+++ b/Documentation/DocBook/v4l/vidioc-subdev-enum-mbus-code.xml
3046@@ -0,0 +1,113 @@
3047+<refentry id="vidioc-subdev-enum-mbus-code">
3048+ <refmeta>
3049+ <refentrytitle>ioctl VIDIOC_SUBDEV_ENUM_MBUS_CODE</refentrytitle>
3050+ &manvol;
3051+ </refmeta>
3052+
3053+ <refnamediv>
3054+ <refname>VIDIOC_SUBDEV_ENUM_MBUS_CODE</refname>
3055+ <refpurpose>Enumerate media bus formats</refpurpose>
3056+ </refnamediv>
3057+
3058+ <refsynopsisdiv>
3059+ <funcsynopsis>
3060+ <funcprototype>
3061+ <funcdef>int <function>ioctl</function></funcdef>
3062+ <paramdef>int <parameter>fd</parameter></paramdef>
3063+ <paramdef>int <parameter>request</parameter></paramdef>
3064+ <paramdef>struct v4l2_subdev_mbus_code_enum *
3065+ <parameter>argp</parameter></paramdef>
3066+ </funcprototype>
3067+ </funcsynopsis>
3068+ </refsynopsisdiv>
3069+
3070+ <refsect1>
3071+ <title>Arguments</title>
3072+
3073+ <variablelist>
3074+ <varlistentry>
3075+ <term><parameter>fd</parameter></term>
3076+ <listitem>
3077+ <para>&fd;</para>
3078+ </listitem>
3079+ </varlistentry>
3080+ <varlistentry>
3081+ <term><parameter>request</parameter></term>
3082+ <listitem>
3083+ <para>VIDIOC_SUBDEV_ENUM_MBUS_CODE</para>
3084+ </listitem>
3085+ </varlistentry>
3086+ <varlistentry>
3087+ <term><parameter>argp</parameter></term>
3088+ <listitem>
3089+ <para></para>
3090+ </listitem>
3091+ </varlistentry>
3092+ </variablelist>
3093+ </refsect1>
3094+
3095+ <refsect1>
3096+ <title>Description</title>
3097+
3098+ <para>To enumerate media bus formats available at a given sub-device pad
3099+ applications initialize the <structfield>pad</structfield> and
3100+ <structfield>index</structfield> fields of &v4l2-subdev-mbus-code-enum; and
3101+ call the <constant>VIDIOC_SUBDEV_ENUM_MBUS_CODE</constant> ioctl with a
3102+ pointer to this structure. Drivers fill the rest of the structure or return
3103+ an &EINVAL; if either the <structfield>pad</structfield> or
3104+ <structfield>index</structfield> are invalid. All media bus formats are
3105+ enumerable by beginning at index zero and incrementing by one until
3106+ <errorcode>EINVAL</errorcode> is returned.</para>
3107+
3108+ <para>Available media bus formats may depend on the current 'try' formats
3109+ at other pads of the sub-device, as well as on the current active links. See
3110+ &VIDIOC-SUBDEV-G-FMT; for more information about the try formats.</para>
3111+
3112+ <table pgwide="1" frame="none" id="v4l2-subdev-mbus-code-enum">
3113+ <title>struct <structname>v4l2_subdev_mbus_code_enum</structname></title>
3114+ <tgroup cols="3">
3115+ &cs-str;
3116+ <tbody valign="top">
3117+ <row>
3118+ <entry>__u32</entry>
3119+ <entry><structfield>pad</structfield></entry>
3120+ <entry>Pad number as reported by the media controller API.</entry>
3121+ </row>
3122+ <row>
3123+ <entry>__u32</entry>
3124+ <entry><structfield>index</structfield></entry>
3125+ <entry>Number of the format in the enumeration, set by the
3126+ application.</entry>
3127+ </row>
3128+ <row>
3129+ <entry>__u32</entry>
3130+ <entry><structfield>code</structfield></entry>
3131+ <entry>The media bus format code, as defined in
3132+ <xref linkend="v4l2-mbus-format" />.</entry>
3133+ </row>
3134+ <row>
3135+ <entry>__u32</entry>
3136+ <entry><structfield>reserved</structfield>[9]</entry>
3137+ <entry>Reserved for future extensions. Applications and drivers must
3138+ set the array to zero.</entry>
3139+ </row>
3140+ </tbody>
3141+ </tgroup>
3142+ </table>
3143+ </refsect1>
3144+
3145+ <refsect1>
3146+ &return-value;
3147+
3148+ <variablelist>
3149+ <varlistentry>
3150+ <term><errorcode>EINVAL</errorcode></term>
3151+ <listitem>
3152+ <para>The &v4l2-subdev-mbus-code-enum; <structfield>pad</structfield>
3153+ references a non-existing pad, or the <structfield>index</structfield>
3154+ field is out of bounds.</para>
3155+ </listitem>
3156+ </varlistentry>
3157+ </variablelist>
3158+ </refsect1>
3159+</refentry>
3160diff --git a/Documentation/DocBook/v4l/vidioc-subdev-g-fmt.xml b/Documentation/DocBook/v4l/vidioc-subdev-g-fmt.xml
3161new file mode 100644
3162index 0000000..f06c41b
3163--- /dev/null
3164+++ b/Documentation/DocBook/v4l/vidioc-subdev-g-fmt.xml
3165@@ -0,0 +1,174 @@
3166+<refentry id="vidioc-subdev-g-fmt">
3167+ <refmeta>
3168+ <refentrytitle>ioctl VIDIOC_SUBDEV_G_FMT, VIDIOC_SUBDEV_S_FMT</refentrytitle>
3169+ &manvol;
3170+ </refmeta>
3171+
3172+ <refnamediv>
3173+ <refname>VIDIOC_SUBDEV_G_FMT</refname>
3174+ <refname>VIDIOC_SUBDEV_S_FMT</refname>
3175+ <refpurpose>Get or set the data format on a subdev pad</refpurpose>
3176+ </refnamediv>
3177+
3178+ <refsynopsisdiv>
3179+ <funcsynopsis>
3180+ <funcprototype>
3181+ <funcdef>int <function>ioctl</function></funcdef>
3182+ <paramdef>int <parameter>fd</parameter></paramdef>
3183+ <paramdef>int <parameter>request</parameter></paramdef>
3184+ <paramdef>struct v4l2_subdev_format *<parameter>argp</parameter>
3185+ </paramdef>
3186+ </funcprototype>
3187+ </funcsynopsis>
3188+ </refsynopsisdiv>
3189+
3190+ <refsect1>
3191+ <title>Arguments</title>
3192+
3193+ <variablelist>
3194+ <varlistentry>
3195+ <term><parameter>fd</parameter></term>
3196+ <listitem>
3197+ <para>&fd;</para>
3198+ </listitem>
3199+ </varlistentry>
3200+ <varlistentry>
3201+ <term><parameter>request</parameter></term>
3202+ <listitem>
3203+ <para>VIDIOC_SUBDEV_G_FMT, VIDIOC_SUBDEV_S_FMT</para>
3204+ </listitem>
3205+ </varlistentry>
3206+ <varlistentry>
3207+ <term><parameter>argp</parameter></term>
3208+ <listitem>
3209+ <para></para>
3210+ </listitem>
3211+ </varlistentry>
3212+ </variablelist>
3213+ </refsect1>
3214+
3215+ <refsect1>
3216+ <title>Description</title>
3217+
3218+ <para>These ioctls are used to negotiate the frame format at specific
3219+ subdev pads in the image pipeline.</para>
3220+
3221+ <para>To retrieve the current format applications set the
3222+ <structfield>pad</structfield> field of a &v4l2-subdev-format; to the
3223+ desired pad number as reported by the media API and the
3224+ <structfield>which</structfield> field to
3225+ <constant>V4L2_SUBDEV_FORMAT_ACTIVE</constant>. When they call the
3226+ <constant>VIDIOC_SUBDEV_G_FMT</constant> ioctl with a pointer to this
3227+ structure the driver fills the members of the <structfield>format</structfield>
3228+ field.</para>
3229+
3230+ <para>To change the current format applications set both the
3231+ <structfield>pad</structfield> and <structfield>which</structfield> fields
3232+ and all members of the <structfield>format</structfield> field. When they
3233+ call the <constant>VIDIOC_SUBDEV_S_FMT</constant> ioctl with a pointer to this
3234+ structure the driver verifies the requested format, adjusts it based on the
3235+ hardware capabilities and configures the device. Upon return the
3236+ &v4l2-subdev-format; contains the current format as would be returned by a
3237+ <constant>VIDIOC_SUBDEV_G_FMT</constant> call.</para>
3238+
3239+ <para>Applications can query the device capabilities by setting the
3240+ <structfield>which</structfield> to
3241+ <constant>V4L2_SUBDEV_FORMAT_TRY</constant>. When set, 'try' formats are not
3242+ applied to the device by the driver, but are changed exactly as active
3243+ formats and stored in the sub-device file handle. Two applications querying
3244+ the same sub-device would thus not interact with each other.</para>
3245+
3246+ <para>For instance, to try a format at the output pad of a sub-device,
3247+ applications would first set the try format at the sub-device input with the
3248+ <constant>VIDIOC_SUBDEV_S_FMT</constant> ioctl. They would then either
3249+ retrieve the default format at the output pad with the
3250+ <constant>VIDIOC_SUBDEV_G_FMT</constant> ioctl, or set the desired output
3251+ pad format with the <constant>VIDIOC_SUBDEV_S_FMT</constant> ioctl and check
3252+ the returned value.</para>
3253+
3254+ <para>Try formats do not depend on active formats, but can depend on the
3255+ current links configuration or sub-device controls value. For instance, a
3256+ low-pass noise filter might crop pixels at the frame boundaries, modifying
3257+ its output frame size.</para>
3258+
3259+ <para>Drivers must not return an error solely because the requested format
3260+ doesn't match the device capabilities. They must instead modify the format
3261+ to match what the hardware can provide. The modified format should be as
3262+ close as possible to the original request.</para>
3263+
3264+ <table pgwide="1" frame="none" id="v4l2-subdev-format">
3265+ <title>struct <structname>v4l2_subdev_format</structname></title>
3266+ <tgroup cols="3">
3267+ &cs-str;
3268+ <tbody valign="top">
3269+ <row>
3270+ <entry>__u32</entry>
3271+ <entry><structfield>pad</structfield></entry>
3272+ <entry>Pad number as reported by the media controller API.</entry>
3273+ </row>
3274+ <row>
3275+ <entry>__u32</entry>
3276+ <entry><structfield>which</structfield></entry>
3277+ <entry>Format to modified, from &v4l2-subdev-format-whence;.</entry>
3278+ </row>
3279+ <row>
3280+ <entry>&v4l2-mbus-framefmt;</entry>
3281+ <entry><structfield>format</structfield></entry>
3282+ <entry>Definition of an image format, see <xref
3283+ linkend="v4l2-mbus-framefmt" /> for details.</entry>
3284+ </row>
3285+ <row>
3286+ <entry>__u32</entry>
3287+ <entry><structfield>reserved</structfield>[8]</entry>
3288+ <entry>Reserved for future extensions. Applications and drivers must
3289+ set the array to zero.</entry>
3290+ </row>
3291+ </tbody>
3292+ </tgroup>
3293+ </table>
3294+
3295+ <table pgwide="1" frame="none" id="v4l2-subdev-format-whence">
3296+ <title>enum <structname>v4l2_subdev_format_whence</structname></title>
3297+ <tgroup cols="3">
3298+ &cs-def;
3299+ <tbody valign="top">
3300+ <row>
3301+ <entry>V4L2_SUBDEV_FORMAT_TRY</entry>
3302+ <entry>0</entry>
3303+ <entry>Try formats, used for querying device capabilities.</entry>
3304+ </row>
3305+ <row>
3306+ <entry>V4L2_SUBDEV_FORMAT_ACTIVE</entry>
3307+ <entry>1</entry>
3308+ <entry>Active formats, applied to the hardware.</entry>
3309+ </row>
3310+ </tbody>
3311+ </tgroup>
3312+ </table>
3313+ </refsect1>
3314+
3315+ <refsect1>
3316+ &return-value;
3317+
3318+ <variablelist>
3319+ <varlistentry>
3320+ <term><errorcode>EBUSY</errorcode></term>
3321+ <listitem>
3322+ <para>The format can't be changed because the pad is currently busy.
3323+ This can be caused, for instance, by an active video stream on the
3324+ pad. The ioctl must not be retried without performing another action
3325+ to fix the problem first. Only returned by
3326+ <constant>VIDIOC_SUBDEV_S_FMT</constant></para>
3327+ </listitem>
3328+ </varlistentry>
3329+ <varlistentry>
3330+ <term><errorcode>EINVAL</errorcode></term>
3331+ <listitem>
3332+ <para>The &v4l2-subdev-format; <structfield>pad</structfield>
3333+ references a non-existing pad, or the <structfield>which</structfield>
3334+ field references a non-existing format.</para>
3335+ </listitem>
3336+ </varlistentry>
3337+ </variablelist>
3338+ </refsect1>
3339+</refentry>
3340diff --git a/drivers/media/video/v4l2-subdev.c b/drivers/media/video/v4l2-subdev.c
3341index 0f904e2..73aae00 100644
3342--- a/drivers/media/video/v4l2-subdev.c
3343+++ b/drivers/media/video/v4l2-subdev.c
3344@@ -149,6 +149,9 @@ static long subdev_do_ioctl(struct file *file, unsigned int cmd, void *arg)
3345 struct video_device *vdev = video_devdata(file);
3346 struct v4l2_subdev *sd = vdev_to_v4l2_subdev(vdev);
3347 struct v4l2_fh *vfh = file->private_data;
3348+#if defined(CONFIG_VIDEO_V4L2_SUBDEV_API)
3349+ struct v4l2_subdev_fh *subdev_fh = to_v4l2_subdev_fh(vfh);
3350+#endif
3351
3352 switch (cmd) {
3353 case VIDIOC_QUERYCTRL:
3354@@ -183,7 +186,53 @@ static long subdev_do_ioctl(struct file *file, unsigned int cmd, void *arg)
3355
3356 case VIDIOC_UNSUBSCRIBE_EVENT:
3357 return v4l2_subdev_call(sd, core, unsubscribe_event, vfh, arg);
3358+#if defined(CONFIG_VIDEO_V4L2_SUBDEV_API)
3359+ case VIDIOC_SUBDEV_G_FMT: {
3360+ struct v4l2_subdev_format *format = arg;
3361+
3362+ if (format->which != V4L2_SUBDEV_FORMAT_TRY &&
3363+ format->which != V4L2_SUBDEV_FORMAT_ACTIVE)
3364+ return -EINVAL;
3365+
3366+ if (format->pad >= sd->entity.num_pads)
3367+ return -EINVAL;
3368+
3369+ return v4l2_subdev_call(sd, pad, get_fmt, subdev_fh, format);
3370+ }
3371+
3372+ case VIDIOC_SUBDEV_S_FMT: {
3373+ struct v4l2_subdev_format *format = arg;
3374+
3375+ if (format->which != V4L2_SUBDEV_FORMAT_TRY &&
3376+ format->which != V4L2_SUBDEV_FORMAT_ACTIVE)
3377+ return -EINVAL;
3378+
3379+ if (format->pad >= sd->entity.num_pads)
3380+ return -EINVAL;
3381
3382+ return v4l2_subdev_call(sd, pad, set_fmt, subdev_fh, format);
3383+ }
3384+
3385+ case VIDIOC_SUBDEV_ENUM_MBUS_CODE: {
3386+ struct v4l2_subdev_mbus_code_enum *code = arg;
3387+
3388+ if (code->pad >= sd->entity.num_pads)
3389+ return -EINVAL;
3390+
3391+ return v4l2_subdev_call(sd, pad, enum_mbus_code, subdev_fh,
3392+ code);
3393+ }
3394+
3395+ case VIDIOC_SUBDEV_ENUM_FRAME_SIZE: {
3396+ struct v4l2_subdev_frame_size_enum *fse = arg;
3397+
3398+ if (fse->pad >= sd->entity.num_pads)
3399+ return -EINVAL;
3400+
3401+ return v4l2_subdev_call(sd, pad, enum_frame_size, subdev_fh,
3402+ fse);
3403+ }
3404+#endif
3405 default:
3406 return -ENOIOCTLCMD;
3407 }
3408diff --git a/include/linux/Kbuild b/include/linux/Kbuild
3409index 796e1d8..c0db7f4 100644
3410--- a/include/linux/Kbuild
3411+++ b/include/linux/Kbuild
3412@@ -367,6 +367,7 @@ header-y += usbdevice_fs.h
3413 header-y += utime.h
3414 header-y += utsname.h
3415 header-y += v4l2-mediabus.h
3416+header-y += v4l2-subdev.h
3417 header-y += veth.h
3418 header-y += vhost.h
3419 header-y += videodev.h
3420diff --git a/include/linux/v4l2-subdev.h b/include/linux/v4l2-subdev.h
3421new file mode 100644
3422index 0000000..38d0eda
3423--- /dev/null
3424+++ b/include/linux/v4l2-subdev.h
3425@@ -0,0 +1,90 @@
3426+/*
3427+ * V4L2 subdev userspace API
3428+ *
3429+ * Copyright (C) 2010 Nokia Corporation
3430+ *
3431+ * Contacts: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
3432+ * Sakari Ailus <sakari.ailus@maxwell.research.nokia.com>
3433+ *
3434+ * This program is free software; you can redistribute it and/or modify
3435+ * it under the terms of the GNU General Public License version 2 as
3436+ * published by the Free Software Foundation.
3437+ *
3438+ * This program is distributed in the hope that it will be useful,
3439+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
3440+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3441+ * GNU General Public License for more details.
3442+ *
3443+ * You should have received a copy of the GNU General Public License
3444+ * along with this program; if not, write to the Free Software
3445+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
3446+ */
3447+
3448+#ifndef __LINUX_V4L2_SUBDEV_H
3449+#define __LINUX_V4L2_SUBDEV_H
3450+
3451+#include <linux/ioctl.h>
3452+#include <linux/types.h>
3453+#include <linux/v4l2-mediabus.h>
3454+
3455+/**
3456+ * enum v4l2_subdev_format_whence - Media bus format type
3457+ * @V4L2_SUBDEV_FORMAT_TRY: try format, for negotiation only
3458+ * @V4L2_SUBDEV_FORMAT_ACTIVE: active format, applied to the device
3459+ */
3460+enum v4l2_subdev_format_whence {
3461+ V4L2_SUBDEV_FORMAT_TRY = 0,
3462+ V4L2_SUBDEV_FORMAT_ACTIVE = 1,
3463+};
3464+
3465+/**
3466+ * struct v4l2_subdev_format - Pad-level media bus format
3467+ * @which: format type (from enum v4l2_subdev_format_whence)
3468+ * @pad: pad number, as reported by the media API
3469+ * @format: media bus format (format code and frame size)
3470+ */
3471+struct v4l2_subdev_format {
3472+ __u32 which;
3473+ __u32 pad;
3474+ struct v4l2_mbus_framefmt format;
3475+ __u32 reserved[8];
3476+};
3477+
3478+/**
3479+ * struct v4l2_subdev_mbus_code_enum - Media bus format enumeration
3480+ * @pad: pad number, as reported by the media API
3481+ * @index: format index during enumeration
3482+ * @code: format code (from enum v4l2_mbus_pixelcode)
3483+ */
3484+struct v4l2_subdev_mbus_code_enum {
3485+ __u32 pad;
3486+ __u32 index;
3487+ __u32 code;
3488+ __u32 reserved[9];
3489+};
3490+
3491+/**
3492+ * struct v4l2_subdev_frame_size_enum - Media bus format enumeration
3493+ * @pad: pad number, as reported by the media API
3494+ * @index: format index during enumeration
3495+ * @code: format code (from enum v4l2_mbus_pixelcode)
3496+ */
3497+struct v4l2_subdev_frame_size_enum {
3498+ __u32 index;
3499+ __u32 pad;
3500+ __u32 code;
3501+ __u32 min_width;
3502+ __u32 max_width;
3503+ __u32 min_height;
3504+ __u32 max_height;
3505+ __u32 reserved[9];
3506+};
3507+
3508+#define VIDIOC_SUBDEV_G_FMT _IOWR('V', 4, struct v4l2_subdev_format)
3509+#define VIDIOC_SUBDEV_S_FMT _IOWR('V', 5, struct v4l2_subdev_format)
3510+#define VIDIOC_SUBDEV_ENUM_MBUS_CODE \
3511+ _IOWR('V', 2, struct v4l2_subdev_mbus_code_enum)
3512+#define VIDIOC_SUBDEV_ENUM_FRAME_SIZE \
3513+ _IOWR('V', 74, struct v4l2_subdev_frame_size_enum)
3514+
3515+#endif
3516diff --git a/include/media/v4l2-subdev.h b/include/media/v4l2-subdev.h
3517index 4f6ddba..f5611c2 100644
3518--- a/include/media/v4l2-subdev.h
3519+++ b/include/media/v4l2-subdev.h
3520@@ -21,6 +21,7 @@
3521 #ifndef _V4L2_SUBDEV_H
3522 #define _V4L2_SUBDEV_H
3523
3524+#include <linux/v4l2-subdev.h>
3525 #include <media/media-entity.h>
3526 #include <media/v4l2-common.h>
3527 #include <media/v4l2-dev.h>
3528@@ -425,6 +426,15 @@ struct v4l2_subdev_ir_ops {
3529 };
3530
3531 struct v4l2_subdev_pad_ops {
3532+ int (*enum_mbus_code)(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh,
3533+ struct v4l2_subdev_mbus_code_enum *code);
3534+ int (*enum_frame_size)(struct v4l2_subdev *sd,
3535+ struct v4l2_subdev_fh *fh,
3536+ struct v4l2_subdev_frame_size_enum *fse);
3537+ int (*get_fmt)(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh,
3538+ struct v4l2_subdev_format *format);
3539+ int (*set_fmt)(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh,
3540+ struct v4l2_subdev_format *format);
3541 };
3542
3543 struct v4l2_subdev_ops {
3544--
35451.6.6.1
3546