On 23/6/2026 10:02 am, Chen Huei Lok wrote:
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


Reviewed-by: Tien Fong Chee <[email protected]>

Best regards,
Tien Fong

Reply via email to