summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/cpu-tegra3.c
diff options
context:
space:
mode:
authorAlex Frid <afrid@nvidia.com>2011-04-19 23:38:46 -0700
committerDan Willemsen <dwillemsen@nvidia.com>2011-11-30 21:42:32 -0800
commitab3a31fc1c2fdea90c0be47f40b603675103bc96 (patch)
tree5e5b052a67866a460dd303f14e5b27ede7649b29 /arch/arm/mach-tegra/cpu-tegra3.c
parentdf2009abf96414d23278f5342296d645b43a9fde (diff)
ARM: tegra: power: Update Tegra3 CPU auto-hotplug
- taking CPU core off-line: selected CPU with minimum load - switching from ULP to G CPU mode: set CPU clock to cpufreq target rate after the mode switch is completed Original-Change-Id: I9bf4d0f4b48c262cf678c603aac02043dd602674 Reviewed-on: http://git-master/r/28420 Reviewed-by: Varun Colbert <vcolbert@nvidia.com> Tested-by: Varun Colbert <vcolbert@nvidia.com> Original-Change-Id: I5a19be79dd8f8fe788637870a22cd34dcfea150e Rebase-Id: Re264ec676c5c2103f7738c9eab5f4e11a4344975
Diffstat (limited to 'arch/arm/mach-tegra/cpu-tegra3.c')
-rw-r--r--arch/arm/mach-tegra/cpu-tegra3.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/arm/mach-tegra/cpu-tegra3.c b/arch/arm/mach-tegra/cpu-tegra3.c
index 16b3d0b2fd65..88adea4fd792 100644
--- a/arch/arm/mach-tegra/cpu-tegra3.c
+++ b/arch/arm/mach-tegra/cpu-tegra3.c
@@ -190,7 +190,7 @@ static void tegra_auto_hotplug_work_func(struct work_struct *work)
case TEGRA_HP_IDLE:
break;
case TEGRA_HP_DOWN:
- cpu = cpumask_next(0, cpu_online_mask);
+ cpu = tegra_get_slowest_cpu_n();
if (cpu < nr_cpu_ids) {
up = false;
queue_delayed_work(
@@ -210,6 +210,8 @@ static void tegra_auto_hotplug_work_func(struct work_struct *work)
if(!clk_set_parent(cpu_clk, cpu_g_clk)) {
hp_stats_update(CONFIG_NR_CPUS, false);
hp_stats_update(0, true);
+ /* catch-up with governor target speed */
+ tegra_cpu_cap_highest_speed(NULL);
}
queue_delayed_work(
hotplug_wq, &hotplug_work, up2gn_delay);