diff options
author | Rob Herring <rob.herring@calxeda.com> | 2013-10-04 10:22:43 -0500 |
---|---|---|
committer | Tom Rini <trini@ti.com> | 2013-11-04 11:08:10 -0500 |
commit | 9df1bd416deef274536f00128ad11d24278fa655 (patch) | |
tree | 5634672f89acf989e1b23295f3a7d8cd4fa4aa88 | |
parent | 1b5cf9549fe59e000dd8eff80eedafedf736fa3b (diff) | |
download | u-boot-imx-9df1bd416deef274536f00128ad11d24278fa655.zip u-boot-imx-9df1bd416deef274536f00128ad11d24278fa655.tar.gz u-boot-imx-9df1bd416deef274536f00128ad11d24278fa655.tar.bz2 |
ARM: highbank: convert to common timer code
Convert highbank to use the commmon timer code.
Signed-off-by: Rob Herring <rob.herring@calxeda.com>
-rw-r--r-- | arch/arm/cpu/armv7/highbank/timer.c | 83 | ||||
-rw-r--r-- | include/configs/highbank.h | 4 |
2 files changed, 4 insertions, 83 deletions
diff --git a/arch/arm/cpu/armv7/highbank/timer.c b/arch/arm/cpu/armv7/highbank/timer.c index b61cd69..d56bf21 100644 --- a/arch/arm/cpu/armv7/highbank/timer.c +++ b/arch/arm/cpu/armv7/highbank/timer.c @@ -7,18 +7,12 @@ */ #include <common.h> -#include <div64.h> -#include <linux/types.h> /* for size_t */ -#include <linux/stddef.h> /* for NULL */ #include <asm/io.h> #include <asm/arch-armv7/systimer.h> #undef SYSTIMER_BASE #define SYSTIMER_BASE 0xFFF34000 /* Timer 0 and 1 base */ -#define SYSTIMER_RATE (150000000 / 256) -static ulong timestamp; -static ulong lastinc; static struct systimer *systimer_base = (struct systimer *)SYSTIMER_BASE; /* @@ -38,80 +32,3 @@ int timer_init(void) return 0; } - -#define TICK_PER_TIME ((SYSTIMER_RATE + CONFIG_SYS_HZ / 2) / CONFIG_SYS_HZ) -#define NS_PER_TICK (1000000000 / SYSTIMER_RATE) - -static inline unsigned long long tick_to_time(unsigned long long tick) -{ - do_div(tick, TICK_PER_TIME); - return tick; -} - -static inline unsigned long long time_to_tick(unsigned long long time) -{ - return time * TICK_PER_TIME; -} - -static inline unsigned long long us_to_tick(unsigned long long us) -{ - unsigned long long tick = us * 1000; - tick += NS_PER_TICK - 1; - do_div(tick, NS_PER_TICK); - return tick; -} - -unsigned long long get_ticks(void) -{ - ulong now = ~readl(&systimer_base->timer0value); - - if (now >= lastinc) /* normal mode (non roll) */ - /* move stamp forward with absolut diff ticks */ - timestamp += (now - lastinc); - else /* we have rollover of incrementer */ - timestamp += (0xFFFFFFFF - lastinc) + now; - lastinc = now; - return timestamp; -} - -/* - * Delay x useconds AND preserve advance timstamp value - * assumes timer is ticking at 1 msec - */ -void __udelay(ulong usec) -{ - unsigned long long tmp; - ulong tmo; - - tmo = us_to_tick(usec); - tmp = get_ticks() + tmo; /* get current timestamp */ - - while (get_ticks() < tmp) /* loop till event */ - /*NOP*/; -} - -ulong get_timer(ulong base) -{ - return get_timer_masked() - base; -} - -void reset_timer_masked(void) -{ - lastinc = ~readl(&systimer_base->timer0value); - timestamp = 0; -} - -void reset_timer(void) -{ - reset_timer_masked(); -} - -ulong get_timer_masked(void) -{ - return tick_to_time(get_ticks()); -} - -ulong get_tbclk(void) -{ - return SYSTIMER_RATE; -} diff --git a/include/configs/highbank.h b/include/configs/highbank.h index 016305a..44a8f93 100644 --- a/include/configs/highbank.h +++ b/include/configs/highbank.h @@ -19,6 +19,10 @@ #define CONFIG_SUPPORT_RAW_INITRD #define CONFIG_SYS_BOOTMAPSZ (16 << 20) +#define CONFIG_SYS_TIMER_RATE (150000000/256) +#define CONFIG_SYS_TIMER_COUNTER (0xFFF34000 + 0x4) +#define CONFIG_SYS_TIMER_COUNTS_DOWN + /* * Size of malloc() pool */ |