diff options
author | Laxman Dewangan <ldewangan@nvidia.com> | 2012-06-26 14:07:41 +0530 |
---|---|---|
committer | Varun Colbert <vcolbert@nvidia.com> | 2012-07-06 13:29:04 -0700 |
commit | efab3eb1a45adc9c41494236ba3b4359099775d2 (patch) | |
tree | ab756ada84d32656077e8afc5175e7f8d90ee941 /arch/arm/mach-tegra/board-enterprise-power.c | |
parent | 741f1049886e65ff9af5e1c3d30380ae3ca112c1 (diff) |
ARM: tegra: enterprise: OFF rails in sleep state
OFF the rails when the system is in sleep state. The rails are
linked withe xternal req PREQ1 which is the core_pwr_req line.
Followng rails are attached to PREQ1:
SMPS2, SMPS4, LDOUSB will be attached to PREQ1
LDOLN, LDO7, LDO6, LDO4, LDO1
CLK32KG, SYSEN, REGEN2, REGEN1 will be attached to PREQ1
bug 979143
Change-Id: I20973faa78ef61fcd03cbe34445f94c36e280544
Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
Change-Id: I2ba5ca2aa1732222628d68f61d77acff88092d81
Reviewed-on: http://git-master/r/111185
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Thomas Cherry <tcherry@nvidia.com>
Diffstat (limited to 'arch/arm/mach-tegra/board-enterprise-power.c')
-rw-r--r-- | arch/arm/mach-tegra/board-enterprise-power.c | 38 |
1 files changed, 30 insertions, 8 deletions
diff --git a/arch/arm/mach-tegra/board-enterprise-power.c b/arch/arm/mach-tegra/board-enterprise-power.c index 042cfbb36e72..bbe39ec4ad3e 100644 --- a/arch/arm/mach-tegra/board-enterprise-power.c +++ b/arch/arm/mach-tegra/board-enterprise-power.c @@ -140,9 +140,10 @@ static struct regulator_consumer_supply tps80031_smps4_supply_a03[] = { REGULATOR_SUPPLY("vddf_core_emmc", NULL), }; -static struct regulator_consumer_supply tps80031_vana_supply_common[] = { +static struct regulator_consumer_supply tps80031_vana_supply_a02[] = { REGULATOR_SUPPLY("unused_vana", NULL), }; +#define tps80031_vana_supply_a03 tps80031_vana_supply_a02 static struct regulator_consumer_supply tps80031_ldo1_supply_a02[] = { REGULATOR_SUPPLY("avdd_dsi_csi", NULL), @@ -268,23 +269,24 @@ TPS_PDATA_INIT(smps1, common, 600, 2100, 0, 0, 0, 0, -1, 0, 0, 0, PWR_REQ_INPUT_ TPS_PDATA_INIT(smps2, common, 600, 2100, 0, 0, 0, 0, -1, 0, 0, 0, PWR_REQ_INPUT_PREQ1, 0); TPS_PDATA_INIT(smps3, common, 600, 2100, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0); TPS_PDATA_INIT(smps4, a02, 600, 2100, 0, 0, 0, 0, -1, 0, 0, 0, PWR_REQ_INPUT_PREQ1, 0); -TPS_PDATA_INIT(smps4, a03, 600, 2100, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0); +TPS_PDATA_INIT(smps4, a03, 600, 2100, 0, 0, 0, 0, -1, 0, 0, 0, PWR_REQ_INPUT_PREQ1, 0); TPS_PDATA_INIT(ldo1, a02, 1000, 3300, tps80031_rails(VIO), 0, 0, 0, -1, 0, 0, 0, 0, 0); TPS_PDATA_INIT(ldo1, a03, 1000, 3300, tps80031_rails(VIO), 0, 0, 0, -1, 0, 0, 0, PWR_REQ_INPUT_PREQ1, 0); TPS_PDATA_INIT(ldo2, common, 1000, 3300, 0, 1, 1, 1, 1000, 1, 1, 0, 0, 0); TPS_PDATA_INIT(ldo3, common, 1000, 3300, tps80031_rails(VIO), 0, 0, 0, -1, 0, 0, 0, PWR_OFF_ON_SLEEP, 0); TPS_PDATA_INIT(ldo4, a02, 1000, 3300, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0); -TPS_PDATA_INIT(ldo4, a03, 1000, 3300, tps80031_rails(VIO), 0, 0, 0, -1, 0, 0, 0, 0, 0); +TPS_PDATA_INIT(ldo4, a03, 1000, 3300, tps80031_rails(VIO), 0, 0, 0, -1, 0, 0, 0, PWR_REQ_INPUT_PREQ1, 0); TPS_PDATA_INIT(ldo5, common, 1000, 3300, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0); TPS_PDATA_INIT(ldo6, a02, 1000, 3300, 0, 0, 0, 0, -1, 0, 0, 0, PWR_REQ_INPUT_PREQ1, 0); TPS_PDATA_INIT(ldo6, a03, 1000, 3300, 0, 0, 0, 0, -1, 0, 0, 0, PWR_REQ_INPUT_PREQ1, 0); TPS_PDATA_INIT(ldo7, a02, 1000, 3300, tps80031_rails(VIO), 0, 0, 0, -1, 0, 0, 0, PWR_REQ_INPUT_PREQ1, 0); -TPS_PDATA_INIT(ldo7, a03, 1000, 3300, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0); +TPS_PDATA_INIT(ldo7, a03, 1000, 3300, 0, 0, 0, 0, -1, 0, 0, 0, PWR_REQ_INPUT_PREQ1, 0); TPS_PDATA_INIT(ldoln, a02, 1000, 3300, tps80031_rails(SMPS3), 0, 0, 0, -1, 0, 0, 0, PWR_REQ_INPUT_PREQ1, 0); TPS_PDATA_INIT(ldoln, a03, 1000, 3300, tps80031_rails(VIO), 0, 0, 0, -1, 0, 0, 0, PWR_REQ_INPUT_PREQ1, 0); TPS_PDATA_INIT(ldousb, a02, 1000, 3300, 0, 0, 0, 0, -1, 0, 0, USBLDO_INPUT_VSYS, PWR_OFF_ON_SLEEP, 0); -TPS_PDATA_INIT(ldousb, a03, 1000, 3300, 0, 0, 0, 0, -1, 0, 0, USBLDO_INPUT_VSYS, PWR_OFF_ON_SLEEP, 0); -TPS_PDATA_INIT(vana, common, 1000, 3300, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0); +TPS_PDATA_INIT(ldousb, a03, 1000, 3300, 0, 0, 0, 0, -1, 0, 0, USBLDO_INPUT_VSYS, PWR_REQ_INPUT_PREQ1, 0); +TPS_PDATA_INIT(vana, a02, 1000, 3300, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0); +TPS_PDATA_INIT(vana, a03, 1000, 3300, 0, 0, 0, 0, -1, 0, 1, 0, PWR_OFF_ON_SLEEP, 0); TPS_PDATA_INIT(vbus, common, 0, 5000, 0, 0, 0, 0, -1, 0, 0, (VBUS_SW_ONLY | VBUS_DISCHRG_EN_PDN), 0, 100000); static struct tps80031_rtc_platform_data rtc_data = { @@ -361,7 +363,6 @@ static struct tps80031_bg_platform_data battery_gauge_data = { TPS_REG(SMPS1, smps1, common), \ TPS_REG(SMPS2, smps2, common), \ TPS_REG(SMPS3, smps3, common), \ - TPS_REG(VANA, vana, common), \ TPS_REG(LDO2, ldo2, common), \ TPS_REG(LDO3, ldo3, common), \ TPS_REG(LDO5, ldo5, common), \ @@ -382,6 +383,7 @@ static struct tps80031_subdev_info tps80031_devs_a02[] = { TPS_REG(LDO7, ldo7, a02), TPS_REG(LDOLN, ldoln, a02), TPS_REG(LDOUSB, ldousb, a02), + TPS_REG(VANA, vana, a02), }; @@ -395,10 +397,11 @@ static struct tps80031_subdev_info tps80031_devs_a03[] = { TPS_REG(LDO7, ldo7, a03), TPS_REG(LDOLN, ldoln, a03), TPS_REG(LDOUSB, ldousb, a03), + TPS_REG(VANA, vana, a03), }; -struct tps80031_clk32k_init_data clk32k_idata[] = { +static struct tps80031_clk32k_init_data clk32k_idata[] = { { .clk32k_nr = TPS80031_CLOCK32K_G, .enable = true, @@ -409,6 +412,23 @@ struct tps80031_clk32k_init_data clk32k_idata[] = { .enable = true, .ext_ctrl_flag = 0, }, + + +}; + +static struct tps80031_gpio_init_data gpio_idata_a03[] = { + { + .gpio_nr = TPS80031_GPIO_REGEN1, + .ext_ctrl_flag = PWR_REQ_INPUT_PREQ1, + }, + { + .gpio_nr = TPS80031_GPIO_REGEN2, + .ext_ctrl_flag = PWR_REQ_INPUT_PREQ1, + }, + { + .gpio_nr = TPS80031_GPIO_SYSEN, + .ext_ctrl_flag = PWR_REQ_INPUT_PREQ1, + }, }; static struct tps80031_pupd_init_data pupd_idata[] = { @@ -738,6 +758,8 @@ int __init enterprise_regulator_init(void) tps_platform.subdevs = tps80031_devs_a03; tps_platform.pupd_init_data = pupd_idata; tps_platform.pupd_init_data_size = ARRAY_SIZE(pupd_idata); + tps_platform.gpio_init_data = gpio_idata_a03; + tps_platform.gpio_init_data_size = ARRAY_SIZE(gpio_idata_a03); } i2c_register_board_info(4, enterprise_regulators, 1); |