1 /*
2  * Copyright 2020 Carlo Caione <ccaione@baylibre.com>
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #ifndef ZEPHYR_INCLUDE_DRIVERS_PM_CPU_OPS_PSCI_H_
8 #define ZEPHYR_INCLUDE_DRIVERS_PM_CPU_OPS_PSCI_H_
9 
10 #include <zephyr/types.h>
11 #include <arch/arm64/arm-smccc.h>
12 #include <stddef.h>
13 #include <device.h>
14 
15 #ifdef __cplusplus
16 extern "C" {
17 #endif
18 
19 /* PSCI version decoding (independent of PSCI version) */
20 #define PSCI_VERSION_MAJOR_SHIFT		16
21 #define PSCI_VERSION_MINOR_MASK			\
22 		((1U << PSCI_VERSION_MAJOR_SHIFT) - 1)
23 #define PSCI_VERSION_MAJOR_MASK			~PSCI_VERSION_MINOR_MASK
24 
25 #define PSCI_VERSION_MAJOR(ver)			\
26 		(((ver) & PSCI_VERSION_MAJOR_MASK) >> PSCI_VERSION_MAJOR_SHIFT)
27 #define PSCI_VERSION_MINOR(ver)			\
28 		((ver) & PSCI_VERSION_MINOR_MASK)
29 
30 uint32_t psci_version(void);
31 
32 #ifdef __cplusplus
33 }
34 #endif
35 
36 #endif /* ZEPHYR_INCLUDE_DRIVERS_PM_CPU_OPS_PSCI_H_ */
37