spl: add a generic function board_init_f
authorPhilippe Reynes <philippe.reynes@softathome.com>
Thu, 19 Sep 2019 14:18:39 +0000 (16:18 +0200)
committerTom Rini <trini@konsulko.com>
Fri, 11 Oct 2019 14:09:17 +0000 (10:09 -0400)
This commit add a generic function board_init_f that
only initialize some device (for example serial). It
avoid to define a board function only to launch the
serial configuration.

Signed-off-by: Philippe Reynes <philippe.reynes@softathome.com>
common/spl/Kconfig
common/spl/spl.c

index 92de9cd..282d246 100644 (file)
@@ -25,6 +25,15 @@ config SPL_FRAMEWORK
          supports MMC, NAND and YMODEM and other methods loading of U-Boot
          and the Linux Kernel.  If unsure, say Y.
 
+config SPL_FRAMEWORK_BOARD_INIT_F
+       bool "Define a generic function board_init_f"
+       depends on SPL_FRAMEWORK
+       help
+         Define a generic function board_init_f that:
+         - initialize the spl (spl_early_init)
+         - initialize the serial (preloader_console_init)
+         Unless you want to provide your own board_init_f, you should say Y.
+
 config SPL_SIZE_LIMIT
        hex "Maximum size of SPL image"
        depends on SPL
index 5fdd6d0..a9d3e84 100644 (file)
@@ -555,6 +555,24 @@ static int boot_from_devices(struct spl_image_info *spl_image,
        return -ENODEV;
 }
 
+#if defined(CONFIG_SPL_FRAMEWORK_BOARD_INIT_F)
+void board_init_f(ulong dummy)
+{
+       if (CONFIG_IS_ENABLED(OF_CONTROL)) {
+               int ret;
+
+               ret = spl_early_init();
+               if (ret) {
+                       debug("spl_early_init() failed: %d\n", ret);
+                       hang();
+               }
+       }
+
+       if (CONFIG_IS_ENABLED(SERIAL_SUPPORT))
+               preloader_console_init();
+}
+#endif
+
 void board_init_r(gd_t *dummy1, ulong dummy2)
 {
        u32 spl_boot_list[] = {