diff options
author | Krupal Divvela <kdivvela@nvidia.com> | 2012-02-10 14:45:41 +0530 |
---|---|---|
committer | Simone Willett <swillett@nvidia.com> | 2012-02-14 09:29:14 -0800 |
commit | 506d4a055617b171d34574eac7d09fd0c134c867 (patch) | |
tree | 6e499b71ba56256d8adc341409c540ef50429096 /drivers/media/video/tegra | |
parent | 13785dc3f8e5bf9f078a1d11bfa1db6537024b78 (diff) |
media: video: ov14810: Don't reprogram uC
Do not reprogram the micro controller everytime
camera is opened.
Bug 935336
Change-Id: Ib9f67fce07332e15e812be7a9d4efef802a7bd58
Signed-off-by: Krupal Divvela <kdivvela@nvidia.com>
Reviewed-on: http://git-master/r/83059
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Prayas Mohanty <pmohanty@nvidia.com>
Reviewed-by: Sachin Nikam <snikam@nvidia.com>
Diffstat (limited to 'drivers/media/video/tegra')
-rw-r--r-- | drivers/media/video/tegra/ov14810.c | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/drivers/media/video/tegra/ov14810.c b/drivers/media/video/tegra/ov14810.c index 6f56afee2d83..d8563edc73b6 100644 --- a/drivers/media/video/tegra/ov14810.c +++ b/drivers/media/video/tegra/ov14810.c @@ -1,7 +1,7 @@ /* * ov14810.c - ov14810 sensor driver * - * Copyright (c) 2011, NVIDIA, All Rights Reserved. + * Copyright (c) 2011-2012, NVIDIA, All Rights Reserved. * * Contributors: * Krupal Divvela <kdivvela@nvidia.com> @@ -565,6 +565,7 @@ struct ov14810_sensor { struct ov14810_info { int mode; + int uC_programmed; struct ov14810_sensor sensor; struct ov14810_sensor uC; struct ov14810_sensor slaveDev; @@ -1025,8 +1026,9 @@ static int ov14810uC_open(void) pr_info("ov14810uC programmming started \n"); - for (i=0; i < 8192; i++) { - ov14810_write16(info->uC.i2c_client, ( ( (i & 0xff) << 8) | ( (i & 0xff00) >> 8) ), uCProgram[i]); + for (i = 0; i < sizeof(uCProgram); i++) { + ov14810_write16(info->uC.i2c_client, + ( ( (i & 0xff) << 8) | ( (i & 0xff00) >> 8) ), uCProgram[i]); } pr_info("ov14810uC programmming finished \n"); @@ -1046,12 +1048,16 @@ static int ov14810_open(struct inode *inode, struct file *file) if (err) return err; - err = ov14810_slavedev_open(); + if (info->uC_programmed == 0) { + err = ov14810_slavedev_open(); - if (err) - return err; + if (err) + return err; - err = ov14810uC_open(); + err = ov14810uC_open(); + if (!err) + info->uC_programmed = 1; + } return err; } @@ -1147,6 +1153,7 @@ static int ov14810_slavedev_probe(struct i2c_client *client, info->slaveDev.pdata = client->dev.platform_data; info->slaveDev.i2c_client = client; + info->uC_programmed = 0; return 0; } |