From ff42d107bfcf2205824d3809ccbc6a94d7646309 Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com>
Date: Sun, 13 Sep 2015 13:02:48 +0200
Subject: [PATCH] sunxi: Enable CONFIG_SPL_STACK_R

Select CONFIG_SPL_STACK_R for sunxi boards, this gives us much more
room on the stack once we've the DRAM running.

Besides being a good change to have on itself, this also paves the
way for switching to using malloc_simple in the SPL which cuts of
close to 4KiB of the SPL size.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
---
 arch/arm/Kconfig               | 1 +
 board/sunxi/Kconfig            | 4 ++++
 include/configs/sunxi-common.h | 8 ++++++++
 3 files changed, 13 insertions(+)

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 798135574a..1a7e916acd 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -522,6 +522,7 @@ config ARCH_SUNXI
 	select DM_USB
 	select OF_CONTROL
 	select OF_SEPARATE
+	select SPL_STACK_R if !MACH_SUN9I
 	select USB
 	select USB_STORAGE
 	select USB_KEYBOARD
diff --git a/board/sunxi/Kconfig b/board/sunxi/Kconfig
index 55906b5b76..b3367779af 100644
--- a/board/sunxi/Kconfig
+++ b/board/sunxi/Kconfig
@@ -562,4 +562,8 @@ config GMAC_TX_DELAY
 	---help---
 	Set the GMAC Transmit Clock Delay Chain value.
 
+config SPL_STACK_R_ADDR
+	default 0x4fe00000 if MACH_SUN4I || MACH_SUN5I || MACH_SUN6I || MACH_SUN7I || MACH_SUN8I
+	default 0x2fe00000 if MACH_SUN9I
+
 endif
diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h
index e1ba7914cd..2ba21b3245 100644
--- a/include/configs/sunxi-common.h
+++ b/include/configs/sunxi-common.h
@@ -73,6 +73,10 @@
 #define CONFIG_SYS_LOAD_ADDR		0x22000000 /* default load address */
 #define CONFIG_SYS_TEXT_BASE		0x2a000000
 #define CONFIG_PRE_CON_BUF_ADDR		0x2f000000
+/* Note SPL_STACK_R_ADDR is set through Kconfig, we include it here 
+ * since it needs to fit in with the other values. By also #defining it
+ * we get warnings if the Kconfig value mismatches. */
+#define CONFIG_SPL_STACK_R_ADDR		0x2fe00000
 #define CONFIG_SYS_SPL_MALLOC_START	0x2ff00000
 #define CONFIG_SPL_BSS_START_ADDR	0x2ff80000
 #else
@@ -81,6 +85,10 @@
 #define CONFIG_SYS_LOAD_ADDR		0x42000000 /* default load address */
 #define CONFIG_SYS_TEXT_BASE		0x4a000000
 #define CONFIG_PRE_CON_BUF_ADDR		0x4f000000
+/* Note SPL_STACK_R_ADDR is set through Kconfig, we include it here 
+ * since it needs to fit in with the other values. By also #defining it
+ * we get warnings if the Kconfig value mismatches. */
+#define CONFIG_SPL_STACK_R_ADDR		0x4fe00000
 #define CONFIG_SYS_SPL_MALLOC_START	0x4ff00000
 #define CONFIG_SPL_BSS_START_ADDR	0x4ff80000
 #endif
-- 
2.39.5