summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/board-whistler-sensors.c
diff options
context:
space:
mode:
authorFrank Chen <frankc@nvidia.com>2011-04-06 18:36:47 -0700
committerDan Willemsen <dwillemsen@nvidia.com>2011-11-30 21:46:27 -0800
commit9b67946bd10e8b5d37b315eec043a6e7b4782b42 (patch)
tree7230fb59ea563b71e062bdcf339abac200f76266 /arch/arm/mach-tegra/board-whistler-sensors.c
parentffba51f933c7b694f6d4ccfc2baee2f4d64239cf (diff)
ARM: tegra: whistler: Add support for AD5820 focuser
Bug 783488 Change-Id: I609ed3c7d87633af53244357bc630fc7de00073c Reviewed-on: http://git-master/r/26973 Reviewed-by: Varun Colbert <vcolbert@nvidia.com> Tested-by: Varun Colbert <vcolbert@nvidia.com> Rebase-Id: Rf5bdb5d2a7ddb1d0c198456bb264012a65dc806a
Diffstat (limited to 'arch/arm/mach-tegra/board-whistler-sensors.c')
-rw-r--r--arch/arm/mach-tegra/board-whistler-sensors.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/arch/arm/mach-tegra/board-whistler-sensors.c b/arch/arm/mach-tegra/board-whistler-sensors.c
index f077822bb2df..e31a5b20eb1d 100644
--- a/arch/arm/mach-tegra/board-whistler-sensors.c
+++ b/arch/arm/mach-tegra/board-whistler-sensors.c
@@ -91,6 +91,7 @@ static int whistler_ov5650_power_on(void)
regulator_enable(reg_avdd_cam1);
}
mdelay(5);
+
if (!reg_vdd_mipi) {
reg_vdd_mipi = regulator_get(NULL, "vddio_mipi");
if (IS_ERR_OR_NULL(reg_vdd_mipi)) {
@@ -100,6 +101,18 @@ static int whistler_ov5650_power_on(void)
}
regulator_enable(reg_vdd_mipi);
}
+ mdelay(5);
+
+ if (!reg_vdd_af) {
+ reg_vdd_af = regulator_get(NULL, "vdd_vcore_af");
+ if (IS_ERR_OR_NULL(reg_vdd_af)) {
+ pr_err("whistler_ov5650_power_on: vdd_vcore_af failed\n");
+ reg_vdd_af = NULL;
+ return PTR_ERR(reg_vdd_af);
+ }
+ regulator_enable(reg_vdd_af);
+ }
+ mdelay(5);
gpio_set_value(CAMERA1_RESET_GPIO, 1);
mdelay(10);
@@ -107,12 +120,14 @@ static int whistler_ov5650_power_on(void)
mdelay(5);
gpio_set_value(CAMERA1_RESET_GPIO, 1);
mdelay(20);
+ gpio_set_value(CAMERA_AF_PD_GPIO, 1);
return 0;
}
static int whistler_ov5650_power_off(void)
{
+ gpio_set_value(CAMERA_AF_PD_GPIO, 0);
gpio_set_value(CAMERA1_PWDN_GPIO, 1);
gpio_set_value(CAMERA1_RESET_GPIO, 0);
@@ -122,6 +137,12 @@ static int whistler_ov5650_power_off(void)
reg_avdd_cam1 = NULL;
}
+ if (reg_vdd_mipi) {
+ regulator_disable(reg_vdd_mipi);
+ regulator_put(reg_vdd_mipi);
+ reg_vdd_mipi = NULL;
+ }
+
if (reg_vdd_af) {
regulator_disable(reg_vdd_af);
regulator_put(reg_vdd_af);
@@ -141,6 +162,9 @@ static struct i2c_board_info whistler_i2c3_board_info[] = {
I2C_BOARD_INFO("ov5650", 0x36),
.platform_data = &whistler_ov5650_data,
},
+ {
+ I2C_BOARD_INFO("ad5820", 0x0c),
+ },
};
static void whistler_adxl34x_init(void)