[AVR32] Put the chip in "stop" mode when halting the system
authorHaavard Skinnemoen <hskinnemoen@atmel.com>
Mon, 4 Dec 2006 11:01:36 +0000 (12:01 +0100)
committerHaavard Skinnemoen <hskinnemoen@atmel.com>
Fri, 8 Dec 2006 12:06:23 +0000 (13:06 +0100)
Make machine_halt() execute a sleep instruction to put the chip in
"stop" mode when the system is halted. This switches off all clocks
except the 32 kHz oscillator, which is needed for the RTC to keep
ticking.

Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
arch/avr32/kernel/process.c

index 317dc50945f231896ca079f382eebbfe67201cb4..0b4325946a41629cc7a4755a7c679311e85e688f 100644 (file)
@@ -38,6 +38,13 @@ void cpu_idle(void)
 
 void machine_halt(void)
 {
+       /*
+        * Enter Stop mode. The 32 kHz oscillator will keep running so
+        * the RTC will keep the time properly and the system will
+        * boot quickly.
+        */
+       asm volatile("sleep 3\n\t"
+                    "sub pc, -2");
 }
 
 void machine_power_off(void)