xref: /rk3399_ARM-atf/include/plat/arm/common/arm_sip_svc.h (revision 6873088c2cd6983025b6777d4c3bde912eade571)
1f10796a0Sdp-arm /*
2*6873088cSJ-Alves  * Copyright (c) 2016-2019,2021-2024, Arm Limited and Contributors. All rights reserved.
3f10796a0Sdp-arm  *
482cb2c1aSdp-arm  * SPDX-License-Identifier: BSD-3-Clause
5f10796a0Sdp-arm  */
6f10796a0Sdp-arm 
715b94cc1SAntonio Nino Diaz #ifndef ARM_SIP_SVC_H
815b94cc1SAntonio Nino Diaz #define ARM_SIP_SVC_H
915b94cc1SAntonio Nino Diaz 
1009d40e0eSAntonio Nino Diaz #include <lib/utils_def.h>
11f10796a0Sdp-arm 
12f10796a0Sdp-arm /* SMC function IDs for SiP Service queries */
13f10796a0Sdp-arm 
1415b94cc1SAntonio Nino Diaz #define ARM_SIP_SVC_CALL_COUNT		U(0x8200ff00)
1515b94cc1SAntonio Nino Diaz #define ARM_SIP_SVC_UID			U(0x8200ff01)
1615b94cc1SAntonio Nino Diaz /*					U(0x8200ff02) is reserved */
1715b94cc1SAntonio Nino Diaz #define ARM_SIP_SVC_VERSION		U(0x8200ff03)
18f10796a0Sdp-arm 
19992f091bSAmbroise Vincent /* PMF_SMC_GET_TIMESTAMP_32		0x82000010 */
20992f091bSAmbroise Vincent /* PMF_SMC_GET_TIMESTAMP_64		0xC2000010 */
21992f091bSAmbroise Vincent 
22b10d4499SJeenu Viswambharan /* Function ID for requesting state switch of lower EL */
2315b94cc1SAntonio Nino Diaz #define ARM_SIP_SVC_EXE_STATE_SWITCH	U(0x82000020)
24b10d4499SJeenu Viswambharan 
25992f091bSAmbroise Vincent /* DEBUGFS_SMC_32			0x82000030U */
26992f091bSAmbroise Vincent /* DEBUGFS_SMC_64			0xC2000030U */
27992f091bSAmbroise Vincent 
2876a21174SMikael Olsson /*
29b139f1cfSMikael Olsson  * Arm(R) Ethos(TM)-N NPU SiP SMC function IDs
3076a21174SMikael Olsson  * 0xC2000050-0xC200005F
3176a21174SMikael Olsson  * 0x82000050-0x8200005F
3276a21174SMikael Olsson  */
3376a21174SMikael Olsson 
34f10796a0Sdp-arm /* ARM SiP Service Calls version numbers */
3515b94cc1SAntonio Nino Diaz #define ARM_SIP_SVC_VERSION_MAJOR		U(0x0)
3615b94cc1SAntonio Nino Diaz #define ARM_SIP_SVC_VERSION_MINOR		U(0x2)
37f10796a0Sdp-arm 
3820324013SMadhukar Pappireddy /*
3920324013SMadhukar Pappireddy  * Arm SiP SMC calls that are primarily used for testing purposes.
4020324013SMadhukar Pappireddy  */
4120324013SMadhukar Pappireddy #if PLAT_TEST_SPM
4220324013SMadhukar Pappireddy #define ARM_SIP_SET_INTERRUPT_PENDING	U(0x82000100)
4320324013SMadhukar Pappireddy #endif
4420324013SMadhukar Pappireddy 
45*6873088cSJ-Alves /**
46*6873088cSJ-Alves  * Arm SiP Service Call for the SPM to leverage RME to protect a give memory range.
47*6873088cSJ-Alves  * Protected memory range is one whose PAS was made secure.
48*6873088cSJ-Alves  * Unprotect relates to reverting a protect operation.
49*6873088cSJ-Alves  */
50*6873088cSJ-Alves #if SPMD_SPM_AT_SEL2 && ENABLE_RME
51*6873088cSJ-Alves #define PLAT_PROTECT_MEM_SMC64 0xC2000101
52*6873088cSJ-Alves #define PLAT_UNPROTECT_MEM_SMC64 0xC2000102
53*6873088cSJ-Alves #endif
54*6873088cSJ-Alves 
557a2130b4SMadhukar Pappireddy /* SiP handler specific to each Arm platform. */
567a2130b4SMadhukar Pappireddy uintptr_t plat_arm_sip_handler(uint32_t smc_fid,
577a2130b4SMadhukar Pappireddy 				u_register_t x1,
587a2130b4SMadhukar Pappireddy 				u_register_t x2,
597a2130b4SMadhukar Pappireddy 				u_register_t x3,
607a2130b4SMadhukar Pappireddy 				u_register_t x4,
617a2130b4SMadhukar Pappireddy 				void *cookie,
627a2130b4SMadhukar Pappireddy 				void *handle,
637a2130b4SMadhukar Pappireddy 				u_register_t flags);
647a2130b4SMadhukar Pappireddy 
6515b94cc1SAntonio Nino Diaz #endif /* ARM_SIP_SVC_H */
66