diff options
author | Wen Yi <wyi@nvidia.com> | 2013-03-12 11:53:10 -0700 |
---|---|---|
committer | Simone Willett <swillett@nvidia.com> | 2013-03-14 11:11:41 -0700 |
commit | 239adc942c594b8ed65695073c9cb64a052d140f (patch) | |
tree | ceaf9812b4a28dd9df153af684ed1bca4a944c69 /arch | |
parent | c2bf79c39937d0d379f264749b76e1bf0b72e0d4 (diff) |
arm: tegra: roth: set mode_sleep for smps
TPS65913 has a voltage glitch issue during pwm->pfm->pwm mode switch.
Keep mode_active as pwm for smps12 and set it's mode_sleep to auto,
Keep active mode to pwm smps457. No need to set mode_sleep.
Set mode_active of smps3 to auto.
Set mode_active of smps8 to auto and off for mode_sleep.
Set mode_active of smps9 to auto.
Bug 1239011
Change-Id: I2b087d869e57c4160f4c2b8f4b8d2a24398adcfc
Signed-off-by:Wen Yi <wyi@nvidia.com>
Change-Id: I99278422c47ff8ade9a95f89f911647261300381
Reviewed-on: http://git-master/r/207834
Reviewed-by: Laxman Dewangan <ldewangan@nvidia.com>
GVS: Gerrit_Virtual_Submit
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-tegra/board-dalmore-power.c | 32 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-pluto-power.c | 40 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-pmu-defines.h | 3 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-roth-power.c | 39 |
4 files changed, 55 insertions, 59 deletions
diff --git a/arch/arm/mach-tegra/board-dalmore-power.c b/arch/arm/mach-tegra/board-dalmore-power.c index 3a996d53104e..0a1f5eb3f81c 100644 --- a/arch/arm/mach-tegra/board-dalmore-power.c +++ b/arch/arm/mach-tegra/board-dalmore-power.c @@ -613,22 +613,22 @@ static struct regulator_consumer_supply palmas_ldousb_supply[] = { REGULATOR_SUPPLY("avdd_hdmi", "tegradc.1"), }; -PALMAS_PDATA_INIT(smps12, 1350, 1350, tps65090_rails(DCDC3), 0, 0, 0, NORMAL); -PALMAS_PDATA_INIT(smps3, 1800, 1800, tps65090_rails(DCDC3), 0, 0, 0, NORMAL); -PALMAS_PDATA_INIT(smps45, 900, 1400, tps65090_rails(DCDC2), 1, 1, 0, NORMAL); -PALMAS_PDATA_INIT(smps457, 900, 1400, tps65090_rails(DCDC2), 1, 1, 0, NORMAL); -PALMAS_PDATA_INIT(smps8, 1050, 1050, tps65090_rails(DCDC2), 0, 1, 1, NORMAL); -PALMAS_PDATA_INIT(smps9, 2800, 2800, tps65090_rails(DCDC2), 1, 0, 0, NORMAL); -PALMAS_PDATA_INIT(ldo1, 2800, 2800, tps65090_rails(DCDC2), 0, 0, 1, 0); -PALMAS_PDATA_INIT(ldo2, 2800, 2800, tps65090_rails(DCDC2), 0, 0, 1, 0); -PALMAS_PDATA_INIT(ldo3, 1200, 1200, palmas_rails(smps3), 0, 0, 1, 0); -PALMAS_PDATA_INIT(ldo4, 1800, 1800, tps65090_rails(DCDC2), 0, 0, 0, 0); -PALMAS_PDATA_INIT(ldo6, 2850, 2850, tps65090_rails(DCDC2), 0, 0, 1, 0); -PALMAS_PDATA_INIT(ldo7, 2800, 2800, tps65090_rails(DCDC2), 0, 0, 1, 0); -PALMAS_PDATA_INIT(ldo8, 900, 900, tps65090_rails(DCDC3), 1, 1, 1, 0); -PALMAS_PDATA_INIT(ldo9, 1800, 3300, palmas_rails(smps9), 0, 0, 1, 0); -PALMAS_PDATA_INIT(ldoln, 3300, 3300, tps65090_rails(DCDC1), 0, 0, 1, 0); -PALMAS_PDATA_INIT(ldousb, 3300, 3300, tps65090_rails(DCDC1), 0, 0, 1, 0); +PALMAS_PDATA_INIT(smps12, 1350, 1350, tps65090_rails(DCDC3), 0, 0, 0, NORMAL, 0); +PALMAS_PDATA_INIT(smps3, 1800, 1800, tps65090_rails(DCDC3), 0, 0, 0, NORMAL, 0); +PALMAS_PDATA_INIT(smps45, 900, 1400, tps65090_rails(DCDC2), 1, 1, 0, NORMAL, 0); +PALMAS_PDATA_INIT(smps457, 900, 1400, tps65090_rails(DCDC2), 1, 1, 0, NORMAL, 0); +PALMAS_PDATA_INIT(smps8, 1050, 1050, tps65090_rails(DCDC2), 0, 1, 1, NORMAL, 0); +PALMAS_PDATA_INIT(smps9, 2800, 2800, tps65090_rails(DCDC2), 1, 0, 0, NORMAL, 0); +PALMAS_PDATA_INIT(ldo1, 2800, 2800, tps65090_rails(DCDC2), 0, 0, 1, 0, 0); +PALMAS_PDATA_INIT(ldo2, 2800, 2800, tps65090_rails(DCDC2), 0, 0, 1, 0, 0); +PALMAS_PDATA_INIT(ldo3, 1200, 1200, palmas_rails(smps3), 0, 0, 1, 0, 0); +PALMAS_PDATA_INIT(ldo4, 1800, 1800, tps65090_rails(DCDC2), 0, 0, 0, 0, 0); +PALMAS_PDATA_INIT(ldo6, 2850, 2850, tps65090_rails(DCDC2), 0, 0, 1, 0, 0); +PALMAS_PDATA_INIT(ldo7, 2800, 2800, tps65090_rails(DCDC2), 0, 0, 1, 0, 0); +PALMAS_PDATA_INIT(ldo8, 900, 900, tps65090_rails(DCDC3), 1, 1, 1, 0, 0); +PALMAS_PDATA_INIT(ldo9, 1800, 3300, palmas_rails(smps9), 0, 0, 1, 0, 0); +PALMAS_PDATA_INIT(ldoln, 3300, 3300, tps65090_rails(DCDC1), 0, 0, 1, 0, 0); +PALMAS_PDATA_INIT(ldousb, 3300, 3300, tps65090_rails(DCDC1), 0, 0, 1, 0, 0); #define PALMAS_REG_PDATA(_sname) ®_idata_##_sname diff --git a/arch/arm/mach-tegra/board-pluto-power.c b/arch/arm/mach-tegra/board-pluto-power.c index c766903dd466..b2f2a1409be5 100644 --- a/arch/arm/mach-tegra/board-pluto-power.c +++ b/arch/arm/mach-tegra/board-pluto-power.c @@ -218,26 +218,26 @@ static struct regulator_consumer_supply palmas_regen2_supply[] = { REGULATOR_SUPPLY("vdd_mic", NULL), }; -PALMAS_PDATA_INIT(smps123, 900, 1300, NULL, 0, 0, 0, NORMAL); -PALMAS_PDATA_INIT(smps45, 900, 1400, NULL, 0, 0, 0, NORMAL); -PALMAS_PDATA_INIT(smps6, 850, 850, NULL, 0, 0, 1, NORMAL); -PALMAS_PDATA_INIT(smps7, 1200, 1200, NULL, 0, 0, 1, NORMAL); -PALMAS_PDATA_INIT(smps8, 1800, 1800, NULL, 1, 1, 1, NORMAL); -PALMAS_PDATA_INIT(smps9, 2800, 2800, NULL, 1, 0, 1, NORMAL); -PALMAS_PDATA_INIT(smps10, 5000, 5000, NULL, 0, 0, 0, 0); -PALMAS_PDATA_INIT(ldo1, 1050, 1050, palmas_rails(smps7), 0, 0, 1, 0); -PALMAS_PDATA_INIT(ldo2, 2800, 3000, NULL, 0, 0, 0, 0); -PALMAS_PDATA_INIT(ldo3, 1200, 1200, palmas_rails(smps8), 0, 1, 1, 0); -PALMAS_PDATA_INIT(ldo4, 900, 3300, NULL, 0, 0, 0, 0); -PALMAS_PDATA_INIT(ldo5, 2700, 2700, NULL, 0, 0, 1, 0); -PALMAS_PDATA_INIT(ldo6, 3000, 3000, NULL, 1, 1, 1, 0); -PALMAS_PDATA_INIT(ldo7, 2800, 2800, NULL, 0, 0, 1, 0); -PALMAS_PDATA_INIT(ldo8, 900, 900, NULL, 1, 1, 1, 0); -PALMAS_PDATA_INIT(ldo9, 1800, 3300, palmas_rails(smps9), 0, 0, 1, 0); -PALMAS_PDATA_INIT(ldoln, 2700, 2700, NULL, 0, 0, 1, 0); -PALMAS_PDATA_INIT(ldousb, 3300, 3300, NULL, 0, 0, 1, 0); -PALMAS_PDATA_INIT(regen1, 4300, 4300, NULL, 0, 0, 0, 0); -PALMAS_PDATA_INIT(regen2, 4300, 4300, palmas_rails(smps8), 0, 0, 0, 0); +PALMAS_PDATA_INIT(smps123, 900, 1300, NULL, 0, 0, 0, NORMAL, 0); +PALMAS_PDATA_INIT(smps45, 900, 1400, NULL, 0, 0, 0, NORMAL, 0); +PALMAS_PDATA_INIT(smps6, 850, 850, NULL, 0, 0, 1, NORMAL, 0); +PALMAS_PDATA_INIT(smps7, 1200, 1200, NULL, 0, 0, 1, NORMAL, 0); +PALMAS_PDATA_INIT(smps8, 1800, 1800, NULL, 1, 1, 1, NORMAL, 0); +PALMAS_PDATA_INIT(smps9, 2800, 2800, NULL, 1, 0, 1, NORMAL, 0); +PALMAS_PDATA_INIT(smps10, 5000, 5000, NULL, 0, 0, 0, 0, 0); +PALMAS_PDATA_INIT(ldo1, 1050, 1050, palmas_rails(smps7), 0, 0, 1, 0, 0); +PALMAS_PDATA_INIT(ldo2, 2800, 3000, NULL, 0, 0, 0, 0, 0); +PALMAS_PDATA_INIT(ldo3, 1200, 1200, palmas_rails(smps8), 0, 1, 1, 0, 0); +PALMAS_PDATA_INIT(ldo4, 900, 3300, NULL, 0, 0, 0, 0, 0); +PALMAS_PDATA_INIT(ldo5, 2700, 2700, NULL, 0, 0, 1, 0, 0); +PALMAS_PDATA_INIT(ldo6, 3000, 3000, NULL, 1, 1, 1, 0, 0); +PALMAS_PDATA_INIT(ldo7, 2800, 2800, NULL, 0, 0, 1, 0, 0); +PALMAS_PDATA_INIT(ldo8, 900, 900, NULL, 1, 1, 1, 0, 0); +PALMAS_PDATA_INIT(ldo9, 1800, 3300, palmas_rails(smps9), 0, 0, 1, 0, 0); +PALMAS_PDATA_INIT(ldoln, 2700, 2700, NULL, 0, 0, 1, 0, 0); +PALMAS_PDATA_INIT(ldousb, 3300, 3300, NULL, 0, 0, 1, 0, 0); +PALMAS_PDATA_INIT(regen1, 4300, 4300, NULL, 0, 0, 0, 0, 0); +PALMAS_PDATA_INIT(regen2, 4300, 4300, palmas_rails(smps8), 0, 0, 0, 0, 0); #define PALMAS_REG_PDATA(_sname) ®_idata_##_sname diff --git a/arch/arm/mach-tegra/board-pmu-defines.h b/arch/arm/mach-tegra/board-pmu-defines.h index 3f2579830415..9d1a5e52d5d6 100644 --- a/arch/arm/mach-tegra/board-pmu-defines.h +++ b/arch/arm/mach-tegra/board-pmu-defines.h @@ -22,7 +22,7 @@ #define REGULATOR_MODE_0 0 #define PALMAS_PDATA_INIT(_name, _minmv, _maxmv, _supply_reg, \ - _always_on, _boot_on, _apply_uv, _init_mode) \ + _always_on, _boot_on, _apply_uv, _init_mode, _sleep_mode) \ static struct regulator_init_data reg_idata_##_name = { \ .constraints = { \ .name = palmas_rails(_name), \ @@ -37,6 +37,7 @@ .boot_on = _boot_on, \ .apply_uV = _apply_uv, \ .initial_mode = REGULATOR_MODE_##_init_mode, \ + .sleep_mode = REGULATOR_MODE_##_sleep_mode, \ }, \ .num_consumer_supplies = \ ARRAY_SIZE(palmas_##_name##_supply), \ diff --git a/arch/arm/mach-tegra/board-roth-power.c b/arch/arm/mach-tegra/board-roth-power.c index a8c4bd6712b9..94caff776175 100644 --- a/arch/arm/mach-tegra/board-roth-power.c +++ b/arch/arm/mach-tegra/board-roth-power.c @@ -286,21 +286,21 @@ static struct regulator_consumer_supply palmas_regen2_supply[] = { REGULATOR_SUPPLY("vdd_5v0_sys", NULL), }; -PALMAS_PDATA_INIT(smps12, 1200, 1500, NULL, 0, 0, 0, NORMAL); -PALMAS_PDATA_INIT(smps3, 1800, 1800, NULL, 0, 0, 0, NORMAL); -PALMAS_PDATA_INIT(smps45, 900, 1400, NULL, 1, 1, 0, NORMAL); -PALMAS_PDATA_INIT(smps457, 900, 1400, NULL, 1, 1, 0, NORMAL); -PALMAS_PDATA_INIT(smps8, 1050, 1050, NULL, 1, 1, 1, NORMAL); -PALMAS_PDATA_INIT(smps9, 2800, 2800, NULL, 0, 0, 0, NORMAL); -PALMAS_PDATA_INIT(smps10, 5000, 5000, NULL, 0, 0, 0, 0); -PALMAS_PDATA_INIT(ldo2, 2800, 2800, NULL, 0, 0, 1, 0); -PALMAS_PDATA_INIT(ldo3, 1200, 1200, NULL, 1, 1, 1, 0); -PALMAS_PDATA_INIT(ldo6, 2850, 2850, NULL, 0, 0, 1, 0); -PALMAS_PDATA_INIT(ldo8, 900, 900, NULL, 1, 1, 1, 0); -PALMAS_PDATA_INIT(ldo9, 1800, 3300, NULL, 0, 0, 1, 0); -PALMAS_PDATA_INIT(ldousb, 3300, 3300, NULL, 0, 0, 1, 0); -PALMAS_PDATA_INIT(regen1, 3300, 3300, NULL, 0, 0, 0, 0); -PALMAS_PDATA_INIT(regen2, 5000, 5000, NULL, 0, 0, 0, 0); +PALMAS_PDATA_INIT(smps12, 1200, 1500, NULL, 0, 0, 0, 0, NORMAL); +PALMAS_PDATA_INIT(smps3, 1800, 1800, NULL, 0, 0, 0, NORMAL, 0); +PALMAS_PDATA_INIT(smps45, 900, 1400, NULL, 1, 1, 0, 0, 0); +PALMAS_PDATA_INIT(smps457, 900, 1400, NULL, 1, 1, 0, 0, 0); +PALMAS_PDATA_INIT(smps8, 1050, 1050, NULL, 1, 1, 1, NORMAL, 0); +PALMAS_PDATA_INIT(smps9, 2800, 2800, NULL, 0, 0, 0, NORMAL, 0); +PALMAS_PDATA_INIT(smps10, 5000, 5000, NULL, 0, 0, 0, 0, 0); +PALMAS_PDATA_INIT(ldo2, 2800, 2800, NULL, 0, 0, 1, 0, 0); +PALMAS_PDATA_INIT(ldo3, 1200, 1200, NULL, 1, 1, 1, 0, 0); +PALMAS_PDATA_INIT(ldo6, 2850, 2850, NULL, 0, 0, 1, 0, 0); +PALMAS_PDATA_INIT(ldo8, 900, 900, NULL, 1, 1, 1, 0, 0); +PALMAS_PDATA_INIT(ldo9, 1800, 3300, NULL, 0, 0, 1, 0, 0); +PALMAS_PDATA_INIT(ldousb, 3300, 3300, NULL, 0, 0, 1, 0, 0); +PALMAS_PDATA_INIT(regen1, 3300, 3300, NULL, 0, 0, 0, 0, 0); +PALMAS_PDATA_INIT(regen2, 5000, 5000, NULL, 0, 0, 0, 0, 0); #define PALMAS_REG_PDATA(_sname) ®_idata_##_sname static struct regulator_init_data *roth_reg_data[PALMAS_NUM_REGS] = { @@ -342,14 +342,14 @@ static struct regulator_init_data *roth_reg_data[PALMAS_NUM_REGS] = { .vsel = _vsel, \ } -PALMAS_REG_INIT(smps12, 0, 0, 0, 0, 0); +PALMAS_REG_INIT(smps12, 0, PALMAS_EXT_CONTROL_NSLEEP, 0, 0, 0); PALMAS_REG_INIT(smps123, 0, 0, 0, 0, 0); PALMAS_REG_INIT(smps3, 0, 0, 0, 0, 0); PALMAS_REG_INIT(smps45, 0, PALMAS_EXT_CONTROL_NSLEEP, 0, 0, 0); PALMAS_REG_INIT(smps457, 0, PALMAS_EXT_CONTROL_NSLEEP, 0, 0, 0); PALMAS_REG_INIT(smps6, 0, 0, 0, 0, 0); PALMAS_REG_INIT(smps7, 0, 0, 0, 0, 0); -PALMAS_REG_INIT(smps8, 0, 0, 0, 0, 0); +PALMAS_REG_INIT(smps8, 0, PALMAS_EXT_CONTROL_NSLEEP, 0, 0, 0); PALMAS_REG_INIT(smps9, 0, 0, 0, 0, 0); PALMAS_REG_INIT(smps10, 0, 0, 0, 0, 0); PALMAS_REG_INIT(ldo1, 0, 0, 0, 0, 0); @@ -583,11 +583,6 @@ int __init roth_palmas_regulator_init(void) pmic_platform.reg_init[i] = roth_reg_init[i]; } - /* Set SMPS12 and 3 to normal mode if it is not there. */ - reg_idata_smps12.constraints.initial_mode = REGULATOR_MODE_NORMAL; - reg_idata_smps3.constraints.initial_mode = REGULATOR_MODE_NORMAL; - reg_idata_smps9.constraints.initial_mode = REGULATOR_MODE_NORMAL; - i2c_register_board_info(4, palma_device, ARRAY_SIZE(palma_device)); return 0; |