diff options
author | Qinggang Zhou <qzhou@nvidia.com> | 2011-12-06 11:04:02 -0800 |
---|---|---|
committer | Varun Wadekar <vwadekar@nvidia.com> | 2011-12-26 11:18:30 +0530 |
commit | a68e0521973c4cb3466343b19da14b2a3e6ff31b (patch) | |
tree | 7d4035934d53fcc29bcefe71f6f7d008c53e455d /drivers/media | |
parent | 4d77074428cb2cc7121a6951fc061cad634620d9 (diff) |
Revert "ov5650: add fast set_mode"
This reverts commit e0f1e9c61daa5faacb0e5cb404357f7e3284c8ae.
Some i2c registers have unexpected impacts over low-light
captures.
bug 901066
Original Gerrit: http://git-master/r/#change,68489
(cherry picked from commit I2ae122da60fa530155f8147b3b21576d79d6a1dd)
Signed-off-by: Qinggang Zhou <qzhou@nvidia.com>
Change-Id: Id84672c49f27821afce6f9b27cc72ba2217f77dc
Reviewed-on: http://git-master/r/71716
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Qinggang Zhou <qzhou@nvidia.com>
Reviewed-by: Naren Bhat <nbhat@nvidia.com>
Reviewed-by: Charlie Huang <chahuang@nvidia.com>
Tested-by: Charlie Huang <chahuang@nvidia.com>
Reviewed-by: John Sasinowski <jsasinowski@nvidia.com>
Reviewed-by: Jon Mayo <jmayo@nvidia.com>
Diffstat (limited to 'drivers/media')
-rw-r--r-- | drivers/media/video/tegra/ov5650.c | 30 |
1 files changed, 8 insertions, 22 deletions
diff --git a/drivers/media/video/tegra/ov5650.c b/drivers/media/video/tegra/ov5650.c index d90e10a8837d..cc50e9141e66 100644 --- a/drivers/media/video/tegra/ov5650.c +++ b/drivers/media/video/tegra/ov5650.c @@ -29,8 +29,6 @@ struct ov5650_reg { u16 val; }; -static struct ov5650_reg *last_mode; - struct ov5650_sensor { struct i2c_client *i2c_client; struct ov5650_platform_data *pdata; @@ -1012,23 +1010,13 @@ static int ov5650_set_mode(struct ov5650_info *info, struct ov5650_mode *mode) ov5650_get_coarse_time_regs(reg_list + 2, mode->coarse_time); ov5650_get_gain_reg(reg_list + 5, mode->gain); - /* Check what condition reset and mode start sequences are */ - /* needed. For switching between certain modes, these are */ - /* not required. Skipping them saves time for I2C access */ - if ((info->mode == OV5650_MODE_INVALID) || - ((last_mode != mode_2592x1944) && - (last_mode != mode_1296x972)) || - ((mode_table[sensor_mode] != mode_2592x1944) && - (mode_table[sensor_mode] != mode_1296x972))) { - err = ov5650_write_table(info, reset_seq, NULL, 0); - if (err) - return err; + err = ov5650_write_table(info, reset_seq, NULL, 0); + if (err) + return err; - err = ov5650_write_table(info, mode_start, NULL, 0); - if (err) - return err; - } - last_mode = mode_table[sensor_mode]; + err = ov5650_write_table(info, mode_start, NULL, 0); + if (err) + return err; err = ov5650_write_table(info, mode_table[sensor_mode], reg_list, 6); @@ -1233,12 +1221,10 @@ static int set_power_helper(struct ov5650_platform_data *pdata, int powerLevel) { if (pdata) { - if (powerLevel && pdata->power_on) { + if (powerLevel && pdata->power_on) pdata->power_on(); - } else if (pdata->power_off) { + else if (pdata->power_off) pdata->power_off(); - stereo_ov5650_info->mode = OV5650_MODE_INVALID; - } } return 0; } |