[PATCH v4 7/7] arm: socfpga: n5x: update SPL data save and restore implementation

Chee, Tien Fong tien.fong.chee at altera.com
Wed Jul 8 06:39:39 CEST 2026


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 <chen.huei.lok at altera.com>
> ---
>   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 <tien.fong.chee at altera.com>

Best regards,
Tien Fong



More information about the U-Boot mailing list