rpi: Use the U-Boot control FDT for fdt_addr
authorSimon Glass <sjg@chromium.org>
Sat, 27 Sep 2025 11:30:15 +0000 (05:30 -0600)
committerPeter Robinson <pbrobinson@gmail.com>
Tue, 25 Nov 2025 09:22:12 +0000 (09:22 +0000)
commit15c719174cf30c4ef1c5a3638156db8c318fbd18
treec67cfc21b00fed1dfd74852f689b46947d1a7db0
parent2c39d975f87cfcce3805bff34918708bf7491b25
rpi: Use the U-Boot control FDT for fdt_addr

The fdt_addr variable is used in extlinux as a fallback devicetree if
none is provided by the boot command. Otherwise the only use in U-Boot
seems to me efi_install_fdt() when the internal FDT is required.

The existing mechanism uses the devicetree provided to U-Boot, but in
its original, unrelocated position. In my testing on an rpi_4, this ends
up at 2b35ef00 which is not a convenient place in memory, if the ramdisk
is large.

U-Boot already deals with this sort of problem by relocating the FDT
to a safe address.

So use the control-FDT address instead.

Remove the existing comment, which is confusing, since the FDT is not
actually passed unmodified to the kernel: U-Boot adds various things
using its FDT-fixup mechanism.

Note that board_get_usable_ram_top() reduces the RAM top for boards with
less RAM. This behaviour is left unchanged as there is no other
mechanism for U-Boot to handle this.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Christopher Obbard <christopher.obbard@linaro.org>
Tested-by: Christopher Obbard <christopher.obbard@linaro.org> # CM4 1G
board/raspberrypi/rpi/rpi.c