Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-next-2.6
[cascardo/linux.git] / include / media / v4l2-subdev.h
index 2bcdca0..a888893 100644 (file)
@@ -184,28 +184,6 @@ struct v4l2_subdev_audio_ops {
 };
 
 /*
-   decode_vbi_line: video decoders that support sliced VBI need to implement
-       this ioctl. Field p of the v4l2_sliced_vbi_line struct is set to the
-       start of the VBI data that was generated by the decoder. The driver
-       then parses the sliced VBI data and sets the other fields in the
-       struct accordingly. The pointer p is updated to point to the start of
-       the payload which can be copied verbatim into the data field of the
-       v4l2_sliced_vbi_data struct. If no valid VBI data was found, then the
-       type field is set to 0 on return.
-
-   s_vbi_data: used to generate VBI signals on a video signal.
-       v4l2_sliced_vbi_data is filled with the data packets that should be
-       output. Note that if you set the line field to 0, then that VBI signal
-       is disabled. If no valid VBI data was found, then the type field is
-       set to 0 on return.
-
-   g_vbi_data: used to obtain the sliced VBI packet from a readback register.
-       Not all video decoders support this. If no data is available because
-       the readback register contains invalid or erroneous data -EIO is
-       returned. Note that you must fill in the 'id' member and the 'field'
-       member (to determine whether CC data from the first or second field
-       should be obtained).
-
    s_std_output: set v4l2_std_id for video OUTPUT devices. This is ignored by
        video input devices.
 
@@ -243,10 +221,6 @@ struct v4l2_subdev_audio_ops {
 struct v4l2_subdev_video_ops {
        int (*s_routing)(struct v4l2_subdev *sd, u32 input, u32 output, u32 config);
        int (*s_crystal_freq)(struct v4l2_subdev *sd, u32 freq, u32 flags);
-       int (*decode_vbi_line)(struct v4l2_subdev *sd, struct v4l2_decode_vbi_line *vbi_line);
-       int (*s_vbi_data)(struct v4l2_subdev *sd, const struct v4l2_sliced_vbi_data *vbi_data);
-       int (*g_vbi_data)(struct v4l2_subdev *sd, struct v4l2_sliced_vbi_data *vbi_data);
-       int (*g_sliced_vbi_cap)(struct v4l2_subdev *sd, struct v4l2_sliced_vbi_cap *cap);
        int (*s_std_output)(struct v4l2_subdev *sd, v4l2_std_id std);
        int (*querystd)(struct v4l2_subdev *sd, v4l2_std_id *std);
        int (*g_input_status)(struct v4l2_subdev *sd, u32 *status);
@@ -262,6 +236,8 @@ struct v4l2_subdev_video_ops {
        int (*s_parm)(struct v4l2_subdev *sd, struct v4l2_streamparm *param);
        int (*enum_framesizes)(struct v4l2_subdev *sd, struct v4l2_frmsizeenum *fsize);
        int (*enum_frameintervals)(struct v4l2_subdev *sd, struct v4l2_frmivalenum *fival);
+       int (*enum_dv_presets) (struct v4l2_subdev *sd,
+                       struct v4l2_dv_enum_preset *preset);
        int (*s_dv_preset)(struct v4l2_subdev *sd,
                        struct v4l2_dv_preset *preset);
        int (*query_dv_preset)(struct v4l2_subdev *sd,
@@ -280,6 +256,45 @@ struct v4l2_subdev_video_ops {
                          struct v4l2_mbus_framefmt *fmt);
 };
 
+/*
+   decode_vbi_line: video decoders that support sliced VBI need to implement
+       this ioctl. Field p of the v4l2_sliced_vbi_line struct is set to the
+       start of the VBI data that was generated by the decoder. The driver
+       then parses the sliced VBI data and sets the other fields in the
+       struct accordingly. The pointer p is updated to point to the start of
+       the payload which can be copied verbatim into the data field of the
+       v4l2_sliced_vbi_data struct. If no valid VBI data was found, then the
+       type field is set to 0 on return.
+
+   s_vbi_data: used to generate VBI signals on a video signal.
+       v4l2_sliced_vbi_data is filled with the data packets that should be
+       output. Note that if you set the line field to 0, then that VBI signal
+       is disabled. If no valid VBI data was found, then the type field is
+       set to 0 on return.
+
+   g_vbi_data: used to obtain the sliced VBI packet from a readback register.
+       Not all video decoders support this. If no data is available because
+       the readback register contains invalid or erroneous data -EIO is
+       returned. Note that you must fill in the 'id' member and the 'field'
+       member (to determine whether CC data from the first or second field
+       should be obtained).
+
+   s_raw_fmt: setup the video encoder/decoder for raw VBI.
+
+   g_sliced_fmt: retrieve the current sliced VBI settings.
+
+   s_sliced_fmt: setup the sliced VBI settings.
+ */
+struct v4l2_subdev_vbi_ops {
+       int (*decode_vbi_line)(struct v4l2_subdev *sd, struct v4l2_decode_vbi_line *vbi_line);
+       int (*s_vbi_data)(struct v4l2_subdev *sd, const struct v4l2_sliced_vbi_data *vbi_data);
+       int (*g_vbi_data)(struct v4l2_subdev *sd, struct v4l2_sliced_vbi_data *vbi_data);
+       int (*g_sliced_vbi_cap)(struct v4l2_subdev *sd, struct v4l2_sliced_vbi_cap *cap);
+       int (*s_raw_fmt)(struct v4l2_subdev *sd, struct v4l2_vbi_format *fmt);
+       int (*g_sliced_fmt)(struct v4l2_subdev *sd, struct v4l2_sliced_vbi_format *fmt);
+       int (*s_sliced_fmt)(struct v4l2_subdev *sd, struct v4l2_sliced_vbi_format *fmt);
+};
+
 /**
  * struct v4l2_subdev_sensor_ops - v4l2-subdev sensor operations
  * @g_skip_top_lines: number of lines at the top of the image to be skipped.
@@ -379,6 +394,7 @@ struct v4l2_subdev_ops {
        const struct v4l2_subdev_tuner_ops      *tuner;
        const struct v4l2_subdev_audio_ops      *audio;
        const struct v4l2_subdev_video_ops      *video;
+       const struct v4l2_subdev_vbi_ops        *vbi;
        const struct v4l2_subdev_ir_ops         *ir;
        const struct v4l2_subdev_sensor_ops     *sensor;
 };
@@ -387,6 +403,8 @@ struct v4l2_subdev_ops {
 
 /* Set this flag if this subdev is a i2c device. */
 #define V4L2_SUBDEV_FL_IS_I2C (1U << 0)
+/* Set this flag if this subdev is a spi device. */
+#define V4L2_SUBDEV_FL_IS_SPI (1U << 1)
 
 /* Each instance of a subdev driver should create this struct, either
    stand-alone or embedded in a larger struct.