This is an automatic generated email to let you know that the following patch 
were queued at the 
http://git.linuxtv.org/v4l-utils.git tree:

Subject: v4l-utils: run sync-with-kernel, add ioctl32 tests for v4l2-subdev.h
Author:  Hans Verkuil <hans.verk...@cisco.com>
Date:    Wed Jan 15 09:13:08 2014 +0100

The v4l2-subdev ioctls were never tested in compat32 mode. Add the v4l2-subdev.h
header to v4l-utils when running sync-with-kernel and fix the gen_ioctl_list.pl
script to generate the subdev ioctls.

Signed-off-by: Hans Verkuil <hans.verk...@cisco.com>

 Makefile.am                                   |    2 +
 contrib/freebsd/include/linux/v4l2-controls.h |   13 +
 contrib/freebsd/include/linux/videodev2.h     |    4 +-
 contrib/test/gen_ioctl_list.pl                |   13 +-
 contrib/test/ioctl-test.h                     |  342 +++++++++++++------------
 contrib/test/ioctl_32.h                       |   13 +
 contrib/test/ioctl_64.h                       |   13 +
 include/linux/v4l2-controls.h                 |   13 +
 include/linux/v4l2-subdev.h                   |  180 +++++++++++++
 include/linux/videodev2.h                     |    4 +-
 utils/keytable/rc_keymaps/dw210x              |   32 ---
 utils/keytable/rc_keymaps/su3000              |    2 +-
 utils/keytable/rc_keymaps/tbs                 |   33 ---
 utils/keytable/rc_keymaps/tevii               |   48 ----
 utils/keytable/rc_maps.cfg                    |    5 +-
 utils/xc3028-firmware/tuner-xc2028-types.h    |    2 +-
 16 files changed, 434 insertions(+), 285 deletions(-)

---

http://git.linuxtv.org/v4l-utils.git?a=commitdiff;h=f352115010846f3dee53af70b08c82c4d4afb804

diff --git a/Makefile.am b/Makefile.am
index 65a075c..500d0ae 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -15,6 +15,7 @@ sync-with-kernel:
        @if [ ! -f $(KERNEL_DIR)/include/uapi/linux/videodev2.h -o \
              ! -f $(KERNEL_DIR)/include/uapi/linux/v4l2-controls.h -o \
              ! -f $(KERNEL_DIR)/include/uapi/linux/v4l2-common.h -o \
+             ! -f $(KERNEL_DIR)/include/uapi/linux/v4l2-subdev.h -o \
              ! -f $(KERNEL_DIR)/include/uapi/linux/ivtv.h -o \
              ! -f $(KERNEL_DIR)/include/uapi/linux/dvb/frontend.h -o \
              ! -f $(KERNEL_DIR)/include/uapi/linux/dvb/dmx.h -o \
@@ -26,6 +27,7 @@ sync-with-kernel:
        cp -a $(KERNEL_DIR)/include/uapi/linux/videodev2.h 
$(top_srcdir)/include/linux
        cp -a $(KERNEL_DIR)/include/uapi/linux/v4l2-controls.h 
$(top_srcdir)/include/linux
        cp -a $(KERNEL_DIR)/include/uapi/linux/v4l2-common.h 
$(top_srcdir)/include/linux
+       cp -a $(KERNEL_DIR)/include/uapi/linux/v4l2-subdev.h 
$(top_srcdir)/include/linux
        cp -a $(KERNEL_DIR)/include/uapi/linux/ivtv.h 
$(top_srcdir)/include/linux
        cp -a $(KERNEL_DIR)/include/uapi/linux/dvb/frontend.h 
$(top_srcdir)/include/linux/dvb
        cp -a $(KERNEL_DIR)/include/uapi/linux/dvb/dmx.h 
$(top_srcdir)/include/linux/dvb
diff --git a/contrib/freebsd/include/linux/v4l2-controls.h 
b/contrib/freebsd/include/linux/v4l2-controls.h
index 083bb5a..2cbe605 100644
--- a/contrib/freebsd/include/linux/v4l2-controls.h
+++ b/contrib/freebsd/include/linux/v4l2-controls.h
@@ -160,6 +160,14 @@ enum v4l2_colorfx {
  * of controls. Total of 16 controls is reserved for this driver */
 #define V4L2_CID_USER_SI476X_BASE              (V4L2_CID_USER_BASE + 0x1040)
 
+/* The base for the TI VPE driver controls. Total of 16 controls is reserved 
for
+ * this driver */
+#define V4L2_CID_USER_TI_VPE_BASE              (V4L2_CID_USER_BASE + 0x1050)
+
+/* The base for the saa7134 driver controls.
+ * We reserve 16 controls for this driver. */
+#define V4L2_CID_USER_SAA7134_BASE             (V4L2_CID_USER_BASE + 0x1060)
+
 /* MPEG-class control IDs */
 /* The MPEG controls are applicable to all codec controls
  * and the 'MPEG' part of the define is historical */
@@ -550,6 +558,11 @@ enum v4l2_vp8_golden_frame_sel {
        V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_PREV           = 0,
        V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_REF_PERIOD     = 1,
 };
+#define V4L2_CID_MPEG_VIDEO_VPX_MIN_QP                 (V4L2_CID_MPEG_BASE+507)
+#define V4L2_CID_MPEG_VIDEO_VPX_MAX_QP                 (V4L2_CID_MPEG_BASE+508)
+#define V4L2_CID_MPEG_VIDEO_VPX_I_FRAME_QP             (V4L2_CID_MPEG_BASE+509)
+#define V4L2_CID_MPEG_VIDEO_VPX_P_FRAME_QP             (V4L2_CID_MPEG_BASE+510)
+#define V4L2_CID_MPEG_VIDEO_VPX_PROFILE                        
(V4L2_CID_MPEG_BASE+511)
 
 /*  MPEG-class control IDs specific to the CX2341x driver as defined by V4L2 */
 #define V4L2_CID_MPEG_CX2341X_BASE                             
(V4L2_CTRL_CLASS_MPEG | 0x1000)
diff --git a/contrib/freebsd/include/linux/videodev2.h 
b/contrib/freebsd/include/linux/videodev2.h
index 1fcfaeb..5c75762 100644
--- a/contrib/freebsd/include/linux/videodev2.h
+++ b/contrib/freebsd/include/linux/videodev2.h
@@ -241,8 +241,8 @@ enum v4l2_priority {
 struct v4l2_rect {
        int32_t   left;
        int32_t   top;
-       int32_t   width;
-       int32_t   height;
+       uint32_t   width;
+       uint32_t   height;
 };
 
 struct v4l2_fract {
diff --git a/contrib/test/gen_ioctl_list.pl b/contrib/test/gen_ioctl_list.pl
index d7033fe..c77e4be 100755
--- a/contrib/test/gen_ioctl_list.pl
+++ b/contrib/test/gen_ioctl_list.pl
@@ -3,6 +3,7 @@ use strict;
 
 my %headers = (
        "video" => "videodev2.h",
+       "subdev" => "v4l2-subdev.h",
        "frontend" => "dvb/frontend.h",
        "demux" => "dvb/dmx.h",
 );
@@ -71,11 +72,18 @@ sub print_ioc()
 printf "/* This file is auto-generated by make sync-with-kernel */\n";
 
 foreach my $h (sort keys %headers) {
+       my $line;
+
        printf "#include \"linux/%s\"\n", $headers{$h};
 
        open IN, "../../include/linux/" . $headers{$h};
        while (<IN>) {
-               if 
(m/\#define\s+([A-Z][A-Z0-9_]+)\s+\_IO.+\(.*\,\s*([^\)]+)\)/) {
+               $line .= $_;
+               if (/\\\s*$/) {
+                       $line =~ s/\\\s*$//;
+                       next;
+               }
+               if ($line =~ 
m/\#define\s+([A-Z][A-Z0-9_]+)\s+\_IO.+\(.*\,\s*([^\)]+)\)/) {
                        $structs{$2} = 1;
                        $ioc{$1} = "$h: $2";
                        if ($size_ioc < length($1)) {
@@ -85,12 +93,13 @@ foreach my $h (sort keys %headers) {
                                $size_struct = length($2);
                        }
                }
-               if (m/\#define\s+([A-Z][A-Z0-9_]+)\s+\_IO\(.*\)/) {
+               if ($line =~ m/\#define\s+([A-Z][A-Z0-9_]+)\s+\_IO\(.*\)/) {
                        $ioc{$1} = "$h: void";
                        if ($size_ioc < length($1)) {
                                $size_ioc = length($1);
                        }
                }
+               $line = "";
        }
        $size_ioc = int((9 + $size_ioc + 7) / 8) * 8;
        $size_struct = int(($size_struct + 7) / 8) * 8;
diff --git a/contrib/test/ioctl-test.h b/contrib/test/ioctl-test.h
index ad496fe..7502fa3 100644
--- a/contrib/test/ioctl-test.h
+++ b/contrib/test/ioctl-test.h
@@ -1,6 +1,7 @@
 /* This file is auto-generated by make sync-with-kernel */
 #include "linux/dvb/dmx.h"
 #include "linux/dvb/frontend.h"
+#include "linux/v4l2-subdev.h"
 #include "linux/videodev2.h"
 #include "ioctl_32.h"
 #include "ioctl_64.h"
@@ -13,55 +14,63 @@ union v4l_parms {
        enum v4l2_priority prio;
 
        /* ioctl structs */
-       struct dmx_pes_filter_params    p_dmx_pes_filter_params;
-       struct dmx_sct_filter_params    p_dmx_sct_filter_params;
-       struct dmx_stc                  p_dmx_stc;
-       struct dtv_properties           p_dtv_properties;
-       struct dvb_diseqc_master_cmd    p_dvb_diseqc_master_cmd;
-       struct dvb_diseqc_slave_reply   p_dvb_diseqc_slave_reply;
-       struct dvb_frontend_event       p_dvb_frontend_event;
-       struct dvb_frontend_info        p_dvb_frontend_info;
-       struct dvb_frontend_parameters  p_dvb_frontend_parameters;
-       struct v4l2_audio               p_v4l2_audio;
-       struct v4l2_audioout            p_v4l2_audioout;
-       struct v4l2_buffer              p_v4l2_buffer;
-       struct v4l2_capability          p_v4l2_capability;
-       struct v4l2_control             p_v4l2_control;
-       struct v4l2_create_buffers      p_v4l2_create_buffers;
-       struct v4l2_crop                p_v4l2_crop;
-       struct v4l2_cropcap             p_v4l2_cropcap;
-       struct v4l2_dbg_chip_info       p_v4l2_dbg_chip_info;
-       struct v4l2_dbg_register        p_v4l2_dbg_register;
-       struct v4l2_decoder_cmd         p_v4l2_decoder_cmd;
-       struct v4l2_dv_timings          p_v4l2_dv_timings;
-       struct v4l2_dv_timings_cap      p_v4l2_dv_timings_cap;
-       struct v4l2_enc_idx             p_v4l2_enc_idx;
-       struct v4l2_encoder_cmd         p_v4l2_encoder_cmd;
-       struct v4l2_enum_dv_timings     p_v4l2_enum_dv_timings;
-       struct v4l2_event               p_v4l2_event;
-       struct v4l2_event_subscription  p_v4l2_event_subscription;
-       struct v4l2_exportbuffer        p_v4l2_exportbuffer;
-       struct v4l2_ext_controls        p_v4l2_ext_controls;
-       struct v4l2_fmtdesc             p_v4l2_fmtdesc;
-       struct v4l2_format              p_v4l2_format;
-       struct v4l2_framebuffer         p_v4l2_framebuffer;
-       struct v4l2_frequency           p_v4l2_frequency;
-       struct v4l2_frequency_band      p_v4l2_frequency_band;
-       struct v4l2_frmivalenum         p_v4l2_frmivalenum;
-       struct v4l2_frmsizeenum         p_v4l2_frmsizeenum;
-       struct v4l2_hw_freq_seek        p_v4l2_hw_freq_seek;
-       struct v4l2_input               p_v4l2_input;
-       struct v4l2_jpegcompression     p_v4l2_jpegcompression;
-       struct v4l2_modulator           p_v4l2_modulator;
-       struct v4l2_output              p_v4l2_output;
-       struct v4l2_queryctrl           p_v4l2_queryctrl;
-       struct v4l2_querymenu           p_v4l2_querymenu;
-       struct v4l2_requestbuffers      p_v4l2_requestbuffers;
-       struct v4l2_selection           p_v4l2_selection;
-       struct v4l2_sliced_vbi_cap      p_v4l2_sliced_vbi_cap;
-       struct v4l2_standard            p_v4l2_standard;
-       struct v4l2_streamparm          p_v4l2_streamparm;
-       struct v4l2_tuner               p_v4l2_tuner;
+       struct dmx_pes_filter_params            p_dmx_pes_filter_params;
+       struct dmx_sct_filter_params            p_dmx_sct_filter_params;
+       struct dmx_stc                          p_dmx_stc;
+       struct dtv_properties                   p_dtv_properties;
+       struct dvb_diseqc_master_cmd            p_dvb_diseqc_master_cmd;
+       struct dvb_diseqc_slave_reply           p_dvb_diseqc_slave_reply;
+       struct dvb_frontend_event               p_dvb_frontend_event;
+       struct dvb_frontend_info                p_dvb_frontend_info;
+       struct dvb_frontend_parameters          p_dvb_frontend_parameters;
+       struct v4l2_audio                       p_v4l2_audio;
+       struct v4l2_audioout                    p_v4l2_audioout;
+       struct v4l2_buffer                      p_v4l2_buffer;
+       struct v4l2_capability                  p_v4l2_capability;
+       struct v4l2_control                     p_v4l2_control;
+       struct v4l2_create_buffers              p_v4l2_create_buffers;
+       struct v4l2_crop                        p_v4l2_crop;
+       struct v4l2_cropcap                     p_v4l2_cropcap;
+       struct v4l2_dbg_chip_info               p_v4l2_dbg_chip_info;
+       struct v4l2_dbg_register                p_v4l2_dbg_register;
+       struct v4l2_decoder_cmd                 p_v4l2_decoder_cmd;
+       struct v4l2_dv_timings                  p_v4l2_dv_timings;
+       struct v4l2_dv_timings_cap              p_v4l2_dv_timings_cap;
+       struct v4l2_enc_idx                     p_v4l2_enc_idx;
+       struct v4l2_encoder_cmd                 p_v4l2_encoder_cmd;
+       struct v4l2_enum_dv_timings             p_v4l2_enum_dv_timings;
+       struct v4l2_event                       p_v4l2_event;
+       struct v4l2_event_subscription          p_v4l2_event_subscription;
+       struct v4l2_exportbuffer                p_v4l2_exportbuffer;
+       struct v4l2_ext_controls                p_v4l2_ext_controls;
+       struct v4l2_fmtdesc                     p_v4l2_fmtdesc;
+       struct v4l2_format                      p_v4l2_format;
+       struct v4l2_framebuffer                 p_v4l2_framebuffer;
+       struct v4l2_frequency                   p_v4l2_frequency;
+       struct v4l2_frequency_band              p_v4l2_frequency_band;
+       struct v4l2_frmivalenum                 p_v4l2_frmivalenum;
+       struct v4l2_frmsizeenum                 p_v4l2_frmsizeenum;
+       struct v4l2_hw_freq_seek                p_v4l2_hw_freq_seek;
+       struct v4l2_input                       p_v4l2_input;
+       struct v4l2_jpegcompression             p_v4l2_jpegcompression;
+       struct v4l2_modulator                   p_v4l2_modulator;
+       struct v4l2_output                      p_v4l2_output;
+       struct v4l2_queryctrl                   p_v4l2_queryctrl;
+       struct v4l2_querymenu                   p_v4l2_querymenu;
+       struct v4l2_requestbuffers              p_v4l2_requestbuffers;
+       struct v4l2_selection                   p_v4l2_selection;
+       struct v4l2_sliced_vbi_cap              p_v4l2_sliced_vbi_cap;
+       struct v4l2_standard                    p_v4l2_standard;
+       struct v4l2_streamparm                  p_v4l2_streamparm;
+       struct v4l2_subdev_crop                 p_v4l2_subdev_crop;
+       struct v4l2_subdev_edid                 p_v4l2_subdev_edid;
+       struct v4l2_subdev_format               p_v4l2_subdev_format;
+       struct v4l2_subdev_frame_interval       p_v4l2_subdev_frame_interval;
+       struct v4l2_subdev_frame_interval_enum  
p_v4l2_subdev_frame_interval_enum;
+       struct v4l2_subdev_frame_size_enum      p_v4l2_subdev_frame_size_enum;
+       struct v4l2_subdev_mbus_code_enum       p_v4l2_subdev_mbus_code_enum;
+       struct v4l2_subdev_selection            p_v4l2_subdev_selection;
+       struct v4l2_tuner                       p_v4l2_tuner;
 };
 #define ioc(type, cmd) { CMD32_##cmd, CMD64_##cmd, cmd, #type, #cmd }
 
@@ -74,116 +83,129 @@ static const struct {
        const char *name;
 } ioctls[] = {
        /* ioctl structs */
-       ioc(demux, DMX_ADD_PID),                                        /*  
__u16 */
-       ioc(demux, DMX_GET_CAPS),                                       /*  
dmx_caps_t */
-       ioc(demux, DMX_GET_PES_PIDS),                                   /*  
__u16[5] */
-       ioc(demux, DMX_GET_STC),                                        /*  
struct dmx_stc */
-       ioc(demux, DMX_REMOVE_PID),                                     /*  
__u16 */
-       ioc(demux, DMX_SET_BUFFER_SIZE),                                /*  
void */
-       ioc(demux, DMX_SET_FILTER),                                     /*  
struct dmx_sct_filter_params */
-       ioc(demux, DMX_SET_PES_FILTER),                                 /*  
struct dmx_pes_filter_params */
-       ioc(demux, DMX_SET_SOURCE),                                     /*  
dmx_source_t */
-       ioc(demux, DMX_START),                                          /*  
void */
-       ioc(demux, DMX_STOP),                                           /*  
void */
-       ioc(frontend, FE_DISEQC_RECV_SLAVE_REPLY),                      /*  
struct dvb_diseqc_slave_reply */
-       ioc(frontend, FE_DISEQC_RESET_OVERLOAD),                        /*  
void */
-       ioc(frontend, FE_DISEQC_SEND_BURST),                            /*  
void */
-       ioc(frontend, FE_DISEQC_SEND_MASTER_CMD),                       /*  
struct dvb_diseqc_master_cmd */
-       ioc(frontend, FE_DISHNETWORK_SEND_LEGACY_CMD),                  /*  
void */
-       ioc(frontend, FE_ENABLE_HIGH_LNB_VOLTAGE),                      /*  
void */
-       ioc(frontend, FE_GET_EVENT),                                    /*  
struct dvb_frontend_event */
-       ioc(frontend, FE_GET_FRONTEND),                                 /*  
struct dvb_frontend_parameters */
-       ioc(frontend, FE_GET_INFO),                                     /*  
struct dvb_frontend_info */
-       ioc(frontend, FE_GET_PROPERTY),                                 /*  
struct dtv_properties */
-       ioc(frontend, FE_READ_BER),                                     /*  
__u32 */
-       ioc(frontend, FE_READ_SIGNAL_STRENGTH),                         /*  
__u16 */
-       ioc(frontend, FE_READ_SNR),                                     /*  
__u16 */
-       ioc(frontend, FE_READ_STATUS),                                  /*  
fe_status_t */
-       ioc(frontend, FE_READ_UNCORRECTED_BLOCKS),                      /*  
__u32 */
-       ioc(frontend, FE_SET_FRONTEND),                                 /*  
struct dvb_frontend_parameters */
-       ioc(frontend, FE_SET_FRONTEND_TUNE_MODE),                       /*  
void */
-       ioc(frontend, FE_SET_PROPERTY),                                 /*  
struct dtv_properties */
-       ioc(frontend, FE_SET_TONE),                                     /*  
void */
-       ioc(frontend, FE_SET_VOLTAGE),                                  /*  
void */
-       ioc(video, VIDIOC_CREATE_BUFS),                                 /*  
struct v4l2_create_buffers */
-       ioc(video, VIDIOC_CROPCAP),                                     /*  
struct v4l2_cropcap */
-       ioc(video, VIDIOC_DBG_G_CHIP_INFO),                             /*  
struct v4l2_dbg_chip_info */
-       ioc(video, VIDIOC_DBG_G_REGISTER),                              /*  
struct v4l2_dbg_register */
-       ioc(video, VIDIOC_DBG_S_REGISTER),                              /*  
struct v4l2_dbg_register */
-       ioc(video, VIDIOC_DECODER_CMD),                                 /*  
struct v4l2_decoder_cmd */
-       ioc(video, VIDIOC_DQBUF),                                       /*  
struct v4l2_buffer */
-       ioc(video, VIDIOC_DQEVENT),                                     /*  
struct v4l2_event */
-       ioc(video, VIDIOC_DV_TIMINGS_CAP),                              /*  
struct v4l2_dv_timings_cap */
-       ioc(video, VIDIOC_ENCODER_CMD),                                 /*  
struct v4l2_encoder_cmd */
-       ioc(video, VIDIOC_ENUMAUDIO),                                   /*  
struct v4l2_audio */
-       ioc(video, VIDIOC_ENUMAUDOUT),                                  /*  
struct v4l2_audioout */
-       ioc(video, VIDIOC_ENUMINPUT),                                   /*  
struct v4l2_input */
-       ioc(video, VIDIOC_ENUMOUTPUT),                                  /*  
struct v4l2_output */
-       ioc(video, VIDIOC_ENUMSTD),                                     /*  
struct v4l2_standard */
-       ioc(video, VIDIOC_ENUM_DV_TIMINGS),                             /*  
struct v4l2_enum_dv_timings */
-       ioc(video, VIDIOC_ENUM_FMT),                                    /*  
struct v4l2_fmtdesc */
-       ioc(video, VIDIOC_ENUM_FRAMEINTERVALS),                         /*  
struct v4l2_frmivalenum */
-       ioc(video, VIDIOC_ENUM_FRAMESIZES),                             /*  
struct v4l2_frmsizeenum */
-       ioc(video, VIDIOC_ENUM_FREQ_BANDS),                             /*  
struct v4l2_frequency_band */
-       ioc(video, VIDIOC_EXPBUF),                                      /*  
struct v4l2_exportbuffer */
-       ioc(video, VIDIOC_G_AUDIO),                                     /*  
struct v4l2_audio */
-       ioc(video, VIDIOC_G_AUDOUT),                                    /*  
struct v4l2_audioout */
-       ioc(video, VIDIOC_G_CROP),                                      /*  
struct v4l2_crop */
-       ioc(video, VIDIOC_G_CTRL),                                      /*  
struct v4l2_control */
-       ioc(video, VIDIOC_G_DV_TIMINGS),                                /*  
struct v4l2_dv_timings */
-       ioc(video, VIDIOC_G_ENC_INDEX),                                 /*  
struct v4l2_enc_idx */
-       ioc(video, VIDIOC_G_EXT_CTRLS),                                 /*  
struct v4l2_ext_controls */
-       ioc(video, VIDIOC_G_FBUF),                                      /*  
struct v4l2_framebuffer */
-       ioc(video, VIDIOC_G_FMT),                                       /*  
struct v4l2_format */
-       ioc(video, VIDIOC_G_FREQUENCY),                                 /*  
struct v4l2_frequency */
-       ioc(video, VIDIOC_G_INPUT),                                     /*  int 
*/
-       ioc(video, VIDIOC_G_JPEGCOMP),                                  /*  
struct v4l2_jpegcompression */
-       ioc(video, VIDIOC_G_MODULATOR),                                 /*  
struct v4l2_modulator */
-       ioc(video, VIDIOC_G_OUTPUT),                                    /*  int 
*/
-       ioc(video, VIDIOC_G_PARM),                                      /*  
struct v4l2_streamparm */
-       ioc(video, VIDIOC_G_PRIORITY),                                  /*  
__u32 */
-       ioc(video, VIDIOC_G_SELECTION),                                 /*  
struct v4l2_selection */
-       ioc(video, VIDIOC_G_SLICED_VBI_CAP),                            /*  
struct v4l2_sliced_vbi_cap */
-       ioc(video, VIDIOC_G_STD),                                       /*  
v4l2_std_id */
-       ioc(video, VIDIOC_G_TUNER),                                     /*  
struct v4l2_tuner */
-       ioc(video, VIDIOC_LOG_STATUS),                                  /*  
void */
-       ioc(video, VIDIOC_OVERLAY),                                     /*  int 
*/
-       ioc(video, VIDIOC_PREPARE_BUF),                                 /*  
struct v4l2_buffer */
-       ioc(video, VIDIOC_QBUF),                                        /*  
struct v4l2_buffer */
-       ioc(video, VIDIOC_QUERYBUF),                                    /*  
struct v4l2_buffer */
-       ioc(video, VIDIOC_QUERYCAP),                                    /*  
struct v4l2_capability */
-       ioc(video, VIDIOC_QUERYCTRL),                                   /*  
struct v4l2_queryctrl */
-       ioc(video, VIDIOC_QUERYMENU),                                   /*  
struct v4l2_querymenu */
-       ioc(video, VIDIOC_QUERYSTD),                                    /*  
v4l2_std_id */
-       ioc(video, VIDIOC_QUERY_DV_TIMINGS),                            /*  
struct v4l2_dv_timings */
-       ioc(video, VIDIOC_REQBUFS),                                     /*  
struct v4l2_requestbuffers */
-       ioc(video, VIDIOC_RESERVED),                                    /*  
void */
-       ioc(video, VIDIOC_STREAMOFF),                                   /*  int 
*/
-       ioc(video, VIDIOC_STREAMON),                                    /*  int 
*/
-       ioc(video, VIDIOC_SUBSCRIBE_EVENT),                             /*  
struct v4l2_event_subscription */
-       ioc(video, VIDIOC_S_AUDIO),                                     /*  
struct v4l2_audio */
-       ioc(video, VIDIOC_S_AUDOUT),                                    /*  
struct v4l2_audioout */
-       ioc(video, VIDIOC_S_CROP),                                      /*  
struct v4l2_crop */
-       ioc(video, VIDIOC_S_CTRL),                                      /*  
struct v4l2_control */
-       ioc(video, VIDIOC_S_DV_TIMINGS),                                /*  
struct v4l2_dv_timings */
-       ioc(video, VIDIOC_S_EXT_CTRLS),                                 /*  
struct v4l2_ext_controls */
-       ioc(video, VIDIOC_S_FBUF),                                      /*  
struct v4l2_framebuffer */
-       ioc(video, VIDIOC_S_FMT),                                       /*  
struct v4l2_format */
-       ioc(video, VIDIOC_S_FREQUENCY),                                 /*  
struct v4l2_frequency */
-       ioc(video, VIDIOC_S_HW_FREQ_SEEK),                              /*  
struct v4l2_hw_freq_seek */
-       ioc(video, VIDIOC_S_INPUT),                                     /*  int 
*/
-       ioc(video, VIDIOC_S_JPEGCOMP),                                  /*  
struct v4l2_jpegcompression */
-       ioc(video, VIDIOC_S_MODULATOR),                                 /*  
struct v4l2_modulator */
-       ioc(video, VIDIOC_S_OUTPUT),                                    /*  int 
*/
-       ioc(video, VIDIOC_S_PARM),                                      /*  
struct v4l2_streamparm */
-       ioc(video, VIDIOC_S_PRIORITY),                                  /*  
__u32 */
-       ioc(video, VIDIOC_S_SELECTION),                                 /*  
struct v4l2_selection */
-       ioc(video, VIDIOC_S_STD),                                       /*  
v4l2_std_id */
-       ioc(video, VIDIOC_S_TUNER),                                     /*  
struct v4l2_tuner */
-       ioc(video, VIDIOC_TRY_DECODER_CMD),                             /*  
struct v4l2_decoder_cmd */
-       ioc(video, VIDIOC_TRY_ENCODER_CMD),                             /*  
struct v4l2_encoder_cmd */
-       ioc(video, VIDIOC_TRY_EXT_CTRLS),                               /*  
struct v4l2_ext_controls */
-       ioc(video, VIDIOC_TRY_FMT),                                     /*  
struct v4l2_format */
-       ioc(video, VIDIOC_UNSUBSCRIBE_EVENT),                           /*  
struct v4l2_event_subscription */
+       ioc(demux, DMX_ADD_PID),                                                
        /*  __u16 */
+       ioc(demux, DMX_GET_CAPS),                                               
        /*  dmx_caps_t */
+       ioc(demux, DMX_GET_PES_PIDS),                                           
        /*  __u16[5] */
+       ioc(demux, DMX_GET_STC),                                                
        /*  struct dmx_stc */
+       ioc(demux, DMX_REMOVE_PID),                                             
        /*  __u16 */
+       ioc(demux, DMX_SET_BUFFER_SIZE),                                        
        /*  void */
+       ioc(demux, DMX_SET_FILTER),                                             
        /*  struct dmx_sct_filter_params */
+       ioc(demux, DMX_SET_PES_FILTER),                                         
        /*  struct dmx_pes_filter_params */
+       ioc(demux, DMX_SET_SOURCE),                                             
        /*  dmx_source_t */
+       ioc(demux, DMX_START),                                                  
        /*  void */
+       ioc(demux, DMX_STOP),                                                   
        /*  void */
+       ioc(frontend, FE_DISEQC_RECV_SLAVE_REPLY),                              
        /*  struct dvb_diseqc_slave_reply */
+       ioc(frontend, FE_DISEQC_RESET_OVERLOAD),                                
        /*  void */
+       ioc(frontend, FE_DISEQC_SEND_BURST),                                    
        /*  void */
+       ioc(frontend, FE_DISEQC_SEND_MASTER_CMD),                               
        /*  struct dvb_diseqc_master_cmd */
+       ioc(frontend, FE_DISHNETWORK_SEND_LEGACY_CMD),                          
        /*  void */
+       ioc(frontend, FE_ENABLE_HIGH_LNB_VOLTAGE),                              
        /*  void */
+       ioc(frontend, FE_GET_EVENT),                                            
        /*  struct dvb_frontend_event */
+       ioc(frontend, FE_GET_FRONTEND),                                         
        /*  struct dvb_frontend_parameters */
+       ioc(frontend, FE_GET_INFO),                                             
        /*  struct dvb_frontend_info */
+       ioc(frontend, FE_GET_PROPERTY),                                         
        /*  struct dtv_properties */
+       ioc(frontend, FE_READ_BER),                                             
        /*  __u32 */
+       ioc(frontend, FE_READ_SIGNAL_STRENGTH),                                 
        /*  __u16 */
+       ioc(frontend, FE_READ_SNR),                                             
        /*  __u16 */
+       ioc(frontend, FE_READ_STATUS),                                          
        /*  fe_status_t */
+       ioc(frontend, FE_READ_UNCORRECTED_BLOCKS),                              
        /*  __u32 */
+       ioc(frontend, FE_SET_FRONTEND),                                         
        /*  struct dvb_frontend_parameters */
+       ioc(frontend, FE_SET_FRONTEND_TUNE_MODE),                               
        /*  void */
+       ioc(frontend, FE_SET_PROPERTY),                                         
        /*  struct dtv_properties */
+       ioc(frontend, FE_SET_TONE),                                             
        /*  void */
+       ioc(frontend, FE_SET_VOLTAGE),                                          
        /*  void */
+       ioc(video, VIDIOC_CREATE_BUFS),                                         
        /*  struct v4l2_create_buffers */
+       ioc(video, VIDIOC_CROPCAP),                                             
        /*  struct v4l2_cropcap */
+       ioc(video, VIDIOC_DBG_G_CHIP_INFO),                                     
        /*  struct v4l2_dbg_chip_info */
+       ioc(video, VIDIOC_DBG_G_REGISTER),                                      
        /*  struct v4l2_dbg_register */
+       ioc(video, VIDIOC_DBG_S_REGISTER),                                      
        /*  struct v4l2_dbg_register */
+       ioc(video, VIDIOC_DECODER_CMD),                                         
        /*  struct v4l2_decoder_cmd */
+       ioc(video, VIDIOC_DQBUF),                                               
        /*  struct v4l2_buffer */
+       ioc(video, VIDIOC_DQEVENT),                                             
        /*  struct v4l2_event */
+       ioc(video, VIDIOC_DV_TIMINGS_CAP),                                      
        /*  struct v4l2_dv_timings_cap */
+       ioc(video, VIDIOC_ENCODER_CMD),                                         
        /*  struct v4l2_encoder_cmd */
+       ioc(video, VIDIOC_ENUMAUDIO),                                           
        /*  struct v4l2_audio */
+       ioc(video, VIDIOC_ENUMAUDOUT),                                          
        /*  struct v4l2_audioout */
+       ioc(video, VIDIOC_ENUMINPUT),                                           
        /*  struct v4l2_input */
+       ioc(video, VIDIOC_ENUMOUTPUT),                                          
        /*  struct v4l2_output */
+       ioc(video, VIDIOC_ENUMSTD),                                             
        /*  struct v4l2_standard */
+       ioc(video, VIDIOC_ENUM_DV_TIMINGS),                                     
        /*  struct v4l2_enum_dv_timings */
+       ioc(video, VIDIOC_ENUM_FMT),                                            
        /*  struct v4l2_fmtdesc */
+       ioc(video, VIDIOC_ENUM_FRAMEINTERVALS),                                 
        /*  struct v4l2_frmivalenum */
+       ioc(video, VIDIOC_ENUM_FRAMESIZES),                                     
        /*  struct v4l2_frmsizeenum */
+       ioc(video, VIDIOC_ENUM_FREQ_BANDS),                                     
        /*  struct v4l2_frequency_band */
+       ioc(video, VIDIOC_EXPBUF),                                              
        /*  struct v4l2_exportbuffer */
+       ioc(video, VIDIOC_G_AUDIO),                                             
        /*  struct v4l2_audio */
+       ioc(video, VIDIOC_G_AUDOUT),                                            
        /*  struct v4l2_audioout */
+       ioc(video, VIDIOC_G_CROP),                                              
        /*  struct v4l2_crop */
+       ioc(video, VIDIOC_G_CTRL),                                              
        /*  struct v4l2_control */
+       ioc(video, VIDIOC_G_DV_TIMINGS),                                        
        /*  struct v4l2_dv_timings */
+       ioc(video, VIDIOC_G_ENC_INDEX),                                         
        /*  struct v4l2_enc_idx */
+       ioc(video, VIDIOC_G_EXT_CTRLS),                                         
        /*  struct v4l2_ext_controls */
+       ioc(video, VIDIOC_G_FBUF),                                              
        /*  struct v4l2_framebuffer */
+       ioc(video, VIDIOC_G_FMT),                                               
        /*  struct v4l2_format */
+       ioc(video, VIDIOC_G_FREQUENCY),                                         
        /*  struct v4l2_frequency */
+       ioc(video, VIDIOC_G_INPUT),                                             
        /*  int */
+       ioc(video, VIDIOC_G_JPEGCOMP),                                          
        /*  struct v4l2_jpegcompression */
+       ioc(video, VIDIOC_G_MODULATOR),                                         
        /*  struct v4l2_modulator */
+       ioc(video, VIDIOC_G_OUTPUT),                                            
        /*  int */
+       ioc(video, VIDIOC_G_PARM),                                              
        /*  struct v4l2_streamparm */
+       ioc(video, VIDIOC_G_PRIORITY),                                          
        /*  __u32 */
+       ioc(video, VIDIOC_G_SELECTION),                                         
        /*  struct v4l2_selection */
+       ioc(video, VIDIOC_G_SLICED_VBI_CAP),                                    
        /*  struct v4l2_sliced_vbi_cap */
+       ioc(video, VIDIOC_G_STD),                                               
        /*  v4l2_std_id */
+       ioc(video, VIDIOC_G_TUNER),                                             
        /*  struct v4l2_tuner */
+       ioc(video, VIDIOC_LOG_STATUS),                                          
        /*  void */
+       ioc(video, VIDIOC_OVERLAY),                                             
        /*  int */
+       ioc(video, VIDIOC_PREPARE_BUF),                                         
        /*  struct v4l2_buffer */
+       ioc(video, VIDIOC_QBUF),                                                
        /*  struct v4l2_buffer */
+       ioc(video, VIDIOC_QUERYBUF),                                            
        /*  struct v4l2_buffer */
+       ioc(video, VIDIOC_QUERYCAP),                                            
        /*  struct v4l2_capability */
+       ioc(video, VIDIOC_QUERYCTRL),                                           
        /*  struct v4l2_queryctrl */
+       ioc(video, VIDIOC_QUERYMENU),                                           
        /*  struct v4l2_querymenu */
+       ioc(video, VIDIOC_QUERYSTD),                                            
        /*  v4l2_std_id */
+       ioc(video, VIDIOC_QUERY_DV_TIMINGS),                                    
        /*  struct v4l2_dv_timings */
+       ioc(video, VIDIOC_REQBUFS),                                             
        /*  struct v4l2_requestbuffers */
+       ioc(video, VIDIOC_RESERVED),                                            
        /*  void */
+       ioc(video, VIDIOC_STREAMOFF),                                           
        /*  int */
+       ioc(video, VIDIOC_STREAMON),                                            
        /*  int */
+       ioc(subdev, VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL),                         
        /*  struct v4l2_subdev_frame_interval_enum */
+       ioc(subdev, VIDIOC_SUBDEV_ENUM_FRAME_SIZE),                             
        /*  struct v4l2_subdev_frame_size_enum */
+       ioc(subdev, VIDIOC_SUBDEV_ENUM_MBUS_CODE),                              
        /*  struct v4l2_subdev_mbus_code_enum */
+       ioc(subdev, VIDIOC_SUBDEV_G_CROP),                                      
        /*  struct v4l2_subdev_crop */
+       ioc(subdev, VIDIOC_SUBDEV_G_EDID),                                      
        /*  struct v4l2_subdev_edid */
+       ioc(subdev, VIDIOC_SUBDEV_G_FMT),                                       
        /*  struct v4l2_subdev_format */
+       ioc(subdev, VIDIOC_SUBDEV_G_FRAME_INTERVAL),                            
        /*  struct v4l2_subdev_frame_interval */
+       ioc(subdev, VIDIOC_SUBDEV_G_SELECTION),                                 
        /*  struct v4l2_subdev_selection */
+       ioc(subdev, VIDIOC_SUBDEV_S_CROP),                                      
        /*  struct v4l2_subdev_crop */
+       ioc(subdev, VIDIOC_SUBDEV_S_EDID),                                      
        /*  struct v4l2_subdev_edid */
+       ioc(subdev, VIDIOC_SUBDEV_S_FMT),                                       
        /*  struct v4l2_subdev_format */
+       ioc(subdev, VIDIOC_SUBDEV_S_FRAME_INTERVAL),                            
        /*  struct v4l2_subdev_frame_interval */
+       ioc(subdev, VIDIOC_SUBDEV_S_SELECTION),                                 
        /*  struct v4l2_subdev_selection */
+       ioc(video, VIDIOC_SUBSCRIBE_EVENT),                                     
        /*  struct v4l2_event_subscription */
+       ioc(video, VIDIOC_S_AUDIO),                                             
        /*  struct v4l2_audio */
+       ioc(video, VIDIOC_S_AUDOUT),                                            
        /*  struct v4l2_audioout */
+       ioc(video, VIDIOC_S_CROP),                                              
        /*  struct v4l2_crop */
+       ioc(video, VIDIOC_S_CTRL),                                              
        /*  struct v4l2_control */
+       ioc(video, VIDIOC_S_DV_TIMINGS),                                        
        /*  struct v4l2_dv_timings */
+       ioc(video, VIDIOC_S_EXT_CTRLS),                                         
        /*  struct v4l2_ext_controls */
+       ioc(video, VIDIOC_S_FBUF),                                              
        /*  struct v4l2_framebuffer */
+       ioc(video, VIDIOC_S_FMT),                                               
        /*  struct v4l2_format */
+       ioc(video, VIDIOC_S_FREQUENCY),                                         
        /*  struct v4l2_frequency */
+       ioc(video, VIDIOC_S_HW_FREQ_SEEK),                                      
        /*  struct v4l2_hw_freq_seek */
+       ioc(video, VIDIOC_S_INPUT),                                             
        /*  int */
+       ioc(video, VIDIOC_S_JPEGCOMP),                                          
        /*  struct v4l2_jpegcompression */
+       ioc(video, VIDIOC_S_MODULATOR),                                         
        /*  struct v4l2_modulator */
+       ioc(video, VIDIOC_S_OUTPUT),                                            
        /*  int */
+       ioc(video, VIDIOC_S_PARM),                                              
        /*  struct v4l2_streamparm */
+       ioc(video, VIDIOC_S_PRIORITY),                                          
        /*  __u32 */
+       ioc(video, VIDIOC_S_SELECTION),                                         
        /*  struct v4l2_selection */
+       ioc(video, VIDIOC_S_STD),                                               
        /*  v4l2_std_id */
+       ioc(video, VIDIOC_S_TUNER),                                             
        /*  struct v4l2_tuner */
+       ioc(video, VIDIOC_TRY_DECODER_CMD),                                     
        /*  struct v4l2_decoder_cmd */
+       ioc(video, VIDIOC_TRY_ENCODER_CMD),                                     
        /*  struct v4l2_encoder_cmd */
+       ioc(video, VIDIOC_TRY_EXT_CTRLS),                                       
        /*  struct v4l2_ext_controls */
+       ioc(video, VIDIOC_TRY_FMT),                                             
        /*  struct v4l2_format */
+       ioc(video, VIDIOC_UNSUBSCRIBE_EVENT),                                   
        /*  struct v4l2_event_subscription */
 };
 #define S_IOCTLS sizeof(ioctls)/sizeof(ioctls[0])
diff --git a/contrib/test/ioctl_32.h b/contrib/test/ioctl_32.h
index bccb429..89e52eb 100644
--- a/contrib/test/ioctl_32.h
+++ b/contrib/test/ioctl_32.h
@@ -86,6 +86,19 @@
 #define CMD32_VIDIOC_RESERVED 0x5601
 #define CMD32_VIDIOC_STREAMOFF 0x40045613
 #define CMD32_VIDIOC_STREAMON 0x40045612
+#define CMD32_VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL 0xc040564b
+#define CMD32_VIDIOC_SUBDEV_ENUM_FRAME_SIZE 0xc040564a
+#define CMD32_VIDIOC_SUBDEV_ENUM_MBUS_CODE 0xc0305602
+#define CMD32_VIDIOC_SUBDEV_G_CROP 0xc038563b
+#define CMD32_VIDIOC_SUBDEV_G_EDID 0xc0245628
+#define CMD32_VIDIOC_SUBDEV_G_FMT 0xc0585604
+#define CMD32_VIDIOC_SUBDEV_G_FRAME_INTERVAL 0xc0305615
+#define CMD32_VIDIOC_SUBDEV_G_SELECTION 0xc040563d
+#define CMD32_VIDIOC_SUBDEV_S_CROP 0xc038563c
+#define CMD32_VIDIOC_SUBDEV_S_EDID 0xc0245629
+#define CMD32_VIDIOC_SUBDEV_S_FMT 0xc0585605
+#define CMD32_VIDIOC_SUBDEV_S_FRAME_INTERVAL 0xc0305616
+#define CMD32_VIDIOC_SUBDEV_S_SELECTION 0xc040563e
 #define CMD32_VIDIOC_SUBSCRIBE_EVENT 0x4020565a
 #define CMD32_VIDIOC_S_AUDIO 0x40345622
 #define CMD32_VIDIOC_S_AUDOUT 0x40345632
diff --git a/contrib/test/ioctl_64.h b/contrib/test/ioctl_64.h
index 372294a..9ec33b6 100644
--- a/contrib/test/ioctl_64.h
+++ b/contrib/test/ioctl_64.h
@@ -86,6 +86,19 @@
 #define CMD64_VIDIOC_RESERVED 0x5601
 #define CMD64_VIDIOC_STREAMOFF 0x40045613
 #define CMD64_VIDIOC_STREAMON 0x40045612
+#define CMD64_VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL 0xc040564b
+#define CMD64_VIDIOC_SUBDEV_ENUM_FRAME_SIZE 0xc040564a
+#define CMD64_VIDIOC_SUBDEV_ENUM_MBUS_CODE 0xc0305602
+#define CMD64_VIDIOC_SUBDEV_G_CROP 0xc038563b
+#define CMD64_VIDIOC_SUBDEV_G_EDID 0xc0285628
+#define CMD64_VIDIOC_SUBDEV_G_FMT 0xc0585604
+#define CMD64_VIDIOC_SUBDEV_G_FRAME_INTERVAL 0xc0305615
+#define CMD64_VIDIOC_SUBDEV_G_SELECTION 0xc040563d
+#define CMD64_VIDIOC_SUBDEV_S_CROP 0xc038563c
+#define CMD64_VIDIOC_SUBDEV_S_EDID 0xc0285629
+#define CMD64_VIDIOC_SUBDEV_S_FMT 0xc0585605
+#define CMD64_VIDIOC_SUBDEV_S_FRAME_INTERVAL 0xc0305616
+#define CMD64_VIDIOC_SUBDEV_S_SELECTION 0xc040563e
 #define CMD64_VIDIOC_SUBSCRIBE_EVENT 0x4020565a
 #define CMD64_VIDIOC_S_AUDIO 0x40345622
 #define CMD64_VIDIOC_S_AUDOUT 0x40345632
diff --git a/include/linux/v4l2-controls.h b/include/linux/v4l2-controls.h
index 083bb5a..2cbe605 100644
--- a/include/linux/v4l2-controls.h
+++ b/include/linux/v4l2-controls.h
@@ -160,6 +160,14 @@ enum v4l2_colorfx {
  * of controls. Total of 16 controls is reserved for this driver */
 #define V4L2_CID_USER_SI476X_BASE              (V4L2_CID_USER_BASE + 0x1040)
 
+/* The base for the TI VPE driver controls. Total of 16 controls is reserved 
for
+ * this driver */
+#define V4L2_CID_USER_TI_VPE_BASE              (V4L2_CID_USER_BASE + 0x1050)
+
+/* The base for the saa7134 driver controls.
+ * We reserve 16 controls for this driver. */
+#define V4L2_CID_USER_SAA7134_BASE             (V4L2_CID_USER_BASE + 0x1060)
+
 /* MPEG-class control IDs */
 /* The MPEG controls are applicable to all codec controls
  * and the 'MPEG' part of the define is historical */
@@ -550,6 +558,11 @@ enum v4l2_vp8_golden_frame_sel {
        V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_PREV           = 0,
        V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_REF_PERIOD     = 1,
 };
+#define V4L2_CID_MPEG_VIDEO_VPX_MIN_QP                 (V4L2_CID_MPEG_BASE+507)
+#define V4L2_CID_MPEG_VIDEO_VPX_MAX_QP                 (V4L2_CID_MPEG_BASE+508)
+#define V4L2_CID_MPEG_VIDEO_VPX_I_FRAME_QP             (V4L2_CID_MPEG_BASE+509)
+#define V4L2_CID_MPEG_VIDEO_VPX_P_FRAME_QP             (V4L2_CID_MPEG_BASE+510)
+#define V4L2_CID_MPEG_VIDEO_VPX_PROFILE                        
(V4L2_CID_MPEG_BASE+511)
 
 /*  MPEG-class control IDs specific to the CX2341x driver as defined by V4L2 */
 #define V4L2_CID_MPEG_CX2341X_BASE                             
(V4L2_CTRL_CLASS_MPEG | 0x1000)
diff --git a/include/linux/v4l2-subdev.h b/include/linux/v4l2-subdev.h
new file mode 100644
index 0000000..a33c4da
--- /dev/null
+++ b/include/linux/v4l2-subdev.h
@@ -0,0 +1,180 @@
+/*
+ * V4L2 subdev userspace API
+ *
+ * Copyright (C) 2010 Nokia Corporation
+ *
+ * Contacts: Laurent Pinchart <laurent.pinch...@ideasonboard.com>
+ *          Sakari Ailus <sakari.ai...@iki.fi>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef __LINUX_V4L2_SUBDEV_H
+#define __LINUX_V4L2_SUBDEV_H
+
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/v4l2-common.h>
+#include <linux/v4l2-mediabus.h>
+
+/**
+ * enum v4l2_subdev_format_whence - Media bus format type
+ * @V4L2_SUBDEV_FORMAT_TRY: try format, for negotiation only
+ * @V4L2_SUBDEV_FORMAT_ACTIVE: active format, applied to the device
+ */
+enum v4l2_subdev_format_whence {
+       V4L2_SUBDEV_FORMAT_TRY = 0,
+       V4L2_SUBDEV_FORMAT_ACTIVE = 1,
+};
+
+/**
+ * struct v4l2_subdev_format - Pad-level media bus format
+ * @which: format type (from enum v4l2_subdev_format_whence)
+ * @pad: pad number, as reported by the media API
+ * @format: media bus format (format code and frame size)
+ */
+struct v4l2_subdev_format {
+       __u32 which;
+       __u32 pad;
+       struct v4l2_mbus_framefmt format;
+       __u32 reserved[8];
+};
+
+/**
+ * struct v4l2_subdev_crop - Pad-level crop settings
+ * @which: format type (from enum v4l2_subdev_format_whence)
+ * @pad: pad number, as reported by the media API
+ * @rect: pad crop rectangle boundaries
+ */
+struct v4l2_subdev_crop {
+       __u32 which;
+       __u32 pad;
+       struct v4l2_rect rect;
+       __u32 reserved[8];
+};
+
+/**
+ * struct v4l2_subdev_mbus_code_enum - Media bus format enumeration
+ * @pad: pad number, as reported by the media API
+ * @index: format index during enumeration
+ * @code: format code (from enum v4l2_mbus_pixelcode)
+ */
+struct v4l2_subdev_mbus_code_enum {
+       __u32 pad;
+       __u32 index;
+       __u32 code;
+       __u32 reserved[9];
+};
+
+/**
+ * struct v4l2_subdev_frame_size_enum - Media bus format enumeration
+ * @pad: pad number, as reported by the media API
+ * @index: format index during enumeration
+ * @code: format code (from enum v4l2_mbus_pixelcode)
+ */
+struct v4l2_subdev_frame_size_enum {
+       __u32 index;
+       __u32 pad;
+       __u32 code;
+       __u32 min_width;
+       __u32 max_width;
+       __u32 min_height;
+       __u32 max_height;
+       __u32 reserved[9];
+};
+
+/**
+ * struct v4l2_subdev_frame_interval - Pad-level frame rate
+ * @pad: pad number, as reported by the media API
+ * @interval: frame interval in seconds
+ */
+struct v4l2_subdev_frame_interval {
+       __u32 pad;
+       struct v4l2_fract interval;
+       __u32 reserved[9];
+};
+
+/**
+ * struct v4l2_subdev_frame_interval_enum - Frame interval enumeration
+ * @pad: pad number, as reported by the media API
+ * @index: frame interval index during enumeration
+ * @code: format code (from enum v4l2_mbus_pixelcode)
+ * @width: frame width in pixels
+ * @height: frame height in pixels
+ * @interval: frame interval in seconds
+ */
+struct v4l2_subdev_frame_interval_enum {
+       __u32 index;
+       __u32 pad;
+       __u32 code;
+       __u32 width;
+       __u32 height;
+       struct v4l2_fract interval;
+       __u32 reserved[9];
+};
+
+/**
+ * struct v4l2_subdev_selection - selection info
+ *
+ * @which: either V4L2_SUBDEV_FORMAT_ACTIVE or V4L2_SUBDEV_FORMAT_TRY
+ * @pad: pad number, as reported by the media API
+ * @target: Selection target, used to choose one of possible rectangles,
+ *         defined in v4l2-common.h; V4L2_SEL_TGT_* .
+ * @flags: constraint flags, defined in v4l2-common.h; V4L2_SEL_FLAG_*.
+ * @r: coordinates of the selection window
+ * @reserved: for future use, set to zero for now
+ *
+ * Hardware may use multiple helper windows to process a video stream.
+ * The structure is used to exchange this selection areas between
+ * an application and a driver.
+ */
+struct v4l2_subdev_selection {
+       __u32 which;
+       __u32 pad;
+       __u32 target;
+       __u32 flags;
+       struct v4l2_rect r;
+       __u32 reserved[8];
+};
+
+struct v4l2_subdev_edid {
+       __u32 pad;
+       __u32 start_block;
+       __u32 blocks;
+       __u32 reserved[5];
+       __u8 __user *edid;
+};
+
+#define VIDIOC_SUBDEV_G_FMT    _IOWR('V',  4, struct v4l2_subdev_format)
+#define VIDIOC_SUBDEV_S_FMT    _IOWR('V',  5, struct v4l2_subdev_format)
+#define VIDIOC_SUBDEV_G_FRAME_INTERVAL \
+                       _IOWR('V', 21, struct v4l2_subdev_frame_interval)
+#define VIDIOC_SUBDEV_S_FRAME_INTERVAL \
+                       _IOWR('V', 22, struct v4l2_subdev_frame_interval)
+#define VIDIOC_SUBDEV_ENUM_MBUS_CODE \
+                       _IOWR('V',  2, struct v4l2_subdev_mbus_code_enum)
+#define VIDIOC_SUBDEV_ENUM_FRAME_SIZE \
+                       _IOWR('V', 74, struct v4l2_subdev_frame_size_enum)
+#define VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL \
+                       _IOWR('V', 75, struct v4l2_subdev_frame_interval_enum)
+#define VIDIOC_SUBDEV_G_CROP   _IOWR('V', 59, struct v4l2_subdev_crop)
+#define VIDIOC_SUBDEV_S_CROP   _IOWR('V', 60, struct v4l2_subdev_crop)
+#define VIDIOC_SUBDEV_G_SELECTION \
+       _IOWR('V', 61, struct v4l2_subdev_selection)
+#define VIDIOC_SUBDEV_S_SELECTION \
+       _IOWR('V', 62, struct v4l2_subdev_selection)
+#define VIDIOC_SUBDEV_G_EDID   _IOWR('V', 40, struct v4l2_subdev_edid)
+#define VIDIOC_SUBDEV_S_EDID   _IOWR('V', 41, struct v4l2_subdev_edid)
+
+#endif
diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h
index 437f1b0..6ae7bbe 100644
--- a/include/linux/videodev2.h
+++ b/include/linux/videodev2.h
@@ -207,8 +207,8 @@ enum v4l2_priority {
 struct v4l2_rect {
        __s32   left;
        __s32   top;
-       __s32   width;
-       __s32   height;
+       __u32   width;
+       __u32   height;
 };
 
 struct v4l2_fract {
diff --git a/utils/keytable/rc_keymaps/dw210x b/utils/keytable/rc_keymaps/dw210x
deleted file mode 100644
index 01bb877..0000000
--- a/utils/keytable/rc_keymaps/dw210x
+++ /dev/null
@@ -1,32 +0,0 @@
-# table dw210x, type: UNKNOWN
-0xf80a KEY_POWER2
-0xf80c KEY_MUTE
-0xf811 KEY_1
-0xf812 KEY_2
-0xf813 KEY_3
-0xf814 KEY_4
-0xf815 KEY_5
-0xf816 KEY_6
-0xf817 KEY_7
-0xf818 KEY_8
-0xf819 KEY_9
-0xf810 KEY_0
-0xf81c KEY_CHANNELUP
-0xf80f KEY_CHANNELDOWN
-0xf81a KEY_VOLUMEUP
-0xf80e KEY_VOLUMEDOWN
-0xf804 KEY_RECORD
-0xf809 KEY_FAVORITES
-0xf808 KEY_REWIND
-0xf807 KEY_FASTFORWARD
-0xf80b KEY_PAUSE
-0xf802 KEY_ESC
-0xf803 KEY_TAB
-0xf800 KEY_UP
-0xf81f KEY_OK
-0xf801 KEY_DOWN
-0xf805 KEY_CAMERA
-0xf806 KEY_STOP
-0xf840 KEY_ZOOM
-0xf81e KEY_TV
-0xf81b KEY_LAST
diff --git a/utils/keytable/rc_keymaps/su3000 b/utils/keytable/rc_keymaps/su3000
index b53aaed..584499c 100644
--- a/utils/keytable/rc_keymaps/su3000
+++ b/utils/keytable/rc_keymaps/su3000
@@ -1,4 +1,4 @@
-# table su3000, type: UNKNOWN
+# table su3000, type: RC5
 0x25 KEY_POWER
 0x0a KEY_MUTE
 0x01 KEY_1
diff --git a/utils/keytable/rc_keymaps/tbs b/utils/keytable/rc_keymaps/tbs
deleted file mode 100644
index 4ad31e1..0000000
--- a/utils/keytable/rc_keymaps/tbs
+++ /dev/null
@@ -1,33 +0,0 @@
-# table tbs, type: UNKNOWN
-0xf884 KEY_POWER
-0xf894 KEY_MUTE
-0xf887 KEY_1
-0xf886 KEY_2
-0xf885 KEY_3
-0xf88b KEY_4
-0xf88a KEY_5
-0xf889 KEY_6
-0xf88f KEY_7
-0xf88e KEY_8
-0xf88d KEY_9
-0xf892 KEY_0
-0xf896 KEY_CHANNELUP
-0xf891 KEY_CHANNELDOWN
-0xf893 KEY_VOLUMEUP
-0xf88c KEY_VOLUMEDOWN
-0xf883 KEY_RECORD
-0xf898 KEY_PAUSE
-0xf899 KEY_OK
-0xf89a KEY_SHUFFLE
-0xf881 KEY_UP
-0xf890 KEY_LEFT
-0xf882 KEY_RIGHT
-0xf888 KEY_DOWN
-0xf895 KEY_FAVORITES
-0xf897 KEY_SUBTITLE
-0xf89d KEY_ZOOM
-0xf89f KEY_EXIT
-0xf89e KEY_MENU
-0xf89c KEY_EPG
-0xf880 KEY_PREVIOUS
-0xf89b KEY_MODE
diff --git a/utils/keytable/rc_keymaps/tevii b/utils/keytable/rc_keymaps/tevii
deleted file mode 100644
index 8b4e96b..0000000
--- a/utils/keytable/rc_keymaps/tevii
+++ /dev/null
@@ -1,48 +0,0 @@
-# table tevii, type: UNKNOWN
-0xf80a KEY_POWER
-0xf80c KEY_MUTE
-0xf811 KEY_1
-0xf812 KEY_2
-0xf813 KEY_3
-0xf814 KEY_4
-0xf815 KEY_5
-0xf816 KEY_6
-0xf817 KEY_7
-0xf818 KEY_8
-0xf819 KEY_9
-0xf810 KEY_0
-0xf81c KEY_MENU
-0xf80f KEY_VOLUMEDOWN
-0xf81a KEY_LAST
-0xf80e KEY_OPEN
-0xf804 KEY_RECORD
-0xf809 KEY_VOLUMEUP
-0xf808 KEY_CHANNELUP
-0xf807 KEY_PVR
-0xf80b KEY_TIME
-0xf802 KEY_RIGHT
-0xf803 KEY_LEFT
-0xf800 KEY_UP
-0xf81f KEY_OK
-0xf801 KEY_DOWN
-0xf805 KEY_TUNER
-0xf806 KEY_CHANNELDOWN
-0xf840 KEY_PLAYPAUSE
-0xf81e KEY_REWIND
-0xf81b KEY_FAVORITES
-0xf81d KEY_BACK
-0xf84d KEY_FASTFORWARD
-0xf844 KEY_EPG
-0xf84c KEY_INFO
-0xf841 KEY_AB
-0xf843 KEY_AUDIO
-0xf845 KEY_SUBTITLE
-0xf84a KEY_LIST
-0xf846 KEY_F1
-0xf847 KEY_F2
-0xf85e KEY_F3
-0xf85c KEY_F4
-0xf852 KEY_F5
-0xf85a KEY_F6
-0xf856 KEY_MODE
-0xf858 KEY_SWITCHVIDEOMODE
diff --git a/utils/keytable/rc_maps.cfg b/utils/keytable/rc_maps.cfg
index f354dfe..0c0dfa2 100644
--- a/utils/keytable/rc_maps.cfg
+++ b/utils/keytable/rc_maps.cfg
@@ -46,6 +46,7 @@
 *      rc-msi-digivox-ii        msi_digivox_ii
 *      rc-norwood               norwood
 *      rc-nec-terratec-cinergy-xs nec_terratec_cinergy_xs
+*      rc-su3000                su3000
 *      rc-videomate-s350        videomate_s350
 *      rc-digitalnow-tinytwin   digitalnow_tinytwin
 *      rc-rc6-mce               rc6_mce
@@ -139,10 +140,6 @@
 # *    *                        dibusb               # found in dibusb-common.c
 # *    *                        digitv               # found in digitv.c
 # *    *                        dtt200u              # found in dtt200u.c
-# *    *                        dw210x               # found in dw2102.c
-# *    *                        tevii                # found in dw2102.c
-# *    *                        tbs                  # found in dw2102.c
-# *    *                        su3000               # found in dw2102.c
 # *    *                        megasky              # found in m920x.c
 # *    *                        tvwalkertwin         # found in m920x.c
 # *    *                        pinnacle310e         # found in m920x.c
diff --git a/utils/xc3028-firmware/tuner-xc2028-types.h 
b/utils/xc3028-firmware/tuner-xc2028-types.h
index 74dc46a..7e47987 100644
--- a/utils/xc3028-firmware/tuner-xc2028-types.h
+++ b/utils/xc3028-firmware/tuner-xc2028-types.h
@@ -119,7 +119,7 @@
 #define V4L2_STD_A2            (V4L2_STD_A2_A    | V4L2_STD_A2_B)
 #define V4L2_STD_NICAM         (V4L2_STD_NICAM_A | V4L2_STD_NICAM_B)
 
-/* To preserve backward compatibilty,
+/* To preserve backward compatibility,
    (std & V4L2_STD_AUDIO) = 0 means that ALL audio stds are supported
  */
 

_______________________________________________
linuxtv-commits mailing list
linuxtv-commits@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to