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>
This commit is contained in:
parent
52e1d93c14
commit
80e7e7c2ab
@ -25,9 +25,6 @@ struct bcm2835_timer_regs {
|
||||
u32 c2;
|
||||
u32 c3;
|
||||
};
|
||||
|
||||
extern ulong get_timer_us(ulong base);
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@ -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()
|
||||
|
14
lib/time.c
14
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);
|
||||
|
Loading…
Reference in New Issue
Block a user