|
@@ -278,8 +278,14 @@ static const __u8 ov7630_sensor_init[][8] = {
|
|
|
{0xa0, 0x21, 0x76, 0x02, 0xbd, 0x06, 0xf6, 0x16},
|
|
|
{0xa0, 0x21, 0x00, 0x10, 0xbd, 0x06, 0xf6, 0x15}, /* gain */
|
|
|
};
|
|
|
-static const __u8 ov7630_sensor_init_3[][8] = {
|
|
|
- {0xa0, 0x21, 0x10, 0x83, 0xbd, 0x06, 0xf6, 0x16}, /* exposure */
|
|
|
+static const __u8 ov7630_sensor_init_3[][5][8] = {
|
|
|
+ { {0xa0, 0x21, 0x10, 0x36, 0xbd, 0x06, 0xf6, 0x16}, /* exposure */
|
|
|
+ {0xa0, 0x21, 0x76, 0x03, 0xbd, 0x06, 0xf6, 0x16},
|
|
|
+ {0xa0, 0x21, 0x11, 0x01, 0xbd, 0x06, 0xf6, 0x16},
|
|
|
+ {0xa0, 0x21, 0x00, 0x10, 0xbd, 0x06, 0xf6, 0x15}, /* gain */
|
|
|
+ {0xb0, 0x21, 0x2a, 0xa0, 0x1c, 0x06, 0xf6, 0x1d},
|
|
|
+ },
|
|
|
+ { {0xa0, 0x21, 0x10, 0x83, 0xbd, 0x06, 0xf6, 0x16}, /* exposure */
|
|
|
{0xa0, 0x21, 0x76, 0x00, 0xbd, 0x06, 0xf6, 0x16},
|
|
|
{0xa0, 0x21, 0x11, 0x00, 0xbd, 0x06, 0xf6, 0x16},
|
|
|
{0xa0, 0x21, 0x00, 0x10, 0xbd, 0x06, 0xf6, 0x15}, /* gain */
|
|
@@ -287,6 +293,7 @@ static const __u8 ov7630_sensor_init_3[][8] = {
|
|
|
* a0 1c,a0 1f,c0 3c frame rate ?line interval from ov6630 */
|
|
|
/* {0xb0, 0x21, 0x2a, 0xa0, 0x1f, 0x06, 0xf6, 0x1d}, * from win */
|
|
|
{0xb0, 0x21, 0x2a, 0x80, 0x60, 0x06, 0xf6, 0x1d},
|
|
|
+ }
|
|
|
};
|
|
|
|
|
|
static const __u8 initPas106[] = {
|
|
@@ -730,6 +737,11 @@ static int sd_config(struct gspca_dev *gspca_dev,
|
|
|
if (!sif) {
|
|
|
cam->cam_mode = vga_mode;
|
|
|
cam->nmodes = ARRAY_SIZE(vga_mode);
|
|
|
+ if (sd->sensor == SENSOR_OV7630_3) {
|
|
|
+ /* We only have 320x240 & 640x480 */
|
|
|
+ cam->cam_mode++;
|
|
|
+ cam->nmodes--;
|
|
|
+ }
|
|
|
} else {
|
|
|
cam->cam_mode = sif_mode;
|
|
|
cam->nmodes = ARRAY_SIZE(sif_mode);
|
|
@@ -877,8 +889,8 @@ static void sd_start(struct gspca_dev *gspca_dev)
|
|
|
i2c_w_vector(gspca_dev, ov7630_sensor_init_com,
|
|
|
sizeof ov7630_sensor_init_com);
|
|
|
msleep(200);
|
|
|
- i2c_w_vector(gspca_dev, ov7630_sensor_init_3,
|
|
|
- sizeof ov7630_sensor_init_3);
|
|
|
+ i2c_w_vector(gspca_dev, ov7630_sensor_init_3[mode],
|
|
|
+ sizeof ov7630_sensor_init_3[mode]);
|
|
|
break;
|
|
|
case SENSOR_PAS106:
|
|
|
pas106_i2cinit(gspca_dev);
|