summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2019-12-06 21:41:46 -0700
committerBin Meng <bmeng.cn@gmail.com>2019-12-15 11:44:09 +0800
commitdd0edcb2508b9abcf828baede32e6b3da5fc0c8a (patch)
tree4cec18f6ff280b3066990c217d6de89827b3d97c
parent8aeafb545427b7e0aaecb2bf7bb98eb45eb56658 (diff)
downloadu-boot-dd0edcb2508b9abcf828baede32e6b3da5fc0c8a.tar.gz
u-boot-dd0edcb2508b9abcf828baede32e6b3da5fc0c8a.tar.bz2
u-boot-dd0edcb2508b9abcf828baede32e6b3da5fc0c8a.zip
board_r: Move early-timer init later
At present the early timer init happens as soon as driver model is set up. This makes it impossible to do anything that needs driver model but must run before devices are probed (as needed with Intel's FSP-S, for example). In any case it is not a good idea to tie probing of particular drivers too closely to the DM init. Create a new function to init the timer and put it a bit later in the sequence. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
-rw-r--r--common/board_r.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/common/board_r.c b/common/board_r.c
index 9902c51c5e..9a25f6ec28 100644
--- a/common/board_r.c
+++ b/common/board_r.c
@@ -311,16 +311,24 @@ static int initr_dm(void)
bootstage_accum(BOOTSTATE_ID_ACCUM_DM_R);
if (ret)
return ret;
-#ifdef CONFIG_TIMER_EARLY
- ret = dm_timer_init();
- if (ret)
- return ret;
-#endif
return 0;
}
#endif
+static int initr_dm_devices(void)
+{
+ int ret;
+
+ if (IS_ENABLED(CONFIG_TIMER_EARLY)) {
+ ret = dm_timer_init();
+ if (ret)
+ return ret;
+ }
+
+ return 0;
+}
+
static int initr_bootstage(void)
{
bootstage_mark_name(BOOTSTAGE_ID_START_UBOOT_R, "board_init_r");
@@ -707,6 +715,7 @@ static init_fnc_t init_sequence_r[] = {
efi_memory_init,
#endif
initr_binman,
+ initr_dm_devices,
stdio_init_tables,
initr_serial,
initr_announce,