36 lines
881 B
C
36 lines
881 B
C
#ifndef _ASM_POWERPC_CPUIDLE_H
|
|
#define _ASM_POWERPC_CPUIDLE_H
|
|
|
|
#ifdef CONFIG_PPC_POWERNV
|
|
/* Used in powernv idle state management */
|
|
#define PNV_THREAD_RUNNING 0
|
|
#define PNV_THREAD_NAP 1
|
|
#define PNV_THREAD_SLEEP 2
|
|
#define PNV_THREAD_WINKLE 3
|
|
#define PNV_CORE_IDLE_LOCK_BIT 0x100
|
|
#define PNV_CORE_IDLE_THREAD_BITS 0x0FF
|
|
|
|
#ifndef __ASSEMBLY__
|
|
extern u32 pnv_fastsleep_workaround_at_entry[];
|
|
extern u32 pnv_fastsleep_workaround_at_exit[];
|
|
|
|
extern u64 pnv_first_deep_stop_state;
|
|
#endif
|
|
|
|
#endif
|
|
|
|
/* Idle state entry routines */
|
|
#ifdef CONFIG_PPC_P7_NAP
|
|
#define IDLE_STATE_ENTER_SEQ(IDLE_INST) \
|
|
/* Magic NAP/SLEEP/WINKLE mode enter sequence */ \
|
|
std r0,0(r1); \
|
|
ptesync; \
|
|
ld r0,0(r1); \
|
|
1: cmpd cr0,r0,r0; \
|
|
bne 1b; \
|
|
IDLE_INST; \
|
|
b .
|
|
#endif /* CONFIG_PPC_P7_NAP */
|
|
|
|
#endif
|