[U-Boot] [PATCH 09/16] timer: Set up the real timer after driver model is available
Simon Glass
sjg at chromium.org
Mon Feb 15 02:36:53 CET 2016
When using the early timer, we need to manually trigger setting up the
real timer. This will not happen automatically. Do this immediately after
starting driver model.
Signed-off-by: Simon Glass <sjg at chromium.org>
---
common/board_f.c | 6 ++++++
common/board_r.c | 14 ++++++++++++--
2 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/common/board_f.c b/common/board_f.c
index a960144..622093a 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -45,6 +45,7 @@
#include <post.h>
#include <spi.h>
#include <status_led.h>
+#include <timer.h>
#include <trace.h>
#include <video.h>
#include <watchdog.h>
@@ -805,6 +806,11 @@ static int initf_dm(void)
if (ret)
return ret;
#endif
+#ifdef CONFIG_TIMER_EARLY
+ ret = dm_timer_init();
+ if (ret)
+ return ret;
+#endif
return 0;
}
diff --git a/common/board_r.c b/common/board_r.c
index 6c23865..52a9b26 100644
--- a/common/board_r.c
+++ b/common/board_r.c
@@ -46,6 +46,7 @@
#include <serial.h>
#include <spi.h>
#include <stdio_dev.h>
+#include <timer.h>
#include <trace.h>
#include <watchdog.h>
#ifdef CONFIG_CMD_AMBAPP
@@ -312,13 +313,22 @@ static int initr_noncached(void)
#ifdef CONFIG_DM
static int initr_dm(void)
{
+ int ret;
+
/* Save the pre-reloc driver model and start a new one */
gd->dm_root_f = gd->dm_root;
gd->dm_root = NULL;
-#ifdef CONFIG_TIMER
+ ret = dm_init_and_scan(false);
+ if (ret)
+ return ret;
+#ifdef CONFIG_TIMER_EARLY
gd->timer = NULL;
+ ret = dm_timer_init();
+ if (ret)
+ return ret;
#endif
- return dm_init_and_scan(false);
+
+ return 0;
}
#endif
--
2.7.0.rc3.207.g0ac5344
More information about the U-Boot
mailing list