diff options
author | Nikhil Bhandary <nikhil.bhandary@stericsson.com> | 2011-09-14 18:37:51 +0530 |
---|---|---|
committer | Rabin Vincent <rabin.vincent@stericsson.com> | 2011-09-22 15:41:34 +0530 |
commit | dacc378d3827cb270504048e0eab888784ceb3be (patch) | |
tree | 2e7bcc8b9cba366b4c1d477cac7b873880abca13 | |
parent | b0bfaac433203e2270bb56070bf560f6e7d48b6f (diff) |
mach-ux500: 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>
Change-Id: I8968c6741692ded9fc57b550db4617533b0a3a1f
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.c | 31 | ||||
-rw-r--r-- | arch/arm/mach-ux500/board-u5500-pins.c | 4 | ||||
-rw-r--r-- | arch/arm/mach-ux500/board-u5500-regulators.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-ux500/board-u5500.h | 1 |
4 files changed, 36 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) diff --git a/arch/arm/mach-ux500/board-u5500-pins.c b/arch/arm/mach-ux500/board-u5500-pins.c index 2bfff680ef4..bb2500c24e1 100644 --- a/arch/arm/mach-ux500/board-u5500-pins.c +++ b/arch/arm/mach-ux500/board-u5500-pins.c @@ -68,6 +68,10 @@ static pin_cfg_t u5500_pins_default[] = { GPIO202_ACCU0_RXD | PIN_INPUT_PULLUP, GPIO203_ACCU0_TXD | PIN_OUTPUT_HIGH, + + /* Board Id Identification B5500 or S5500 */ + GPIO0_GPIO | PIN_INPUT_PULLUP, + }; static UX500_PINS(db5500_kp_pins, diff --git a/arch/arm/mach-ux500/board-u5500-regulators.c b/arch/arm/mach-ux500/board-u5500-regulators.c index e3fd4efcb1e..d8c72966c82 100644 --- a/arch/arm/mach-ux500/board-u5500-regulators.c +++ b/arch/arm/mach-ux500/board-u5500-regulators.c @@ -27,6 +27,7 @@ static struct regulator_consumer_supply ab5500_ldo_h_consumers[] = { REGULATOR_SUPPLY("vdd", "1-004b"), /* Synaptics */ REGULATOR_SUPPLY("vin", "2-0036"), /* LM3530 */ REGULATOR_SUPPLY("vcpin", "spi1.0"), + REGULATOR_SUPPLY("v-ana", "mmio_camera"), }; static struct regulator_consumer_supply ab5500_ldo_k_consumers[] = { diff --git a/arch/arm/mach-ux500/board-u5500.h b/arch/arm/mach-ux500/board-u5500.h index 1b53508e716..85762e5efb1 100644 --- a/arch/arm/mach-ux500/board-u5500.h +++ b/arch/arm/mach-ux500/board-u5500.h @@ -13,6 +13,7 @@ #define GPIO_BOARD_VERSION 0 #define GPIO_PRIMARY_CAM_XSHUTDOWN 1 #define GPIO_SECONDARY_CAM_XSHUTDOWN 2 +#define GPIO_CAMERA_PMIC_EN 212 #define CYPRESS_TOUCH_INT_PIN 179 #define CYPRESS_TOUCH_RST_GPIO 135 #define CYPRESS_SLAVE_SELECT_GPIO 186 |