summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorThara Gopinath <thara@ti.com>2011-01-21 15:32:30 +0530
committerNicolas Pitre <nicolas.pitre@linaro.org>2011-04-01 23:02:59 -0400
commitcec79c90b83c8a2e52d36f7d6a2e19541bb076a8 (patch)
tree00658d705812d1d4681dd6f7f16a26de115566c7 /arch
parentc4c60ba7d625a2a2a855c5a4b41e49b7691d7fb8 (diff)
OMAP: Disable Smartreflex across DVFS
This patch disables smartreflex for a particular voltage domain when the the voltage domain and the devices belonging to it is being scaled and re-enables it back once the scaling is done. Signed-off-by: Thara Gopinath <thara@ti.com> Signed-off-by: Vishwanath BS <vishwanath.bs@ti.com>
Diffstat (limited to 'arch')
-rwxr-xr-xarch/arm/mach-omap2/dvfs.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/dvfs.c b/arch/arm/mach-omap2/dvfs.c
index 1882f56807e..476e572c53f 100755
--- a/arch/arm/mach-omap2/dvfs.c
+++ b/arch/arm/mach-omap2/dvfs.c
@@ -530,6 +530,9 @@ static int omap_dvfs_voltage_scale(struct omap_vdd_dvfs_info *dvfs_info)
curr_volt = omap_voltage_get_nom_volt(voltdm);
+ /* Disable smartreflex module across voltage and frequency scaling */
+ omap_sr_disable(voltdm);
+
if (curr_volt == volt) {
is_volt_scaled = 1;
} else if (curr_volt < volt) {
@@ -537,6 +540,7 @@ static int omap_dvfs_voltage_scale(struct omap_vdd_dvfs_info *dvfs_info)
if (ret) {
pr_warning("%s: Unable to scale the %s to %ld volt\n",
__func__, voltdm->name, volt);
+ omap_sr_enable(voltdm);
mutex_unlock(&dvfs_info->scaling_mutex);
return ret;
}
@@ -571,6 +575,9 @@ static int omap_dvfs_voltage_scale(struct omap_vdd_dvfs_info *dvfs_info)
if (!is_volt_scaled && !ret)
omap_voltage_scale_vdd(voltdm, volt);
+ /* Enable Smartreflex module */
+ omap_sr_enable(voltdm);
+
mutex_unlock(&dvfs_info->scaling_mutex);
/* calculate the voltages for dependent vdd's */