summaryrefslogtreecommitdiff
path: root/drivers/media/video/tegra
diff options
context:
space:
mode:
authorKrupal Divvela <kdivvela@nvidia.com>2012-02-10 14:45:41 +0530
committerSimone Willett <swillett@nvidia.com>2012-02-14 09:29:14 -0800
commit506d4a055617b171d34574eac7d09fd0c134c867 (patch)
tree6e499b71ba56256d8adc341409c540ef50429096 /drivers/media/video/tegra
parent13785dc3f8e5bf9f078a1d11bfa1db6537024b78 (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.c21
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;
}