diff options
author | Ranjani <ra5478@freescale.com> | 2010-07-28 17:35:50 -0500 |
---|---|---|
committer | Ranjani <ra5478@freescale.com> | 2010-07-29 11:49:58 -0500 |
commit | cb7c256748e18917c89c7617642f8778f06b66c0 (patch) | |
tree | ab48c63342dd5a26287adb5b778724d7f46ab34b /arch | |
parent | 9fefd36353aeccd32d2531238753d87b705e431e (diff) |
ENGR00125682-1: MX50: Reduce power consumption in STOP mode.
Add support for disabling MX13892 regulators when the system is in
suspend. Lowered VDDA voltage to 0.95V in suspend state. Disabled NEON
SRPG.
Signed-off-by: Ranjani <ra5478@freescale.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-mx5/mx50_arm2_pmic_mc13892.c | 17 | ||||
-rw-r--r-- | arch/arm/mach-mx5/system.c | 4 |
2 files changed, 10 insertions, 11 deletions
diff --git a/arch/arm/mach-mx5/mx50_arm2_pmic_mc13892.c b/arch/arm/mach-mx5/mx50_arm2_pmic_mc13892.c index 66972b19d9ab..05b8462ade40 100644 --- a/arch/arm/mach-mx5/mx50_arm2_pmic_mc13892.c +++ b/arch/arm/mach-mx5/mx50_arm2_pmic_mc13892.c @@ -74,11 +74,7 @@ #define AUDIO_STBY_MASK (1 << 16) #define SD_STBY_MASK (1 << 19) -/* 0x92412 */ -#define REG_MODE_0_ALL_MASK (GEN1_STBY_MASK |\ - DIG_STBY_MASK | GEN2_STBY_MASK |\ - PLL_STBY_MASK) -/* 0x92082 */ +#define REG_MODE_0_ALL_MASK (DIG_STBY_MASK | GEN1_STBY_MASK) #define REG_MODE_1_ALL_MASK (CAM_STBY_MASK | VIDEO_STBY_MASK |\ AUDIO_STBY_MASK | SD_STBY_MASK) @@ -153,11 +149,17 @@ static struct regulator_init_data sw2_init = { static struct regulator_init_data sw3_init = { .constraints = { .name = "SW3", - .min_uV = mV_to_uV(1100), + .min_uV = mV_to_uV(900), .max_uV = mV_to_uV(1850), .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, .always_on = 1, .boot_on = 1, + .initial_state = PM_SUSPEND_MEM, + .state_mem = { + .uV = 950000, + .mode = REGULATOR_MODE_NORMAL, + .enabled = 1, + }, } }; @@ -329,8 +331,6 @@ static int mc13892_regulator_init(struct mc13892 *mc13892) unsigned int value, register_mask; printk("Initializing regulators for mx50 arm2.\n"); - /* TBD later. */ -#if 0 /* enable standby controll for all regulators */ pmic_read_reg(REG_MODE_0, &value, 0xffffff); value |= REG_MODE_0_ALL_MASK; @@ -339,7 +339,6 @@ static int mc13892_regulator_init(struct mc13892 *mc13892) pmic_read_reg(REG_MODE_1, &value, 0xffffff); value |= REG_MODE_1_ALL_MASK; pmic_write_reg(REG_MODE_1, value, 0xffffff); -#endif /* enable switch audo mode */ pmic_read_reg(REG_IDENTIFICATION, &value, 0xffffff); diff --git a/arch/arm/mach-mx5/system.c b/arch/arm/mach-mx5/system.c index 1954e97b2367..d0193ed50b86 100644 --- a/arch/arm/mach-mx5/system.c +++ b/arch/arm/mach-mx5/system.c @@ -92,10 +92,10 @@ void mxc_cpu_lp_set(enum mxc_cpu_pwr_mode mode) __raw_writel(plat_lpc, MXC_CORTEXA8_PLAT_LPC); __raw_writel(ccm_clpcr, MXC_CCM_CLPCR); - /* Need to fix this for MX53 and MX508 */ if (cpu_is_mx51()) __raw_writel(arm_srpgcr, MXC_SRPG_ARM_SRPGCR); - __raw_writel(arm_srpgcr, MXC_SRPG_NEON_SRPGCR); + if (!cpu_is_mx50()) + __raw_writel(arm_srpgcr, MXC_SRPG_NEON_SRPGCR); if (stop_mode) { __raw_writel(empgc0, MXC_SRPG_EMPGC0_SRPGCR); __raw_writel(empgc1, MXC_SRPG_EMPGC1_SRPGCR); |