aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
authorNishanth Menon <nm@ti.com>2011-08-05 20:39:27 -0500
committerNishanth Menon <nm@ti.com>2011-08-26 20:17:12 -0500
commit0024a2591228bdcd2a9c624b051dc92012b47961 (patch)
tree3ddef84f046e8ab1fb2ecb4283de6cec170a874c /arch/arm
parent11425145143860fad783841492de2f08dfa4ab79 (diff)
downloadkernel_samsung_tuna-0024a2591228bdcd2a9c624b051dc92012b47961.zip
kernel_samsung_tuna-0024a2591228bdcd2a9c624b051dc92012b47961.tar.gz
kernel_samsung_tuna-0024a2591228bdcd2a9c624b051dc92012b47961.tar.bz2
OMAP3+: PM: VC: Support PMICs' switch on time
While switching from low power states to powered states, the devices need a bit of startup time. This is characterized in the documentation. Provide a mechanism to add the delay Change-Id: Ia1bd2b6c5b903eca15852e666910e5b385d7884a Signed-off-by: Nishanth Menon <nm@ti.com>
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/mach-omap2/vc.c4
-rw-r--r--arch/arm/mach-omap2/voltage.h2
2 files changed, 6 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/vc.c b/arch/arm/mach-omap2/vc.c
index 6a9b8a9..cbf9a3b 100644
--- a/arch/arm/mach-omap2/vc.c
+++ b/arch/arm/mach-omap2/vc.c
@@ -495,6 +495,10 @@ static int __init omap_vc_setup_lp_time(struct voltagedomain *voltdm,
volt_ramptime = DIV_ROUND_UP(volt_drop, pmic->slew_rate);
volt_ramptime += OMAP_VC_I2C_ACK_DELAY;
+ /* many PMICs need additional time to switch back on */
+ if (!is_retention)
+ volt_ramptime += pmic->switch_on_time;
+
if (volt_ramptime < max_latency_for_prescaler)
pre_scaler = 0x0;
else
diff --git a/arch/arm/mach-omap2/voltage.h b/arch/arm/mach-omap2/voltage.h
index 806b8b2..0a9f529 100644
--- a/arch/arm/mach-omap2/voltage.h
+++ b/arch/arm/mach-omap2/voltage.h
@@ -190,6 +190,7 @@ struct omap_volt_data {
* @i2c_hscll_high: PMIC interface speed config for highspeed mode (T high)
* @i2c_scll_low: PMIC interface speed config for fullspeed mode (T low)
* @i2c_scll_high: PMIC interface speed config for fullspeed mode (T high)
+ * @switch_on_time: time taken for switch on the DCDC in uSec
*/
struct omap_voltdm_pmic {
int slew_rate;
@@ -199,6 +200,7 @@ struct omap_voltdm_pmic {
u32 ret_volt;
u32 off_volt;
u16 volt_setup_time;
+ u16 switch_on_time;
u8 vp_erroroffset;
u8 vp_vstepmin;
u8 vp_vstepmax;