[PATCH] board: rzg2l: Do not expect a DTB blob from the TF-A.
Mathieu Othacehe
othacehe at gnu.org
Thu Sep 18 14:48:27 CEST 2025
On the RZG2L platform, the advised
TF-A (https://github.com/renesas-rz/rzg_trusted-firmware-a/tree/v2.5/rzg2l)
does not pass any DTB blob to U-Boot.
On the other hand, the RZG2L part of U-Boot expects a DTB to be passed. It
means that if one flashes the latest TF-A as well as the mainline U-Boot,
it will crash trying to dereference the NULL DTB pointer before outputing
anything, which is painful to debug.
As the renesas_rzg2l_smarc_defconfig U-Boot configuration (the only RZG2L
supported configuration) is anyway embedding only the
renesas/r9a07g044l2-smarc.dts device-tree, it is fair to assume that we are
booting from that platform.
Remove any DTB blob expectation and assume that we are booting from the
platform we are compiling U-Boot for.
Signed-off-by: Mathieu Othacehe <othacehe at gnu.org>
---
arch/arm/mach-renesas/cpu_info-rzg2l.c | 25 ++--------------
board/renesas/rzg2l/rzg2l.c | 40 --------------------------
2 files changed, 2 insertions(+), 63 deletions(-)
diff --git a/arch/arm/mach-renesas/cpu_info-rzg2l.c b/arch/arm/mach-renesas/cpu_info-rzg2l.c
index ab95ce76388..97e0eb419a4 100644
--- a/arch/arm/mach-renesas/cpu_info-rzg2l.c
+++ b/arch/arm/mach-renesas/cpu_info-rzg2l.c
@@ -10,9 +10,6 @@
#define SYSC_LSI_DEVID 0x11020A04
-/* If the firmware passed a device tree, use it for soc identification. */
-extern u64 rcar_atf_boot_args[];
-
/* CPU information table */
struct tfa_info {
const char *soc_name;
@@ -24,32 +21,14 @@ static const struct tfa_info tfa_info[] = {
{ "renesas,r9a07g044l2", "R9A07G044L", RENESAS_CPU_TYPE_R9A07G044L },
};
-static const struct tfa_info invalid_tfa_info = { NULL, "(invalid)", 0 };
-
-static const struct tfa_info *get_tfa_info(void)
-{
- void *atf_fdt_blob = (void *)(rcar_atf_boot_args[1]);
-
- if (fdt_magic(atf_fdt_blob) == FDT_MAGIC) {
- unsigned int i;
- for (i = 0; i < ARRAY_SIZE(tfa_info); i++) {
- if (!fdt_node_check_compatible(atf_fdt_blob, 0,
- tfa_info[i].soc_name))
- return &tfa_info[i];
- }
- }
-
- return &invalid_tfa_info;
-}
-
const u8 *rzg_get_cpu_name(void)
{
- return get_tfa_info()->cpu_name;
+ return tfa_info->cpu_name;
}
u32 renesas_get_cpu_type(void)
{
- return get_tfa_info()->cpu_type;
+ return tfa_info->cpu_type;
}
u32 renesas_get_cpu_rev_integer(void)
diff --git a/board/renesas/rzg2l/rzg2l.c b/board/renesas/rzg2l/rzg2l.c
index 509c5dbb156..0bdf030eb15 100644
--- a/board/renesas/rzg2l/rzg2l.c
+++ b/board/renesas/rzg2l/rzg2l.c
@@ -7,46 +7,6 @@
#include <fdtdec.h>
#include <linux/libfdt.h>
-#if IS_ENABLED(CONFIG_MULTI_DTB_FIT)
-/* If the firmware passed a device tree, use it for board identification. */
-extern u64 rcar_atf_boot_args[];
-
-static bool is_rzg2l_board(const char *board_name)
-{
- void *atf_fdt_blob = (void *)(rcar_atf_boot_args[1]);
-
- return fdt_node_check_compatible(atf_fdt_blob, 0, board_name) == 0;
-}
-
-int board_fit_config_name_match(const char *name)
-{
- void *atf_fdt_blob = (void *)(rcar_atf_boot_args[1]);
-
- if (fdt_magic(atf_fdt_blob) != FDT_MAGIC)
- return -1;
-
- if (is_rzg2l_board("renesas,r9a07g044l2"))
- return strcmp(name, "r9a07g044l2-smarc");
-
- return -1;
-}
-#endif
-
-static void apply_atf_overlay(void *fdt_blob)
-{
- void *atf_fdt_blob = (void *)(rcar_atf_boot_args[1]);
-
- if (fdt_magic(atf_fdt_blob) == FDT_MAGIC)
- fdt_overlay_apply_node(fdt_blob, 0, atf_fdt_blob, 0);
-}
-
-int fdtdec_board_setup(const void *fdt_blob)
-{
- apply_atf_overlay((void *)fdt_blob);
-
- return 0;
-}
-
int ft_board_setup(void *blob, struct bd_info *bd)
{
return 0;
--
2.49.0
More information about the U-Boot
mailing list