aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilippe Reynes <philippe.reynes@softathome.com>2019-09-19 16:18:39 +0200
committerTom Rini <trini@konsulko.com>2019-10-11 10:09:17 -0400
commita9a3aadaddb4b968eb7133132a73646fc12ca39f (patch)
tree40bd526fc63425553858f6d64e0aec2f910067fa
parent84a527bd0907ec66e5cccd81ce641d24a726a5f0 (diff)
downloadu-boot-a9a3aadaddb4b968eb7133132a73646fc12ca39f.zip
u-boot-a9a3aadaddb4b968eb7133132a73646fc12ca39f.tar.gz
u-boot-a9a3aadaddb4b968eb7133132a73646fc12ca39f.tar.bz2
spl: add a generic function board_init_f
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>
-rw-r--r--common/spl/Kconfig9
-rw-r--r--common/spl/spl.c18
2 files changed, 27 insertions, 0 deletions
diff --git a/common/spl/Kconfig b/common/spl/Kconfig
index 92de9cd..282d246 100644
--- a/common/spl/Kconfig
+++ b/common/spl/Kconfig
@@ -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
diff --git a/common/spl/spl.c b/common/spl/spl.c
index 5fdd6d0..a9d3e84 100644
--- a/common/spl/spl.c
+++ b/common/spl/spl.c
@@ -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[] = {