summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilippe Langlais <philippe.langlais@stericsson.com>2011-10-17 10:59:29 +0200
committerPhilippe Langlais <philippe.langlais@stericsson.com>2012-05-22 11:06:58 +0200
commit7414c9e088dcadd847dedc813e568a2bd4f754c9 (patch)
treeb79cfc80c5d9c67f20e3adc7428b6884b0e2a936
parent4dc43eb0c79e7af48ce94793f4d9a2b7c839d780 (diff)
mach-ux500: mmio: Enable Camera PMIC for S5500V2 Board
ST-Ericsson Id: 351836 ST-Ericsson FOSS-OUT ID: Trivial Signed-off-by: Nikhil Bhandary <nikhil.bhandary@stericsson.com> Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/30969 Reviewed-by: Srinidhi KASAGAR <srinidhi.kasagar@stericsson.com>
-rw-r--r--arch/arm/mach-ux500/board-u5500-mmio.c31
1 files changed, 30 insertions, 1 deletions
diff --git a/arch/arm/mach-ux500/board-u5500-mmio.c b/arch/arm/mach-ux500/board-u5500-mmio.c
index ca751da16fa..bbf2b4bf949 100644
--- a/arch/arm/mach-ux500/board-u5500-mmio.c
+++ b/arch/arm/mach-ux500/board-u5500-mmio.c
@@ -40,7 +40,7 @@ struct mmio_board_data{
* Fill names of regulators required for powering up the
* camera sensor in below array
*/
-static char *regulator_names[] = {"v-mmio-camera"};
+static char *regulator_names[] = {"v-mmio-camera", "v-ana"};
static int mmio_clock_init(struct mmio_platform_data *pdata)
{
@@ -231,6 +231,28 @@ static int mmio_power_enable(struct mmio_platform_data *pdata)
goto err_regulator;
}
}
+
+ err = gpio_request(GPIO_CAMERA_PMIC_EN, "Camera PMIC GPIO");
+ if (err) {
+ dev_err(pdata->dev, "Error %d while requesting"
+ "Camera PMIC GPIO\n",
+ err);
+ return err;
+ }
+
+ err = gpio_direction_output(GPIO_CAMERA_PMIC_EN, 0);
+ if (err) {
+ dev_err(pdata->dev, "Error %d while setting"
+ "Camera PMIC GPIO"
+ "output mode\n", err);
+ return err;
+ }
+
+ if (!(is_s5500_board()))
+ gpio_set_value(GPIO_CAMERA_PMIC_EN, 1);
+ else
+ gpio_set_value(GPIO_CAMERA_PMIC_EN, 0);
+
dev_dbg(pdata->dev , "Board %s() Exit\n", __func__);
return 0;
err_regulator:
@@ -251,6 +273,13 @@ static void mmio_power_disable(struct mmio_platform_data *pdata)
*/
for (i = 0; i < extra->number_of_regulators; i++)
regulator_disable(extra->mmio_regulators[i]);
+
+ if (!(is_s5500_board()))
+ gpio_set_value(GPIO_CAMERA_PMIC_EN, 0);
+ else
+ gpio_set_value(GPIO_CAMERA_PMIC_EN, 1);
+
+ gpio_free(GPIO_CAMERA_PMIC_EN);
}
static int mmio_clock_enable(struct mmio_platform_data *pdata)