diff options
author | Alex Frid <afrid@nvidia.com> | 2011-02-05 01:11:13 -0800 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2011-11-30 21:42:20 -0800 |
commit | efe7de861db97bea6a3964e7c7f4d0b13c07d1c9 (patch) | |
tree | e68181e8ba7702e47bd96a6b692c6198afa72a04 /arch/arm/mach-tegra/pm.h | |
parent | c0f1802a8e2b91a5185c10bb0bf62a14154456a0 (diff) |
ARM: tegra: Add auto-hotplug support for Tegra3
Initial implementation of Tegra3 quad core CPU management. Add closed
control loop on top of cpufreq DFS. Target frequency range is bounded
by Fmax(Vnominal) for low power cluster - currently set to 456MHz, and
Fmax(Vminimum) for high power cluster - currently set to 356MHz.
When CPU frequency is scaled below the target range, slave high power
CPUs are gradually brought down and eventually CPU is switched to the
low power cluster.
When CPU frequency is scaled above the target range, CPU is switched
to the high power cluster and slave high power CPUs are gradually
brought up.
The auto hotplug support is disabled on boot. It can be explicitly
enabled via sysfs interface.
Original-Change-Id: Ie0e5cf1f334d9c53932db05950cfcf5addd271d7
Reviewed-on: http://git-master/r/18500
Reviewed-by: Aleksandr Frid <afrid@nvidia.com>
Tested-by: Aleksandr Frid <afrid@nvidia.com>
Reviewed-by: Jonathan Mayo <jmayo@nvidia.com>
Reviewed-by: Scott Williams <scwilliams@nvidia.com>
Original-Change-Id: I86152069aa2bed73e0148a4bcab897811e1a5827
Rebase-Id: R9cf5f5f8868c659db526cb49ddf276a79d93ef1a
Diffstat (limited to 'arch/arm/mach-tegra/pm.h')
-rw-r--r-- | arch/arm/mach-tegra/pm.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/arch/arm/mach-tegra/pm.h b/arch/arm/mach-tegra/pm.h index e333cc476408..f5293ea8a85b 100644 --- a/arch/arm/mach-tegra/pm.h +++ b/arch/arm/mach-tegra/pm.h @@ -61,6 +61,19 @@ void __init tegra_init_suspend(struct tegra_suspend_platform_data *plat); void tegra_idle_lp2(void); +#if defined(CONFIG_TEGRA_AUTO_HOTPLUG) && defined(CONFIG_ARCH_TEGRA_3x_SOC) +int tegra_auto_hotplug_init(void); +void tegra_auto_hotplug_exit(void); +void tegra_auto_hotplug_governor(unsigned int cpu_freq); +#else +static inline int tegra_auto_hotplug_init(void) +{ return 0; } +static inline void tegra_auto_hotplug_exit(void) +{ } +static inline void tegra_auto_hotplug_governor(unsigned int cpu_freq) +{ } +#endif + u64 tegra_rtc_read_ms(void); /* |