xref: /rk3399_ARM-atf/services/std_svc/rmmd/trp/trp_private.h (revision 8b3a89faddca3a955324adc4b48c864781e4c802)
150a3056aSZelalem Aweke /*
2319fb084SSoby Mathew  * Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
350a3056aSZelalem Aweke  *
450a3056aSZelalem Aweke  * SPDX-License-Identifier: BSD-3-Clause
550a3056aSZelalem Aweke  */
650a3056aSZelalem Aweke 
750a3056aSZelalem Aweke #ifndef TRP_PRIVATE_H
850a3056aSZelalem Aweke #define TRP_PRIVATE_H
950a3056aSZelalem Aweke 
108c980a4aSJavier Almansa Sobrino #include <services/rmmd_svc.h>
111d0ca40eSJavier Almansa Sobrino #include <trp_helpers.h>
1250a3056aSZelalem Aweke 
138c980a4aSJavier Almansa Sobrino /* Definitions for RMM-EL3 Interface ABI VERSION */
148c980a4aSJavier Almansa Sobrino #define TRP_RMM_EL3_ABI_VERS_MAJOR	RMM_EL3_IFC_VERSION_MAJOR
158c980a4aSJavier Almansa Sobrino #define TRP_RMM_EL3_ABI_VERS_MINOR	RMM_EL3_IFC_VERSION_MINOR
168c980a4aSJavier Almansa Sobrino #define TRP_RMM_EL3_ABI_VERS	(((TRP_RMM_EL3_ABI_VERS_MAJOR & 0x7FFF) << 16) | \
178c980a4aSJavier Almansa Sobrino 				 (TRP_RMM_EL3_ABI_VERS_MINOR & 0xFFFF))
188c980a4aSJavier Almansa Sobrino 
198c980a4aSJavier Almansa Sobrino #define TRP_PLATFORM_CORE_COUNT		PLATFORM_CORE_COUNT
208c980a4aSJavier Almansa Sobrino 
2150a3056aSZelalem Aweke #ifndef __ASSEMBLER__
2250a3056aSZelalem Aweke 
2350a3056aSZelalem Aweke #include <stdint.h>
2450a3056aSZelalem Aweke 
2550a3056aSZelalem Aweke #define write_trp_arg(args, offset, val) (((args)->regs[offset >> 3])	\
2650a3056aSZelalem Aweke 					 = val)
27fb00dc4aSSubhasish Ghosh /* RMI SMC64 FIDs handled by the TRP */
28fb00dc4aSSubhasish Ghosh #define RMI_RMM_REQ_VERSION		SMC64_RMI_FID(U(0))
29fb00dc4aSSubhasish Ghosh #define RMI_RMM_GRANULE_DELEGATE	SMC64_RMI_FID(U(1))
30fb00dc4aSSubhasish Ghosh #define RMI_RMM_GRANULE_UNDELEGATE	SMC64_RMI_FID(U(2))
31*8b3a89faSSona Mathew #define RMI_RMM_PDEV_CREATE		SMC64_RMI_FID(U(0x26))
32319fb084SSoby Mathew 
3350a3056aSZelalem Aweke /* Definitions for RMI VERSION */
3450a3056aSZelalem Aweke #define RMI_ABI_VERSION_MAJOR		U(0x0)
3550a3056aSZelalem Aweke #define RMI_ABI_VERSION_MINOR		U(0x0)
368c980a4aSJavier Almansa Sobrino #define RMI_ABI_VERSION			(((RMI_ABI_VERSION_MAJOR & 0x7FFF) \
378c980a4aSJavier Almansa Sobrino 								  << 16) | \
388c980a4aSJavier Almansa Sobrino 					 (RMI_ABI_VERSION_MINOR & 0xFFFF))
398c980a4aSJavier Almansa Sobrino 
408c980a4aSJavier Almansa Sobrino #define TRP_RMM_EL3_VERSION_GET_MAJOR(x)		\
418c980a4aSJavier Almansa Sobrino 				RMM_EL3_IFC_VERSION_GET_MAJOR((x))
428c980a4aSJavier Almansa Sobrino #define TRP_RMM_EL3_VERSION_GET_MINOR(x)		\
438c980a4aSJavier Almansa Sobrino 				RMM_EL3_IFC_VERSION_GET_MAJOR_MINOR((x))
4450a3056aSZelalem Aweke 
4550a3056aSZelalem Aweke /* Helper to issue SMC calls to BL31 */
4650a3056aSZelalem Aweke uint64_t trp_smc(trp_args_t *);
4750a3056aSZelalem Aweke 
4850a3056aSZelalem Aweke /* The main function to executed only by Primary CPU */
4950a3056aSZelalem Aweke void trp_main(void);
5050a3056aSZelalem Aweke 
5150a3056aSZelalem Aweke /* Setup TRP. Executed only by Primary CPU */
528c980a4aSJavier Almansa Sobrino void trp_setup(uint64_t x0,
538c980a4aSJavier Almansa Sobrino 	       uint64_t x1,
548c980a4aSJavier Almansa Sobrino 	       uint64_t x2,
558c980a4aSJavier Almansa Sobrino 	       uint64_t x3);
5650a3056aSZelalem Aweke 
57dc0ca64eSJavier Almansa Sobrino /* Validate arguments for warm boot only */
58dc0ca64eSJavier Almansa Sobrino int trp_validate_warmboot_args(uint64_t x0, uint64_t x1,
59dc0ca64eSJavier Almansa Sobrino 			       uint64_t x2, uint64_t x3);
60dc0ca64eSJavier Almansa Sobrino 
6150a3056aSZelalem Aweke #endif /* __ASSEMBLER__ */
6250a3056aSZelalem Aweke #endif /* TRP_PRIVATE_H */
63