瀏覽代碼

[AVR32] Put the chip in "stop" mode when halting the system

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>
Haavard Skinnemoen 18 年之前
父節點
當前提交
c2eb5090ee
共有 1 個文件被更改,包括 7 次插入0 次删除
  1. 7 0
      arch/avr32/kernel/process.c

+ 7 - 0
arch/avr32/kernel/process.c

@@ -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)