aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2011-12-10 11:08:03 +0000
committerWolfgang Denk <wd@denx.de>2012-03-18 21:33:53 +0100
commit5ff55390ed80da2570fbeab51bdd2d2a43d4901a (patch)
tree550c76fe55ff7b4d73d24e9ecb61ba2cfe034bbd /lib
parentaacc8c16ee3b4dd2ef6c6b662e71273c31097548 (diff)
downloadu-boot-5ff55390ed80da2570fbeab51bdd2d2a43d4901a.zip
u-boot-5ff55390ed80da2570fbeab51bdd2d2a43d4901a.tar.gz
u-boot-5ff55390ed80da2570fbeab51bdd2d2a43d4901a.tar.bz2
bootstage: Define an optional microsecond timer
Define timer_get_boot_us() which returns the number of microseconds since boot. If undefined then we use get_timer() * 1000. We can fit this in a 32-bit register which keeps everyone happy on the efficiency side. It will wrap around after about an hour. If we are still looking at it after an hour then we had better not be timing the boot. Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'lib')
-rw-r--r--lib/time.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/lib/time.c b/lib/time.c
index 6e2937b..69edc3d 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")));