{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 */
                * 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[] = {
        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);
                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);