xref: /openbmc/linux/arch/powerpc/include/asm/cpuidle.h (revision c51d39010a1bccc9c1294e2d7c00005aefeb2b5c)
1 #ifndef _ASM_POWERPC_CPUIDLE_H
2 #define _ASM_POWERPC_CPUIDLE_H
3 
4 #ifdef CONFIG_PPC_POWERNV
5 /* Used in powernv idle state management */
6 #define PNV_THREAD_RUNNING              0
7 #define PNV_THREAD_NAP                  1
8 #define PNV_THREAD_SLEEP                2
9 #define PNV_THREAD_WINKLE               3
10 #define PNV_CORE_IDLE_LOCK_BIT          0x100
11 #define PNV_CORE_IDLE_THREAD_BITS       0x0FF
12 
13 #ifndef __ASSEMBLY__
14 extern u32 pnv_fastsleep_workaround_at_entry[];
15 extern u32 pnv_fastsleep_workaround_at_exit[];
16 
17 extern u64 pnv_first_deep_stop_state;
18 #endif
19 
20 #endif
21 
22 /* Idle state entry routines */
23 #ifdef	CONFIG_PPC_P7_NAP
24 #define	IDLE_STATE_ENTER_SEQ(IDLE_INST)				\
25 	/* Magic NAP/SLEEP/WINKLE mode enter sequence */	\
26 	std	r0,0(r1);					\
27 	ptesync;						\
28 	ld	r0,0(r1);					\
29 1:	cmpd	cr0,r0,r0;					\
30 	bne	1b;						\
31 	IDLE_INST;						\
32 	b	.
33 #endif /* CONFIG_PPC_P7_NAP */
34 
35 #endif
36