Browse Source

[media] dt3155v4l: support inputs VID0-3

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 <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
Hans Verkuil 10 years ago
parent
commit
c34b7ef551

+ 14 - 4
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;
 }
 

+ 2 - 0
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;