- Convert the non-relocation part of board_init_f to spl_board_init,
  turn on CONFIG_SPL_BOARD_INIT in the configs.
- Remove duplicated code.
- Add spl_boot_device() that returns the statically chosen boot device.

Signed-off-by: Tom Rini <tr...@ti.com>
---
 arch/arm/cpu/arm926ejs/davinci/spl.c    |   45 +++++++------------------------
 arch/arm/include/asm/arch-davinci/spl.h |   28 +++++++++++++++++++
 include/configs/cam_enc_4xx.h           |    2 ++
 include/configs/da850evm.h              |    2 ++
 include/configs/hawkboard.h             |    2 ++
 5 files changed, 44 insertions(+), 35 deletions(-)
 create mode 100644 arch/arm/include/asm/arch-davinci/spl.h

diff --git a/arch/arm/cpu/arm926ejs/davinci/spl.c 
b/arch/arm/cpu/arm926ejs/davinci/spl.c
index 74632e5..833f721 100644
--- a/arch/arm/cpu/arm926ejs/davinci/spl.c
+++ b/arch/arm/cpu/arm926ejs/davinci/spl.c
@@ -21,6 +21,7 @@
  * MA 02111-1307 USA
  */
 #include <common.h>
+#include <asm/spl.h>
 #include <asm/u-boot.h>
 #include <asm/utils.h>
 #include <nand.h>
@@ -29,14 +30,7 @@
 #include <malloc.h>
 #include <spi_flash.h>
 
-#ifdef CONFIG_SPL_LIBCOMMON_SUPPORT
-
-DECLARE_GLOBAL_DATA_PTR;
-/* Define global data structure pointer to it*/
-static gd_t gdata __attribute__ ((section(".data")));
-static bd_t bdata __attribute__ ((section(".data")));
-
-#else
+#ifndef CONFIG_SPL_LIBCOMMON_SUPPORT
 
 void puts(const char *str)
 {
@@ -54,14 +48,7 @@ void putc(char c)
 
 #endif /* CONFIG_SPL_LIBCOMMON_SUPPORT */
 
-inline void hang(void)
-{
-       puts("### ERROR ### Please RESET the board ###\n");
-       for (;;)
-               ;
-}
-
-void board_init_f(ulong dummy)
+void spl_board_init(void)
 {
 #ifdef CONFIG_SOC_DM365
        dm36x_lowlevel_init(0);
@@ -69,28 +56,16 @@ void board_init_f(ulong dummy)
 #ifdef CONFIG_SOC_DA8XX
        arch_cpu_init();
 #endif
-       relocate_code(CONFIG_SPL_STACK, NULL, CONFIG_SPL_TEXT_BASE);
 }
 
-void board_init_r(gd_t *id, ulong dummy)
+u32 spl_boot_device(void)
 {
 #ifdef CONFIG_SPL_NAND_LOAD
-       nand_init();
-       puts("Nand boot...\n");
-       nand_boot();
-#endif
-#ifdef CONFIG_SPL_SPI_LOAD
-       mem_malloc_init(CONFIG_SYS_TEXT_BASE - CONFIG_SYS_MALLOC_LEN,
-                       CONFIG_SYS_MALLOC_LEN);
-
-       gd = &gdata;
-       gd->bd = &bdata;
-       gd->flags |= GD_FLG_RELOC;
-       gd->baudrate = CONFIG_BAUDRATE;
-       serial_init();          /* serial communications setup */
-       gd->have_console = 1;
-
-       puts("SPI boot...\n");
-       spi_boot();
+       return BOOT_DEVICE_NAND;
+#elif defined(CONFIG_SPL_SPI_LOAD)
+       return BOOT_DEVICE_SPI;
+#else
+       puts("Unknown boot device\n");
+       hang();
 #endif
 }
diff --git a/arch/arm/include/asm/arch-davinci/spl.h 
b/arch/arm/include/asm/arch-davinci/spl.h
new file mode 100644
index 0000000..f9c5131
--- /dev/null
+++ b/arch/arm/include/asm/arch-davinci/spl.h
@@ -0,0 +1,28 @@
+/*
+ * (C) Copyright 2012
+ * Texas Instruments, <www.ti.com>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+#ifndef        _ASM_ARCH_SPL_H_
+#define        _ASM_SPL_H_
+
+#define BOOT_DEVICE_NAND       1
+#define BOOT_DEVICE_SPI                2
+#endif
diff --git a/include/configs/cam_enc_4xx.h b/include/configs/cam_enc_4xx.h
index 771ac9c..fe28278 100644
--- a/include/configs/cam_enc_4xx.h
+++ b/include/configs/cam_enc_4xx.h
@@ -217,6 +217,8 @@
 
 /* Defines for SPL */
 #define CONFIG_SPL
+#define CONFIG_SPL_FRAMEWORK
+#define CONFIG_SPL_BOARD_INIT
 #define CONFIG_SPL_LIBGENERIC_SUPPORT
 #define CONFIG_SPL_NAND_SUPPORT
 #define CONFIG_SPL_NAND_SIMPLE
diff --git a/include/configs/da850evm.h b/include/configs/da850evm.h
index e6adb1f..5bb5379 100644
--- a/include/configs/da850evm.h
+++ b/include/configs/da850evm.h
@@ -313,6 +313,8 @@
 
 /* defines for SPL */
 #define CONFIG_SPL
+#define CONFIG_SPL_FRAMEWORK
+#define CONFIG_SPL_BOARD_INIT
 #define CONFIG_SPL_SPI_SUPPORT
 #define CONFIG_SPL_SPI_FLASH_SUPPORT
 #define CONFIG_SPL_SPI_LOAD
diff --git a/include/configs/hawkboard.h b/include/configs/hawkboard.h
index c6e9ce5..838e572 100644
--- a/include/configs/hawkboard.h
+++ b/include/configs/hawkboard.h
@@ -59,6 +59,8 @@
 
 /* Spl */
 #define CONFIG_SPL
+#define CONFIG_SPL_FRAMEWORK
+#define CONFIG_SPL_BOARD_INIT
 #define CONFIG_SPL_NAND_SUPPORT
 #define CONFIG_SPL_NAND_SIMPLE
 #define CONFIG_SPL_NAND_LOAD
-- 
1.7.9.5

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to