|
@@ -91,6 +91,9 @@
|
|
|
#define OV5640_REG_SDE_CTRL5 0x5585
|
|
|
#define OV5640_REG_AVG_READOUT 0x56a1
|
|
|
|
|
|
+#define OV5640_SCLK2X_ROOT_DIVIDER_DEFAULT 1
|
|
|
+#define OV5640_SCLK_ROOT_DIVIDER_DEFAULT 2
|
|
|
+
|
|
|
enum ov5640_mode_id {
|
|
|
OV5640_MODE_QCIF_176_144 = 0,
|
|
|
OV5640_MODE_QVGA_320_240,
|
|
@@ -249,7 +252,7 @@ static const struct reg_value ov5640_init_setting_30fps_VGA[] = {
|
|
|
{0x3103, 0x11, 0, 0}, {0x3008, 0x82, 0, 5}, {0x3008, 0x42, 0, 0},
|
|
|
{0x3103, 0x03, 0, 0}, {0x3017, 0x00, 0, 0}, {0x3018, 0x00, 0, 0},
|
|
|
{0x3034, 0x18, 0, 0}, {0x3035, 0x14, 0, 0}, {0x3036, 0x38, 0, 0},
|
|
|
- {0x3037, 0x13, 0, 0}, {0x3108, 0x01, 0, 0}, {0x3630, 0x36, 0, 0},
|
|
|
+ {0x3037, 0x13, 0, 0}, {0x3630, 0x36, 0, 0},
|
|
|
{0x3631, 0x0e, 0, 0}, {0x3632, 0xe2, 0, 0}, {0x3633, 0x12, 0, 0},
|
|
|
{0x3621, 0xe0, 0, 0}, {0x3704, 0xa0, 0, 0}, {0x3703, 0x5a, 0, 0},
|
|
|
{0x3715, 0x78, 0, 0}, {0x3717, 0x01, 0, 0}, {0x370b, 0x60, 0, 0},
|
|
@@ -1660,6 +1663,12 @@ static int ov5640_restore_mode(struct ov5640_dev *sensor)
|
|
|
if (ret < 0)
|
|
|
return ret;
|
|
|
|
|
|
+ ret = ov5640_mod_reg(sensor, OV5640_REG_SYS_ROOT_DIVIDER, 0x3f,
|
|
|
+ (ilog2(OV5640_SCLK2X_ROOT_DIVIDER_DEFAULT) << 2) |
|
|
|
+ ilog2(OV5640_SCLK_ROOT_DIVIDER_DEFAULT));
|
|
|
+ if (ret)
|
|
|
+ return ret;
|
|
|
+
|
|
|
/* now restore the last capture mode */
|
|
|
ret = ov5640_set_mode(sensor, &ov5640_mode_init_data);
|
|
|
if (ret < 0)
|