V4L/DVB (10087): Add new enum_input function on soc_camera
authorKuninori Morimoto <morimoto.kuninori@renesas.com>
Thu, 18 Dec 2008 15:47:46 +0000 (12:47 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Tue, 30 Dec 2008 11:40:24 +0000 (09:40 -0200)
This patch presents new method to be able to select V4L2 input type

Signed-off-by: Kuninori Morimoto <morimoto.kuninori@renesas.com>
Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/soc_camera.c
include/media/soc_camera.h

index b12d11f..e86e6bd 100644 (file)
@@ -125,14 +125,23 @@ static int soc_camera_try_fmt_vid_cap(struct file *file, void *priv,
 static int soc_camera_enum_input(struct file *file, void *priv,
                                 struct v4l2_input *inp)
 {
 static int soc_camera_enum_input(struct file *file, void *priv,
                                 struct v4l2_input *inp)
 {
+       struct soc_camera_file *icf = file->private_data;
+       struct soc_camera_device *icd = icf->icd;
+       int ret = 0;
+
        if (inp->index != 0)
                return -EINVAL;
 
        if (inp->index != 0)
                return -EINVAL;
 
-       inp->type = V4L2_INPUT_TYPE_CAMERA;
-       inp->std = V4L2_STD_UNKNOWN;
-       strcpy(inp->name, "Camera");
+       if (icd->ops->enum_input)
+               ret = icd->ops->enum_input(icd, inp);
+       else {
+               /* default is camera */
+               inp->type = V4L2_INPUT_TYPE_CAMERA;
+               inp->std  = V4L2_STD_UNKNOWN;
+               strcpy(inp->name, "Camera");
+       }
 
 
-       return 0;
+       return ret;
 }
 
 static int soc_camera_g_input(struct file *file, void *priv, unsigned int *i)
 }
 
 static int soc_camera_g_input(struct file *file, void *priv, unsigned int *i)
index 26dede8..50f4447 100644 (file)
@@ -166,6 +166,7 @@ struct soc_camera_ops {
        int (*get_chip_id)(struct soc_camera_device *,
                           struct v4l2_chip_ident *);
        int (*set_std)(struct soc_camera_device *, v4l2_std_id *);
        int (*get_chip_id)(struct soc_camera_device *,
                           struct v4l2_chip_ident *);
        int (*set_std)(struct soc_camera_device *, v4l2_std_id *);
+       int (*enum_input)(struct soc_camera_device *, struct v4l2_input *);
 #ifdef CONFIG_VIDEO_ADV_DEBUG
        int (*get_register)(struct soc_camera_device *, struct v4l2_register *);
        int (*set_register)(struct soc_camera_device *, struct v4l2_register *);
 #ifdef CONFIG_VIDEO_ADV_DEBUG
        int (*get_register)(struct soc_camera_device *, struct v4l2_register *);
        int (*set_register)(struct soc_camera_device *, struct v4l2_register *);