summaryrefslogtreecommitdiff
path: root/board/xilinx
diff options
context:
space:
mode:
authorMichal Simek <michal.simek@xilinx.com>2022-03-17 15:25:31 +0100
committerMichal Simek <michal.simek@xilinx.com>2022-03-29 09:16:30 +0200
commitf66d0b53462cdd209ec045c8dcf623046fa4f3cc (patch)
tree52c38b7f4418c3c2744632ff702111ff86916714 /board/xilinx
parentf307c688ea951978ebcceb5536aa31c0249b33df (diff)
arm64: versal: Do not place u-boot to reserved memory location
Versal can also have reserved space in DT which u-boot has to avoid to placing self to that location. The same change was done in ZynqMP by commit ce39ee28ec31 ("zynqmp: Do not place u-boot to reserved memory location") and also for microblaze by commit d7b5cc89d329 ("microblaze: Do not place u-boot to reserved memory location"). The patch was tested by adding reserved-memory node to DT and check via bdinfo back. Signed-off-by: Michal Simek <michal.simek@xilinx.com> Link: https://lore.kernel.org/r/15426fa6d64835dd23c5c8c12bbfc97306fb6098.1647527129.git.michal.simek@xilinx.com
Diffstat (limited to 'board/xilinx')
-rw-r--r--board/xilinx/versal/board.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/board/xilinx/versal/board.c b/board/xilinx/versal/board.c
index 299e128f7b..9940f2aeb3 100644
--- a/board/xilinx/versal/board.c
+++ b/board/xilinx/versal/board.c
@@ -9,6 +9,7 @@
#include <env.h>
#include <fdtdec.h>
#include <init.h>
+#include <image.h>
#include <env_internal.h>
#include <log.h>
#include <malloc.h>
@@ -249,6 +250,25 @@ int dram_init(void)
return 0;
}
+ulong board_get_usable_ram_top(ulong total_size)
+{
+ phys_size_t size;
+ phys_addr_t reg;
+ struct lmb lmb;
+
+ /* found enough not-reserved memory to relocated U-Boot */
+ lmb_init(&lmb);
+ lmb_add(&lmb, gd->ram_base, gd->ram_size);
+ boot_fdt_add_mem_rsv_regions(&lmb, (void *)gd->fdt_blob);
+ size = ALIGN(CONFIG_SYS_MALLOC_LEN + total_size, MMU_SECTION_SIZE);
+ reg = lmb_alloc(&lmb, size, MMU_SECTION_SIZE);
+
+ if (!reg)
+ reg = gd->ram_top - size;
+
+ return reg + size;
+}
+
void reset_cpu(void)
{
}