Enable backup for data section to support warm reset as no SPL image would be reloaded in warm reset.
Signed-off-by: Chen Huei Lok <[email protected]> --- arch/arm/mach-socfpga/spl_n5x.c | 18 ++++++++++++++++++ configs/socfpga_n5x_defconfig | 1 + 2 files changed, 19 insertions(+) diff --git a/arch/arm/mach-socfpga/spl_n5x.c b/arch/arm/mach-socfpga/spl_n5x.c index 0a8dd6d0fee..8b03d047f33 100644 --- a/arch/arm/mach-socfpga/spl_n5x.c +++ b/arch/arm/mach-socfpga/spl_n5x.c @@ -18,11 +18,29 @@ #include <spl.h> #include <watchdog.h> +u32 reset_flag(u32 flag) +{ + /* Check rstmgr.stat for warm reset status */ + u32 status = readl(SOCFPGA_RSTMGR_ADDRESS); + + /* Check whether any L4 watchdogs or SDM had triggered warm reset */ + u32 warm_reset_mask = RSTMGR_L4WD_MPU_WARMRESET_MASK; + + if (status & warm_reset_mask) + return 0; + + return 1; +} + void board_init_f(ulong dummy) { int ret; struct udevice *dev; +#if defined(CONFIG_XPL_BUILD) && defined(CONFIG_SPL_RECOVER_DATA_SECTION) + spl_save_restore_data(); +#endif + ret = spl_early_init(); if (ret) hang(); diff --git a/configs/socfpga_n5x_defconfig b/configs/socfpga_n5x_defconfig index d706366337f..8f4723398df 100644 --- a/configs/socfpga_n5x_defconfig +++ b/configs/socfpga_n5x_defconfig @@ -21,6 +21,7 @@ CONFIG_SYS_BOOTM_LEN=0x2000000 CONFIG_TARGET_SOCFPGA_N5X_SOCDK=y CONFIG_IDENT_STRING="socfpga_n5x" CONFIG_SPL_FS_FAT=y +CONFIG_SPL_RECOVER_DATA_SECTION=y CONFIG_REMAKE_ELF=y CONFIG_FIT=y CONFIG_SPL_FIT_SIGNATURE=y -- 2.43.7

