diff options
author | Guennadi Liakhovetski <g.liakhovetski@gmx.de> | 2008-12-18 16:47:46 +0100 |
---|---|---|
committer | Guennadi Liakhovetski <g.liakhovetski@gmx.de> | 2008-12-18 16:47:46 +0100 |
commit | c5a56e9d9ec8b6de8effceefc806eea532a6e82b (patch) | |
tree | 11d1ecf55a003584ad33362c9df22ccfcfab2e30 | |
parent | b8f8d07610fc89fb72fcd5aec751febfcefa3dc7 (diff) | |
download | mediapointer-dvb-s2-c5a56e9d9ec8b6de8effceefc806eea532a6e82b.tar.gz mediapointer-dvb-s2-c5a56e9d9ec8b6de8effceefc806eea532a6e82b.tar.bz2 |
Add new enum_input function on soc_camera
From: Kuninori Morimoto <morimoto.kuninori@renesas.com>
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>
---
drivers/media/video/soc_camera.c | 17 +++++++++++++----
include/media/soc_camera.h | 1 +
2 files changed, 14 insertions(+), 4 deletions(-)
-rw-r--r-- | linux/drivers/media/video/soc_camera.c | 17 | ||||
-rw-r--r-- | linux/include/media/soc_camera.h | 1 |
2 files changed, 14 insertions, 4 deletions
diff --git a/linux/drivers/media/video/soc_camera.c b/linux/drivers/media/video/soc_camera.c index c468027fb..61a72f5ef 100644 --- a/linux/drivers/media/video/soc_camera.c +++ b/linux/drivers/media/video/soc_camera.c @@ -126,14 +126,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) { + struct soc_camera_file *icf = file->private_data; + struct soc_camera_device *icd = icf->icd; + int ret = 0; + 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) diff --git a/linux/include/media/soc_camera.h b/linux/include/media/soc_camera.h index 26dede820..50f444756 100644 --- a/linux/include/media/soc_camera.h +++ b/linux/include/media/soc_camera.h @@ -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 (*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 *); |