mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-08-15 00:47:02 +02:00
The patch changes the layout of BL images in memory to enable more efficient use of available space. Previously BL31 was loaded with the expectation that BL2 memory would be reclaimed by BL32 loaded in SRAM. But with increasing memory requirements in the firmware, we can no longer fit BL32 in SRAM anymore which means the BL2 memory is not reclaimed by any runtime image. Positioning BL2 below BL1-RW and above BL31 means that the BL31 NOBITS can be overlaid on BL2 and BL1-RW. This patch also propogates the same memory layout to BL32 for AArch32 mode. The reset addresses for the following configurations are also changed : * When RESET_TO_SP_MIN=1 for BL32 in AArch32 mode * When BL2_AT_EL3=1 for BL2 The restriction on BL31 to be only in DRAM when SPM is enabled is now removed with this change. The update to the firmware design guide for the BL memory layout is done in the following patch. Change-Id: Icca438e257abe3e4f5a8215f945b9c3f9fbf29c9 Signed-off-by: Soby Mathew <soby.mathew@arm.com>
51 lines
1.6 KiB
C
51 lines
1.6 KiB
C
/*
|
|
* Copyright (c) 2016-2017, ARM Limited and Contributors. All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#ifndef __CSS_SCP_H__
|
|
#define __CSS_SCP_H__
|
|
|
|
#include <cassert.h>
|
|
#include <platform_def.h>
|
|
#include <types.h>
|
|
|
|
/* Forward declarations */
|
|
struct psci_power_state;
|
|
|
|
/* API for power management by SCP */
|
|
int css_system_reset2(int is_vendor, int reset_type, u_register_t cookie);
|
|
void css_scp_suspend(const struct psci_power_state *target_state);
|
|
void css_scp_off(const struct psci_power_state *target_state);
|
|
void css_scp_on(u_register_t mpidr);
|
|
int css_scp_get_power_state(u_register_t mpidr, unsigned int power_level);
|
|
void __dead2 css_scp_sys_shutdown(void);
|
|
void __dead2 css_scp_sys_reboot(void);
|
|
void __dead2 css_scp_system_off(int state);
|
|
|
|
/* API for SCP Boot Image transfer. Return 0 on success, -1 on error */
|
|
int css_scp_boot_image_xfer(void *image, unsigned int image_size);
|
|
|
|
/*
|
|
* API to wait for SCP to signal till it's ready after booting the transferred
|
|
* image.
|
|
*/
|
|
int css_scp_boot_ready(void);
|
|
|
|
#if CSS_LOAD_SCP_IMAGES
|
|
|
|
/*
|
|
* All CSS platforms load SCP_BL2/SCP_BL2U just below BL2 (this is where BL31
|
|
* usually resides except when ARM_BL31_IN_DRAM is
|
|
* set). Ensure that SCP_BL2/SCP_BL2U do not overflow into tb_fw_config.
|
|
*/
|
|
CASSERT(SCP_BL2_LIMIT <= BL2_BASE, assert_scp_bl2_overwrite_bl2);
|
|
CASSERT(SCP_BL2U_LIMIT <= BL2_BASE, assert_scp_bl2u_overwrite_bl2);
|
|
|
|
CASSERT(SCP_BL2_BASE >= ARM_TB_FW_CONFIG_LIMIT, assert_scp_bl2_overflow);
|
|
CASSERT(SCP_BL2U_BASE >= ARM_TB_FW_CONFIG_LIMIT, assert_scp_bl2u_overflow);
|
|
#endif
|
|
|
|
#endif /* __CSS_SCP_H__ */
|