[PATCH 4/4] arch: arm: socfpga: Move SMMU init to before booting SSBL
Naresh Kumar Ravulapalli
nareshkumar.ravulapalli at altera.com
Tue Aug 19 06:52:37 CEST 2025
socfpga_init_smmu() changes the L3 masters (eg: SDMMC, NAND and etc.)
to non-secure; this leads to failure when L3 masters tries loading
SSBL image to secure region in DDR.
Hence, socfpga_init_smmu() is moved to spl_perform_fixups(), so,
it is called prior to running SSBL.
Signed-off-by: Naresh Kumar Ravulapalli <nareshkumar.ravulapalli at altera.com>
---
arch/arm/mach-socfpga/spl_agilex.c | 3 ---
arch/arm/mach-socfpga/spl_s10.c | 3 ---
arch/arm/mach-socfpga/spl_soc64.c | 6 ++++++
3 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/arch/arm/mach-socfpga/spl_agilex.c b/arch/arm/mach-socfpga/spl_agilex.c
index 95e092377ef..5567360fdbe 100644
--- a/arch/arm/mach-socfpga/spl_agilex.c
+++ b/arch/arm/mach-socfpga/spl_agilex.c
@@ -69,9 +69,6 @@ void board_init_f(ulong dummy)
firewall_setup();
- /* Setup and Initialize SMMU */
- socfpga_init_smmu();
-
ret = uclass_get_device(UCLASS_CACHE, 0, &dev);
if (ret) {
debug("CCU init failed: %d\n", ret);
diff --git a/arch/arm/mach-socfpga/spl_s10.c b/arch/arm/mach-socfpga/spl_s10.c
index 9eebeda308f..8fc9369776d 100644
--- a/arch/arm/mach-socfpga/spl_s10.c
+++ b/arch/arm/mach-socfpga/spl_s10.c
@@ -73,9 +73,6 @@ void board_init_f(ulong dummy)
firewall_setup();
- /* Setup and Initialize SMMU */
- socfpga_init_smmu();
-
/* disable ocram security at CCU for non secure access */
clrbits_le32(CCU_REG_ADDR(CCU_CPU0_MPRT_ADMASK_MEM_RAM0),
CCU_ADMASK_P_MASK | CCU_ADMASK_NS_MASK);
diff --git a/arch/arm/mach-socfpga/spl_soc64.c b/arch/arm/mach-socfpga/spl_soc64.c
index 651d9fc9cb8..8cc56c58089 100644
--- a/arch/arm/mach-socfpga/spl_soc64.c
+++ b/arch/arm/mach-socfpga/spl_soc64.c
@@ -6,6 +6,8 @@
*/
#include <hang.h>
+#include <asm/arch/mailbox_s10.h>
+#include <asm/arch/smmu_s10.h>
#include <spl.h>
#include <dm/uclass.h>
@@ -132,6 +134,7 @@ u32 spl_boot_mode(const u32 boot_device)
/* board specific function prior loading SSBL / U-Boot */
void spl_perform_fixups(struct spl_image_info *spl_image)
{
+#if (IS_ENABLED(CONFIG_TARGET_SOCFPGA_AGILEX5))
int ret;
struct udevice *dev;
@@ -140,4 +143,7 @@ void spl_perform_fixups(struct spl_image_info *spl_image)
printf("HPS SMMU secure settings init failed: %d\n", ret);
hang();
}
+#endif
+ socfpga_init_smmu();
+
}
--
2.35.3
More information about the U-Boot
mailing list