xref: /rk3399_ARM-atf/include/plat/arm/common/arm_sip_svc.h (revision 7944421ba4dfd3c49a26d525a884d8408ef127a8)
1 /*
2  * Copyright (c) 2016-2019,2021-2024, Arm Limited and Contributors. All rights reserved.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #ifndef ARM_SIP_SVC_H
8 #define ARM_SIP_SVC_H
9 
10 #include <lib/utils_def.h>
11 
12 /* SMC function IDs for SiP Service queries */
13 
14 #define ARM_SIP_SVC_CALL_COUNT		U(0x8200ff00)
15 #define ARM_SIP_SVC_UID			U(0x8200ff01)
16 /*					U(0x8200ff02) is reserved */
17 #define ARM_SIP_SVC_VERSION		U(0x8200ff03)
18 
19 /* PMF_SMC_GET_TIMESTAMP_32		0x82000010 */
20 /* PMF_SMC_GET_TIMESTAMP_64		0xC2000010 */
21 
22 /* Function ID for requesting state switch of lower EL */
23 #define ARM_SIP_SVC_EXE_STATE_SWITCH	U(0x82000020)
24 
25 /* DEBUGFS_SMC_32			0x82000030U */
26 /* DEBUGFS_SMC_64			0xC2000030U */
27 
28 /*
29  * Arm(R) Ethos(TM)-N NPU SiP SMC function IDs
30  * 0xC2000050-0xC200005F
31  * 0x82000050-0x8200005F
32  */
33 
34 /* ARM SiP Service Calls version numbers */
35 #define ARM_SIP_SVC_VERSION_MAJOR		U(0x0)
36 #define ARM_SIP_SVC_VERSION_MINOR		U(0x2)
37 
38 /*
39  * Arm SiP SMC calls that are primarily used for testing purposes.
40  */
41 #if PLAT_TEST_SPM
42 #define ARM_SIP_SET_INTERRUPT_PENDING	U(0x82000100)
43 #endif
44 
45 /**
46  * Arm SiP Service Call for the SPM to leverage RME to protect a give memory range.
47  * Protected memory range is one whose PAS was made secure.
48  * Unprotect relates to reverting a protect operation.
49  */
50 #if SPMD_SPM_AT_SEL2 && ENABLE_RME
51 #define PLAT_PROTECT_MEM_SMC64 0xC2000101
52 #define PLAT_UNPROTECT_MEM_SMC64 0xC2000102
53 #endif
54 
55 /* SiP handler specific to each Arm platform. */
56 uintptr_t plat_arm_sip_handler(uint32_t smc_fid,
57 				u_register_t x1,
58 				u_register_t x2,
59 				u_register_t x3,
60 				u_register_t x4,
61 				void *cookie,
62 				void *handle,
63 				u_register_t flags);
64 
65 #endif /* ARM_SIP_SVC_H */
66