diff options
-rw-r--r-- | drivers/media/video/gspca/sn9c20x.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/media/video/gspca/sn9c20x.c b/drivers/media/video/gspca/sn9c20x.c index 20b03a005293..e4a021ae9cca 100644 --- a/drivers/media/video/gspca/sn9c20x.c +++ b/drivers/media/video/gspca/sn9c20x.c | |||
@@ -2007,6 +2007,7 @@ static int sd_config(struct gspca_dev *gspca_dev, | |||
2007 | 2007 | ||
2008 | switch (sd->sensor) { | 2008 | switch (sd->sensor) { |
2009 | case SENSOR_OV9650: | 2009 | case SENSOR_OV9650: |
2010 | case SENSOR_SOI968: | ||
2010 | cam->cam_mode = sxga_mode; | 2011 | cam->cam_mode = sxga_mode; |
2011 | cam->nmodes = ARRAY_SIZE(sxga_mode); | 2012 | cam->nmodes = ARRAY_SIZE(sxga_mode); |
2012 | break; | 2013 | break; |
@@ -2122,6 +2123,25 @@ static void configure_sensor_output(struct gspca_dev *gspca_dev, int mode) | |||
2122 | struct sd *sd = (struct sd *) gspca_dev; | 2123 | struct sd *sd = (struct sd *) gspca_dev; |
2123 | u8 value; | 2124 | u8 value; |
2124 | switch (sd->sensor) { | 2125 | switch (sd->sensor) { |
2126 | case SENSOR_SOI968: | ||
2127 | if (mode & MODE_SXGA) { | ||
2128 | i2c_w1(gspca_dev, 0x17, 0x1d); | ||
2129 | i2c_w1(gspca_dev, 0x18, 0xbd); | ||
2130 | i2c_w1(gspca_dev, 0x19, 0x01); | ||
2131 | i2c_w1(gspca_dev, 0x1a, 0x81); | ||
2132 | i2c_w1(gspca_dev, 0x12, 0x00); | ||
2133 | sd->hstart = 140; | ||
2134 | sd->vstart = 19; | ||
2135 | } else { | ||
2136 | i2c_w1(gspca_dev, 0x17, 0x13); | ||
2137 | i2c_w1(gspca_dev, 0x18, 0x63); | ||
2138 | i2c_w1(gspca_dev, 0x19, 0x01); | ||
2139 | i2c_w1(gspca_dev, 0x1a, 0x79); | ||
2140 | i2c_w1(gspca_dev, 0x12, 0x40); | ||
2141 | sd->hstart = 60; | ||
2142 | sd->vstart = 11; | ||
2143 | } | ||
2144 | break; | ||
2125 | case SENSOR_OV9650: | 2145 | case SENSOR_OV9650: |
2126 | if (mode & MODE_SXGA) { | 2146 | if (mode & MODE_SXGA) { |
2127 | i2c_w1(gspca_dev, 0x17, 0x1b); | 2147 | i2c_w1(gspca_dev, 0x17, 0x1b); |