mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-21 03:54:34 +00:00
Merge changes from topic "xlnx_mmap_dynamic_dtb" into integration
* changes: fix(xilinx): dcache flush for dtb region fix(xilinx): dynamic mmap region for dtb
This commit is contained in:
commit
44a267b59e
3 changed files with 30 additions and 2 deletions
|
@ -8,6 +8,7 @@
|
||||||
#include <common/fdt_fixup.h>
|
#include <common/fdt_fixup.h>
|
||||||
#include <common/fdt_wrappers.h>
|
#include <common/fdt_wrappers.h>
|
||||||
#include <libfdt.h>
|
#include <libfdt.h>
|
||||||
|
#include <lib/xlat_tables/xlat_tables_v2.h>
|
||||||
|
|
||||||
#include <plat_fdt.h>
|
#include <plat_fdt.h>
|
||||||
#include <platform_def.h>
|
#include <platform_def.h>
|
||||||
|
@ -24,6 +25,17 @@ void prepare_dtb(void)
|
||||||
if (IS_TFA_IN_OCM(BL31_BASE))
|
if (IS_TFA_IN_OCM(BL31_BASE))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
#if defined(PLAT_XLAT_TABLES_DYNAMIC)
|
||||||
|
ret = mmap_add_dynamic_region((unsigned long long)dtb,
|
||||||
|
(uintptr_t)dtb,
|
||||||
|
XILINX_OF_BOARD_DTB_MAX_SIZE,
|
||||||
|
MT_MEMORY | MT_RW | MT_NS);
|
||||||
|
if (ret != 0) {
|
||||||
|
WARN("Failed to add dynamic region for dtb: error %d\n", ret);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Return if no device tree is detected */
|
/* Return if no device tree is detected */
|
||||||
if (fdt_check_header(dtb) != 0) {
|
if (fdt_check_header(dtb) != 0) {
|
||||||
NOTICE("Can't read DT at %p\n", dtb);
|
NOTICE("Can't read DT at %p\n", dtb);
|
||||||
|
@ -48,6 +60,16 @@ void prepare_dtb(void)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
clean_dcache_range((uintptr_t)dtb, fdt_blob_size(dtb));
|
flush_dcache_range((uintptr_t)dtb, fdt_blob_size(dtb));
|
||||||
|
|
||||||
|
#if defined(PLAT_XLAT_TABLES_DYNAMIC)
|
||||||
|
ret = mmap_remove_dynamic_region((uintptr_t)dtb,
|
||||||
|
XILINX_OF_BOARD_DTB_MAX_SIZE);
|
||||||
|
if (ret != 0) {
|
||||||
|
WARN("Failed to remove dynamic region for dtb: error %d\n", ret);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
INFO("Changed device tree to advertise PSCI and reserved memories.\n");
|
INFO("Changed device tree to advertise PSCI and reserved memories.\n");
|
||||||
}
|
}
|
||||||
|
|
|
@ -224,7 +224,8 @@ void bl31_plat_arch_setup(void)
|
||||||
plat_arm_interconnect_enter_coherency();
|
plat_arm_interconnect_enter_coherency();
|
||||||
|
|
||||||
const mmap_region_t bl_regions[] = {
|
const mmap_region_t bl_regions[] = {
|
||||||
#if (defined(XILINX_OF_BOARD_DTB_ADDR) && !IS_TFA_IN_OCM(BL31_BASE))
|
#if (defined(XILINX_OF_BOARD_DTB_ADDR) && !IS_TFA_IN_OCM(BL31_BASE) && \
|
||||||
|
(!defined(PLAT_XLAT_TABLES_DYNAMIC)))
|
||||||
MAP_REGION_FLAT(XILINX_OF_BOARD_DTB_ADDR, XILINX_OF_BOARD_DTB_MAX_SIZE,
|
MAP_REGION_FLAT(XILINX_OF_BOARD_DTB_ADDR, XILINX_OF_BOARD_DTB_MAX_SIZE,
|
||||||
MT_MEMORY | MT_RW | MT_NS),
|
MT_MEMORY | MT_RW | MT_NS),
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -49,6 +49,11 @@ ifdef XILINX_OF_BOARD_DTB_ADDR
|
||||||
$(eval $(call add_define,XILINX_OF_BOARD_DTB_ADDR))
|
$(eval $(call add_define,XILINX_OF_BOARD_DTB_ADDR))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
PLAT_XLAT_TABLES_DYNAMIC := 0
|
||||||
|
ifeq (${PLAT_XLAT_TABLES_DYNAMIC},1)
|
||||||
|
$(eval $(call add_define,PLAT_XLAT_TABLES_DYNAMIC))
|
||||||
|
endif
|
||||||
|
|
||||||
PLAT_INCLUDES := -Iinclude/plat/arm/common/ \
|
PLAT_INCLUDES := -Iinclude/plat/arm/common/ \
|
||||||
-Iplat/xilinx/common/include/ \
|
-Iplat/xilinx/common/include/ \
|
||||||
-Iplat/xilinx/common/ipi_mailbox_service/ \
|
-Iplat/xilinx/common/ipi_mailbox_service/ \
|
||||||
|
|
Loading…
Add table
Reference in a new issue