[U-Boot] [PATCH 06/16] dm: board: Adjust pre-relocation init hooks
Simon Glass
sjg at chromium.org
Sun Mar 19 18:59:25 UTC 2017
When CONFIG_BOARD_ENABLED is enabled, replace the existing ad-hoc hooks
with ones based on driver model. These call devices to handle each phase
of init.
Signed-off-by: Simon Glass <sjg at chromium.org>
---
common/board_f.c | 47 ++++++++++++++++++++++++++++++++++++++++++-----
1 file changed, 42 insertions(+), 5 deletions(-)
diff --git a/common/board_f.c b/common/board_f.c
index 7d1ede0404..df9a64a20f 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -11,7 +11,8 @@
*/
#include <common.h>
-#include <linux/compiler.h>
+#include <board.h>
+#include <cpu.h>
#include <version.h>
#include <console.h>
#include <environment.h>
@@ -819,6 +820,40 @@ static int initf_dm(void)
return 0;
}
+#ifdef CONFIG_BOARD_ENABLE
+
+int arch_cpu_init_dm(void)
+{
+ return board_walk_opt_phase(BOARD_F_ARCH_CPU_INIT_DM);
+}
+
+int board_early_init_f(void)
+{
+ return board_walk_opt_phase(BOARD_F_EARLY_INIT_F);
+}
+
+int checkcpu(void)
+{
+ return board_walk_opt_phase(BOARD_F_CHECKCPU);
+}
+
+int misc_init_f(void)
+{
+ return board_walk_opt_phase(BOARD_F_MISC_INIT_F);
+}
+
+int dram_init(void)
+{
+ return board_walk_phase(BOARD_F_DRAM_INIT);
+}
+
+int reserve_arch(void)
+{
+ return board_walk_opt_phase(BOARD_F_RESERVE_ARCH);
+}
+
+#else
+
/* Architecture-specific memory reservation */
__weak int reserve_arch(void)
{
@@ -829,6 +864,7 @@ __weak int arch_cpu_init_dm(void)
{
return 0;
}
+#endif /* !CONFIG_BOARD_ENABLE_ENABLED */
static const init_fnc_t init_sequence_f[] = {
#ifdef CONFIG_SANDBOX
@@ -851,7 +887,7 @@ static const init_fnc_t init_sequence_f[] = {
initf_dm,
arch_cpu_init_dm,
mark_bootstage, /* need timer, go after init dm */
-#if defined(CONFIG_BOARD_EARLY_INIT_F)
+#if defined(CONFIG_BOARD_EARLY_INIT_F) || defined(CONFIG_BOARD_ENABLE)
board_early_init_f,
#endif
/* TODO: can any of this go into arch_cpu_init()? */
@@ -898,7 +934,8 @@ static const init_fnc_t init_sequence_f[] = {
#if defined(CONFIG_MPC83xx)
prt_83xx_rsr,
#endif
-#if defined(CONFIG_PPC) || defined(CONFIG_M68K) || defined(CONFIG_SH)
+#if defined(CONFIG_PPC) || defined(CONFIG_M68K) || defined(CONFIG_SH) || \
+ defined(CONFIG_BOARD_ENABLE)
checkcpu,
#endif
#if defined(CONFIG_DISPLAY_CPUINFO)
@@ -908,7 +945,7 @@ static const init_fnc_t init_sequence_f[] = {
show_board_info,
#endif
INIT_FUNC_WATCHDOG_INIT
-#if defined(CONFIG_MISC_INIT_F)
+#if defined(CONFIG_MISC_INIT_F) || defined(CONFIG_BOARD_ENABLE)
misc_init_f,
#endif
INIT_FUNC_WATCHDOG_RESET
@@ -922,7 +959,7 @@ static const init_fnc_t init_sequence_f[] = {
/* TODO: unify all these dram functions? */
#if defined(CONFIG_ARM) || defined(CONFIG_X86) || defined(CONFIG_NDS32) || \
defined(CONFIG_MICROBLAZE) || defined(CONFIG_AVR32) || \
- defined(CONFIG_SH)
+ defined(CONFIG_SH) || defined(CONFIG_SANDBOX)
dram_init, /* configure available RAM banks */
#endif
#if defined(CONFIG_MIPS) || defined(CONFIG_PPC) || defined(CONFIG_M68K)
--
2.12.0.367.g23dc2f6d3c-goog
More information about the U-Boot
mailing list