
Hi Simon,
On Sat, Jul 4, 2020 at 12:38 AM Simon Glass sjg@chromium.org wrote:
The current get_timer_us() uses 64-bit arithmetic. When implementing microsecond-level timeouts, 32-bits is plenty. Add a new function to support this.
Signed-off-by: Simon Glass sjg@chromium.org
(no changes since v1)
include/time.h | 11 +++++++++++ lib/time.c | 5 +++++ 2 files changed, 16 insertions(+)
diff --git a/include/time.h b/include/time.h index e99f9c8012..434e63b075 100644 --- a/include/time.h +++ b/include/time.h @@ -17,6 +17,17 @@ unsigned long get_timer(unsigned long base); unsigned long timer_get_us(void); uint64_t get_timer_us(uint64_t base);
+/**
- get_timer_us_long() - Get the number of elapsed microseconds
- This uses 32-bit arithmetic on 32-bit machines, which is enough to handle
- delays of over an hour.
- *@base: Base time to consider
- *@return elapsed time since @base
- */
+unsigned long get_timer_us_long(unsigned long base);
The function name does not clear indicates this is 32-bit value because unsigned long is still 64-bit when building for 64-bit U-Boot.
/*
- timer_test_add_offset()
diff --git a/lib/time.c b/lib/time.c index 65db0f6cda..47f8c84327 100644 --- a/lib/time.c +++ b/lib/time.c @@ -152,6 +152,11 @@ uint64_t __weak get_timer_us(uint64_t base) return tick_to_time_us(get_ticks()) - base; }
+unsigned long __weak get_timer_us_long(unsigned long base) +{
return timer_get_us() - base;
+}
unsigned long __weak notrace timer_get_us(void) { return tick_to_time(get_ticks() * 1000); --
Regards, Bin