V4L/DVB (12707): gspca - sn9c20x: Add SXGA support to MT9M111
authorBrian Johnson <brijohn@gmail.com>
Thu, 3 Sep 2009 22:10:15 +0000 (19:10 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Sat, 12 Sep 2009 15:20:14 +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 5e01b284575464ed2a7016e85b637f4d662b63ff..cdad3db33367970fface102998fecf79cd2fcf57 100644 (file)
@@ -1038,8 +1038,8 @@ static struct i2c_reg_u16 mt9m001_init[] = {
 static struct i2c_reg_u16 mt9m111_init[] = {
        {0xf0, 0x0000}, {0x0d, 0x0021}, {0x0d, 0x0008},
        {0xf0, 0x0001}, {0x3a, 0x4300}, {0x9b, 0x4300},
-       {0xa1, 0x0280}, {0xa4, 0x0200}, {0x06, 0x708e},
-       {0xf0, 0x0002}, {0x2e, 0x0a1e}, {0xf0, 0x0000},
+       {0x06, 0x708e}, {0xf0, 0x0002}, {0x2e, 0x0a1e},
+       {0xf0, 0x0000},
 };
 
 static struct i2c_reg_u8 hv7131r_init[] = {
@@ -2005,6 +2005,7 @@ static int sd_config(struct gspca_dev *gspca_dev,
        sd->i2c_addr = id->driver_info & 0xff;
 
        switch (sd->sensor) {
+       case SENSOR_MT9M111:
        case SENSOR_OV9650:
        case SENSOR_SOI968:
                cam->cam_mode = sxga_mode;
@@ -2158,6 +2159,17 @@ static void configure_sensor_output(struct gspca_dev *gspca_dev, int mode)
                        i2c_w1(gspca_dev, 0x12, (value & 0x7) | 0x40);
                }
                break;
+       case SENSOR_MT9M111:
+               if (mode & MODE_SXGA) {
+                       i2c_w2(gspca_dev, 0xf0, 0x0002);
+                       i2c_w2(gspca_dev, 0xc8, 0x970b);
+                       i2c_w2(gspca_dev, 0xf0, 0x0000);
+               } else {
+                       i2c_w2(gspca_dev, 0xf0, 0x0002);
+                       i2c_w2(gspca_dev, 0xc8, 0x8000);
+                       i2c_w2(gspca_dev, 0xf0, 0x0000);
+               }
+               break;
        }
 }