
On Sat, Mar 14, 2020 at 3:18 AM Bin Meng bmeng.cn@gmail.com wrote:
Hi Atish,
On Sat, Mar 14, 2020 at 8:11 AM Atish Patra atish.patra@wdc.com wrote:
FU540 uses OF_SEPARATE instead of OF_PRIOR.
Enable OF_BOARD_FIXUP to update the DT with reserved-memory node.
Signed-off-by: Atish Patra atish.patra@wdc.com
board/sifive/fu540/fu540.c | 15 +++++++++++++++ configs/sifive_fu540_defconfig | 1 + 2 files changed, 16 insertions(+)
diff --git a/board/sifive/fu540/fu540.c b/board/sifive/fu540/fu540.c index 47a20902517c..82b3a9c8e729 100644 --- a/board/sifive/fu540/fu540.c +++ b/board/sifive/fu540/fu540.c @@ -141,6 +141,21 @@ int misc_init_r(void)
#endif
+#ifdef CONFIG_OF_BOARD_FIXUP +int board_fix_fdt(void *fdt)
This is used to fix-up the DT that U-Boot uses, not the DT that operating system uses.
Ahh yes. User can load DT from sdcard or network for OS usage. We should also update the arch_fixup_fdt as well so that OS sees the reserved memory nodes.
As I mentioned in https://github.com/riscv/riscv-sbi-doc/pull/37#issuecomment-596184723, we need consider U-Boot SPL usage.
If U-Boot SPL is built without a DT, OpenSBI should be built with a DT. Here are the constraints to use reserved-memory:
For any DT based platform: 1. If the stage prior to OpenSBI i.e. FSBL, U-Boot SPL is built without a DT, OpenSBI must be built with a DT.
2. If U-boot proper is built with OF_SEPARATE, OF_BOARD_FIXUP should be enabled as well so that U-Boot can copy the reserved-memory nodes from previous stage DT and update the current DT in use.
+{
int err;
err = riscv_board_reserved_mem_fixup(fdt);
if (err < 0) {
printf("failed to fixup DT for reserved memory: %d\n", err);
return err;
}
return 0;
+} +#endif
int board_init(void) { /* For now nothing to do here. */ diff --git a/configs/sifive_fu540_defconfig b/configs/sifive_fu540_defconfig index 6d61e6c960ee..8fb3794cd578 100644 --- a/configs/sifive_fu540_defconfig +++ b/configs/sifive_fu540_defconfig @@ -12,3 +12,4 @@ CONFIG_DISPLAY_BOARDINFO=y CONFIG_DEFAULT_DEVICE_TREE="hifive-unleashed-a00" CONFIG_SYS_RELOC_GD_ENV_ADDR=y CONFIG_DM_MTD=y
+CONFIG_OF_BOARD_FIXUP=y
Regards, Bin