From: Hans Verkuil <[email protected]>

The dt3155 together with the J1 breakout cable supports 4 inputs. Add
support for all inputs VID0 - VID3. Note that input VID0 is shared with
input J2.

Signed-off-by: Hans Verkuil <[email protected]>
Tested-by: Hans Verkuil <[email protected]>
---
 drivers/staging/media/dt3155v4l/dt3155v4l.c | 18 ++++++++++++++----
 drivers/staging/media/dt3155v4l/dt3155v4l.h |  2 ++
 2 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/drivers/staging/media/dt3155v4l/dt3155v4l.c 
b/drivers/staging/media/dt3155v4l/dt3155v4l.c
index 450728f..43c9e0f 100644
--- a/drivers/staging/media/dt3155v4l/dt3155v4l.c
+++ b/drivers/staging/media/dt3155v4l/dt3155v4l.c
@@ -370,9 +370,12 @@ static int dt3155_s_std(struct file *filp, void *p, 
v4l2_std_id norm)
 
 static int dt3155_enum_input(struct file *filp, void *p, struct v4l2_input 
*input)
 {
-       if (input->index)
+       if (input->index > 3)
                return -EINVAL;
-       strcpy(input->name, "Coax in");
+       if (input->index)
+               snprintf(input->name, sizeof(input->name), "VID%d", 
input->index);
+       else
+               strlcpy(input->name, "J2/VID0", sizeof(input->name));
        input->type = V4L2_INPUT_TYPE_CAMERA;
        input->std = V4L2_STD_ALL;
        input->status = 0;
@@ -381,14 +384,21 @@ static int dt3155_enum_input(struct file *filp, void *p, 
struct v4l2_input *inpu
 
 static int dt3155_g_input(struct file *filp, void *p, unsigned int *i)
 {
-       *i = 0;
+       struct dt3155_priv *pd = video_drvdata(filp);
+
+       *i = pd->input;
        return 0;
 }
 
 static int dt3155_s_input(struct file *filp, void *p, unsigned int i)
 {
-       if (i)
+       struct dt3155_priv *pd = video_drvdata(filp);
+
+       if (i > 3)
                return -EINVAL;
+       pd->input = i;
+       write_i2c_reg(pd->regs, AD_ADDR, AD_CMD_REG);
+       write_i2c_reg(pd->regs, AD_CMD, (i << 6) | (i << 4) | SYNC_LVL_3);
        return 0;
 }
 
diff --git a/drivers/staging/media/dt3155v4l/dt3155v4l.h 
b/drivers/staging/media/dt3155v4l/dt3155v4l.h
index 75c7281..bcf7b5e 100644
--- a/drivers/staging/media/dt3155v4l/dt3155v4l.h
+++ b/drivers/staging/media/dt3155v4l/dt3155v4l.h
@@ -168,6 +168,7 @@
  * @std:               input standard
  * @width:             frame width
  * @height:            frame height
+ * @input:             current input
  * @sequence:          frame counter
  * @stats:             statistics structure
  * @regs:              local copy of mmio base register
@@ -186,6 +187,7 @@ struct dt3155_priv {
        spinlock_t lock;
        v4l2_std_id std;
        unsigned width, height;
+       unsigned input;
        unsigned int sequence;
        void __iomem *regs;
        u8 csr2, config;
-- 
2.1.4

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to