summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUrja Rannikko <urjaman@gmail.com>2020-05-13 19:15:22 +0000
committerKever Yang <kever.yang@rock-chips.com>2020-05-22 20:53:20 +0800
commite68a84360173f90fa37df875e6aa2c83f2858b80 (patch)
tree976423df87b6fcf39da6f5019396884ab7f8c643
parentfffdf7290cee85232ee522e27c09c7f1178e6219 (diff)
rockchip: spl-boot-order: do not attempt to access fdt if OF_PLATDATA
gd->fdt_blob is null if using OF_PLATDATA in SPL, which causes a hang after f0921f5098 ("fdt: Sync up to the latest libfdt"). We use the same test that is used in spl_common_init on whether to call fdtdec_setup to unconditionally avoid linking in the fdt-using code when not necessary and thus reduce SPL size. Signed-off-by: Urja Rannikko <urjaman@gmail.com> Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
-rw-r--r--arch/arm/mach-rockchip/spl-boot-order.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/arch/arm/mach-rockchip/spl-boot-order.c b/arch/arm/mach-rockchip/spl-boot-order.c
index c2e4023007..94673f34c9 100644
--- a/arch/arm/mach-rockchip/spl-boot-order.c
+++ b/arch/arm/mach-rockchip/spl-boot-order.c
@@ -99,6 +99,12 @@ __weak const char *board_spl_was_booted_from(void)
void board_boot_order(u32 *spl_boot_list)
{
+ /* In case of no fdt (or only platdata), use spl_boot_device() */
+ if (!CONFIG_IS_ENABLED(OF_CONTROL) || CONFIG_IS_ENABLED(OF_PLATDATA)) {
+ spl_boot_list[0] = spl_boot_device();
+ return;
+ }
+
const void *blob = gd->fdt_blob;
int chosen_node = fdt_path_offset(blob, "/chosen");
int idx = 0;