AT91: Fix power-saving in idle-mode on 926T processors
Peter Korsgaard
jacmet at sunsite.dk
Mon Jan 10 10:05:36 EST 2011
On Thu, Oct 7, 2010 at 9:44 PM, Anders Larsen <al at alarsen.net> wrote:
> 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'.
>
> Signed-off-by: Anders Larsen <al at alarsen.net>
> Cc: Andrew Victor <avictor.za at gmail.com>
Is there a known interaction with this and the JTAG controller? I
haven't had time to look closer into it yet, but with this applied I
can no longer access an Altera FPGA on a chain shared with a 9G45
through Quartus.
> +++ 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
--
Bye, Peter Korsgaard
More information about the linux-arm-kernel
mailing list