diff options
author | Matthias Kaehlcke <matthias@kaehlcke.net> | 2010-03-09 22:13:33 +0100 |
---|---|---|
committer | trix <trix@windriver.com> | 2010-03-13 12:44:59 -0600 |
commit | dea86bb9aa663d726a6e6c1cf5c464c3ae351da9 (patch) | |
tree | 670a7a6b294c44e69895a7c3bb638251b590ddfc /cpu/arm920t | |
parent | 39ecbfcce0c7bda0fba37e4dfca520927513f4ca (diff) | |
download | u-boot-imx-dea86bb9aa663d726a6e6c1cf5c464c3ae351da9.zip u-boot-imx-dea86bb9aa663d726a6e6c1cf5c464c3ae351da9.tar.gz u-boot-imx-dea86bb9aa663d726a6e6c1cf5c464c3ae351da9.tar.bz2 |
ep93xx timer: Fix resolution of get_ticks()
ep93xx timer: Make get_ticks() return a value in CONFIG_SYS_HZ resolution,
as announced by get_tbclk()
Signed-off-by: Matthias Kaehlcke <matthias@kaehlcke.net>
Diffstat (limited to 'cpu/arm920t')
-rw-r--r-- | cpu/arm920t/ep93xx/timer.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/cpu/arm920t/ep93xx/timer.c b/cpu/arm920t/ep93xx/timer.c index bc4ec8f..31304b7 100644 --- a/cpu/arm920t/ep93xx/timer.c +++ b/cpu/arm920t/ep93xx/timer.c @@ -69,7 +69,7 @@ static inline unsigned long read_timer(void) } /* - * timer without interrupts + * Get the number of ticks (in CONFIG_SYS_HZ resolution) */ unsigned long long get_ticks(void) { @@ -83,12 +83,12 @@ unsigned long long get_ticks(void) timer.last_update = now; - return timer.ticks; + return clk_to_systicks(timer.ticks); } unsigned long get_timer_masked(void) { - return clk_to_systicks(get_ticks()); + return get_ticks(); } unsigned long get_timer(unsigned long base) @@ -109,10 +109,13 @@ void reset_timer(void) void __udelay(unsigned long usec) { - const unsigned long target = get_ticks() + usecs_to_ticks(usec); + /* read the timer and update timer.ticks */ + get_ticks(); - while (get_ticks() < target) - /* noop */; + const unsigned long long target = timer.ticks + usecs_to_ticks(usec); + + while (timer.ticks < target) + get_ticks(); } int timer_init(void) |