xref: /rk3399_ARM-atf/plat/arm/board/fvp/fvp_lfa.c (revision 357079c760dff2b1009f44177283e8c79451b971)
13bb52661SManish V Badarkhe /*
23bb52661SManish V Badarkhe  * Copyright (c) 2025, Arm Limited. All rights reserved.
33bb52661SManish V Badarkhe  *
43bb52661SManish V Badarkhe  * SPDX-License-Identifier: BSD-3-Clause
53bb52661SManish V Badarkhe  */
63bb52661SManish V Badarkhe 
73bb52661SManish V Badarkhe #include <errno.h>
83bb52661SManish V Badarkhe #include <plat/common/platform.h>
9b100e91dSManish V Badarkhe #include <services/bl31_lfa.h>
10b100e91dSManish V Badarkhe #include <services/rmmd_rmm_lfa.h>
113bb52661SManish V Badarkhe #include <tools_share/firmware_image_package.h>
123bb52661SManish V Badarkhe 
133bb52661SManish V Badarkhe #include <fvp_lfa_components.h>
143bb52661SManish V Badarkhe 
153bb52661SManish V Badarkhe /* Keep this array consistent with enum fvp_lfa_component_id_t */
163bb52661SManish V Badarkhe static plat_lfa_component_info_t fvp_lfa_components[LFA_MAX_DEFINED_COMPONENTS] = {
17b100e91dSManish V Badarkhe 	[LFA_BL31_COMPONENT] = {LFA_BL31_COMPONENT, UUID_EL3_RUNTIME_FIRMWARE_BL31,
18b100e91dSManish V Badarkhe 				NULL, false},
193bb52661SManish V Badarkhe #if BL32_BASE
20b100e91dSManish V Badarkhe 	[LFA_BL32_COMPONENT] = {LFA_BL32_COMPONENT, UUID_SECURE_PAYLOAD_BL32,
21b100e91dSManish V Badarkhe 				NULL, false},
223bb52661SManish V Badarkhe #endif /* BL32_BASE */
23b100e91dSManish V Badarkhe 	[LFA_BL33_COMPONENT] = {LFA_BL33_COMPONENT, UUID_NON_TRUSTED_FIRMWARE_BL33,
24b100e91dSManish V Badarkhe 				NULL, false},
253bb52661SManish V Badarkhe #if ENABLE_RME
26b100e91dSManish V Badarkhe 	[LFA_RMM_COMPONENT]  = {LFA_RMM_COMPONENT, UUID_REALM_MONITOR_MGMT_FIRMWARE,
27b100e91dSManish V Badarkhe 				NULL, false},
283bb52661SManish V Badarkhe #endif /* ENABLE_RME */
293bb52661SManish V Badarkhe };
303bb52661SManish V Badarkhe 
313bb52661SManish V Badarkhe uint32_t plat_lfa_get_components(plat_lfa_component_info_t **components)
323bb52661SManish V Badarkhe {
333bb52661SManish V Badarkhe 	if (components == NULL) {
343bb52661SManish V Badarkhe 		return -EINVAL;
353bb52661SManish V Badarkhe 	}
363bb52661SManish V Badarkhe 
37b100e91dSManish V Badarkhe 	fvp_lfa_components[LFA_BL31_COMPONENT].activator = get_bl31_activator();
38b100e91dSManish V Badarkhe #if ENABLE_RME
39b100e91dSManish V Badarkhe 	fvp_lfa_components[LFA_RMM_COMPONENT].activator = get_rmm_activator();
40b100e91dSManish V Badarkhe #endif /* ENABLE_RME */
41b100e91dSManish V Badarkhe 
423bb52661SManish V Badarkhe 	*components = fvp_lfa_components;
433bb52661SManish V Badarkhe 	return LFA_MAX_DEFINED_COMPONENTS;
443bb52661SManish V Badarkhe }
45*357079c7SManish V Badarkhe 
46*357079c7SManish V Badarkhe bool is_plat_lfa_activation_pending(uint32_t lfa_component_id)
47*357079c7SManish V Badarkhe {
48*357079c7SManish V Badarkhe #if ENABLE_RME
49*357079c7SManish V Badarkhe 	if (lfa_component_id == LFA_RMM_COMPONENT) {
50*357079c7SManish V Badarkhe 		return true;
51*357079c7SManish V Badarkhe 	}
52*357079c7SManish V Badarkhe #endif /* ENABLE_RME */
53*357079c7SManish V Badarkhe 
54*357079c7SManish V Badarkhe 	return false;
55*357079c7SManish V Badarkhe }
56