On 5/6/2026 9:54 am, [email protected] wrote:
From: Alif Zakuan Yuslaimi <[email protected]>

Enable backup for data section to support warm reset in Stratix10 SPL as
no SPL image would be reloaded in warm reset.

Signed-off-by: Alif Zakuan Yuslaimi <[email protected]>
---

Changes in v4:
- Update reset_flag() weak function to take in u32 flag parameter

  arch/arm/mach-socfpga/spl_s10.c     | 17 +++++++++++++++++
  configs/socfpga_stratix10_defconfig |  2 +-
  2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/arch/arm/mach-socfpga/spl_s10.c b/arch/arm/mach-socfpga/spl_s10.c
index 8ab80740c6e..00d43460fce 100644
--- a/arch/arm/mach-socfpga/spl_s10.c
+++ b/arch/arm/mach-socfpga/spl_s10.c
@@ -21,12 +21,29 @@
  #include <watchdog.h>
  #include <dm/uclass.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)
  {
        const struct cm_config *cm_default_cfg = cm_get_default_config();
        int ret;
        struct udevice *dev;
+ if (IS_ENABLED(CONFIG_XPL_BUILD))
+               spl_save_restore_data();
+
        ret = spl_early_init();
        if (ret)
                hang();
diff --git a/configs/socfpga_stratix10_defconfig 
b/configs/socfpga_stratix10_defconfig
index 82f0cceafb4..be0c452ead0 100644
--- a/configs/socfpga_stratix10_defconfig
+++ b/configs/socfpga_stratix10_defconfig
@@ -3,7 +3,6 @@ CONFIG_COUNTER_FREQUENCY=400000000
  CONFIG_ARCH_SOCFPGA=y
  CONFIG_TEXT_BASE=0x200000
  CONFIG_NR_DRAM_BANKS=2
-CONFIG_SPL_LDSCRIPT="arch/arm/mach-socfpga/u-boot-spl-soc64.lds"
  CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
  CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x300000
  CONFIG_SF_DEFAULT_MODE=0x2003
@@ -19,6 +18,7 @@ CONFIG_SPL_BSS_MAX_SIZE=0x100000
  CONFIG_TARGET_SOCFPGA_STRATIX10_SOCDK=y
  CONFIG_IDENT_STRING="socfpga_stratix10"
  CONFIG_SPL_FS_FAT=y
+CONFIG_SPL_RECOVER_DATA_SECTION=y
  CONFIG_FIT=y
  CONFIG_SPL_FIT_SIGNATURE=y
  CONFIG_SPL_LOAD_FIT=y


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

Best regards,
Tien Fong

Reply via email to