diff mbox

[U-Boot] igep00x0: Falcon mode

Message ID 20160114004419.GA27887@localhost.localdomain
State Superseded
Headers show

Commit Message

Ladislav Michl Jan. 14, 2016, 12:44 a.m. UTC
Implement spl_start_uboot to let Falcon mode work. Also as board comes
either with 256 or 512MB of memory, fixup fdt before jumping to kernel.
ATAG support for doing the same is left as an excercise for readers
loving legacy stuff.

Signed-off-by: Ladislav Michl <ladis@linux-mips.org>
---
 board/isee/igep00x0/igep00x0.c | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

Comments

Tom Rini Jan. 14, 2016, 5:10 p.m. UTC | #1
On Thu, Jan 14, 2016 at 01:44:20AM +0100, Ladislav Michl wrote:

> Implement spl_start_uboot to let Falcon mode work. Also as board comes
> either with 256 or 512MB of memory, fixup fdt before jumping to kernel.
> ATAG support for doing the same is left as an excercise for readers
> loving legacy stuff.
> 
> Signed-off-by: Ladislav Michl <ladis@linux-mips.org>

So, I want to hear more about how you're using Falcon mode here.
Usually memory size is corrected as part of the spl export step.  Or are
you using the raw fdt coming from the kernel build?
diff mbox

Patch

diff --git a/board/isee/igep00x0/igep00x0.c b/board/isee/igep00x0/igep00x0.c
index e2fce50..b25716a 100644
--- a/board/isee/igep00x0/igep00x0.c
+++ b/board/isee/igep00x0/igep00x0.c
@@ -10,6 +10,8 @@ 
 #include <ns16550.h>
 #include <twl4030.h>
 #include <netdev.h>
+#include <spl.h>
+#include <fdt_support.h>
 #include <asm/gpio.h>
 #include <asm/io.h>
 #include <asm/arch/mem.h>
@@ -212,3 +214,26 @@  int board_eth_init(bd_t *bis)
 #endif
 }
 #endif
+
+#ifdef CONFIG_SPL_OS_BOOT
+int spl_start_uboot(void)
+{
+	/* break into full u-boot on 'c' */
+	if (serial_tstc() && serial_getc() == 'c')
+		return 1;
+
+	return 0;
+}
+
+void spl_board_prepare_for_linux(void)
+{
+	/* SPL initializes only first bank by default, so init both */
+	dram_init();
+#ifdef CONFIG_SPL_OF_TRANSLATE
+	/* Verify that ARGS is device tree blob and fixup memory node */
+	if (fdt_check_header((const void *)CONFIG_SYS_SPL_ARGS_ADDR) == 0)
+		fdt_fixup_memory((void *)CONFIG_SYS_SPL_ARGS_ADDR,
+				PHYS_SDRAM_1, gd->ram_size);
+#endif
+}
+#endif