feat(versal2): retrieve DT address from transfer list
On versal2 platform, unlike current static DT address passing
mechanism, DT address is retrieved from transfer list dynamically.
Change-Id: I44b9a0753809652f26bc1b7e061f5364229ba352
Signed-off-by: Maheedhar Bollapalli <maheedharsai.bollapalli@amd.com>
diff --git a/plat/xilinx/common/include/plat_fdt.h b/plat/xilinx/common/include/plat_fdt.h
index 47a678c..48ffff3 100644
--- a/plat/xilinx/common/include/plat_fdt.h
+++ b/plat/xilinx/common/include/plat_fdt.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2023, Advanced Micro Devices, Inc. All rights reserved.
+ * Copyright (c) 2023-2025, Advanced Micro Devices, Inc. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
@@ -8,9 +8,7 @@
#define PLAT_FDT_H
void prepare_dtb(void);
-
-#if defined(XILINX_OF_BOARD_DTB_ADDR)
+uintptr_t plat_retrieve_dt_addr(void);
int32_t is_valid_dtb(void *fdt);
-#endif
#endif /* PLAT_FDT_H */
diff --git a/plat/xilinx/common/plat_console.c b/plat/xilinx/common/plat_console.c
index 681226f..c530895 100644
--- a/plat/xilinx/common/plat_console.c
+++ b/plat/xilinx/common/plat_console.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2023, Advanced Micro Devices, Inc. All rights reserved.
+ * Copyright (c) 2023-2025, Advanced Micro Devices, Inc. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -222,7 +222,7 @@
static int fdt_get_uart_info(dt_uart_info_t *info)
{
int node = 0, ret = 0;
- void *dtb = (void *)XILINX_OF_BOARD_DTB_ADDR;
+ void *dtb = (void *)plat_retrieve_dt_addr();
ret = is_valid_dtb(dtb);
if (ret < 0) {
diff --git a/plat/xilinx/common/plat_fdt.c b/plat/xilinx/common/plat_fdt.c
index 4ad7b2d..ae2c1ea 100644
--- a/plat/xilinx/common/plat_fdt.c
+++ b/plat/xilinx/common/plat_fdt.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2023, Advanced Micro Devices, Inc. All rights reserved.
+ * Copyright (c) 2023-2025, Advanced Micro Devices, Inc. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
@@ -105,7 +105,7 @@
int map_ret = 0;
int ret = 0;
- dtb = (void *)XILINX_OF_BOARD_DTB_ADDR;
+ dtb = (void *)plat_retrieve_dt_addr();
if (!IS_TFA_IN_OCM(BL31_BASE)) {
@@ -156,4 +156,14 @@
}
}
#endif
+}
+
+uintptr_t plat_retrieve_dt_addr(void)
+{
+ void *dtb = NULL;
+
+#if defined(XILINX_OF_BOARD_DTB_ADDR)
+ dtb = (void *)XILINX_OF_BOARD_DTB_ADDR;
+#endif
+ return (uintptr_t)dtb;
}