diff options
Diffstat (limited to 'arch/arm/mach-stm32mp/boot_params.c')
-rw-r--r-- | arch/arm/mach-stm32mp/boot_params.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/arch/arm/mach-stm32mp/boot_params.c b/arch/arm/mach-stm32mp/boot_params.c index ebddf6a7dbc..2d058edc419 100644 --- a/arch/arm/mach-stm32mp/boot_params.c +++ b/arch/arm/mach-stm32mp/boot_params.c @@ -6,6 +6,7 @@ #define LOG_CATEGORY LOGC_ARCH #include <config.h> +#include <errno.h> #include <log.h> #include <linux/libfdt.h> #include <asm/arch/sys_proto.h> @@ -16,20 +17,22 @@ * Use the saved FDT address provided by TF-A at boot time (NT_FW_CONFIG = * Non Trusted Firmware configuration file) when the pointer is valid */ -void *board_fdt_blob_setup(int *err) +int board_fdt_blob_setup(void **fdtp) { unsigned long nt_fw_dtb = get_stm32mp_bl2_dtb(); log_debug("%s: nt_fw_dtb=%lx\n", __func__, nt_fw_dtb); - *err = 0; /* use external device tree only if address is valid */ - if (nt_fw_dtb >= STM32_DDR_BASE) { - if (fdt_magic(nt_fw_dtb) == FDT_MAGIC) - return (void *)nt_fw_dtb; - log_debug("%s: DTB not found.\n", __func__); + if (nt_fw_dtb < STM32_DDR_BASE || + fdt_magic(nt_fw_dtb) != FDT_MAGIC) { + log_debug("DTB not found.\n"); + log_debug("fall back to builtin DTB, %p\n", _end); + + return -EEXIST; } - log_debug("%s: fall back to builtin DTB, %p\n", __func__, _end); - return (void *)_end; + *fdtp = (void *)nt_fw_dtb; + + return 0; } |