1 /* 2 * AVR32 AP Power Management. 3 * 4 * Copyright (C) 2008 Atmel Corporation 5 * 6 * This program is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License version 2 as 8 * published by the Free Software Foundation. 9 */ 10 #ifndef __ASM_AVR32_ARCH_PM_H 11 #define __ASM_AVR32_ARCH_PM_H 12 13 /* Possible arguments to the "sleep" instruction */ 14 #define CPU_SLEEP_IDLE 0 15 #define CPU_SLEEP_FROZEN 1 16 #define CPU_SLEEP_STANDBY 2 17 #define CPU_SLEEP_STOP 3 18 #define CPU_SLEEP_STATIC 5 19 20 #ifndef __ASSEMBLY__ 21 extern void cpu_enter_idle(void); 22 extern void cpu_enter_standby(unsigned long sdramc_base); 23 24 extern bool disable_idle_sleep; 25 cpu_disable_idle_sleep(void)26static inline void cpu_disable_idle_sleep(void) 27 { 28 disable_idle_sleep = true; 29 } 30 cpu_enable_idle_sleep(void)31static inline void cpu_enable_idle_sleep(void) 32 { 33 disable_idle_sleep = false; 34 } 35 cpu_idle_sleep(void)36static inline void cpu_idle_sleep(void) 37 { 38 /* 39 * If we're using the COUNT and COMPARE registers for 40 * timekeeping, we can't use the IDLE state. 41 */ 42 if (disable_idle_sleep) 43 cpu_relax(); 44 else 45 cpu_enter_idle(); 46 } 47 48 void intc_set_suspend_handler(unsigned long offset); 49 #endif 50 51 #endif /* __ASM_AVR32_ARCH_PM_H */ 52