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 | olio-uboot-2014.01-9df1bd416deef274536f00128ad11d24278fa655.tar.xz olio-uboot-2014.01-9df1bd416deef274536f00128ad11d24278fa655.zip | |
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 b61cd69bc..d56bf2113 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 016305a47..44a8f931b 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   */ |