V4L/DVB (11533): gspca - m5602-po1030: Setup window per resolution

This patch for the po1030 sets the drawing window for the VGA resolution

Signed-off-by: Erik Andr?n <erik.andren@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
diff --git a/drivers/media/video/gspca/m5602/m5602_po1030.c b/drivers/media/video/gspca/m5602/m5602_po1030.c
index ee8e496..af0e937 100644
--- a/drivers/media/video/gspca/m5602/m5602_po1030.c
+++ b/drivers/media/video/gspca/m5602/m5602_po1030.c
@@ -321,7 +321,34 @@
 
 int po1030_start(struct sd *sd)
 {
+	struct cam *cam = &sd->gspca_dev.cam;
 	int i, err = 0;
+	int width = cam->cam_mode[sd->gspca_dev.curr_mode].width;
+	int height = cam->cam_mode[sd->gspca_dev.curr_mode].height;
+	u8 data;
+
+	switch (width) {
+	case 640:
+		data = ((width + 7) >> 8) & 0xff;
+		err = m5602_write_sensor(sd, PO1030_WINDOWWIDTH_H, &data, 1);
+		if (err < 0)
+			return err;
+
+		data = (width + 7) & 0xff;
+		err = m5602_write_sensor(sd, PO1030_WINDOWWIDTH_L, &data, 1);
+		if (err < 0)
+			return err;
+
+		data = ((height + 3) >> 8) & 0xff;
+		err = m5602_write_sensor(sd, PO1030_WINDOWHEIGHT_H, &data, 1);
+		if (err < 0)
+			return err;
+
+		data = (height + 3) & 0xff;
+		err = m5602_write_sensor(sd, PO1030_WINDOWHEIGHT_L, &data, 1);
+		break;
+	}
+
 	/* Synthesize the vsync/hsync setup */
 	for (i = 0; i < ARRAY_SIZE(start_po1030) && !err; i++) {
 		if (start_po1030[i][0] == BRIDGE)
@@ -330,7 +357,7 @@
 		else if (start_po1030[i][0] == SENSOR) {
 			u8 data = start_po1030[i][2];
 			err = m5602_write_sensor(sd,
-					start_po1030[i][1], &data, 1);
+				start_po1030[i][1], &data, 1);
 		}
 	}
 	return err;