Hello,

I am working on the RZG2L devkit from Renesas and trying to get the
mainline U-Boot working there.

I have noticed that in several locations, U-Boot is unconditionally
expecting the TF-A to pass a DTB blob:

In board/renesas/rzg2l/rzg2l.c:

--8<---------------cut here---------------start------------->8---
static void apply_atf_overlay(void *fdt_blob)
{
        void *atf_fdt_blob = (void *)(rcar_atf_boot_args[1]);
        ...
}
--8<---------------cut here---------------end--------------->8---

In arch/arm/mach-renesas/cpu_info-rzg2l.c:

--8<---------------cut here---------------start------------->8---
static const struct tfa_info *get_tfa_info(void)
{
        void *atf_fdt_blob = (void *)(rcar_atf_boot_args[1]);
        ...
}
--8<---------------cut here---------------end--------------->8---

Now, the TF-A that I have compiled (v2.5/rzg2l-1.00-43-g950d6a6b9) from
https://github.com/renesas-rz/rzg_trusted-firmware-a.git is not passing
any DTB blob:

--8<---------------cut here---------------start------------->8---
INFO:    BL31: Preparing for EL3 exit to normal world
INFO:    Entry point address = 0x50000000
INFO:    SPSR = 0x3c5
VERBOSE: Argument #0 = 0x0
VERBOSE: Argument #1 = 0x0
VERBOSE: Argument #2 = 0x0
VERBOSE: Argument #3 = 0x0
VERBOSE: Argument #4 = 0x0
VERBOSE: Argument #5 = 0x0
VERBOSE: Argument #6 = 0x0
VERBOSE: Argument #7 = 0x0
--8<---------------cut here---------------end--------------->8---

That results in dereferencing a NULL pointer and failing to run U-Boot
on that platform. On the other hand, disabling the two pieces of code
mentioned below is enough to have a working U-Boot.

It does not seem that the upstream TF-A has support for the RZG2L
CPU. So my question is, what is the expected TF-A branch / repository
that is meant to be used together with the renesas_rzg2l_smarc_defconfig
U-Boot configuration?

Thanks in advance,

Mathieu

Reply via email to