When used with bootstage recording, dm_timer_init may be called
surprisingly early: i.e. before dm_root is ready. To deal with
this case, we explicitly check for this condition and return
-EAGAIN to the caller (refer to drivers/timer/rockchip_timer.c
for a case where this is needed/used).

Signed-off-by: Philipp Tomsich <philipp.toms...@theobroma-systems.com>
Reviewed-by: Simon Glass <s...@chromium.org>
Acked-by: Philipp Tomsich <philipp.toms...@theobroma-systems.com>
---

Changes in v3: None
Changes in v2: None

 drivers/timer/timer-uclass.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/timer/timer-uclass.c b/drivers/timer/timer-uclass.c
index 62d6f0b..45397b2 100644
--- a/drivers/timer/timer-uclass.c
+++ b/drivers/timer/timer-uclass.c
@@ -92,6 +92,13 @@ int notrace dm_timer_init(void)
        if (gd->timer)
                return 0;
 
+       /*
+        * Directly access gd->dm_root to suppress error messages, if the
+        * virtual root driver does not yet exist.
+        */
+       if (gd->dm_root == NULL)
+               return -EAGAIN;
+
 #if !CONFIG_IS_ENABLED(OF_PLATDATA)
        /* Check for a chosen timer to be used for tick */
        node = ofnode_get_chosen_node("tick-timer");
-- 
2.1.4

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to