import PULS_20160108
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / arch / arm / mach-mt8127 / include / mach / mt_dormant.h
1 #ifndef _MT_DORMANT_
2 #define _MT_DORMANT_
3
4 #define MAX_CPUS 1
5
6 /*
7 * Power status
8 */
9 #define STATUS_RUN 0
10 #define STATUS_STANDBY 1
11 #define STATUS_DORMANT 2
12 #define STATUS_SHUTDOWN 3
13 #define DORMANT_MODE STATUS_DORMANT
14 #define SHUTDOWN_MODE STATUS_SHUTDOWN
15
16 /*
17 * switch to amp / smp
18 */
19 #define switch_to_amp() \
20 do { \
21 isb(); \
22 dsb(); \
23 asm volatile( \
24 "MRC p15,0,r0,c1,c0,1\n" \
25 "BIC r0,r0,#0x00000040\n" \
26 "MCR p15,0,r0,c1,c0,1\n" \
27 : \
28 : \
29 :"r0" \
30 ); \
31 isb(); \
32 dsb(); \
33 } while (0)
34
35 #define switch_to_smp() \
36 do { \
37 isb(); \
38 dsb(); \
39 asm volatile( \
40 "MRC p15,0,r0,c1,c0,1\n" \
41 "ORR r0,r0,#0x00000040\n" \
42 "MCR p15,0,r0,c1,c0,1\n" \
43 : \
44 : \
45 :"r0" \
46 ); \
47 isb(); \
48 dsb(); \
49 } while (0)
50
51 /* input value:
52 * DORMANT_MODE / SHUTDOWN_MODE
53 *
54 * return value:
55 * 0 : execute wfi then power down
56 * 1 : wake up and resume
57 */
58 extern int cpu_power_down(int mode);
59 extern void cpu_dormant_init(void);
60 extern void cpu_check_dormant_abort(void);
61
62 #endif
63