xref: /openbsd/sys/dev/fdt/pscivar.h (revision 07eca602)
188672784Skettenis /* Public Domain */
288672784Skettenis 
388672784Skettenis #ifndef _SYS_DEV_FDT_PSCIVAR_H_
488672784Skettenis #define _SYS_DEV_FDT_PSCIVAR_H_
588672784Skettenis 
645584b64Skettenis #define PSCI_SUCCESS		0
745584b64Skettenis #define PSCI_NOT_SUPPORTED	-1
845584b64Skettenis 
916569a75Spatrick #define PSCI_METHOD_NONE	0
1016569a75Spatrick #define PSCI_METHOD_HVC		1
1116569a75Spatrick #define PSCI_METHOD_SMC		2
1216569a75Spatrick 
13*07eca602Skettenis #define PSCI_VERSION		0x84000000
14*07eca602Skettenis #ifdef __LP64__
15*07eca602Skettenis #define CPU_SUSPEND		0xc4000001
16*07eca602Skettenis #else
17*07eca602Skettenis #define CPU_SUSPEND		0x84000001
18*07eca602Skettenis #endif
19*07eca602Skettenis #define CPU_OFF			0x84000002
20*07eca602Skettenis #ifdef __LP64__
21*07eca602Skettenis #define CPU_ON			0xc4000003
22*07eca602Skettenis #else
23*07eca602Skettenis #define CPU_ON			0x84000003
24*07eca602Skettenis #endif
25*07eca602Skettenis #define SYSTEM_OFF		0x84000008
26*07eca602Skettenis #define SYSTEM_RESET		0x84000009
27*07eca602Skettenis #define PSCI_FEATURES		0x8400000a
28*07eca602Skettenis #ifdef __LP64__
29*07eca602Skettenis #define SYSTEM_SUSPEND		0xc400000e
30*07eca602Skettenis #else
31*07eca602Skettenis #define SYSTEM_SUSPEND		0x8400000e
32*07eca602Skettenis #endif
33*07eca602Skettenis 
34*07eca602Skettenis #define PSCI_FEATURE_POWER_STATE_EXT		(1 << 1)
35*07eca602Skettenis #define  PSCI_POWER_STATE_POWERDOWN		(1 << 16)
36*07eca602Skettenis #define  PSCI_POWER_STATE_EXT_POWERDOWN		(1 << 30)
37*07eca602Skettenis 
38149f7d98Skettenis int	psci_can_suspend(void);
39149f7d98Skettenis 
40149f7d98Skettenis int32_t	psci_system_suspend(register_t, register_t);
4145584b64Skettenis int32_t	psci_cpu_on(register_t, register_t, register_t);
42149f7d98Skettenis int32_t	psci_cpu_off(void);
435f4ad52dSkettenis int32_t	psci_cpu_suspend(register_t, register_t, register_t);
44*07eca602Skettenis int32_t	psci_features(uint32_t);
45cdcef956Skettenis void	psci_flush_bp(void);
4616569a75Spatrick int	psci_method(void);
4788672784Skettenis 
482fb1186fSkettenis int32_t	smccc(uint32_t, register_t, register_t, register_t);
492fb1186fSkettenis 
508291c3f1Skettenis void	smccc_enable_arch_workaround_2(void);
518291c3f1Skettenis int	smccc_needs_arch_workaround_3(void);
528291c3f1Skettenis 
5388672784Skettenis #endif /* _SYS_DEV_FDT_PSCIVAR_H_ */
54