aboutsummaryrefslogtreecommitdiff
path: root/arch/arm/mach-vexpress/Kconfig
diff options
context:
space:
mode:
authorLorenzo Pieralisi <lorenzo.pieralisi@arm.com>2012-07-13 12:06:26 +0100
committerJon Medhurst <tixy@linaro.org>2013-07-01 11:05:11 +0100
commit88d444dfb9e5776c0234e37eeea5bf1a37f8a71f (patch)
treea9a37062d3cd70802d5622a8bc7ad957f010ab7d /arch/arm/mach-vexpress/Kconfig
parent59e1c2d0f95afdd94a05aeca24d70da87d8a500d (diff)
ARM: vexpress: add TC2 CPU idle PM
TC2 test-chip integrates power management circuitry and firmware that allows to remove voltage from both (A7 and A15) clusters when they are idle or more generically when the system is forced into shutdown mode. All CPUs in a cluster share the same voltage source so they cannot be shutdown independently. In order to take advantage of TC2 power management capabilities this patch implements a multi-cluster aware CPU idle implementation. It is based on coupled C-state concept provided by this code: http://lists.infradead.org/pipermail/linux-arm-kernel/2012-April/097084.html CPUs that are part of the same cluster are coupled using the mask provided by the MPIDR at boot. Once all CPUs hit the coupled barrier the primary CPU in the cluster (the one with MPIDR[7:0] == 0) waits for secondaries to clean their L1 and enter wfi. Then it cleans all cache levels, exits cluster coherency and starts the procedure to shutdown the respective cluster. All wake-up IRQ sources are enabled by default. Deep shutdown states for clusters are not enabled by default. To enabled them: A15 cluster echo 0 > /sys/kernel/debug/idle_debug/enable_idle A7 cluster echo 1 > /sys/kernel/debug/idle_debug/enable_idle Tested thoroughly using lookbusy to modulate system load and trigger idle states entry/exit.
Diffstat (limited to 'arch/arm/mach-vexpress/Kconfig')
-rw-r--r--arch/arm/mach-vexpress/Kconfig14
1 files changed, 14 insertions, 0 deletions
diff --git a/arch/arm/mach-vexpress/Kconfig b/arch/arm/mach-vexpress/Kconfig
index 5907e10c37f..6733f471931 100644
--- a/arch/arm/mach-vexpress/Kconfig
+++ b/arch/arm/mach-vexpress/Kconfig
@@ -54,6 +54,20 @@ config ARCH_VEXPRESS_CORTEX_A5_A9_ERRATA
build a working kernel, you must also enable relevant core
tile support or Flattened Device Tree based support options.
+config ARCH_VEXPRESS_TC2_PM
+ bool "Power Management Support for TC2 test-chip (EXPERIMENTAL)"
+ depends on CPU_IDLE && PM
+ select ARM_CPU_SUSPEND
+ select ARCH_NEEDS_CPU_IDLE_COUPLED
+ select ARM_SPC
+ select ARM_CCI
+ help
+ Provides code that enables CPU idle power management on the
+ TC2 testchip. It enables the CPU idle driver so that the kernel
+ can enter cluster power down states provided by the power
+ controller. Code is built on top of coupled C-state idle code
+ since all CPUs need to be idle to enter cluster shutdown.
+
config ARCH_VEXPRESS_CA9X4
bool "Versatile Express Cortex-A9x4 tile"