Re: [U-Boot] [PATCH v3 16/19] ARM: SPL: Convert davinci to CONFIG_SPL_FRAMEWORK

2012-08-23 Thread Christian Riesch
Hi Tom,

On Thu, Aug 23, 2012 at 1:19 AM, Tom Rini tr...@ti.com wrote:
 - 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
[...]
 diff --git a/arch/arm/cpu/arm926ejs/davinci/spl.c 
 b/arch/arm/cpu/arm926ejs/davinci/spl.c
 index 74632e5..46c0bfd 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 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,43 +48,37 @@ 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)
  {
 +   /* First, perform our low-level init. */
  #ifdef CONFIG_SOC_DM365
 dm36x_lowlevel_init(0);
  #endif
  #ifdef CONFIG_SOC_DA8XX
 arch_cpu_init();
  #endif
 -   relocate_code(CONFIG_SPL_STACK, NULL, CONFIG_SPL_TEXT_BASE);
 +
 +   /*
 +* Next we call relocate_code() with relocation target same as the
 +* CONFIG_SYS_SPL_TEXT_BASE. This will result in relocation getting
 +* skipped. Instead, only .bss initialization will happen.
 +*/
 +   relocate_code(CONFIG_SPL_STACK, gdata, CONFIG_SPL_TEXT_BASE);
  }

 -void board_init_r(gd_t *id, ulong dummy)
 +void spl_board_init(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;
 +   preloader_console_init();
 +}

 -   puts(SPI boot...\n);
 -   spi_boot();
 +u32 spl_boot_device(void)
 +{
 +#ifdef CONFIG_SPL_NAND_LOAD
 +   return BOOT_DEVICE_NAND;
 +#elif defined(CONFIG_SPL_SPI_LOAD)
 +   return BOOT_DEVICE_SPI;
 +#else

This will not apply on u-boot-ti since it is missing the MMC-SPL
patches that have already been merged, right?
Regards, Christian

 +   puts(Unknown boot device\n);
 +   hang();
  #endif
  }
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v3 16/19] ARM: SPL: Convert davinci to CONFIG_SPL_FRAMEWORK

2012-08-23 Thread Tom Rini
On 08/23/2012 06:14 AM, Christian Riesch wrote:
 Hi Tom,
 
 On Thu, Aug 23, 2012 at 1:19 AM, Tom Rini tr...@ti.com wrote:
 - 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
 [...]
 diff --git a/arch/arm/cpu/arm926ejs/davinci/spl.c 
 b/arch/arm/cpu/arm926ejs/davinci/spl.c
 index 74632e5..46c0bfd 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 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,43 +48,37 @@ 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)
  {
 +   /* First, perform our low-level init. */
  #ifdef CONFIG_SOC_DM365
 dm36x_lowlevel_init(0);
  #endif
  #ifdef CONFIG_SOC_DA8XX
 arch_cpu_init();
  #endif
 -   relocate_code(CONFIG_SPL_STACK, NULL, CONFIG_SPL_TEXT_BASE);
 +
 +   /*
 +* Next we call relocate_code() with relocation target same as the
 +* CONFIG_SYS_SPL_TEXT_BASE. This will result in relocation getting
 +* skipped. Instead, only .bss initialization will happen.
 +*/
 +   relocate_code(CONFIG_SPL_STACK, gdata, CONFIG_SPL_TEXT_BASE);
  }

 -void board_init_r(gd_t *id, ulong dummy)
 +void spl_board_init(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;
 +   preloader_console_init();
 +}

 -   puts(SPI boot...\n);
 -   spi_boot();
 +u32 spl_boot_device(void)
 +{
 +#ifdef CONFIG_SPL_NAND_LOAD
 +   return BOOT_DEVICE_NAND;
 +#elif defined(CONFIG_SPL_SPI_LOAD)
 +   return BOOT_DEVICE_SPI;
 +#else
 
 This will not apply on u-boot-ti since it is missing the MMC-SPL
 patches that have already been merged, right?

Indeed, there will be a certain amount of merge-pain I will have to deal
with to get this to apply.  There's also conflicts with some of the
am33xx enhancements there or that I plan to push there shortly.

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


[U-Boot] [PATCH v3 16/19] ARM: SPL: Convert davinci to CONFIG_SPL_FRAMEWORK

2012-08-22 Thread Tom Rini
- 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
---
Changes in v2:
- Add CONFIG_SYS_SPL_MALLOC_START / SIZE defines from Christian Riesch
- Add arch/arm/cpu/arm926ejs/davinci/config.mk to build u-boot.ais

Changes in v3:
  CONFIG_SPL_FRAMEWORK
  perform early init.  Fixes the cannot reset problem.
- Make u-boot.ais use u-boot.img not u-boot.bin, now that it uses
- Make use of board_init_f being a weak function now so that we can

 Makefile |4 +--
 arch/arm/cpu/arm926ejs/davinci/config.mk |   16 +
 arch/arm/cpu/arm926ejs/davinci/spl.c |   56 --
 arch/arm/include/asm/arch-davinci/spl.h  |   28 +++
 include/configs/cam_enc_4xx.h|2 ++
 include/configs/da850evm.h   |5 +++
 include/configs/hawkboard.h  |2 ++
 7 files changed, 77 insertions(+), 36 deletions(-)
 create mode 100644 arch/arm/cpu/arm926ejs/davinci/config.mk
 create mode 100644 arch/arm/include/asm/arch-davinci/spl.h

diff --git a/Makefile b/Makefile
index 57bb0b9..8738d55 100644
--- a/Makefile
+++ b/Makefile
@@ -441,7 +441,7 @@ $(obj)u-boot.ubl:   $(obj)spl/u-boot-spl.bin 
$(obj)u-boot.bin
rm $(obj)u-boot-ubl.bin
rm $(obj)spl/u-boot-spl-pad.bin
 
-$(obj)u-boot.ais:   $(obj)spl/u-boot-spl.bin $(obj)u-boot.bin
+$(obj)u-boot.ais:   $(obj)spl/u-boot-spl.bin $(obj)u-boot.img
$(obj)tools/mkimage -s -n /dev/null -T aisimage \
-e $(CONFIG_SPL_TEXT_BASE) \
-d $(obj)spl/u-boot-spl.bin \
@@ -449,7 +449,7 @@ $(obj)u-boot.ais:   $(obj)spl/u-boot-spl.bin 
$(obj)u-boot.bin
$(OBJCOPY) ${OBJCFLAGS} -I binary \
--pad-to=$(CONFIG_SPL_MAX_SIZE) -O binary \
$(obj)spl/u-boot-spl.ais $(obj)spl/u-boot-spl-pad.ais
-   cat $(obj)spl/u-boot-spl-pad.ais $(obj)u-boot.bin  \
+   cat $(obj)spl/u-boot-spl-pad.ais $(obj)u-boot.img  \
$(obj)u-boot.ais
rm $(obj)spl/u-boot-spl{,-pad}.ais
 
diff --git a/arch/arm/cpu/arm926ejs/davinci/config.mk 
b/arch/arm/cpu/arm926ejs/davinci/config.mk
new file mode 100644
index 000..42e55cc
--- /dev/null
+++ b/arch/arm/cpu/arm926ejs/davinci/config.mk
@@ -0,0 +1,16 @@
+#
+# Copyright (C) 2012, Texas Instruments, Incorporated - http://www.ti.com/
+#
+# 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 as is WITHOUT ANY WARRANTY of any
+# kind, whether express or implied; without even the implied warranty
+# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+ifndef CONFIG_SPL_BUILD
+ALL-y  += $(obj)u-boot.ais
+endif
diff --git a/arch/arm/cpu/arm926ejs/davinci/spl.c 
b/arch/arm/cpu/arm926ejs/davinci/spl.c
index 74632e5..46c0bfd 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 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,43 +48,37 @@ 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)
 {
+   /* First, perform our low-level init. */
 #ifdef CONFIG_SOC_DM365
dm36x_lowlevel_init(0);
 #endif
 #ifdef CONFIG_SOC_DA8XX
arch_cpu_init();
 #endif
-   relocate_code(CONFIG_SPL_STACK, NULL, CONFIG_SPL_TEXT_BASE);
+
+   /*
+* Next we call relocate_code() with relocation target same as the
+* CONFIG_SYS_SPL_TEXT_BASE. This will result in relocation getting
+* skipped. Instead, only .bss initialization will happen.
+*/
+   relocate_code(CONFIG_SPL_STACK, gdata, CONFIG_SPL_TEXT_BASE);
 }
 
-void board_init_r(gd_t *id, ulong dummy)
+void spl_board_init(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,
-