v4l-utils: run sync-with-kernel, add ioctl32 tests for v4l2-subdev.h
authorHans Verkuil <hans.verkuil@cisco.com>
Wed, 15 Jan 2014 08:13:08 +0000 (09:13 +0100)
committerHans Verkuil <hans.verkuil@cisco.com>
Wed, 15 Jan 2014 08:13:08 +0000 (09:13 +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.verkuil@cisco.com>
16 files changed:
Makefile.am
contrib/freebsd/include/linux/v4l2-controls.h
contrib/freebsd/include/linux/videodev2.h
contrib/test/gen_ioctl_list.pl
contrib/test/ioctl-test.h
contrib/test/ioctl_32.h
contrib/test/ioctl_64.h
include/linux/v4l2-controls.h
include/linux/v4l2-subdev.h [new file with mode: 0644]
include/linux/videodev2.h
utils/keytable/rc_keymaps/dw210x [deleted file]
utils/keytable/rc_keymaps/su3000
utils/keytable/rc_keymaps/tbs [deleted file]
utils/keytable/rc_keymaps/tevii [deleted file]
utils/keytable/rc_maps.cfg
utils/xc3028-firmware/tuner-xc2028-types.h

index 65a075c..500d0ae 100644 (file)
@@ -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
index 083bb5a..2cbe605 100644 (file)
@@ -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)
index 1fcfaeb..5c75762 100644 (file)
@@ -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 {
index d7033fe..c77e4be 100755 (executable)
@@ -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;
index ad496fe..7502fa3 100644 (file)
@@ -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])
index bccb429..89e52eb 100644 (file)
 #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
index 372294a..9ec33b6 100644 (file)
 #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
index 083bb5a..2cbe605 100644 (file)
@@ -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 (file)
index 0000000..a33c4da
--- /dev/null
@@ -0,0 +1,180 @@
+/*
+ * V4L2 subdev userspace API
+ *
+ * Copyright (C) 2010 Nokia Corporation
+ *
+ * Contacts: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
+ *          Sakari Ailus <sakari.ailus@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
index 437f1b0..6ae7bbe 100644 (file)
@@ -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 (file)
index 01bb877..0000000
+++ /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
index b53aaed..584499c 100644 (file)
@@ -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 (file)
index 4ad31e1..0000000
+++ /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 (file)
index 8b4e96b..0000000
+++ /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
index f354dfe..0c0dfa2 100644 (file)
@@ -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
 # *    *                        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
index 74dc46a..7e47987 100644 (file)
 #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
  */