diff options
author | Alexandre Courbot <acourbot@nvidia.com> | 2011-07-19 16:50:27 +0900 |
---|---|---|
committer | Niket Sirsi <nsirsi@nvidia.com> | 2011-07-20 17:09:17 -0700 |
commit | 0e5879a1823cc7f0a80f6e4f81185265240b9f97 (patch) | |
tree | c52e802c715dd76945d51d8d11dfb4ed484b0c0c | |
parent | c4d1c6a62dba8e530132f799fa65bd8bad28c25d (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.c | 13 |
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); |