diff options
author | Nishanth Menon <nm@ti.com> | 2012-08-01 20:54:32 +0800 |
---|---|---|
committer | Andy Green <andy.green@linaro.org> | 2012-08-01 20:54:32 +0800 |
commit | d8885bd7ea5ab10362848868010847e7ea51cfef (patch) | |
tree | b379df8ba046e8bbf42bc74495e14615ffe4c849 | |
parent | 4eb6e70d9176f05712ba650b30a9a0d50c4c02f5 (diff) |
OMAP3+: DVFS: ensure proper volt config if curr_volt==new_volt
At times when current_volt is same as new voltage, voltdm_scale is not
invoked. Since, vp_err_gain update and voltdm->curr_volt update is done
as part of vc_prescale and post_scale invoked as part of scale call,
these are left configured to old OPP values even if we are moving
to a new OPP.
Update these when we detect voltdm_scale is not being invoked, but
new OPP Vnom is detected.
Change-Id: Ic45d5a51edb4e5fe526529c6040cd014907b560e
Reported-by: Honda Kenji <x0092217@ti.com>
Reported-by: Maki Tanaka <m-tanaka1@ti.com>
Signed-off-by: Nishanth Menon <nm@ti.com>
-rw-r--r-- | arch/arm/mach-omap2/dvfs.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/dvfs.c b/arch/arm/mach-omap2/dvfs.c index 8dab888ff1b..ffd768ce574 100644 --- a/arch/arm/mach-omap2/dvfs.c +++ b/arch/arm/mach-omap2/dvfs.c @@ -865,6 +865,13 @@ static int _dvfs_scale(struct device *req_dev, struct device *target_dev, _dep_scale_domains(target_dev, vdd); } + /* Ensure that current voltage data pointer points to new volt */ + if (curr_volt == new_volt && omap_get_nominal_voltage(new_vdata) != + omap_get_nominal_voltage(curr_vdata)) { + voltdm->curr_volt = new_vdata; + omap_vp_update_errorgain(voltdm, new_vdata); + } + /* All clear.. go out gracefully */ goto out; |