From 6a1aa24e805fabf26efa11b2af0f0183ab1aeda4 Mon Sep 17 00:00:00 2001 From: Alex Frid Date: Thu, 21 Apr 2011 21:33:12 -0700 Subject: ARM: tegra: power: Check Tegra3 auto-hotplug speed balance When current CPU complex frequency is above target range: - bring new core on-line only if cpufreq governor requests for all already on-lined CPUs are above 50% of current CPU frequency - off-line one core (despite high pick request) if cpufreq governor requests for at least 2 on-lined CPUs are below 25% of current CPU frequency - do nothing if neither of the above conditions is true Original-Change-Id: I77e1bd543a8fadd51974f7d574f256a6e7e2979a Reviewed-on: http://git-master/r/29702 Reviewed-by: Aleksandr Frid Tested-by: Aleksandr Frid Reviewed-by: Diwakar Tundlam Tested-by: Diwakar Tundlam Reviewed-by: Scott Williams Rebase-Id: Rc5c717454d1e09ca97ccc79fff60cb33fcf854e9 --- arch/arm/mach-tegra/cpu-tegra.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'arch/arm/mach-tegra/cpu-tegra.c') diff --git a/arch/arm/mach-tegra/cpu-tegra.c b/arch/arm/mach-tegra/cpu-tegra.c index baf543674c3d..1d61146b50cc 100644 --- a/arch/arm/mach-tegra/cpu-tegra.c +++ b/arch/arm/mach-tegra/cpu-tegra.c @@ -362,6 +362,17 @@ static int tegra_update_cpu_speed(unsigned long rate) return 0; } +unsigned int tegra_count_slow_cpus(unsigned long speed_limit) +{ + unsigned int cnt = 0; + int i; + + for_each_online_cpu(i) + if (target_cpu_speed[i] <= speed_limit) + cnt++; + return cnt; +} + unsigned int tegra_get_slowest_cpu_n(void) { unsigned int cpu = nr_cpu_ids; unsigned long rate = ULONG_MAX; -- cgit v1.2.3