summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Courbot <acourbot@nvidia.com>2011-07-19 16:50:27 +0900
committerNiket Sirsi <nsirsi@nvidia.com>2011-07-20 17:09:17 -0700
commit0e5879a1823cc7f0a80f6e4f81185265240b9f97 (patch)
treec52e802c715dd76945d51d8d11dfb4ed484b0c0c
parentc4d1c6a62dba8e530132f799fa65bd8bad28c25d (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: Id17a5945215e324d49e3d74b9603cc919a736c64 Signed-off-by: Alexandre Courbot <acourbot@nvidia.com> Reviewed-on: http://git-master/r/41710 Reviewed-by: Scott Williams <scwilliams@nvidia.com> Reviewed-by: Aleksandr Frid <afrid@nvidia.com> Reviewed-by: Bharat Nihalani <bnihalani@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);