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@xxxxxxxxxxxxxx> --- 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