diff options
author | Erik Lilliebjerg <elilliebjerg@nvidia.com> | 2011-11-22 00:56:13 -0700 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2012-03-23 21:13:56 -0700 |
commit | 67daa98e376d89a541d6d31743328b868273dfe0 (patch) | |
tree | 2fece1e2ea1d33e56340f552db3178254fcf4a7d /arch/arm/mach-tegra | |
parent | b5e97c38a9dd57be0a0e47097c987a5eea8bbeed (diff) |
arm: tegra: ventana: SSL3250A board support
Bug 882012
Bug 866726
Bug 896181
Bug 894789
Bug 861828
Bug 852480
Bug 872156
Change-Id: Ib87ca49d2b5c7e865571d79a37a5739e92d2cdf6
Reviewed-on: http://git-master/r/66055
Reviewed-by: Erik Lilliebjerg <elilliebjerg@nvidia.com>
Tested-by: Erik Lilliebjerg <elilliebjerg@nvidia.com>
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Rebase-Id: Ra9d5d0c801460e62d74066e415f6a9459feb8967
Diffstat (limited to 'arch/arm/mach-tegra')
-rw-r--r-- | arch/arm/mach-tegra/board-ventana-power.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-ventana-sensors.c | 70 |
2 files changed, 20 insertions, 51 deletions
diff --git a/arch/arm/mach-tegra/board-ventana-power.c b/arch/arm/mach-tegra/board-ventana-power.c index 3319b7d42242..fa1c68bd5590 100644 --- a/arch/arm/mach-tegra/board-ventana-power.c +++ b/arch/arm/mach-tegra/board-ventana-power.c @@ -91,6 +91,7 @@ static struct regulator_consumer_supply tps658621_ldo6_supply[] = { REGULATOR_SUPPLY("vdd_ldo6", NULL), REGULATOR_SUPPLY("vcsi", "tegra_camera"), REGULATOR_SUPPLY("vdd_dmic", "tegra-snd-wm8903"), + REGULATOR_SUPPLY("vdd_i2c", "3-0030"), }; static struct regulator_consumer_supply tps658621_ldo7_supply[] = { REGULATOR_SUPPLY("vdd_ldo7", NULL), diff --git a/arch/arm/mach-tegra/board-ventana-sensors.c b/arch/arm/mach-tegra/board-ventana-sensors.c index f297143bedab..0bcabdb2862e 100644 --- a/arch/arm/mach-tegra/board-ventana-sensors.c +++ b/arch/arm/mach-tegra/board-ventana-sensors.c @@ -56,15 +56,12 @@ #define CAMERA_POWER_GPIO TEGRA_GPIO_PV4 #define CAMERA_CSI_MUX_SEL_GPIO TEGRA_GPIO_PBB4 #define CAMERA_FLASH_ACT_GPIO TEGRA_GPIO_PD2 -#define CAMERA_FLASH_STRB_GPIO TEGRA_GPIO_PA0 #define NCT1008_THERM2_GPIO TEGRA_GPIO_PN6 -#define CAMERA_FLASH_OP_MODE 0 /*0=I2C mode, 1=GPIO mode*/ -#define CAMERA_FLASH_MAX_LED_AMP 7 -#define CAMERA_FLASH_MAX_TORCH_AMP 11 -#define CAMERA_FLASH_MAX_FLASH_AMP 31 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); @@ -75,6 +72,15 @@ static int ventana_camera_init(void) 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; } @@ -167,56 +173,18 @@ struct ov2710_platform_data ventana_ov2710_data = { .power_off = ventana_ov2710_power_off, }; -static int ventana_ssl3250a_init(void) -{ - gpio_request(CAMERA_FLASH_ACT_GPIO, "torch_gpio_act"); - gpio_direction_output(CAMERA_FLASH_ACT_GPIO, 0); - tegra_gpio_enable(CAMERA_FLASH_ACT_GPIO); - gpio_request(CAMERA_FLASH_STRB_GPIO, "torch_gpio_strb"); - gpio_direction_output(CAMERA_FLASH_STRB_GPIO, 0); - tegra_gpio_enable(CAMERA_FLASH_STRB_GPIO); - gpio_export(CAMERA_FLASH_STRB_GPIO, false); - return 0; -} -static void ventana_ssl3250a_exit(void) -{ - gpio_set_value(CAMERA_FLASH_STRB_GPIO, 0); - gpio_free(CAMERA_FLASH_STRB_GPIO); - tegra_gpio_disable(CAMERA_FLASH_STRB_GPIO); - gpio_set_value(CAMERA_FLASH_ACT_GPIO, 0); - gpio_free(CAMERA_FLASH_ACT_GPIO); - tegra_gpio_disable(CAMERA_FLASH_ACT_GPIO); -} - -static int ventana_ssl3250a_gpio_strb(int val) -{ - int prev_val; - prev_val = gpio_get_value(CAMERA_FLASH_STRB_GPIO); - gpio_set_value(CAMERA_FLASH_STRB_GPIO, val); - return prev_val; +static struct nvc_torch_pin_state ventana_ssl3250a_pinstate = { + .mask = 0x0040, /* VGP6 */ + .values = 0x0040, }; -static int ventana_ssl3250a_gpio_act(int val) -{ - int prev_val; - prev_val = gpio_get_value(CAMERA_FLASH_ACT_GPIO); - gpio_set_value(CAMERA_FLASH_ACT_GPIO, val); - return prev_val; +static struct ssl3250a_platform_data ventana_ssl3250a_pdata = { + .dev_name = "torch", + .pinstate = &ventana_ssl3250a_pinstate, + .gpio_act = CAMERA_FLASH_ACT_GPIO, }; -static struct ssl3250a_platform_data ventana_ssl3250a_data = { - .config = CAMERA_FLASH_OP_MODE, - .max_amp_indic = CAMERA_FLASH_MAX_LED_AMP, - .max_amp_torch = CAMERA_FLASH_MAX_TORCH_AMP, - .max_amp_flash = CAMERA_FLASH_MAX_FLASH_AMP, - .init = ventana_ssl3250a_init, - .exit = ventana_ssl3250a_exit, - .gpio_act = ventana_ssl3250a_gpio_act, - .gpio_en1 = NULL, - .gpio_en2 = NULL, - .gpio_strb = ventana_ssl3250a_gpio_strb, -}; static void ventana_isl29018_init(void) { @@ -296,7 +264,7 @@ static const struct i2c_board_info ventana_i2c3_board_info_pca9546[] = { static const struct i2c_board_info ventana_i2c3_board_info_ssl3250a[] = { { I2C_BOARD_INFO("ssl3250a", 0x30), - .platform_data = &ventana_ssl3250a_data, + .platform_data = &ventana_ssl3250a_pdata, }, }; |