summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorPritesh Raithatha <praithatha@nvidia.com>2012-01-17 15:43:55 +0530
committerVarun Colbert <vcolbert@nvidia.com>2012-01-19 16:15:54 -0800
commit5833c04523dfcd5bc4b6f5c9aee62a54072d22ac (patch)
tree0d627dd2858cc8960bed6addba9795a77c1358d1 /arch
parent5f98d1bc3fcaf91f4a4d72a3dd30a901e6b534ac (diff)
arm: tegra: ventana: combine all camera gpios init stuffs
Bug 925547 Change-Id: Iee05a2dda861b4a630045caaeb341f0365a74e12 Signed-off-by: Pritesh Raithatha <praithatha@nvidia.com> Reviewed-on: http://git-master/r/75690 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Varun Wadekar <vwadekar@nvidia.com> Reviewed-by: Mayuresh Kulkarni <mkulkarni@nvidia.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-tegra/board-ventana-sensors.c83
1 files changed, 34 insertions, 49 deletions
diff --git a/arch/arm/mach-tegra/board-ventana-sensors.c b/arch/arm/mach-tegra/board-ventana-sensors.c
index dd3ab863e536..406a427d3424 100644
--- a/arch/arm/mach-tegra/board-ventana-sensors.c
+++ b/arch/arm/mach-tegra/board-ventana-sensors.c
@@ -53,32 +53,6 @@
#include "board-ventana.h"
#include "cpu-tegra.h"
-static int ventana_camera_init(void)
-{
- int err;
-
- tegra_gpio_enable(CAMERA_POWER_GPIO);
- gpio_request(CAMERA_POWER_GPIO, "camera_power_en");
- gpio_direction_output(CAMERA_POWER_GPIO, 1);
- gpio_export(CAMERA_POWER_GPIO, false);
-
- tegra_gpio_enable(CAMERA_CSI_MUX_SEL_GPIO);
- gpio_request(CAMERA_CSI_MUX_SEL_GPIO, "camera_csi_sel");
- gpio_direction_output(CAMERA_CSI_MUX_SEL_GPIO, 0);
- gpio_export(CAMERA_CSI_MUX_SEL_GPIO, false);
-
- err = gpio_request(CAMERA_FLASH_ACT_GPIO, "torch_gpio_act");
- if (err < 0) {
- pr_err("gpio_request failed for gpio %d\n",
- CAMERA_FLASH_ACT_GPIO);
- } else {
- tegra_gpio_enable(CAMERA_FLASH_ACT_GPIO);
- gpio_direction_output(CAMERA_FLASH_ACT_GPIO, 0);
- gpio_export(CAMERA_FLASH_ACT_GPIO, false);
- }
- return 0;
-}
-
/* left ov5650 is CAM2 which is on csi_a */
static int ventana_left_ov5650_power_on(void)
{
@@ -431,7 +405,6 @@ int __init ventana_sensors_init(void)
#ifdef CONFIG_MPU_SENSORS_MPU3050
mpuirq_init();
#endif
- ventana_camera_init();
ventana_nct1008_init();
i2c_register_board_info(0, ventana_i2c0_board_info,
@@ -471,34 +444,40 @@ int __init ventana_sensors_init(void)
struct tegra_camera_gpios {
const char *name;
int gpio;
+ bool tegra_internal_gpio;
int enabled;
};
-#define TEGRA_CAMERA_GPIO(_name, _gpio, _enabled) \
- { \
- .name = _name, \
- .gpio = _gpio, \
- .enabled = _enabled, \
+#define TEGRA_CAMERA_GPIO(_name, _gpio, _tegra_internal_gpio, _enabled) \
+ { \
+ .name = _name, \
+ .gpio = _gpio, \
+ .tegra_internal_gpio = _tegra_internal_gpio, \
+ .enabled = _enabled, \
}
static struct tegra_camera_gpios ventana_camera_gpio_keys[] = {
- [0] = TEGRA_CAMERA_GPIO("en_avdd_csi", AVDD_DSI_CSI_ENB_GPIO, 1),
- [1] = TEGRA_CAMERA_GPIO("cam_i2c_mux_rst_lo", CAM_I2C_MUX_RST_GPIO, 1),
-
- [2] = TEGRA_CAMERA_GPIO("cam2_ldo_shdn_lo", CAM2_LDO_SHUTDN_L_GPIO, 0),
- [3] = TEGRA_CAMERA_GPIO("cam2_af_pwdn_lo", CAM2_AF_PWR_DN_L_GPIO, 0),
- [4] = TEGRA_CAMERA_GPIO("cam2_pwdn", CAM2_PWR_DN_GPIO, 0),
- [5] = TEGRA_CAMERA_GPIO("cam2_rst_lo", CAM2_RST_L_GPIO, 1),
-
- [6] = TEGRA_CAMERA_GPIO("cam3_ldo_shdn_lo", CAM3_LDO_SHUTDN_L_GPIO, 0),
- [7] = TEGRA_CAMERA_GPIO("cam3_af_pwdn_lo", CAM3_AF_PWR_DN_L_GPIO, 0),
- [8] = TEGRA_CAMERA_GPIO("cam3_pwdn", CAM3_PWR_DN_GPIO, 0),
- [9] = TEGRA_CAMERA_GPIO("cam3_rst_lo", CAM3_RST_L_GPIO, 1),
-
- [10] = TEGRA_CAMERA_GPIO("cam1_ldo_shdn_lo", CAM1_LDO_SHUTDN_L_GPIO, 0),
- [11] = TEGRA_CAMERA_GPIO("cam1_af_pwdn_lo", CAM1_AF_PWR_DN_L_GPIO, 0),
- [12] = TEGRA_CAMERA_GPIO("cam1_pwdn", CAM1_PWR_DN_GPIO, 0),
- [13] = TEGRA_CAMERA_GPIO("cam1_rst_lo", CAM1_RST_L_GPIO, 1),
+ [0] = TEGRA_CAMERA_GPIO("camera_power_en", CAMERA_POWER_GPIO, true, 1),
+ [1] = TEGRA_CAMERA_GPIO("camera_csi_sel", CAMERA_CSI_MUX_SEL_GPIO, true, 0),
+ [2] = TEGRA_CAMERA_GPIO("torch_gpio_act", CAMERA_FLASH_ACT_GPIO, true, 0),
+
+ [3] = TEGRA_CAMERA_GPIO("en_avdd_csi", AVDD_DSI_CSI_ENB_GPIO, false, 1),
+ [4] = TEGRA_CAMERA_GPIO("cam_i2c_mux_rst_lo", CAM_I2C_MUX_RST_GPIO, false, 1),
+
+ [5] = TEGRA_CAMERA_GPIO("cam2_ldo_shdn_lo", CAM2_LDO_SHUTDN_L_GPIO, false, 0),
+ [6] = TEGRA_CAMERA_GPIO("cam2_af_pwdn_lo", CAM2_AF_PWR_DN_L_GPIO, false, 0),
+ [7] = TEGRA_CAMERA_GPIO("cam2_pwdn", CAM2_PWR_DN_GPIO, false, 0),
+ [8] = TEGRA_CAMERA_GPIO("cam2_rst_lo", CAM2_RST_L_GPIO, false, 1),
+
+ [9] = TEGRA_CAMERA_GPIO("cam3_ldo_shdn_lo", CAM3_LDO_SHUTDN_L_GPIO, false, 0),
+ [10] = TEGRA_CAMERA_GPIO("cam3_af_pwdn_lo", CAM3_AF_PWR_DN_L_GPIO, false, 0),
+ [11] = TEGRA_CAMERA_GPIO("cam3_pwdn", CAM3_PWR_DN_GPIO, false, 0),
+ [12] = TEGRA_CAMERA_GPIO("cam3_rst_lo", CAM3_RST_L_GPIO, false, 1),
+
+ [13] = TEGRA_CAMERA_GPIO("cam1_ldo_shdn_lo", CAM1_LDO_SHUTDN_L_GPIO, false, 0),
+ [14] = TEGRA_CAMERA_GPIO("cam1_af_pwdn_lo", CAM1_AF_PWR_DN_L_GPIO, false, 0),
+ [15] = TEGRA_CAMERA_GPIO("cam1_pwdn", CAM1_PWR_DN_GPIO, false, 0),
+ [16] = TEGRA_CAMERA_GPIO("cam1_rst_lo", CAM1_RST_L_GPIO, false, 1),
};
int __init ventana_camera_late_init(void)
@@ -525,6 +504,10 @@ int __init ventana_camera_late_init(void)
i2c_new_device(i2c_get_adapter(3), ventana_i2c3_board_info_tca6416);
for (i = 0; i < ARRAY_SIZE(ventana_camera_gpio_keys); i++) {
+
+ if (ventana_camera_gpio_keys[i].tegra_internal_gpio)
+ tegra_gpio_enable(ventana_camera_gpio_keys[i].gpio);
+
ret = gpio_request(ventana_camera_gpio_keys[i].gpio,
ventana_camera_gpio_keys[i].name);
if (ret < 0) {
@@ -532,8 +515,10 @@ int __init ventana_camera_late_init(void)
__func__, i);
goto fail_free_gpio;
}
+
gpio_direction_output(ventana_camera_gpio_keys[i].gpio,
ventana_camera_gpio_keys[i].enabled);
+
gpio_export(ventana_camera_gpio_keys[i].gpio, false);
}