V4L/DVB (9957): v4l2-subdev: add g_sliced_vbi_cap and add NULL pointer checks
authorHans Verkuil <hverkuil@xs4all.nl>
Thu, 18 Dec 2008 14:16:24 +0000 (11:16 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Tue, 30 Dec 2008 11:39:28 +0000 (09:39 -0200)
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/v4l2-subdev.c
include/media/v4l2-subdev.h

index fe1f01c970acad395c5f27fe158c8237522b785f..e3612f29d0df762f4f4805cef4ec3f7cd9f23ad8 100644 (file)
@@ -40,13 +40,13 @@ int v4l2_subdev_command(struct v4l2_subdev *sd, unsigned cmd, void *arg)
        case VIDIOC_G_CHIP_IDENT:
                return v4l2_subdev_call(sd, core, g_chip_ident, arg);
        case VIDIOC_INT_S_STANDBY:
-               return v4l2_subdev_call(sd, core, s_standby, *(u32 *)arg);
+               return v4l2_subdev_call(sd, core, s_standby, arg ? (*(u32 *)arg) : 0);
        case VIDIOC_INT_RESET:
-               return v4l2_subdev_call(sd, core, reset, *(u32 *)arg);
+               return v4l2_subdev_call(sd, core, reset, arg ? (*(u32 *)arg) : 0);
        case VIDIOC_INT_S_GPIO:
-               return v4l2_subdev_call(sd, core, s_gpio, *(u32 *)arg);
+               return v4l2_subdev_call(sd, core, s_gpio, arg ? (*(u32 *)arg) : 0);
        case VIDIOC_INT_INIT:
-               return v4l2_subdev_call(sd, core, init, *(u32 *)arg);
+               return v4l2_subdev_call(sd, core, init, arg ? (*(u32 *)arg) : 0);
 #ifdef CONFIG_VIDEO_ADV_DEBUG
        case VIDIOC_DBG_G_REGISTER:
                return v4l2_subdev_call(sd, core, g_register, arg);
@@ -90,6 +90,8 @@ int v4l2_subdev_command(struct v4l2_subdev *sd, unsigned cmd, void *arg)
                return v4l2_subdev_call(sd, video, s_vbi_data, arg);
        case VIDIOC_INT_G_VBI_DATA:
                return v4l2_subdev_call(sd, video, g_vbi_data, arg);
+       case VIDIOC_G_SLICED_VBI_CAP:
+               return v4l2_subdev_call(sd, video, g_sliced_vbi_cap, arg);
        case VIDIOC_S_FMT:
                return v4l2_subdev_call(sd, video, s_fmt, arg);
        case VIDIOC_G_FMT:
index bc9e0fbf28227d86fd36900d89f965d22912a7ed..bca25e8eab627bbe2a925fe82145f0c85dd8aa66 100644 (file)
@@ -110,6 +110,7 @@ struct v4l2_subdev_video_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_std_output)(struct v4l2_subdev *sd, v4l2_std_id std);
        int (*s_stream)(struct v4l2_subdev *sd, int enable);
        int (*s_fmt)(struct v4l2_subdev *sd, struct v4l2_format *fmt);