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 <[email protected]>

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 <[email protected]>
---
  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/[email protected]/).

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

Reply via email to