xref: /rk3399_ARM-atf/include/services/spmc_svc.h (revision 5096aeb2ba646548a7a6ab59e975b996e6c9026a)
1*5096aeb2SMarc Bonnici /*
2*5096aeb2SMarc Bonnici  * Copyright (c) 2022, ARM Limited and Contributors. All rights reserved.
3*5096aeb2SMarc Bonnici  *
4*5096aeb2SMarc Bonnici  * SPDX-License-Identifier: BSD-3-Clause
5*5096aeb2SMarc Bonnici  */
6*5096aeb2SMarc Bonnici 
7*5096aeb2SMarc Bonnici #ifndef SPMC_SVC_H
8*5096aeb2SMarc Bonnici #define SPMC_SVC_H
9*5096aeb2SMarc Bonnici 
10*5096aeb2SMarc Bonnici #ifndef __ASSEMBLER__
11*5096aeb2SMarc Bonnici #include <stdint.h>
12*5096aeb2SMarc Bonnici 
13*5096aeb2SMarc Bonnici #include <lib/utils_def.h>
14*5096aeb2SMarc Bonnici #include <services/ffa_svc.h>
15*5096aeb2SMarc Bonnici 
16*5096aeb2SMarc Bonnici int spmc_setup(void);
17*5096aeb2SMarc Bonnici void *spmc_get_config_addr(void);
18*5096aeb2SMarc Bonnici 
19*5096aeb2SMarc Bonnici void spmc_set_config_addr(uintptr_t soc_fw_config);
20*5096aeb2SMarc Bonnici 
21*5096aeb2SMarc Bonnici uint64_t spmc_smc_handler(uint32_t smc_fid,
22*5096aeb2SMarc Bonnici 			  bool secure_origin,
23*5096aeb2SMarc Bonnici 			  uint64_t x1,
24*5096aeb2SMarc Bonnici 			  uint64_t x2,
25*5096aeb2SMarc Bonnici 			  uint64_t x3,
26*5096aeb2SMarc Bonnici 			  uint64_t x4,
27*5096aeb2SMarc Bonnici 			  void *cookie,
28*5096aeb2SMarc Bonnici 			  void *handle,
29*5096aeb2SMarc Bonnici 			  uint64_t flags);
30*5096aeb2SMarc Bonnici 
31*5096aeb2SMarc Bonnici static inline bool is_spmc_at_el3(void)
32*5096aeb2SMarc Bonnici {
33*5096aeb2SMarc Bonnici 	return SPMC_AT_EL3 == 1;
34*5096aeb2SMarc Bonnici }
35*5096aeb2SMarc Bonnici 
36*5096aeb2SMarc Bonnici #endif /* __ASSEMBLER__ */
37*5096aeb2SMarc Bonnici 
38*5096aeb2SMarc Bonnici #endif /* SPMC_SVC_H */
39