xref: /openbsd/sys/dev/fdt/pscivar.h (revision 4fb9ab68)
1 /* Public Domain */
2 
3 #ifndef _SYS_DEV_FDT_PSCIVAR_H_
4 #define _SYS_DEV_FDT_PSCIVAR_H_
5 
6 #define PSCI_SUCCESS		0
7 #define PSCI_NOT_SUPPORTED	-1
8 
9 #define PSCI_METHOD_NONE	0
10 #define PSCI_METHOD_HVC		1
11 #define PSCI_METHOD_SMC		2
12 
13 #define PSCI_VERSION		0x84000000
14 #ifdef __LP64__
15 #define CPU_SUSPEND		0xc4000001
16 #else
17 #define CPU_SUSPEND		0x84000001
18 #endif
19 #define CPU_OFF			0x84000002
20 #ifdef __LP64__
21 #define CPU_ON			0xc4000003
22 #else
23 #define CPU_ON			0x84000003
24 #endif
25 #define SYSTEM_OFF		0x84000008
26 #define SYSTEM_RESET		0x84000009
27 #define PSCI_FEATURES		0x8400000a
28 #ifdef __LP64__
29 #define SYSTEM_SUSPEND		0xc400000e
30 #else
31 #define SYSTEM_SUSPEND		0x8400000e
32 #endif
33 
34 #define PSCI_FEATURE_POWER_STATE_EXT		(1 << 1)
35 #define  PSCI_POWER_STATE_POWERDOWN		(1 << 16)
36 #define  PSCI_POWER_STATE_EXT_POWERDOWN		(1 << 30)
37 
38 int	psci_can_suspend(void);
39 
40 int32_t	psci_system_suspend(register_t, register_t);
41 int32_t	psci_cpu_on(register_t, register_t, register_t);
42 int32_t	psci_cpu_off(void);
43 int32_t	psci_cpu_suspend(register_t, register_t, register_t);
44 int32_t	psci_features(uint32_t);
45 void	psci_flush_bp(void);
46 int	psci_method(void);
47 
48 int32_t	smccc(uint32_t, register_t, register_t, register_t);
49 
50 void	smccc_enable_arch_workaround_2(void);
51 int	smccc_needs_arch_workaround_3(void);
52 
53 #endif /* _SYS_DEV_FDT_PSCIVAR_H_ */
54