aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/arm/mach-bcm283x/include/mach/timer.h3
-rw-r--r--include/time.h1
-rw-r--r--lib/time.c14
3 files changed, 15 insertions, 3 deletions
diff --git a/arch/arm/mach-bcm283x/include/mach/timer.h b/arch/arm/mach-bcm283x/include/mach/timer.h
index 014355e..61beb1a 100644
--- a/arch/arm/mach-bcm283x/include/mach/timer.h
+++ b/arch/arm/mach-bcm283x/include/mach/timer.h
@@ -25,9 +25,6 @@ struct bcm2835_timer_regs {
u32 c2;
u32 c3;
};
-
-extern ulong get_timer_us(ulong base);
-
#endif
#endif
diff --git a/include/time.h b/include/time.h
index 1e9b369..a114952 100644
--- a/include/time.h
+++ b/include/time.h
@@ -13,6 +13,7 @@ unsigned long get_timer(unsigned long base);
* Granularity may be larger than 1us if hardware does not support this.
*/
unsigned long timer_get_us(void);
+uint64_t get_timer_us(uint64_t base);
/*
* timer_test_add_offset()
diff --git a/lib/time.c b/lib/time.c
index f5751ab..f30fc05 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);