sandbox: Switch over to generic board

Add generic board support for sandbox. and remove the old board init code.

Select CONFIG_SYS_GENERIC_BOARD for sandbox now that this is supported.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Tom Rini <trini@ti.com>
diff --git a/common/board_f.c b/common/board_f.c
index 00ca811..2045055 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -49,9 +49,11 @@
 #include <mpc5xxx.h>
 #endif
 
+#include <os.h>
 #include <post.h>
 #include <spi.h>
 #include <watchdog.h>
+#include <asm/errno.h>
 #include <asm/io.h>
 #ifdef CONFIG_MP
 #include <asm/mp.h>
@@ -61,6 +63,9 @@
 #include <asm/init_helpers.h>
 #include <asm/relocate.h>
 #endif
+#ifdef CONFIG_SANDBOX
+#include <asm/state.h>
+#endif
 #include <linux/compiler.h>
 
 /*
@@ -155,6 +160,7 @@
 
 static int display_text_info(void)
 {
+#ifndef CONFIG_SANDBOX
 	ulong bss_start, bss_end;
 
 #ifdef CONFIG_SYS_SYM_OFFSETS
@@ -166,6 +172,7 @@
 #endif
 	debug("U-Boot code: %08X -> %08lX  BSS: -> %08lX\n",
 	      CONFIG_SYS_TEXT_BASE, bss_start, bss_end);
+#endif
 
 #ifdef CONFIG_MODEM_SUPPORT
 	debug("Modem Support enabled\n");
@@ -284,6 +291,8 @@
 {
 #ifdef CONFIG_SYS_SYM_OFFSETS
 	gd->mon_len = _bss_end_ofs;
+#elif defined(CONFIG_SANDBOX)
+	gd->mon_len = (ulong)&_end - (ulong)_init;
 #else
 	/* TODO: use (ulong)&__bss_end - (ulong)&__text_start; ? */
 	gd->mon_len = (ulong)&__bss_end - CONFIG_SYS_MONITOR_BASE;
@@ -296,6 +305,17 @@
 	return 0;
 }
 
+#ifdef CONFIG_SANDBOX
+static int setup_ram_buf(void)
+{
+	gd->arch.ram_buf = os_malloc(CONFIG_SYS_SDRAM_SIZE);
+	assert(gd->arch.ram_buf);
+	gd->ram_size = CONFIG_SYS_SDRAM_SIZE;
+
+	return 0;
+}
+#endif
+
 static int setup_fdt(void)
 {
 #ifdef CONFIG_OF_EMBED
@@ -470,7 +490,7 @@
 static int reserve_board(void)
 {
 	gd->dest_addr_sp -= sizeof(bd_t);
-	gd->bd = (bd_t *)gd->dest_addr_sp;
+	gd->bd = (bd_t *)map_sysmem(gd->dest_addr_sp, sizeof(bd_t));
 	memset(gd->bd, '\0', sizeof(bd_t));
 	debug("Reserving %zu Bytes for Board Info at: %08lx\n",
 			sizeof(bd_t), gd->dest_addr_sp);
@@ -489,7 +509,7 @@
 static int reserve_global_data(void)
 {
 	gd->dest_addr_sp -= sizeof(gd_t);
-	gd->new_gd = (gd_t *)gd->dest_addr_sp;
+	gd->new_gd = (gd_t *)map_sysmem(gd->dest_addr_sp, sizeof(gd_t));
 	debug("Reserving %zu Bytes for Global Data at: %08lx\n",
 			sizeof(gd_t), gd->dest_addr_sp);
 	return 0;
@@ -506,9 +526,9 @@
 		gd->fdt_size = ALIGN(fdt_totalsize(gd->fdt_blob) + 0x1000, 32);
 
 		gd->dest_addr_sp -= gd->fdt_size;
-		gd->new_fdt = (void *)gd->dest_addr_sp;
-		debug("Reserving %lu Bytes for FDT at: %p\n",
-		      gd->fdt_size, gd->new_fdt);
+		gd->new_fdt = map_sysmem(gd->dest_addr_sp, gd->fdt_size);
+		debug("Reserving %lu Bytes for FDT at: %08lx\n",
+		      gd->fdt_size, gd->dest_addr_sp);
 	}
 
 	return 0;
@@ -709,8 +729,9 @@
 	memcpy(gd->new_gd, (char *)gd, sizeof(gd_t));
 
 	debug("Relocation Offset is: %08lx\n", gd->reloc_off);
-	debug("Relocating to %08lx, new gd at %p, sp at %08lx\n",
-	      gd->dest_addr, gd->new_gd, gd->dest_addr_sp);
+	debug("Relocating to %08lx, new gd at %08lx, sp at %08lx\n",
+	      gd->dest_addr, (ulong)map_to_sysmem(gd->new_gd),
+	      gd->dest_addr_sp);
 
 	return 0;
 }
@@ -736,6 +757,8 @@
 	 * (CPU cache)
 	 */
 	board_init_f_r_trampoline(gd->start_addr_sp);
+#elif defined(CONFIG_SANDBOX)
+	board_init_r(gd->new_gd, 0);
 #else
 	relocate_code(gd->dest_addr_sp, gd->new_gd, gd->dest_addr);
 #endif
@@ -758,6 +781,9 @@
 		!defined(CONFIG_MPC86xx) && !defined(CONFIG_X86)
 	zero_global_data,
 #endif
+#ifdef CONFIG_SANDBOX
+	setup_ram_buf,
+#endif
 	setup_fdt,
 	setup_mon_len,
 #if defined(CONFIG_MPC85xx) || defined(CONFIG_MPC86xx)
@@ -816,8 +842,11 @@
 	init_baud_rate,		/* initialze baudrate settings */
 	serial_init,		/* serial communications setup */
 	console_init_f,		/* stage 1 init of console */
-#if defined(CONFIG_X86) && defined(CONFIG_OF_CONTROL)
-	prepare_fdt,		/* TODO(sjg@chromium.org): remove */
+#ifdef CONFIG_SANDBOX
+	sandbox_early_getopt_check,
+#endif
+#ifdef CONFIG_OF_CONTROL
+	fdtdec_prepare_fdt,
 #endif
 	display_options,	/* say that we are here */
 	display_text_info,	/* show debugging info if required */
@@ -1007,5 +1036,9 @@
 void hang(void)
 {
 	puts("### ERROR ### Please RESET the board ###\n");
+#ifdef CONFIG_SANDBOX
+	os_exit(0);
+#else
 	for (;;);
+#endif
 }