[U-Boot] [PATCH] dm: timer: Avoid using timer before it is ready

Simon Glass sjg at chromium.org
Sun Nov 29 06:16:35 CET 2015


At present bootstage will try to read the timer very early after relocation.
When driver model it used to provide the timer, we cannot read it until
driver model is ready. Correct this by adding a separate stage for the
post-relocation bootstage init.

This fixes booting on chromebook_link.

Signed-off-by: Simon Glass <sjg at chromium.org>
---

 common/board_r.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/common/board_r.c b/common/board_r.c
index f7118e8..a41fb54 100644
--- a/common/board_r.c
+++ b/common/board_r.c
@@ -109,7 +109,6 @@ static int initr_reloc(void)
 {
 	/* tell others: relocation done */
 	gd->flags |= GD_FLG_RELOC | GD_FLG_FULL_MALLOC_INIT;
-	bootstage_mark_name(BOOTSTAGE_ID_START_UBOOT_R, "board_init_r");
 
 	return 0;
 }
@@ -310,6 +309,14 @@ static int initr_dm(void)
 }
 #endif
 
+static int initr_bootstage(void)
+{
+	/* We cannot do this before initr_dm() */
+	bootstage_mark_name(BOOTSTAGE_ID_START_UBOOT_R, "board_init_r");
+
+	return 0;
+}
+
 __weak int power_init_board(void)
 {
 	return 0;
@@ -748,6 +755,7 @@ init_fnc_t init_sequence_r[] = {
 #ifdef CONFIG_DM
 	initr_dm,
 #endif
+	initr_bootstage,
 #if defined(CONFIG_ARM) || defined(CONFIG_NDS32)
 	board_init,	/* Setup chipselects */
 #endif
-- 
2.6.0.rc2.230.g3dd15c0



More information about the U-Boot mailing list