summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAhmad Fatoum <a.fatoum@pengutronix.de>2023-01-09 14:08:13 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2023-01-10 16:05:16 +0100
commitf0e96243021e3f8875dd8d24e62dd4ae9b6b2df1 (patch)
treef6bd8f1cf5d4827268b4456ec8c5049dae35cde6
parent2a44c999d50f86e232e935dde9fde0fa61d089b2 (diff)
downloadbarebox-f0e96243021e3f8875dd8d24e62dd4ae9b6b2df1.tar.gz
barebox-f0e96243021e3f8875dd8d24e62dd4ae9b6b2df1.tar.xz
ARM: at91: sama5d4: add entry point helpers
Like already done for sama5d2 and sama5d3, provide a set of helpers for use in device-tree-enabled SAMA5D4 boards. Acked-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Link: https://lore.barebox.org/20230109130822.1657470-3-a.fatoum@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--arch/arm/mach-at91/ddramc.c7
-rw-r--r--arch/arm/mach-at91/include/mach/barebox-arm.h4
-rw-r--r--arch/arm/mach-at91/include/mach/ddramc.h1
-rw-r--r--arch/arm/mach-at91/include/mach/sama5_bootsource.h3
4 files changed, 15 insertions, 0 deletions
diff --git a/arch/arm/mach-at91/ddramc.c b/arch/arm/mach-at91/ddramc.c
index 6383789f64..1e94fbf9ee 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 *dev)
{
diff --git a/arch/arm/mach-at91/include/mach/barebox-arm.h b/arch/arm/mach-at91/include/mach/barebox-arm.h
index f6bdd5ab23..707444180c 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); \
@@ -29,4 +30,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 7daef17636..d09392262e 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 931e1f29c8..b31d20bc7c 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) : );