| /* |
| * AVR32 AP Power Management. |
| * |
| * Copyright (C) 2008 Atmel Corporation |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License version 2 as |
| * published by the Free Software Foundation. |
| */ |
| #ifndef __ASM_AVR32_ARCH_PM_H |
| #define __ASM_AVR32_ARCH_PM_H |
| |
| /* Possible arguments to the "sleep" instruction */ |
| #define CPU_SLEEP_IDLE 0 |
| #define CPU_SLEEP_FROZEN 1 |
| #define CPU_SLEEP_STANDBY 2 |
| #define CPU_SLEEP_STOP 3 |
| #define CPU_SLEEP_STATIC 5 |
| |
| #ifndef __ASSEMBLY__ |
| extern void cpu_enter_idle(void); |
| extern void cpu_enter_standby(unsigned long sdramc_base); |
| |
| extern bool disable_idle_sleep; |
| |
| static inline void cpu_disable_idle_sleep(void) |
| { |
| disable_idle_sleep = true; |
| } |
| |
| static inline void cpu_enable_idle_sleep(void) |
| { |
| disable_idle_sleep = false; |
| } |
| |
| static inline void cpu_idle_sleep(void) |
| { |
| /* |
| * If we're using the COUNT and COMPARE registers for |
| * timekeeping, we can't use the IDLE state. |
| */ |
| if (disable_idle_sleep) |
| cpu_relax(); |
| else |
| cpu_enter_idle(); |
| } |
| |
| void intc_set_suspend_handler(unsigned long offset); |
| #endif |
| |
| #endif /* __ASM_AVR32_ARCH_PM_H */ |