aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnders Larsen <al@alarsen.net>2010-10-07 20:44:15 +0100
committerRussell King <rmk+kernel@arm.linux.org.uk>2010-10-08 10:00:36 +0100
commit5c189208b606a85b4e97109af70d59f10a42fdfd (patch)
treea39e52ce6cb5d2f0ef1e9b4df50097f2574c2fc8
parentcdaf9a2f280b25dd2fb1e04da5d3899411766e1b (diff)
downloadmrst-s0i3-test-5c189208b606a85b4e97109af70d59f10a42fdfd.tar.gz
mrst-s0i3-test-5c189208b606a85b4e97109af70d59f10a42fdfd.tar.xz
mrst-s0i3-test-5c189208b606a85b4e97109af70d59f10a42fdfd.zip
ARM: 6436/1: AT91: Fix power-saving in idle-mode on 926T processors
According to Atmel, their 926T processors (AT91 post RM9200) requires 'Wait for Interrupt' mode be entered right after disabling the processor clock in order to minimise current consumption when idle, so do both provided we're not running on a 920T (an RM9200). Furthermore, get rid of the #ifndef CONFIG_DEBUG_KERNEL, since arch_idle() can be turned off completely with the kernel parameter 'nohlt'. Cc: Andrew Victor <avictor.za@gmail.com> Signed-off-by: Anders Larsen <al@alarsen.net> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r--arch/arm/mach-at91/include/mach/system.h7
1 files changed, 3 insertions, 4 deletions
diff --git a/arch/arm/mach-at91/include/mach/system.h b/arch/arm/mach-at91/include/mach/system.h
index c80e090b367..ee8db152592 100644
--- a/arch/arm/mach-at91/include/mach/system.h
+++ b/arch/arm/mach-at91/include/mach/system.h
@@ -28,17 +28,16 @@
static inline void arch_idle(void)
{
-#ifndef CONFIG_DEBUG_KERNEL
/*
* Disable the processor clock. The processor will be automatically
* re-enabled by an interrupt or by a reset.
*/
at91_sys_write(AT91_PMC_SCDR, AT91_PMC_PCK);
-#else
+#ifndef CONFIG_CPU_ARM920T
/*
* Set the processor (CP15) into 'Wait for Interrupt' mode.
- * Unlike disabling the processor clock via the PMC (above)
- * this allows the processor to be woken via JTAG.
+ * Post-RM9200 processors need this in conjunction with the above
+ * to save power when idle.
*/
cpu_do_idle();
#endif