From: "Philipp Wiesner" <p.wiesner@gmx.net>
To: linux-media@vger.kernel.org
Subject: [PATCH] soc_camera: multiple input capable enum, g & s
Date: Tue, 10 Nov 2009 15:42:36 +0100 [thread overview]
Message-ID: <20091110144236.322090@gmx.net> (raw)
soc_camera: multiple input capable enum, g & s
From: Philipp Wiesner <p.wiesner@gmx.net>
I did some small changes to support soc camera devices with multiple inputs, e.g. tw9910 (driver doesn't support this yet).
soc-camera.c:
soc_camera_enum_input: capable of handling multiple inputs.
soc_camera_g_input: calls icd's g_input if present.
soc_camera_s_input: calls icd's s_input if present.
soc-camera.h:
struct soc_camera_ops: Added aliases for g_input and s_input functions here.
Priority: normal
Signed-off-by: Philipp Wiesner <p.wiesner@gmx.net>
diff -r 43878f8dbfb0 -r a5254e7d306a linux/drivers/media/video/soc_camera.c
--- a/linux/drivers/media/video/soc_camera.c Sun Nov 01 07:17:46 2009 -0200
+++ b/linux/drivers/media/video/soc_camera.c Tue Nov 03 17:17:49 2009 +0100
@@ -119,11 +119,10 @@
struct soc_camera_device *icd = icf->icd;
int ret = 0;
- if (inp->index != 0)
- return -EINVAL;
-
if (icd->ops->enum_input)
ret = icd->ops->enum_input(icd, inp);
+ else if (inp->index != 0)
+ return -EINVAL;
else {
/* default is camera */
inp->type = V4L2_INPUT_TYPE_CAMERA;
@@ -136,17 +135,30 @@
static int soc_camera_g_input(struct file *file, void *priv, unsigned int *i)
{
- *i = 0;
+ struct soc_camera_file *icf = file->private_data;
+ struct soc_camera_device *icd = icf->icd;
+ int ret = 0;
- return 0;
+ if (icd->ops->g_input)
+ ret = icd->ops->g_input(icd, i);
+ else
+ *i = 0;
+
+ return ret;
}
static int soc_camera_s_input(struct file *file, void *priv, unsigned int i)
{
- if (i > 0)
+ struct soc_camera_file *icf = file->private_data;
+ struct soc_camera_device *icd = icf->icd;
+ int ret = 0;
+
+ if (icd->ops->s_input)
+ ret = icd->ops->s_input(icd, i);
+ else if (i > 0)
return -EINVAL;
- return 0;
+ return ret;
}
static int soc_camera_s_std(struct file *file, void *priv, v4l2_std_id *a)
diff -r 43878f8dbfb0 -r a5254e7d306a linux/include/media/soc_camera.h
--- a/linux/include/media/soc_camera.h Sun Nov 01 07:17:46 2009 -0200
+++ b/linux/include/media/soc_camera.h Tue Nov 03 17:17:49 2009 +0100
@@ -197,6 +197,8 @@
unsigned long (*query_bus_param)(struct soc_camera_device *);
int (*set_bus_param)(struct soc_camera_device *, unsigned long);
int (*enum_input)(struct soc_camera_device *, struct v4l2_input *);
+ int (*g_input)(struct soc_camera_device *, unsigned int *);
+ int (*s_input)(struct soc_camera_device *, unsigned int);
const struct v4l2_queryctrl *controls;
int num_controls;
};
--
GRATIS für alle GMX-Mitglieder: Die maxdome Movie-FLAT!
Jetzt freischalten unter http://portal.gmx.net/de/go/maxdome01
next reply other threads:[~2009-11-10 14:42 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-11-10 14:42 Philipp Wiesner [this message]
2009-11-11 18:18 ` [PATCH] soc_camera: multiple input capable enum, g & s Guennadi Liakhovetski
2009-11-11 22:37 ` Philipp Wiesner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20091110144236.322090@gmx.net \
--to=p.wiesner@gmx.net \
--cc=linux-media@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox