summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorWen Yi <wyi@nvidia.com>2013-03-12 11:53:10 -0700
committerSimone Willett <swillett@nvidia.com>2013-03-14 11:11:41 -0700
commit239adc942c594b8ed65695073c9cb64a052d140f (patch)
treeceaf9812b4a28dd9df153af684ed1bca4a944c69 /arch
parentc2bf79c39937d0d379f264749b76e1bf0b72e0d4 (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.c32
-rw-r--r--arch/arm/mach-tegra/board-pluto-power.c40
-rw-r--r--arch/arm/mach-tegra/board-pmu-defines.h3
-rw-r--r--arch/arm/mach-tegra/board-roth-power.c39
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) &reg_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) &reg_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) &reg_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;