summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Courbot <acourbot@nvidia.com>2011-07-19 16:50:27 +0900
committerVarun Colbert <vcolbert@nvidia.com>2011-08-18 17:52:47 -0700
commita4be690ae1ef80d7084d263a63efe8c1654e0971 (patch)
tree256638faeeff9b131ae8249c6f40955d3c144e72
parentf01d95e909020cd09bc5f5c4d07065dca5d7454b (diff)
tegra: power: restore cpufreq governor target
Restore the target cpu frequency on exit from suspend. Also save target frequency if set when the device is suspended. Bug 841559 Change-Id: I98f394ef0292147c61898b5e216d859e3a26a0b5 Signed-off-by: Alexandre Courbot <acourbot@nvidia.com> Reviewed-on: http://git-master/r/47772 Reviewed-by: Aleksandr Frid <afrid@nvidia.com> Reviewed-by: Scott Williams <scwilliams@nvidia.com>
-rw-r--r--arch/arm/mach-tegra/cpu-tegra.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/arch/arm/mach-tegra/cpu-tegra.c b/arch/arm/mach-tegra/cpu-tegra.c
index c5a1f41e7f11..6bd85a58f3ed 100644
--- a/arch/arm/mach-tegra/cpu-tegra.c
+++ b/arch/arm/mach-tegra/cpu-tegra.c
@@ -270,17 +270,16 @@ static int tegra_target(struct cpufreq_policy *policy,
mutex_lock(&tegra_cpu_lock);
- if (is_suspended) {
- ret = -EBUSY;
- goto out;
- }
-
cpufreq_frequency_table_target(policy, freq_table, target_freq,
relation, &idx);
freq = freq_table[idx].frequency;
target_cpu_speed[policy->cpu] = freq;
+
+ if (is_suspended)
+ goto out;
+
new_speed = throttle_governor_speed(tegra_cpu_highest_speed());
ret = tegra_update_cpu_speed(new_speed);
out:
@@ -299,6 +298,10 @@ static int tegra_pm_notify(struct notifier_block *nb, unsigned long event,
freq_table[0].frequency);
tegra_update_cpu_speed(freq_table[0].frequency);
} else if (event == PM_POST_SUSPEND) {
+ unsigned int freq = tegra_cpu_highest_speed();
+ tegra_update_cpu_speed(freq);
+ pr_info("Tegra cpufreq resume: restoring frequency to %d kHz\n",
+ freq);
is_suspended = false;
}
mutex_unlock(&tegra_cpu_lock);