Browse Source

V4L/DVB (11536): gspca - m5602-po1030: Impove the bridge vsync/hsync configuration

Signed-off-by: Erik Andr?n <erik.andren@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Erik Andr?n 16 years ago
parent
commit
9819267009
1 changed files with 16 additions and 6 deletions
  1. 16 6
      drivers/media/video/gspca/m5602/m5602_po1030.c

+ 16 - 6
drivers/media/video/gspca/m5602/m5602_po1030.c

@@ -367,11 +367,6 @@ int po1030_start(struct sd *sd)
 		break;
 
 	case 640:
-		data = 0;
-		err = m5602_write_sensor(sd, PO1030_CONTROL3, &data, 1);
-		if (err < 0)
-			return err;
-
 		data = ((width + 7) >> 8) & 0xff;
 		err = m5602_write_sensor(sd, PO1030_WINDOWWIDTH_H, &data, 1);
 		if (err < 0)
@@ -394,6 +389,9 @@ int po1030_start(struct sd *sd)
 		width -= 2;
 		break;
 	}
+	err = m5602_write_bridge(sd, M5602_XB_SENSOR_TYPE, 0x0c);
+	if (err < 0)
+		return err;
 
 	err = m5602_write_bridge(sd, M5602_XB_LINE_OF_FRAME_H, 0x81);
 	if (err < 0)
@@ -403,6 +401,10 @@ int po1030_start(struct sd *sd)
 	if (err < 0)
 		return err;
 
+	err = m5602_write_bridge(sd, M5602_XB_SIG_INI, 0x01);
+	if (err < 0)
+		return err;
+
 	err = m5602_write_bridge(sd, M5602_XB_VSYNC_PARA,
 				 ((ver_offs >> 8) & 0xff));
 	if (err < 0)
@@ -412,7 +414,8 @@ int po1030_start(struct sd *sd)
 	if (err < 0)
 		return err;
 
-	err = m5602_write_bridge(sd, M5602_XB_VSYNC_PARA, 0);
+	for (i = 0; i < 2 && !err; i++)
+		err = m5602_write_bridge(sd, M5602_XB_VSYNC_PARA, 0);
 	if (err < 0)
 		return err;
 
@@ -427,6 +430,9 @@ int po1030_start(struct sd *sd)
 	for (i = 0; i < 2 && !err; i++)
 		err = m5602_write_bridge(sd, M5602_XB_VSYNC_PARA, 0);
 
+	for (i = 0; i < 2 && !err; i++)
+		err = m5602_write_bridge(sd, M5602_XB_SIG_INI, 0);
+
 	for (i = 0; i < 2 && !err; i++)
 		err = m5602_write_bridge(sd, M5602_XB_HSYNC_PARA, 0);
 	if (err < 0)
@@ -437,6 +443,10 @@ int po1030_start(struct sd *sd)
 		return err;
 
 	err = m5602_write_bridge(sd, M5602_XB_HSYNC_PARA, (width & 0xff));
+	if (err < 0)
+		return err;
+
+	err = m5602_write_bridge(sd, M5602_XB_SIG_INI, 0);
 	return err;
 }