summaryrefslogtreecommitdiff
path: root/lib/time.c
diff options
context:
space:
mode:
authorMarek Vasut <marek.vasut@gmail.com>2019-10-15 22:43:41 +0200
committerTom Rini <trini@konsulko.com>2019-10-31 07:22:53 -0400
commit80e7e7c2aba5793a1e39592cd53de9e5aca96f0b (patch)
tree1ce3f652b3e6a65c7ad2a76e8bec940261b202ec /lib/time.c
parent52e1d93c14d0a56651367eb00f8d6b6fe80a2708 (diff)
lib: time: Add microsecond timer
Add get_timer_us(), which is useful e.g. when we need higher precision timestamps. Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com> Cc: Tom Rini <trini@konsulko.com> Cc: Simon Glass <sjg@chromium.org> [trini: Fixup arch/arm/mach-bcm283x/include/mach/timer.h] Signed-off-by: Tom Rini <trini@konsulko.com>
Diffstat (limited to 'lib/time.c')
-rw-r--r--lib/time.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/time.c b/lib/time.c
index f5751ab162..f30fc05804 100644
--- a/lib/time.c
+++ b/lib/time.c
@@ -134,6 +134,20 @@ ulong __weak get_timer(ulong base)
return tick_to_time(get_ticks()) - base;
}
+static uint64_t notrace tick_to_time_us(uint64_t tick)
+{
+ ulong div = get_tbclk() / 1000;
+
+ tick *= CONFIG_SYS_HZ;
+ do_div(tick, div);
+ return tick;
+}
+
+uint64_t __weak get_timer_us(uint64_t base)
+{
+ return tick_to_time_us(get_ticks()) - base;
+}
+
unsigned long __weak notrace timer_get_us(void)
{
return tick_to_time(get_ticks() * 1000);