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