dm: timer: handle being called before dm_root is ready

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.tomsich@theobroma-systems.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Acked-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
master
Philipp Tomsich 7 years ago
parent b61e8b0c9e
commit af82315164
  1. 7
      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");

Loading…
Cancel
Save