xref: /rk3399_ARM-atf/include/services/spmc_svc.h (revision 65b13bace4b92f9384e712cd1631f59f0da747c5)
15096aeb2SMarc Bonnici /*
25096aeb2SMarc Bonnici  * Copyright (c) 2022, ARM Limited and Contributors. All rights reserved.
35096aeb2SMarc Bonnici  *
45096aeb2SMarc Bonnici  * SPDX-License-Identifier: BSD-3-Clause
55096aeb2SMarc Bonnici  */
65096aeb2SMarc Bonnici 
75096aeb2SMarc Bonnici #ifndef SPMC_SVC_H
85096aeb2SMarc Bonnici #define SPMC_SVC_H
95096aeb2SMarc Bonnici 
105096aeb2SMarc Bonnici #ifndef __ASSEMBLER__
115096aeb2SMarc Bonnici #include <stdint.h>
125096aeb2SMarc Bonnici 
135096aeb2SMarc Bonnici #include <lib/utils_def.h>
145096aeb2SMarc Bonnici #include <services/ffa_svc.h>
15*6da76075SMarc Bonnici #include <services/spm_core_manifest.h>
165096aeb2SMarc Bonnici 
175096aeb2SMarc Bonnici int spmc_setup(void);
18*6da76075SMarc Bonnici void spmc_populate_attrs(spmc_manifest_attribute_t *spmc_attrs);
195096aeb2SMarc Bonnici void *spmc_get_config_addr(void);
205096aeb2SMarc Bonnici 
215096aeb2SMarc Bonnici void spmc_set_config_addr(uintptr_t soc_fw_config);
225096aeb2SMarc Bonnici 
235096aeb2SMarc Bonnici uint64_t spmc_smc_handler(uint32_t smc_fid,
245096aeb2SMarc Bonnici 			  bool secure_origin,
255096aeb2SMarc Bonnici 			  uint64_t x1,
265096aeb2SMarc Bonnici 			  uint64_t x2,
275096aeb2SMarc Bonnici 			  uint64_t x3,
285096aeb2SMarc Bonnici 			  uint64_t x4,
295096aeb2SMarc Bonnici 			  void *cookie,
305096aeb2SMarc Bonnici 			  void *handle,
315096aeb2SMarc Bonnici 			  uint64_t flags);
325096aeb2SMarc Bonnici 
is_spmc_at_el3(void)335096aeb2SMarc Bonnici static inline bool is_spmc_at_el3(void)
345096aeb2SMarc Bonnici {
355096aeb2SMarc Bonnici 	return SPMC_AT_EL3 == 1;
365096aeb2SMarc Bonnici }
375096aeb2SMarc Bonnici 
385096aeb2SMarc Bonnici #endif /* __ASSEMBLER__ */
395096aeb2SMarc Bonnici 
405096aeb2SMarc Bonnici #endif /* SPMC_SVC_H */
41