The xload function allows to build the FSBL without piggy data and load
the SSBL from QSPI.

Signed-off-by: Michael Tretter <[email protected]>
---
 arch/arm/mach-socfpga/atf.c    | 10 ++++++++++
 include/mach/socfpga/generic.h |  1 +
 2 files changed, 11 insertions(+)

diff --git a/arch/arm/mach-socfpga/atf.c b/arch/arm/mach-socfpga/atf.c
index a59a73d1c31f..7583a20b16f5 100644
--- a/arch/arm/mach-socfpga/atf.c
+++ b/arch/arm/mach-socfpga/atf.c
@@ -128,6 +128,16 @@ static void agilex5_el3_init(void)
        agilex5_start_image_via_tfa(bl33);
 }
 
+void __noreturn agilex5_barebox_entry_xload(void)
+{
+       /* Using xload in EL1 is not supported */
+       if (current_el() != 3)
+               hang();
+
+       agilex5_el3_init();
+       __builtin_unreachable();
+}
+
 void __noreturn agilex5_barebox_entry(void *fdt)
 {
        phys_addr_t membase;
diff --git a/include/mach/socfpga/generic.h b/include/mach/socfpga/generic.h
index 16e117f4206c..a2a3fad58b18 100644
--- a/include/mach/socfpga/generic.h
+++ b/include/mach/socfpga/generic.h
@@ -101,6 +101,7 @@ static inline void arria10_watchdog_disable(void) {}
 
 int agilex5_clk_init(void);
 void __noreturn agilex5_barebox_entry(void *fdt);
+void __noreturn agilex5_barebox_entry_xload(void);
 
 static inline void __udelay(unsigned us)
 {

-- 
2.47.3


Reply via email to