diff options
author | Haavard Skinnemoen <hskinnemoen@atmel.com> | 2008-02-24 07:51:38 -0500 |
---|---|---|
committer | Haavard Skinnemoen <haavard.skinnemoen@atmel.com> | 2008-07-02 05:05:01 -0400 |
commit | 02a00cf672a37292c31bbdde191712bfa40a4f1d (patch) | |
tree | 5588f7cd600056861fe1313abe7b47b9c051eab6 /include/asm-avr32/arch-at32ap/pm.h | |
parent | aa8e87ca619a3d1944874e85d74fda90607c73b9 (diff) |
avr32: Power Management support ("standby" and "mem" modes)
Implement Standby support. In this mode, we'll suspend all drivers,
put the SDRAM in self-refresh mode and switch off the HSB bus
("frozen" mode.)
Implement Suspend-to-mem support. In this mode, we suspend all
drivers, put the SDRAM into self-refresh mode and switch off all
internal clocks except the 32 kHz oscillator ("stop" mode.)
The lowest-level suspend code runs from a small portion of SRAM
allocated at startup time. This gets rid of a small potential race
with the SDRAM where we might try to enter self-refresh mode in the
middle of an icache burst. We also relocate all interrupt and
exception handlers to SRAM during the small window when we enter and
exit the low-power modes.
We don't need to do any special tricks to start and stop the PLL. The
main clock is automatically gated by hardware until the PLL is stable.
Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
Diffstat (limited to 'include/asm-avr32/arch-at32ap/pm.h')
-rw-r--r-- | include/asm-avr32/arch-at32ap/pm.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/include/asm-avr32/arch-at32ap/pm.h b/include/asm-avr32/arch-at32ap/pm.h index 356e43064903..979b355b77b6 100644 --- a/include/asm-avr32/arch-at32ap/pm.h +++ b/include/asm-avr32/arch-at32ap/pm.h | |||
@@ -19,6 +19,7 @@ | |||
19 | 19 | ||
20 | #ifndef __ASSEMBLY__ | 20 | #ifndef __ASSEMBLY__ |
21 | extern void cpu_enter_idle(void); | 21 | extern void cpu_enter_idle(void); |
22 | extern void cpu_enter_standby(unsigned long sdramc_base); | ||
22 | 23 | ||
23 | extern bool disable_idle_sleep; | 24 | extern bool disable_idle_sleep; |
24 | 25 | ||
@@ -43,6 +44,8 @@ static inline void cpu_idle_sleep(void) | |||
43 | else | 44 | else |
44 | cpu_enter_idle(); | 45 | cpu_enter_idle(); |
45 | } | 46 | } |
47 | |||
48 | void intc_set_suspend_handler(unsigned long offset); | ||
46 | #endif | 49 | #endif |
47 | 50 | ||
48 | #endif /* __ASM_AVR32_ARCH_PM_H */ | 51 | #endif /* __ASM_AVR32_ARCH_PM_H */ |