V4L/DVB (12705): gspca - sn9c20x: Add SXGA support to SOI968
authorBrian Johnson <brijohn@gmail.com>
Wed, 2 Sep 2009 16:14:41 +0000 (13:14 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Sat, 12 Sep 2009 15:20:13 +0000 (12:20 -0300)
Signed-off-by: Brian Johnson <brijohn@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/gspca/sn9c20x.c

index 20b03a005293d5edca6e006b9487ea0f59cc3f65..e4a021ae9cca2354086ce37cd76491b94a6a8b9e 100644 (file)
@@ -2007,6 +2007,7 @@ static int sd_config(struct gspca_dev *gspca_dev,
 
        switch (sd->sensor) {
        case SENSOR_OV9650:
+       case SENSOR_SOI968:
                cam->cam_mode = sxga_mode;
                cam->nmodes = ARRAY_SIZE(sxga_mode);
                break;
@@ -2122,6 +2123,25 @@ static void configure_sensor_output(struct gspca_dev *gspca_dev, int mode)
        struct sd *sd = (struct sd *) gspca_dev;
        u8 value;
        switch (sd->sensor) {
+       case SENSOR_SOI968:
+               if (mode & MODE_SXGA) {
+                       i2c_w1(gspca_dev, 0x17, 0x1d);
+                       i2c_w1(gspca_dev, 0x18, 0xbd);
+                       i2c_w1(gspca_dev, 0x19, 0x01);
+                       i2c_w1(gspca_dev, 0x1a, 0x81);
+                       i2c_w1(gspca_dev, 0x12, 0x00);
+                       sd->hstart = 140;
+                       sd->vstart = 19;
+               } else {
+                       i2c_w1(gspca_dev, 0x17, 0x13);
+                       i2c_w1(gspca_dev, 0x18, 0x63);
+                       i2c_w1(gspca_dev, 0x19, 0x01);
+                       i2c_w1(gspca_dev, 0x1a, 0x79);
+                       i2c_w1(gspca_dev, 0x12, 0x40);
+                       sd->hstart = 60;
+                       sd->vstart = 11;
+               }
+               break;
        case SENSOR_OV9650:
                if (mode & MODE_SXGA) {
                        i2c_w1(gspca_dev, 0x17, 0x1b);