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

Jan Kiszka jan.kiszka at siemens.com
Fri Nov 14 13:07:28 CET 2025


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 */
-- 
2.51.0


More information about the U-Boot mailing list