[U-Boot] [RFC] Review of U-Boot timer API

Graeme Russ
2011-05-23T01:42:41Z

OK, so in summary, we can (in theory) have:
- A timer API in /lib/ with a single u32 get_timer(u32 base) function
- A HAL with two functions
- u32 get_raw_ticks()
- u32 get_raw_tick_rate() which returns the tick rate in kHz (which
max's out at just after 4GHz)
- A helper function in /lib/ u32 get_raw_ms() which uses get_raw_ticks()
and get_tick_rate() to correctly maintain the ms counter used by
get_timer() - This function can be weak (so next point)
- If the hardware supports a native 32-bit ms counter, get_raw_ms()
can be overridden to simply return the hardware counter. In this case,
get_raw_ticks() would return 1
- Calling of get_raw_ticks() regularly in the main loop (how ofter will
depend on the raw tick rate, but I image it will never be necessary
to call more often than once every few minutes)
- If the hardware implements a native 32-bit 1ms counter, no call in
the main loop is required
- An optional HAL function u32 get_raw_us() which can be used for
performance profiling (must wrap correctly)

Regards,

Graeme