mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-18 10:34:19 +00:00
Merge changes from topic "jc/tc_fw_handoff" into integration
* changes: refactor(arm): simplify early platform setup function in BL31 refactor(arm): simplify early platform setup function in BL2 feat(arm): add support for Transfer List creation
This commit is contained in:
commit
c997a8deab
13 changed files with 45 additions and 66 deletions
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2015-2024, Arm Limited and Contributors. All rights reserved.
|
* Copyright (c) 2015-2025, Arm Limited and Contributors. All rights reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: BSD-3-Clause
|
* SPDX-License-Identifier: BSD-3-Clause
|
||||||
*/
|
*/
|
||||||
|
@ -249,7 +249,8 @@ void arm_bl1_platform_setup(void);
|
||||||
void arm_bl1_plat_arch_setup(void);
|
void arm_bl1_plat_arch_setup(void);
|
||||||
|
|
||||||
/* BL2 utility functions */
|
/* BL2 utility functions */
|
||||||
void arm_bl2_early_platform_setup(uintptr_t fw_config, struct meminfo *mem_layout);
|
void arm_bl2_early_platform_setup(u_register_t arg0, u_register_t arg1,
|
||||||
|
u_register_t arg2, u_register_t arg3);
|
||||||
void arm_bl2_platform_setup(void);
|
void arm_bl2_platform_setup(void);
|
||||||
void arm_bl2_plat_arch_setup(void);
|
void arm_bl2_plat_arch_setup(void);
|
||||||
uint32_t arm_get_spsr_for_bl32_entry(void);
|
uint32_t arm_get_spsr_for_bl32_entry(void);
|
||||||
|
@ -273,13 +274,8 @@ void arm_bl2u_platform_setup(void);
|
||||||
void arm_bl2u_plat_arch_setup(void);
|
void arm_bl2u_plat_arch_setup(void);
|
||||||
|
|
||||||
/* BL31 utility functions */
|
/* BL31 utility functions */
|
||||||
#if TRANSFER_LIST
|
|
||||||
void arm_bl31_early_platform_setup(u_register_t arg0, u_register_t arg1,
|
void arm_bl31_early_platform_setup(u_register_t arg0, u_register_t arg1,
|
||||||
u_register_t arg2, u_register_t arg3);
|
u_register_t arg2, u_register_t arg3);
|
||||||
#else
|
|
||||||
void arm_bl31_early_platform_setup(void *from_bl2, uintptr_t soc_fw_config,
|
|
||||||
uintptr_t hw_config, void *plat_params_from_bl2);
|
|
||||||
#endif
|
|
||||||
void arm_bl31_platform_setup(void);
|
void arm_bl31_platform_setup(void);
|
||||||
void arm_bl31_plat_runtime_setup(void);
|
void arm_bl31_plat_runtime_setup(void);
|
||||||
void arm_bl31_plat_arch_setup(void);
|
void arm_bl31_plat_arch_setup(void);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2019, Arm Limited. All rights reserved.
|
* Copyright (c) 2019-2025, Arm Limited. All rights reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: BSD-3-Clause
|
* SPDX-License-Identifier: BSD-3-Clause
|
||||||
*/
|
*/
|
||||||
|
@ -9,7 +9,7 @@
|
||||||
void bl2_early_platform_setup2(u_register_t arg0, u_register_t arg1,
|
void bl2_early_platform_setup2(u_register_t arg0, u_register_t arg1,
|
||||||
u_register_t arg2, u_register_t arg3)
|
u_register_t arg2, u_register_t arg3)
|
||||||
{
|
{
|
||||||
arm_bl2_early_platform_setup((uintptr_t)arg0, (meminfo_t *)arg1);
|
arm_bl2_early_platform_setup(arg0, arg1, arg2, arg3);
|
||||||
}
|
}
|
||||||
|
|
||||||
void bl2_platform_setup(void)
|
void bl2_platform_setup(void)
|
||||||
|
|
|
@ -52,10 +52,7 @@ static const arm_gpt_info_t arm_gpt_info = {
|
||||||
|
|
||||||
void bl2_early_platform_setup2(u_register_t arg0, u_register_t arg1, u_register_t arg2, u_register_t arg3)
|
void bl2_early_platform_setup2(u_register_t arg0, u_register_t arg1, u_register_t arg2, u_register_t arg3)
|
||||||
{
|
{
|
||||||
#if TRANSFER_LIST
|
arm_bl2_early_platform_setup(arg0, arg1, arg2, arg3);
|
||||||
arg0 = arg3;
|
|
||||||
#endif
|
|
||||||
arm_bl2_early_platform_setup((uintptr_t)arg0, (meminfo_t *)arg1);
|
|
||||||
|
|
||||||
/* Initialize the platform config for future decision making */
|
/* Initialize the platform config for future decision making */
|
||||||
fvp_config_setup();
|
fvp_config_setup();
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2013-2024, Arm Limited and Contributors. All rights reserved.
|
* Copyright (c) 2013-2025, Arm Limited and Contributors. All rights reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: BSD-3-Clause
|
* SPDX-License-Identifier: BSD-3-Clause
|
||||||
*/
|
*/
|
||||||
|
@ -28,10 +28,7 @@ void __init bl31_early_platform_setup2(u_register_t arg0,
|
||||||
/* Initialize the console to provide early debug support */
|
/* Initialize the console to provide early debug support */
|
||||||
arm_console_boot_init();
|
arm_console_boot_init();
|
||||||
|
|
||||||
#if TRANSFER_LIST
|
#if !(TRANSFER_LIST || RESET_TO_BL31 || RESET_TO_BL2)
|
||||||
arm_bl31_early_platform_setup(arg0, arg1, arg2, arg3);
|
|
||||||
#else
|
|
||||||
#if !RESET_TO_BL31 && !RESET_TO_BL2
|
|
||||||
const struct dyn_cfg_dtb_info_t *soc_fw_config_info;
|
const struct dyn_cfg_dtb_info_t *soc_fw_config_info;
|
||||||
|
|
||||||
INFO("BL31 FCONF: FW_CONFIG address = %lx\n", (uintptr_t)arg1);
|
INFO("BL31 FCONF: FW_CONFIG address = %lx\n", (uintptr_t)arg1);
|
||||||
|
@ -53,9 +50,9 @@ void __init bl31_early_platform_setup2(u_register_t arg0,
|
||||||
assert(hw_config_info != NULL);
|
assert(hw_config_info != NULL);
|
||||||
assert(hw_config_info->secondary_config_addr != 0UL);
|
assert(hw_config_info->secondary_config_addr != 0UL);
|
||||||
arg2 = hw_config_info->secondary_config_addr;
|
arg2 = hw_config_info->secondary_config_addr;
|
||||||
#endif /* !RESET_TO_BL31 && !RESET_TO_BL2 */
|
#endif /* !(TRANSFER_LIST || RESET_TO_BL31 || RESET_TO_BL2)*/
|
||||||
arm_bl31_early_platform_setup((void *)arg0, arg1, arg2, (void *)arg3);
|
|
||||||
#endif /* TRANSFER_LIST */
|
arm_bl31_early_platform_setup(arg0, arg1, arg2, arg3);
|
||||||
|
|
||||||
/* Initialize the platform config for future decision making */
|
/* Initialize the platform config for future decision making */
|
||||||
fvp_config_setup();
|
fvp_config_setup();
|
||||||
|
|
|
@ -433,7 +433,6 @@ endif
|
||||||
$(eval $(call TOOL_ADD_PAYLOAD,${FVP_HW_CONFIG},--hw-config,${FVP_HW_CONFIG}))
|
$(eval $(call TOOL_ADD_PAYLOAD,${FVP_HW_CONFIG},--hw-config,${FVP_HW_CONFIG}))
|
||||||
|
|
||||||
ifeq (${TRANSFER_LIST}, 1)
|
ifeq (${TRANSFER_LIST}, 1)
|
||||||
include lib/transfer_list/transfer_list.mk
|
|
||||||
|
|
||||||
ifeq ($(RESET_TO_BL31), 1)
|
ifeq ($(RESET_TO_BL31), 1)
|
||||||
FW_HANDOFF_SIZE := 20000
|
FW_HANDOFF_SIZE := 20000
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2019, Arm Limited. All rights reserved.
|
* Copyright (c) 2019-2025, Arm Limited. All rights reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: BSD-3-Clause
|
* SPDX-License-Identifier: BSD-3-Clause
|
||||||
*/
|
*/
|
||||||
|
@ -15,7 +15,7 @@
|
||||||
|
|
||||||
void bl2_early_platform_setup2(u_register_t arg0, u_register_t arg1, u_register_t arg2, u_register_t arg3)
|
void bl2_early_platform_setup2(u_register_t arg0, u_register_t arg1, u_register_t arg2, u_register_t arg3)
|
||||||
{
|
{
|
||||||
arm_bl2_early_platform_setup((uintptr_t)arg0, (meminfo_t *)arg1);
|
arm_bl2_early_platform_setup(arg0, arg1, arg2, arg3);
|
||||||
|
|
||||||
/* Initialize the platform config for future decision making */
|
/* Initialize the platform config for future decision making */
|
||||||
fvp_ve_config_setup();
|
fvp_ve_config_setup();
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
|
* Copyright (c) 2021-2025, Arm Limited and Contributors. All rights reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: BSD-3-Clause
|
* SPDX-License-Identifier: BSD-3-Clause
|
||||||
*/
|
*/
|
||||||
|
@ -27,7 +27,7 @@ void __init bl31_early_platform_setup2(u_register_t arg0,
|
||||||
arg1 = soc_fw_config_info->config_addr;
|
arg1 = soc_fw_config_info->config_addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
arm_bl31_early_platform_setup((void *)arg0, arg1, arg2, (void *)arg3);
|
arm_bl31_early_platform_setup(arg0, arg1, arg2, arg3);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initialize Interconnect for this cluster during cold boot.
|
* Initialize Interconnect for this cluster during cold boot.
|
||||||
|
|
|
@ -179,7 +179,7 @@ void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
|
||||||
arg1 = soc_fw_config_info->config_addr;
|
arg1 = soc_fw_config_info->config_addr;
|
||||||
}
|
}
|
||||||
#endif /* SPMD_SPM_AT_SEL2 && !RESET_TO_BL31 */
|
#endif /* SPMD_SPM_AT_SEL2 && !RESET_TO_BL31 */
|
||||||
arm_bl31_early_platform_setup((void *)arg0, arg1, arg2, (void *)arg3);
|
arm_bl31_early_platform_setup(arg0, arg1, arg2, arg3);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
|
|
|
@ -154,7 +154,10 @@ scmi_channel_plat_info_t *plat_css_get_scmi_info(unsigned int channel_id __unuse
|
||||||
void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
|
void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
|
||||||
u_register_t arg2, u_register_t arg3)
|
u_register_t arg2, u_register_t arg3)
|
||||||
{
|
{
|
||||||
arm_bl31_early_platform_setup((void *)arg0, arg1, arg2, (void *)arg3);
|
/* Initialize the console to provide early debug support */
|
||||||
|
arm_console_boot_init();
|
||||||
|
|
||||||
|
arm_bl31_early_platform_setup(arg0, arg1, arg2, arg3);
|
||||||
|
|
||||||
/* Fill the properties struct with the info from the config dtb */
|
/* Fill the properties struct with the info from the config dtb */
|
||||||
fconf_populate("FW_CONFIG", arg1);
|
fconf_populate("FW_CONFIG", arg1);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2015-2024, Arm Limited and Contributors. All rights reserved.
|
* Copyright (c) 2015-2025, Arm Limited and Contributors. All rights reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: BSD-3-Clause
|
* SPDX-License-Identifier: BSD-3-Clause
|
||||||
*/
|
*/
|
||||||
|
@ -66,8 +66,8 @@ struct transfer_list_header *secure_tl __unused;
|
||||||
* in x0. This memory layout is sitting at the base of the free trusted SRAM.
|
* in x0. This memory layout is sitting at the base of the free trusted SRAM.
|
||||||
* Copy it to a safe location before its reclaimed by later BL2 functionality.
|
* Copy it to a safe location before its reclaimed by later BL2 functionality.
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
void arm_bl2_early_platform_setup(uintptr_t fw_config,
|
void arm_bl2_early_platform_setup(u_register_t arg0, u_register_t arg1,
|
||||||
struct meminfo *mem_layout)
|
u_register_t arg2, u_register_t arg3)
|
||||||
{
|
{
|
||||||
struct transfer_list_entry *te __unused;
|
struct transfer_list_entry *te __unused;
|
||||||
int __maybe_unused ret;
|
int __maybe_unused ret;
|
||||||
|
@ -76,8 +76,7 @@ void arm_bl2_early_platform_setup(uintptr_t fw_config,
|
||||||
arm_console_boot_init();
|
arm_console_boot_init();
|
||||||
|
|
||||||
#if TRANSFER_LIST
|
#if TRANSFER_LIST
|
||||||
// TODO: modify the prototype of this function fw_config != bl2_tl
|
secure_tl = (struct transfer_list_header *)arg3;
|
||||||
secure_tl = (struct transfer_list_header *)fw_config;
|
|
||||||
|
|
||||||
te = transfer_list_find(secure_tl, TL_TAG_SRAM_LAYOUT64);
|
te = transfer_list_find(secure_tl, TL_TAG_SRAM_LAYOUT64);
|
||||||
assert(te != NULL);
|
assert(te != NULL);
|
||||||
|
@ -85,11 +84,11 @@ void arm_bl2_early_platform_setup(uintptr_t fw_config,
|
||||||
bl2_tzram_layout = *(meminfo_t *)transfer_list_entry_data(te);
|
bl2_tzram_layout = *(meminfo_t *)transfer_list_entry_data(te);
|
||||||
transfer_list_rem(secure_tl, te);
|
transfer_list_rem(secure_tl, te);
|
||||||
#else
|
#else
|
||||||
config_base = fw_config;
|
config_base = (uintptr_t)arg0;
|
||||||
|
|
||||||
/* Setup the BL2 memory layout */
|
/* Setup the BL2 memory layout */
|
||||||
bl2_tzram_layout = *mem_layout;
|
bl2_tzram_layout = *(meminfo_t *)arg1;
|
||||||
#endif
|
#endif /* TRANSFER_LIST */
|
||||||
|
|
||||||
/* Initialise the IO layer and register platform IO devices */
|
/* Initialise the IO layer and register platform IO devices */
|
||||||
plat_arm_io_setup();
|
plat_arm_io_setup();
|
||||||
|
@ -105,9 +104,10 @@ void arm_bl2_early_platform_setup(uintptr_t fw_config,
|
||||||
#endif /* ARM_GPT_SUPPORT */
|
#endif /* ARM_GPT_SUPPORT */
|
||||||
}
|
}
|
||||||
|
|
||||||
void bl2_early_platform_setup2(u_register_t arg0, u_register_t arg1, u_register_t arg2, u_register_t arg3)
|
void bl2_early_platform_setup2(u_register_t arg0, u_register_t arg1,
|
||||||
|
u_register_t arg2, u_register_t arg3)
|
||||||
{
|
{
|
||||||
arm_bl2_early_platform_setup((uintptr_t)arg0, (meminfo_t *)arg1);
|
arm_bl2_early_platform_setup(arg0, arg1, arg2, arg3);
|
||||||
|
|
||||||
generic_delay_timer_init();
|
generic_delay_timer_init();
|
||||||
}
|
}
|
||||||
|
|
|
@ -154,10 +154,10 @@ struct entry_point_info *bl31_plat_get_next_image_ep_info(uint32_t type)
|
||||||
* while creating page tables. BL2 has flushed this information to memory, so
|
* while creating page tables. BL2 has flushed this information to memory, so
|
||||||
* we are guaranteed to pick up good data.
|
* we are guaranteed to pick up good data.
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
#if TRANSFER_LIST
|
|
||||||
void __init arm_bl31_early_platform_setup(u_register_t arg0, u_register_t arg1,
|
void __init arm_bl31_early_platform_setup(u_register_t arg0, u_register_t arg1,
|
||||||
u_register_t arg2, u_register_t arg3)
|
u_register_t arg2, u_register_t arg3)
|
||||||
{
|
{
|
||||||
|
#if TRANSFER_LIST
|
||||||
#if RESET_TO_BL31
|
#if RESET_TO_BL31
|
||||||
/* Populate entry point information for BL33 */
|
/* Populate entry point information for BL33 */
|
||||||
SET_PARAM_HEAD(&bl33_image_ep_info, PARAM_EP, VERSION_1, 0);
|
SET_PARAM_HEAD(&bl33_image_ep_info, PARAM_EP, VERSION_1, 0);
|
||||||
|
@ -208,18 +208,11 @@ void __init arm_bl31_early_platform_setup(u_register_t arg0, u_register_t arg1,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif /* RESET_TO_BL31 */
|
#endif /* RESET_TO_BL31 */
|
||||||
}
|
#else /* (!TRANSFER_LIST) */
|
||||||
#else
|
|
||||||
void __init arm_bl31_early_platform_setup(void *from_bl2, uintptr_t soc_fw_config,
|
|
||||||
uintptr_t hw_config, void *plat_params_from_bl2)
|
|
||||||
{
|
|
||||||
/* Initialize the console to provide early debug support */
|
|
||||||
arm_console_boot_init();
|
|
||||||
|
|
||||||
#if RESET_TO_BL31
|
#if RESET_TO_BL31
|
||||||
/* There are no parameters from BL2 if BL31 is a reset vector */
|
/* There are no parameters from BL2 if BL31 is a reset vector */
|
||||||
assert(from_bl2 == NULL);
|
assert((void *)arg0 == NULL);
|
||||||
assert(plat_params_from_bl2 == NULL);
|
assert((void *)arg3 == NULL);
|
||||||
|
|
||||||
# ifdef BL32_BASE
|
# ifdef BL32_BASE
|
||||||
/* Populate entry point information for BL32 */
|
/* Populate entry point information for BL32 */
|
||||||
|
@ -258,21 +251,18 @@ void __init arm_bl31_early_platform_setup(void *from_bl2, uintptr_t soc_fw_confi
|
||||||
*/
|
*/
|
||||||
rmm_image_ep_info.pc = RMM_BASE;
|
rmm_image_ep_info.pc = RMM_BASE;
|
||||||
#endif /* ENABLE_RME */
|
#endif /* ENABLE_RME */
|
||||||
|
|
||||||
#else /* RESET_TO_BL31 */
|
#else /* RESET_TO_BL31 */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* In debug builds, we pass a special value in 'plat_params_from_bl2'
|
* In debug builds, we pass a special value in 'arg3'
|
||||||
* to verify platform parameters from BL2 to BL31.
|
* to verify platform parameters from BL2 to BL31.
|
||||||
* In release builds, it's not used.
|
* In release builds, it's not used.
|
||||||
*/
|
*/
|
||||||
assert(((unsigned long long)plat_params_from_bl2) ==
|
assert(((unsigned long long)arg3) == ARM_BL31_PLAT_PARAM_VAL);
|
||||||
ARM_BL31_PLAT_PARAM_VAL);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Check params passed from BL2 should not be NULL,
|
* Check params passed from BL2 should not be NULL,
|
||||||
*/
|
*/
|
||||||
bl_params_t *params_from_bl2 = (bl_params_t *)from_bl2;
|
bl_params_t *params_from_bl2 = (bl_params_t *)arg0;
|
||||||
assert(params_from_bl2 != NULL);
|
assert(params_from_bl2 != NULL);
|
||||||
assert(params_from_bl2->h.type == PARAM_BL_PARAMS);
|
assert(params_from_bl2->h.type == PARAM_BL_PARAMS);
|
||||||
assert(params_from_bl2->h.version >= VERSION_2);
|
assert(params_from_bl2->h.version >= VERSION_2);
|
||||||
|
@ -325,7 +315,7 @@ void __init arm_bl31_early_platform_setup(void *from_bl2, uintptr_t soc_fw_confi
|
||||||
#endif
|
#endif
|
||||||
#endif /* RESET_TO_BL31 */
|
#endif /* RESET_TO_BL31 */
|
||||||
|
|
||||||
# if ARM_LINUX_KERNEL_AS_BL33
|
#if ARM_LINUX_KERNEL_AS_BL33
|
||||||
/*
|
/*
|
||||||
* According to the file ``Documentation/arm64/booting.txt`` of the
|
* According to the file ``Documentation/arm64/booting.txt`` of the
|
||||||
* Linux kernel tree, Linux expects the physical address of the device
|
* Linux kernel tree, Linux expects the physical address of the device
|
||||||
|
@ -339,23 +329,19 @@ void __init arm_bl31_early_platform_setup(void *from_bl2, uintptr_t soc_fw_confi
|
||||||
#if RESET_TO_BL31
|
#if RESET_TO_BL31
|
||||||
bl33_image_ep_info.args.arg0 = (u_register_t)ARM_PRELOADED_DTB_BASE;
|
bl33_image_ep_info.args.arg0 = (u_register_t)ARM_PRELOADED_DTB_BASE;
|
||||||
#else
|
#else
|
||||||
bl33_image_ep_info.args.arg0 = (u_register_t)hw_config;
|
bl33_image_ep_info.args.arg0 = arg2;
|
||||||
#endif
|
#endif /* RESET_TO_BL31 */
|
||||||
bl33_image_ep_info.args.arg1 = 0U;
|
bl33_image_ep_info.args.arg1 = 0U;
|
||||||
bl33_image_ep_info.args.arg2 = 0U;
|
bl33_image_ep_info.args.arg2 = 0U;
|
||||||
bl33_image_ep_info.args.arg3 = 0U;
|
bl33_image_ep_info.args.arg3 = 0U;
|
||||||
# endif
|
#endif /* ARM_LINUX_KERNEL_AS_BL33 */
|
||||||
|
#endif /* TRANSFER_LIST */
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
|
void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
|
||||||
u_register_t arg2, u_register_t arg3)
|
u_register_t arg2, u_register_t arg3)
|
||||||
{
|
{
|
||||||
#if TRANSFER_LIST
|
|
||||||
arm_bl31_early_platform_setup(arg0, arg1, arg2, arg3);
|
arm_bl31_early_platform_setup(arg0, arg1, arg2, arg3);
|
||||||
#else
|
|
||||||
arm_bl31_early_platform_setup((void *)arg0, arg1, arg2, (void *)arg3);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initialize Interconnect for this cluster during cold boot.
|
* Initialize Interconnect for this cluster during cold boot.
|
||||||
|
|
|
@ -311,6 +311,7 @@ BL31_SOURCES += plat/arm/common/arm_bl31_setup.c \
|
||||||
plat/common/plat_psci_common.c
|
plat/common/plat_psci_common.c
|
||||||
|
|
||||||
ifeq (${TRANSFER_LIST}, 1)
|
ifeq (${TRANSFER_LIST}, 1)
|
||||||
|
include lib/transfer_list/transfer_list.mk
|
||||||
TRANSFER_LIST_SOURCES += plat/arm/common/arm_transfer_list.c
|
TRANSFER_LIST_SOURCES += plat/arm/common/arm_transfer_list.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2015-2023, Arm Limited and Contributors. All rights reserved.
|
* Copyright (c) 2015-2025, Arm Limited and Contributors. All rights reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: BSD-3-Clause
|
* SPDX-License-Identifier: BSD-3-Clause
|
||||||
*/
|
*/
|
||||||
|
@ -56,7 +56,7 @@ static unsigned int scp_boot_config;
|
||||||
void bl2_early_platform_setup2(u_register_t arg0, u_register_t arg1,
|
void bl2_early_platform_setup2(u_register_t arg0, u_register_t arg1,
|
||||||
u_register_t arg2, u_register_t arg3)
|
u_register_t arg2, u_register_t arg3)
|
||||||
{
|
{
|
||||||
arm_bl2_early_platform_setup((uintptr_t)arg0, (meminfo_t *)arg1);
|
arm_bl2_early_platform_setup(arg0, arg1, arg2, arg3);
|
||||||
|
|
||||||
/* Save SCP Boot config before it gets overwritten by SCP_BL2 loading */
|
/* Save SCP Boot config before it gets overwritten by SCP_BL2 loading */
|
||||||
scp_boot_config = mmio_read_32(SCP_BOOT_CFG_ADDR);
|
scp_boot_config = mmio_read_32(SCP_BOOT_CFG_ADDR);
|
||||||
|
|
Loading…
Add table
Reference in a new issue