summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/common.h7
-rw-r--r--lib/time.c17
2 files changed, 24 insertions, 0 deletions
diff --git a/include/common.h b/include/common.h
index 399363af1c9..85eaa77aafa 100644
--- a/include/common.h
+++ b/include/common.h
@@ -207,6 +207,13 @@ typedef void (interrupt_handler_t)(void *);
#endif /* CONFIG_SERIAL_MULTI */
/*
+ * Return the time since boot in microseconds, This is needed for bootstage
+ * and should be defined in CPU- or board-specific code. If undefined then
+ * millisecond resolution will be used (the standard get_timer()).
+ */
+ulong timer_get_boot_us(void);
+
+/*
* General Purpose Utilities
*/
#define min(X, Y) \
diff --git a/lib/time.c b/lib/time.c
index 6e2937b8e72..69edc3d39b2 100644
--- a/lib/time.c
+++ b/lib/time.c
@@ -47,3 +47,20 @@ void mdelay(unsigned long msec)
while (msec--)
udelay(1000);
}
+
+ulong __timer_get_boot_us(void)
+{
+ static ulong base_time;
+
+ /*
+ * We can't implement this properly. Return 0 on the first call and
+ * larger values after that.
+ */
+ if (base_time)
+ return get_timer(base_time) * 1000;
+ base_time = get_timer(0);
+ return 0;
+}
+
+ulong timer_get_boot_us(void)
+ __attribute__((weak, alias("__timer_get_boot_us")));