[PATCH] arch: arm: mach-socfpga: Fix non-Agilex targets

Chee, Tien Fong tienfong.chee at altera.com
Tue Nov 25 04:31:33 CET 2025


Hi Jan,

On 14/11/2025 8:07 pm, Jan Kiszka wrote:
> [CAUTION: This email is from outside your organization. Unless you trust the sender, do not click on links or open attachments as it may be a fraudulent email attempting to steal your information and/or compromise your computer.]
>
> From: Jan Kiszka <jan.kiszka at siemens.com>
>
> The Altera system manager device is only provided for the Agilex
> targets. All others were left with an uninitialized socfpga_sysmgr_base
> after that refactoring, breaking any boot attempts already in SPL.
>
> Tested only on Cyclone5 / DE0-Nano-SoC.
>
> Fixes: 35638172f99a ("arm: socfpga: agilex5: Add new driver model for system manager in Agilex5")
> Signed-off-by: Jan Kiszka <jan.kiszka at siemens.com>
> ---
>   arch/arm/mach-socfpga/misc.c     | 7 +++++++
>   arch/arm/mach-socfpga/spl_a10.c  | 1 +
>   arch/arm/mach-socfpga/spl_gen5.c | 1 +
>   arch/arm/mach-socfpga/spl_n5x.c  | 1 +
>   arch/arm/mach-socfpga/spl_s10.c  | 1 +
>   5 files changed, 11 insertions(+)
>
> diff --git a/arch/arm/mach-socfpga/misc.c b/arch/arm/mach-socfpga/misc.c
> index 76747c2196a..f859d54dce4 100644
> --- a/arch/arm/mach-socfpga/misc.c
> +++ b/arch/arm/mach-socfpga/misc.c
> @@ -277,6 +277,8 @@ void socfpga_get_managers_addr(void)
>   void socfpga_get_sys_mgr_addr(void)
>   {
>          int ret;
> +#if defined(CONFIG_TARGET_SOCFPGA_AGILEX) || \
> +    defined(TARGET_SOCFPGA_AGILEX7M) || defined(TARGET_SOCFPGA_AGILEX5)
>          struct udevice *dev;
>
>          ofnode node = ofnode_get_aliases_node("sysmgr");
> @@ -293,6 +295,11 @@ void socfpga_get_sys_mgr_addr(void)
>          } else {
>                  socfpga_sysmgr_base = (phys_addr_t)dev_read_addr(dev);
>          }
> +#else
> +       ret = socfpga_get_base_addr("altr,sys-mgr", &socfpga_sysmgr_base);
> +       if (ret)
> +               hang();
> +#endif
>   }
>
>   phys_addr_t socfpga_get_rstmgr_addr(void)
> diff --git a/arch/arm/mach-socfpga/spl_a10.c b/arch/arm/mach-socfpga/spl_a10.c
> index c20376f7f8e..26828077c51 100644
> --- a/arch/arm/mach-socfpga/spl_a10.c
> +++ b/arch/arm/mach-socfpga/spl_a10.c
> @@ -250,6 +250,7 @@ void board_init_f(ulong dummy)
>          if (spl_early_init())
>                  hang();
>
> +       socfpga_get_sys_mgr_addr();
>          socfpga_get_managers_addr();
>
>          dcache_disable();
> diff --git a/arch/arm/mach-socfpga/spl_gen5.c b/arch/arm/mach-socfpga/spl_gen5.c
> index df79cfe0f7f..f1c654e1566 100644
> --- a/arch/arm/mach-socfpga/spl_gen5.c
> +++ b/arch/arm/mach-socfpga/spl_gen5.c
> @@ -72,6 +72,7 @@ void board_init_f(ulong dummy)
>          if (ret)
>                  hang();
>
> +       socfpga_get_sys_mgr_addr();
>          socfpga_get_managers_addr();
>
>          /*
> diff --git a/arch/arm/mach-socfpga/spl_n5x.c b/arch/arm/mach-socfpga/spl_n5x.c
> index 81283ef7162..ed4e6f38b31 100644
> --- a/arch/arm/mach-socfpga/spl_n5x.c
> +++ b/arch/arm/mach-socfpga/spl_n5x.c
> @@ -31,6 +31,7 @@ void board_init_f(ulong dummy)
>          if (ret)
>                  hang();
>
> +       socfpga_get_sys_mgr_addr();
>          socfpga_get_managers_addr();
>
>          /* Ensure watchdog is paused when debugging is happening */
> diff --git a/arch/arm/mach-socfpga/spl_s10.c b/arch/arm/mach-socfpga/spl_s10.c
> index fa83ff96adc..460a6f88416 100644
> --- a/arch/arm/mach-socfpga/spl_s10.c
> +++ b/arch/arm/mach-socfpga/spl_s10.c
> @@ -33,6 +33,7 @@ void board_init_f(ulong dummy)
>          if (ret)
>                  hang();
>
> +       socfpga_get_sys_mgr_addr();
>          socfpga_get_managers_addr();
>
>          /* Ensure watchdog is paused when debugging is happening */

Thanks for the quick fix. I’ve reviewed your patch along with Brian’s fix
(https://patchwork.ozlabs.org/project/uboot/patch/20251114160423.1518-1-briansune@gmail.com/).

Both address the same issue, but Brian’s approach keeps the change local 
to misc.c and avoids spreading SoC specific conditionals into SPL paths, 
which fits better with the ongoing DM migration.

Functionally they both work, but Brian’s version looks cleaner for 
long-term maintenance.


Could you take a look at Brian’s patch as well and let us know if you 
see any issues or corner cases we might have missed?

Thanks for your help.

Tien Fong


More information about the U-Boot mailing list