diff --git a/Documentation/DocBook/media-entities.tmpl b/Documentation/DocBook/media-entities.tmpl
index bb5ab741220..c725cb852c5 100644
--- a/Documentation/DocBook/media-entities.tmpl
+++ b/Documentation/DocBook/media-entities.tmpl
@@ -23,6 +23,7 @@
VIDIOC_ENUMINPUT">
VIDIOC_ENUMOUTPUT">
VIDIOC_ENUMSTD">
+VIDIOC_ENUM_DV_PRESETS">
VIDIOC_ENUM_FMT">
VIDIOC_ENUM_FRAMEINTERVALS">
VIDIOC_ENUM_FRAMESIZES">
@@ -30,6 +31,8 @@
VIDIOC_G_AUDOUT">
VIDIOC_G_CROP">
VIDIOC_G_CTRL">
+VIDIOC_G_DV_PRESET">
+VIDIOC_G_DV_TIMINGS">
VIDIOC_G_ENC_INDEX">
VIDIOC_G_EXT_CTRLS">
VIDIOC_G_FBUF">
@@ -53,6 +56,7 @@
VIDIOC_QUERYCTRL">
VIDIOC_QUERYMENU">
VIDIOC_QUERYSTD">
+VIDIOC_QUERY_DV_PRESET">
VIDIOC_REQBUFS">
VIDIOC_STREAMOFF">
VIDIOC_STREAMON">
@@ -60,6 +64,8 @@
VIDIOC_S_AUDOUT">
VIDIOC_S_CROP">
VIDIOC_S_CTRL">
+VIDIOC_S_DV_PRESET">
+VIDIOC_S_DV_TIMINGS">
VIDIOC_S_EXT_CTRLS">
VIDIOC_S_FBUF">
VIDIOC_S_FMT">
@@ -118,6 +124,7 @@
v4l2_audio">
v4l2_audioout">
+v4l2_bt_timings">
v4l2_buffer">
v4l2_capability">
v4l2_captureparm">
@@ -128,6 +135,9 @@
v4l2_dbg_chip_ident">
v4l2_dbg_match">
v4l2_dbg_register">
+v4l2_dv_enum_preset">
+v4l2_dv_preset">
+v4l2_dv_timings">
v4l2_enc_idx">
v4l2_enc_idx_entry">
v4l2_encoder_cmd">
@@ -243,6 +253,10 @@
+
+
+
+
@@ -333,6 +347,10 @@
+
+
+
+
diff --git a/Documentation/DocBook/media-indices.tmpl b/Documentation/DocBook/media-indices.tmpl
index 9e30a236d74..78d6031de00 100644
--- a/Documentation/DocBook/media-indices.tmpl
+++ b/Documentation/DocBook/media-indices.tmpl
@@ -36,6 +36,7 @@
enum v4l2_preemphasisstruct v4l2_audiostruct v4l2_audioout
+struct v4l2_bt_timingsstruct v4l2_bufferstruct v4l2_capabilitystruct v4l2_captureparm
@@ -46,6 +47,9 @@
struct v4l2_dbg_chip_identstruct v4l2_dbg_matchstruct v4l2_dbg_register
+struct v4l2_dv_enum_preset
+struct v4l2_dv_preset
+struct v4l2_dv_timingsstruct v4l2_enc_idxstruct v4l2_enc_idx_entrystruct v4l2_encoder_cmd
diff --git a/Documentation/DocBook/v4l/common.xml b/Documentation/DocBook/v4l/common.xml
index b1a81d246d5..c65f0ac9b6e 100644
--- a/Documentation/DocBook/v4l/common.xml
+++ b/Documentation/DocBook/v4l/common.xml
@@ -716,6 +716,41 @@ if (-1 == ioctl (fd, &VIDIOC-S-STD;, &std_id)) {
}
+
+ Digital Video (DV) Timings
+
+ The video standards discussed so far has been dealing with Analog TV and the
+corresponding video timings. Today there are many more different hardware interfaces
+such as High Definition TV interfaces (HDMI), VGA, DVI connectors etc., that carry
+video signals and there is a need to extend the API to select the video timings
+for these interfaces. Since it is not possible to extend the &v4l2-std-id; due to
+the limited bits available, a new set of IOCTLs is added to set/get video timings at
+the input and output:
+
+ DV Presets: Digital Video (DV) presets. These are IDs representing a
+video timing at the input/output. Presets are pre-defined timings implemented
+by the hardware according to video standards. A __u32 data type is used to represent
+a preset unlike the bit mask that is used in &v4l2-std-id; allowing future extensions
+to support as many different presets as needed.
+
+
+ Custom DV Timings: This will allow applications to define more detailed
+custom video timings for the interface. This includes parameters such as width, height,
+polarities, frontporch, backporch etc.
+
+
+
+ To enumerate and query the attributes of DV presets supported by a device,
+applications use the &VIDIOC-ENUM-DV-PRESETS; ioctl. To get the current DV preset,
+applications use the &VIDIOC-G-DV-PRESET; ioctl and to set a preset they use the
+&VIDIOC-S-DV-PRESET; ioctl.
+ To set custom DV timings for the device, applications use the
+&VIDIOC-S-DV-TIMINGS; ioctl and to get current custom DV timings they use the
+&VIDIOC-G-DV-TIMINGS; ioctl.
+ Applications can make use of the and
+ flags to decide what ioctls are available to set the
+video timings for the device.
+
&sub-controls;
diff --git a/Documentation/DocBook/v4l/v4l2.xml b/Documentation/DocBook/v4l/v4l2.xml
index 937b4157a5d..77b7dd8a3b5 100644
--- a/Documentation/DocBook/v4l/v4l2.xml
+++ b/Documentation/DocBook/v4l/v4l2.xml
@@ -411,6 +411,7 @@ and discussions on the V4L mailing list.
&sub-encoder-cmd;
&sub-enumaudio;
&sub-enumaudioout;
+ &sub-enum-dv-presets;
&sub-enum-fmt;
&sub-enum-framesizes;
&sub-enum-frameintervals;
@@ -421,6 +422,8 @@ and discussions on the V4L mailing list.
&sub-g-audioout;
&sub-g-crop;
&sub-g-ctrl;
+ &sub-g-dv-preset;
+ &sub-g-dv-timings;
&sub-g-enc-index;
&sub-g-ext-ctrls;
&sub-g-fbuf;
@@ -441,6 +444,7 @@ and discussions on the V4L mailing list.
&sub-querybuf;
&sub-querycap;
&sub-queryctrl;
+ &sub-query-dv-preset;
&sub-querystd;
&sub-reqbufs;
&sub-s-hw-freq-seek;
diff --git a/Documentation/DocBook/v4l/videodev2.h.xml b/Documentation/DocBook/v4l/videodev2.h.xml
index 3e282ed9f59..06832594065 100644
--- a/Documentation/DocBook/v4l/videodev2.h.xml
+++ b/Documentation/DocBook/v4l/videodev2.h.xml
@@ -733,6 +733,99 @@ struct v4l2_standard {
__u32 reserved[4];
};
+/*
+ * V I D E O T I M I N G S D V P R E S E T
+ */
+struct v4l2_dv_preset {
+ __u32 preset;
+ __u32 reserved[4];
+};
+
+/*
+ * D V P R E S E T S E N U M E R A T I O N
+ */
+struct v4l2_dv_enum_preset {
+ __u32 index;
+ __u32 preset;
+ __u8 name[32]; /* Name of the preset timing */
+ __u32 width;
+ __u32 height;
+ __u32 reserved[4];
+};
+
+/*
+ * D V P R E S E T V A L U E S
+ */
+#define V4L2_DV_INVALID 0
+#define V4L2_DV_480P59_94 1 /* BT.1362 */
+#define V4L2_DV_576P50 2 /* BT.1362 */
+#define V4L2_DV_720P24 3 /* SMPTE 296M */
+#define V4L2_DV_720P25 4 /* SMPTE 296M */
+#define V4L2_DV_720P30 5 /* SMPTE 296M */
+#define V4L2_DV_720P50 6 /* SMPTE 296M */
+#define V4L2_DV_720P59_94 7 /* SMPTE 274M */
+#define V4L2_DV_720P60 8 /* SMPTE 274M/296M */
+#define V4L2_DV_1080I29_97 9 /* BT.1120/ SMPTE 274M */
+#define V4L2_DV_1080I30 10 /* BT.1120/ SMPTE 274M */
+#define V4L2_DV_1080I25 11 /* BT.1120 */
+#define V4L2_DV_1080I50 12 /* SMPTE 296M */
+#define V4L2_DV_1080I60 13 /* SMPTE 296M */
+#define V4L2_DV_1080P24 14 /* SMPTE 296M */
+#define V4L2_DV_1080P25 15 /* SMPTE 296M */
+#define V4L2_DV_1080P30 16 /* SMPTE 296M */
+#define V4L2_DV_1080P50 17 /* BT.1120 */
+#define V4L2_DV_1080P60 18 /* BT.1120 */
+
+/*
+ * D V B T T I M I N G S
+ */
+
+/* BT.656/BT.1120 timing data */
+struct v4l2_bt_timings {
+ __u32 width; /* width in pixels */
+ __u32 height; /* height in lines */
+ __u32 interlaced; /* Interlaced or progressive */
+ __u32 polarities; /* Positive or negative polarity */
+ __u64 pixelclock; /* Pixel clock in HZ. Ex. 74.25MHz->74250000 */
+ __u32 hfrontporch; /* Horizpontal front porch in pixels */
+ __u32 hsync; /* Horizontal Sync length in pixels */
+ __u32 hbackporch; /* Horizontal back porch in pixels */
+ __u32 vfrontporch; /* Vertical front porch in pixels */
+ __u32 vsync; /* Vertical Sync length in lines */
+ __u32 vbackporch; /* Vertical back porch in lines */
+ __u32 il_vfrontporch; /* Vertical front porch for bottom field of
+ * interlaced field formats
+ */
+ __u32 il_vsync; /* Vertical sync length for bottom field of
+ * interlaced field formats
+ */
+ __u32 il_vbackporch; /* Vertical back porch for bottom field of
+ * interlaced field formats
+ */
+ __u32 reserved[16];
+} __attribute__ ((packed));
+
+/* Interlaced or progressive format */
+#define V4L2_DV_PROGRESSIVE 0
+#define V4L2_DV_INTERLACED 1
+
+/* Polarities. If bit is not set, it is assumed to be negative polarity */
+#define V4L2_DV_VSYNC_POS_POL 0x00000001
+#define V4L2_DV_HSYNC_POS_POL 0x00000002
+
+
+/* DV timings */
+struct v4l2_dv_timings {
+ __u32 type;
+ union {
+ struct v4l2_bt_timings bt;
+ __u32 reserved[32];
+ };
+} __attribute__ ((packed));
+
+/* Values for the type field */
+#define V4L2_DV_BT_656_1120 0 /* BT.656/1120 timing type */
+
/*
* V I D E O I N P U T S
*/
@@ -744,7 +837,8 @@ struct v4l2_input {
__u32 tuner; /* Associated tuner */
v4l2_std_id std;
__u32 status;
- __u32 reserved[4];
+ __u32 capabilities;
+ __u32 reserved[3];
};
/* Values for the 'type' field */
@@ -775,6 +869,11 @@ struct v4l2_input {
#define V4L2_IN_ST_NO_ACCESS 0x02000000 /* Conditional access denied */
#define V4L2_IN_ST_VTR 0x04000000 /* VTR time constant */
+/* capabilities flags */
+#define V4L2_IN_CAP_PRESETS 0x00000001 /* Supports S_DV_PRESET */
+#define V4L2_IN_CAP_CUSTOM_TIMINGS 0x00000002 /* Supports S_DV_TIMINGS */
+#define V4L2_IN_CAP_STD 0x00000004 /* Supports S_STD */
+
/*
* V I D E O O U T P U T S
*/
@@ -785,13 +884,19 @@ struct v4l2_output {
__u32 audioset; /* Associated audios (bitfield) */
__u32 modulator; /* Associated modulator */
v4l2_std_id std;
- __u32 reserved[4];
+ __u32 capabilities;
+ __u32 reserved[3];
};
/* Values for the 'type' field */
#define V4L2_OUTPUT_TYPE_MODULATOR 1
#define V4L2_OUTPUT_TYPE_ANALOG 2
#define V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY 3
+/* capabilities flags */
+#define V4L2_OUT_CAP_PRESETS 0x00000001 /* Supports S_DV_PRESET */
+#define V4L2_OUT_CAP_CUSTOM_TIMINGS 0x00000002 /* Supports S_DV_TIMINGS */
+#define V4L2_OUT_CAP_STD 0x00000004 /* Supports S_STD */
+
/*
* C O N T R O L S
*/
@@ -1626,6 +1731,13 @@ struct v4l2_dbg_chip_ident {
#endif
#define VIDIOC_S_HW_FREQ_SEEK _IOW('V', 82, struct v4l2_hw_freq_seek)
+#define VIDIOC_ENUM_DV_PRESETS _IOWR('V', 83, struct v4l2_dv_enum_preset)
+#define VIDIOC_S_DV_PRESET _IOWR('V', 84, struct v4l2_dv_preset)
+#define VIDIOC_G_DV_PRESET _IOWR('V', 85, struct v4l2_dv_preset)
+#define VIDIOC_QUERY_DV_PRESET _IOR('V', 86, struct v4l2_dv_preset)
+#define VIDIOC_S_DV_TIMINGS _IOWR('V', 87, struct v4l2_dv_timings)
+#define VIDIOC_G_DV_TIMINGS _IOWR('V', 88, struct v4l2_dv_timings)
+
/* Reminder: when adding new ioctls please add support for them to
drivers/media/video/v4l2-compat-ioctl32.c as well! */
diff --git a/Documentation/DocBook/v4l/vidioc-enum-dv-presets.xml b/Documentation/DocBook/v4l/vidioc-enum-dv-presets.xml
new file mode 100644
index 00000000000..1d31427edd1
--- /dev/null
+++ b/Documentation/DocBook/v4l/vidioc-enum-dv-presets.xml
@@ -0,0 +1,238 @@
+
+
+ ioctl VIDIOC_ENUM_DV_PRESETS
+ &manvol;
+
+
+
+ VIDIOC_ENUM_DV_PRESETS
+ Enumerate supported Digital Video presets
+
+
+
+
+
+ int ioctl
+ int fd
+ int request
+ struct v4l2_dv_enum_preset *argp
+
+
+
+
+
+ Arguments
+
+
+
+ fd
+
+ &fd;
+
+
+
+ request
+
+ VIDIOC_ENUM_DV_PRESETS
+
+
+
+ argp
+
+
+
+
+
+
+
+
+ Description
+
+ To query the attributes of a DV preset, applications initialize the
+index field and zero the reserved array of &v4l2-dv-enum-preset;
+and call the VIDIOC_ENUM_DV_PRESETS ioctl with a pointer to this
+structure. Drivers fill the rest of the structure or return an
+&EINVAL; when the index is out of bounds. To enumerate all DV Presets supported,
+applications shall begin at index zero, incrementing by one until the
+driver returns EINVAL. Drivers may enumerate a
+different set of DV presets after switching the video input or
+output.
+
+
+ struct v4l2_dv_enum_presets
+
+ &cs-str;
+
+
+ __u32
+ index
+ Number of the DV preset, set by the
+application.
+
+
+ __u32
+ preset
+ This field identifies one of the DV preset values listed in .
+
+
+ __u8
+ name[24]
+ Name of the preset, a NUL-terminated ASCII string, for example: "720P-60", "1080I-60". This information is
+intended for the user.
+
+
+ __u32
+ width
+ Width of the active video in pixels for the DV preset.
+
+
+ __u32
+ height
+ Height of the active video in lines for the DV preset.
+
+
+ __u32
+ reserved[4]
+ Reserved for future extensions. Drivers must set the array to zero.
+
+
+
+
+
+
+ struct DV Presets
+
+ &cs-str;
+
+
+ Preset
+ Preset value
+ Description
+
+
+
+
+
+
+
+ V4L2_DV_INVALID
+ 0
+ Invalid preset value.
+
+
+ V4L2_DV_480P59_94
+ 1
+ 720x480 progressive video at 59.94 fps as per BT.1362.
+
+
+ V4L2_DV_576P50
+ 2
+ 720x576 progressive video at 50 fps as per BT.1362.
+
+
+ V4L2_DV_720P24
+ 3
+ 1280x720 progressive video at 24 fps as per SMPTE 296M.
+
+
+ V4L2_DV_720P25
+ 4
+ 1280x720 progressive video at 25 fps as per SMPTE 296M.
+
+
+ V4L2_DV_720P30
+ 5
+ 1280x720 progressive video at 30 fps as per SMPTE 296M.
+
+
+ V4L2_DV_720P50
+ 6
+ 1280x720 progressive video at 50 fps as per SMPTE 296M.
+
+
+ V4L2_DV_720P59_94
+ 7
+ 1280x720 progressive video at 59.94 fps as per SMPTE 274M.
+
+
+ V4L2_DV_720P60
+ 8
+ 1280x720 progressive video at 60 fps as per SMPTE 274M/296M.
+
+
+ V4L2_DV_1080I29_97
+ 9
+ 1920x1080 interlaced video at 29.97 fps as per BT.1120/SMPTE 274M.
+
+
+ V4L2_DV_1080I30
+ 10
+ 1920x1080 interlaced video at 30 fps as per BT.1120/SMPTE 274M.
+
+
+ V4L2_DV_1080I25
+ 11
+ 1920x1080 interlaced video at 25 fps as per BT.1120.
+
+
+ V4L2_DV_1080I50
+ 12
+ 1920x1080 interlaced video at 50 fps as per SMPTE 296M.
+
+
+ V4L2_DV_1080I60
+ 13
+ 1920x1080 interlaced video at 60 fps as per SMPTE 296M.
+
+
+ V4L2_DV_1080P24
+ 14
+ 1920x1080 progressive video at 24 fps as per SMPTE 296M.
+
+
+ V4L2_DV_1080P25
+ 15
+ 1920x1080 progressive video at 25 fps as per SMPTE 296M.
+
+
+ V4L2_DV_1080P30
+ 16
+ 1920x1080 progressive video at 30 fps as per SMPTE 296M.
+
+
+ V4L2_DV_1080P50
+ 17
+ 1920x1080 progressive video at 50 fps as per BT.1120.
+
+
+ V4L2_DV_1080P60
+ 18
+ 1920x1080 progressive video at 60 fps as per BT.1120.
+
+
+
+
+
+
+
+ &return-value;
+
+
+
+ EINVAL
+
+ The &v4l2-dv-enum-preset; index
+is out of bounds.
+
+
+
+
+
+
+
diff --git a/Documentation/DocBook/v4l/vidioc-enuminput.xml b/Documentation/DocBook/v4l/vidioc-enuminput.xml
index 414856b8247..71b868e2fb8 100644
--- a/Documentation/DocBook/v4l/vidioc-enuminput.xml
+++ b/Documentation/DocBook/v4l/vidioc-enuminput.xml
@@ -124,7 +124,13 @@ current input.
__u32
- reserved[4]
+ capabilities
+ This field provides capabilities for the
+input. See for flags.
+
+
+ __u32
+ reserved[3]Reserved for future extensions. Drivers must set
the array to zero.
@@ -261,6 +267,34 @@ flag is set Macrovision has been detected.
+
+
+
+ Input capabilities
+
+ &cs-def;
+
+
+ V4L2_IN_CAP_PRESETS
+ 0x00000001
+ This input supports setting DV presets by using VIDIOC_S_DV_PRESET.
+
+
+ V4L2_OUT_CAP_CUSTOM_TIMINGS
+ 0x00000002
+ This input supports setting custom video timings by using VIDIOC_S_DV_TIMINGS.
+
+
+ V4L2_IN_CAP_STD
+ 0x00000004
+ This input supports setting the TV standard by using VIDIOC_S_STD.
+
+
+
+
diff --git a/Documentation/DocBook/v4l/vidioc-enumoutput.xml b/Documentation/DocBook/v4l/vidioc-enumoutput.xml
index e8d16dcd50c..a281d26a195 100644
--- a/Documentation/DocBook/v4l/vidioc-enumoutput.xml
+++ b/Documentation/DocBook/v4l/vidioc-enumoutput.xml
@@ -114,7 +114,13 @@ details on video standards and how to switch see __u32
- reserved[4]
+ capabilities
+ This field provides capabilities for the
+output. See for flags.
+
+
+ __u32
+ reserved[3]Reserved for future extensions. Drivers must set
the array to zero.
@@ -147,6 +153,34 @@ CVBS, S-Video, RGB.
+
+
+ Output capabilities
+
+ &cs-def;
+
+
+ V4L2_OUT_CAP_PRESETS
+ 0x00000001
+ This output supports setting DV presets by using VIDIOC_S_DV_PRESET.
+
+
+ V4L2_OUT_CAP_CUSTOM_TIMINGS
+ 0x00000002
+ This output supports setting custom video timings by using VIDIOC_S_DV_TIMINGS.
+
+
+ V4L2_OUT_CAP_STD
+ 0x00000004
+ This output supports setting the TV standard by using VIDIOC_S_STD.
+
+
+
+
+
&return-value;
diff --git a/Documentation/DocBook/v4l/vidioc-g-dv-preset.xml b/Documentation/DocBook/v4l/vidioc-g-dv-preset.xml
new file mode 100644
index 00000000000..3c6784e132f
--- /dev/null
+++ b/Documentation/DocBook/v4l/vidioc-g-dv-preset.xml
@@ -0,0 +1,111 @@
+
+
+ ioctl VIDIOC_G_DV_PRESET, VIDIOC_S_DV_PRESET
+ &manvol;
+
+
+
+ VIDIOC_G_DV_PRESET
+ VIDIOC_S_DV_PRESET
+ Query or select the DV preset of the current input or output
+
+
+
+
+
+ int ioctl
+ int fd
+ int request
+ &v4l2-dv-preset;
+*argp
+
+
+
+
+
+ Arguments
+
+
+
+ fd
+
+ &fd;
+
+
+
+ request
+
+ VIDIOC_G_DV_PRESET, VIDIOC_S_DV_PRESET
+
+
+
+ argp
+
+
+
+
+
+
+
+
+ Description
+ To query and select the current DV preset, applications
+use the VIDIOC_G_DV_PRESET and VIDIOC_S_DV_PRESET
+ioctls which take a pointer to a &v4l2-dv-preset; type as argument.
+Applications must zero the reserved array in &v4l2-dv-preset;.
+VIDIOC_G_DV_PRESET returns a dv preset in the field
+preset of &v4l2-dv-preset;.
+
+ VIDIOC_S_DV_PRESET accepts a pointer to a &v4l2-dv-preset;
+that has the preset value to be set. Applications must zero the reserved array in &v4l2-dv-preset;.
+If the preset is not supported, it returns an &EINVAL;
+
+
+
+ &return-value;
+
+
+
+ EINVAL
+
+ This ioctl is not supported, or the
+VIDIOC_S_DV_PRESET,VIDIOC_S_DV_PRESET parameter was unsuitable.
+
+
+
+ EBUSY
+
+ The device is busy and therefore can not change the preset.
+
+
+
+
+
+ struct v4l2_dv_preset
+
+ &cs-str;
+
+
+ __u32
+ preset
+ Preset value to represent the digital video timings
+
+
+ __u32
+ reserved[4]
+ Reserved fields for future use
+
+
+
+
+
+
+
+
+
diff --git a/Documentation/DocBook/v4l/vidioc-g-dv-timings.xml b/Documentation/DocBook/v4l/vidioc-g-dv-timings.xml
new file mode 100644
index 00000000000..ecc19576bb8
--- /dev/null
+++ b/Documentation/DocBook/v4l/vidioc-g-dv-timings.xml
@@ -0,0 +1,224 @@
+
+
+ ioctl VIDIOC_G_DV_TIMINGS, VIDIOC_S_DV_TIMINGS
+ &manvol;
+
+
+
+ VIDIOC_G_DV_TIMINGS
+ VIDIOC_S_DV_TIMINGS
+ Get or set custom DV timings for input or output
+
+
+
+
+
+ int ioctl
+ int fd
+ int request
+ &v4l2-dv-timings;
+*argp
+
+
+
+
+
+ Arguments
+
+
+
+ fd
+
+ &fd;
+
+
+
+ request
+
+ VIDIOC_G_DV_TIMINGS, VIDIOC_S_DV_TIMINGS
+
+
+
+ argp
+
+
+
+
+
+
+
+
+ Description
+ To set custom DV timings for the input or output, applications use the
+VIDIOC_S_DV_TIMINGS ioctl and to get the current custom timings,
+applications use the VIDIOC_G_DV_TIMINGS ioctl. The detailed timing
+information is filled in using the structure &v4l2-dv-timings;. These ioctls take
+a pointer to the &v4l2-dv-timings; structure as argument. If the ioctl is not supported
+or the timing values are not correct, the driver returns &EINVAL;.
+
+
+
+ &return-value;
+
+
+
+ EINVAL
+
+ This ioctl is not supported, or the
+VIDIOC_S_DV_TIMINGS parameter was unsuitable.
+
+
+
+ EBUSY
+
+ The device is busy and therefore can not change the timings.
+
+
+
+
+
+ struct v4l2_bt_timings
+
+ &cs-str;
+
+
+ __u32
+ width
+ Width of the active video in pixels
+
+
+ __u32
+ height
+ Height of the active video in lines
+
+
+ __u32
+ interlaced
+ Progressive (0) or interlaced (1)
+
+
+ __u32
+ polarities
+ This is a bit mask that defines polarities of sync signals.
+bit 0 (V4L2_DV_VSYNC_POS_POL) is for vertical sync polarity and bit 1 (V4L2_DV_HSYNC_POS_POL) is for horizontal sync polarity. If the bit is set
+(1) it is positive polarity and if is cleared (0), it is negative polarity.
+
+
+ __u64
+ pixelclock
+ Pixel clock in Hz. Ex. 74.25MHz->74250000
+
+
+ __u32
+ hfrontporch
+ Horizontal front porch in pixels
+
+
+ __u32
+ hsync
+ Horizontal sync length in pixels
+
+
+ __u32
+ hbackporch
+ Horizontal back porch in pixels
+
+
+ __u32
+ vfrontporch
+ Vertical front porch in lines
+
+
+ __u32
+ vsync
+ Vertical sync length in lines
+
+
+ __u32
+ vbackporch
+ Vertical back porch in lines
+
+
+ __u32
+ il_vfrontporch
+ Vertical front porch in lines for bottom field of interlaced field formats
+
+
+ __u32
+ il_vsync
+ Vertical sync length in lines for bottom field of interlaced field formats
+
+
+ __u32
+ il_vbackporch
+ Vertical back porch in lines for bottom field of interlaced field formats
+
+
+
+
+
+
+ struct v4l2_dv_timings
+
+ &cs-str;
+
+
+ __u32
+ type
+
+ Type of DV timings as listed in .
+
+
+ union
+
+
+
+
+
+ &v4l2-bt-timings;
+ bt
+ Timings defined by BT.656/1120 specifications
+
+
+
+ __u32
+ reserved[32]
+
+
+
+
+
+
+
+
+
diff --git a/Documentation/DocBook/v4l/vidioc-query-dv-preset.xml b/Documentation/DocBook/v4l/vidioc-query-dv-preset.xml
new file mode 100644
index 00000000000..87e4f0f6151
--- /dev/null
+++ b/Documentation/DocBook/v4l/vidioc-query-dv-preset.xml
@@ -0,0 +1,85 @@
+
+
+ ioctl VIDIOC_QUERY_DV_PRESET
+ &manvol;
+
+
+
+ VIDIOC_QUERY_DV_PRESET
+ Sense the DV preset received by the current
+input
+
+
+
+
+
+ int ioctl
+ int fd
+ int request
+ &v4l2-dv-preset; *argp
+
+
+
+
+
+ Arguments
+
+
+
+ fd
+
+ &fd;
+
+
+
+ request
+
+ VIDIOC_QUERY_DV_PRESET
+
+
+
+ argp
+
+
+
+
+
+
+
+
+ Description
+
+ The hardware may be able to detect the current DV preset
+automatically, similar to sensing the video standard. To do so, applications
+call VIDIOC_QUERY_DV_PRESET with a pointer to a
+&v4l2-dv-preset; type. Once the hardware detects a preset, that preset is
+returned in the preset field of &v4l2-dv-preset;. When detection is not
+possible or fails, the value V4L2_DV_INVALID is returned.
+
+
+
+ &return-value;
+
+
+ EINVAL
+
+ This ioctl is not supported.
+
+
+
+ EBUSY
+
+ The device is busy and therefore can not sense the preset
+
+
+
+
+
+
+