[PATCH 02/11] ARM: at91: sama5d4: add entry point helpers
Ahmad Fatoum
a.fatoum at pengutronix.de
Wed Dec 14 02:58:22 PST 2022
Like already done for sama5d2 and sama5d3, provide a set of helpers for
use in device-tree-enabled SAMA5D4 boards.
Signed-off-by: Ahmad Fatoum <a.fatoum at pengutronix.de>
---
arch/arm/mach-at91/ddramc.c | 7 +++++++
arch/arm/mach-at91/include/mach/barebox-arm.h | 4 ++++
arch/arm/mach-at91/include/mach/ddramc.h | 1 +
arch/arm/mach-at91/include/mach/sama5_bootsource.h | 3 +++
4 files changed, 15 insertions(+)
diff --git a/arch/arm/mach-at91/ddramc.c b/arch/arm/mach-at91/ddramc.c
index 8f70b4ada2a1..071c44ead372 100644
--- a/arch/arm/mach-at91/ddramc.c
+++ b/arch/arm/mach-at91/ddramc.c
@@ -33,6 +33,13 @@ void __noreturn sama5d3_barebox_entry(unsigned int r4, void *boarddata)
barebox_arm_entry(SAMA5_DDRCS, at91sama5d3_get_ddram_size(),
boarddata);
}
+void __noreturn sama5d4_barebox_entry(unsigned int r4, void *boarddata)
+{
+ __sama5d4_stashed_bootrom_r4 = r4;
+
+ barebox_arm_entry(SAMA5_DDRCS, at91sama5d4_get_ddram_size(),
+ boarddata);
+}
static int sama5_ddr_probe(struct device_d *dev)
{
diff --git a/arch/arm/mach-at91/include/mach/barebox-arm.h b/arch/arm/mach-at91/include/mach/barebox-arm.h
index 36c6abadc137..5b77a7ba5989 100644
--- a/arch/arm/mach-at91/include/mach/barebox-arm.h
+++ b/arch/arm/mach-at91/include/mach/barebox-arm.h
@@ -5,6 +5,7 @@
#include <asm/barebox-arm.h>
#include <asm/common.h>
#include <mach/sama5d3.h>
+#include <mach/sama5d4.h>
#define SAMA5_ENTRY_FUNCTION(name, stack_top, r4) \
void name (u32 r0, u32 r1, u32 r2, u32 r3); \
@@ -28,4 +29,7 @@
#define SAMA5D3_ENTRY_FUNCTION(name, r4) \
SAMA5_ENTRY_FUNCTION(name, SAMA5D3_SRAM_BASE + SAMA5D3_SRAM_SIZE, r4)
+#define SAMA5D4_ENTRY_FUNCTION(name, r4) \
+ SAMA5_ENTRY_FUNCTION(name, SAMA5D4_SRAM_BASE + SAMA5D4_SRAM_SIZE, r4)
+
#endif
diff --git a/arch/arm/mach-at91/include/mach/ddramc.h b/arch/arm/mach-at91/include/mach/ddramc.h
index 7daef1763641..d09392262e39 100644
--- a/arch/arm/mach-at91/include/mach/ddramc.h
+++ b/arch/arm/mach-at91/include/mach/ddramc.h
@@ -34,5 +34,6 @@ void at91_lpddr1_sdram_initialize(void __iomem *base_address,
void __noreturn sama5d2_barebox_entry(unsigned int r4, void *boarddata);
void __noreturn sama5d3_barebox_entry(unsigned int r4, void *boarddata);
+void __noreturn sama5d4_barebox_entry(unsigned int r4, void *boarddata);
#endif /* #ifndef __DDRAMC_H__ */
diff --git a/arch/arm/mach-at91/include/mach/sama5_bootsource.h b/arch/arm/mach-at91/include/mach/sama5_bootsource.h
index 931e1f29c8e0..b31d20bc7c34 100644
--- a/arch/arm/mach-at91/include/mach/sama5_bootsource.h
+++ b/arch/arm/mach-at91/include/mach/sama5_bootsource.h
@@ -49,6 +49,9 @@ static inline int sama5_bootsource_instance(u32 reg)
#define __sama5d3_stashed_bootrom_r4 \
(*(volatile u32 *)(SAMA5D3_SRAM_BASE + SAMA5D3_SRAM_SIZE - 0x4))
+#define __sama5d4_stashed_bootrom_r4 \
+ (*(volatile u32 *)(SAMA5D4_SRAM_BASE + SAMA5D4_SRAM_SIZE - 0x4))
+
static inline void __noreturn sama5_boot_xload(void __noreturn (*bb)(void), u32 r4)
{
asm volatile("mov r4, %0" : : "r"(r4) : );
--
2.30.2
More information about the barebox
mailing list