diff options
| -rw-r--r-- | arch/arm/cpu/arm926ejs/mx25/timer.c | 117 | ||||
| -rw-r--r-- | include/configs/mx25pdk.h | 4 | ||||
| -rw-r--r-- | include/configs/tx25.h | 3 | ||||
| -rw-r--r-- | include/configs/zmx25.h | 6 | 
4 files changed, 13 insertions, 117 deletions
| diff --git a/arch/arm/cpu/arm926ejs/mx25/timer.c b/arch/arm/cpu/arm926ejs/mx25/timer.c index 42b6076c1..7f1979173 100644 --- a/arch/arm/cpu/arm926ejs/mx25/timer.c +++ b/arch/arm/cpu/arm926ejs/mx25/timer.c @@ -21,65 +21,8 @@   */  #include <common.h> -#include <div64.h>  #include <asm/io.h>  #include <asm/arch/imx-regs.h> -#include <asm/arch/clock.h> - -DECLARE_GLOBAL_DATA_PTR; - -#define timestamp	(gd->arch.tbl) -#define lastinc		(gd->arch.lastinc) - -/* - * "time" is measured in 1 / CONFIG_SYS_HZ seconds, - * "tick" is internal timer period - */ -#ifdef CONFIG_MX25_TIMER_HIGH_PRECISION -/* ~0.4% error - measured with stop-watch on 100s boot-delay */ -static inline unsigned long long tick_to_time(unsigned long long tick) -{ -	tick *= CONFIG_SYS_HZ; -	do_div(tick, MXC_CLK32); -	return tick; -} - -static inline unsigned long long time_to_tick(unsigned long long time) -{ -	time *= MXC_CLK32; -	do_div(time, CONFIG_SYS_HZ); -	return time; -} - -static inline unsigned long long us_to_tick(unsigned long long us) -{ -	us = us * MXC_CLK32 + 999999; -	do_div(us, 1000000); -	return us; -} -#else -/* ~2% error */ -#define TICK_PER_TIME	((MXC_CLK32 + CONFIG_SYS_HZ / 2) / CONFIG_SYS_HZ) -#define US_PER_TICK	(1000000 / MXC_CLK32) - -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) -{ -	us += US_PER_TICK - 1; -	do_div(us, US_PER_TICK); -	return us; -} -#endif  /* nothing really to do with interrupts, just starts up a counter. */  /* The 32KHz 32-bit timer overruns in 134217 seconds */ @@ -104,63 +47,3 @@ int timer_init(void)  	return 0;  } - -unsigned long long get_ticks(void) -{ -	struct gpt_regs *gpt = (struct gpt_regs *)IMX_GPT1_BASE; -	ulong now = readl(&gpt->counter); /* current tick value */ - -	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; -} - -ulong get_timer_masked(void) -{ -	/* -	 * get_ticks() returns a long long (64 bit), it wraps in -	 * 2^64 / MXC_CLK32 = 2^64 / 2^15 = 2^49 ~ 5 * 10^14 (s) ~ -	 * 5 * 10^9 days... and get_ticks() * CONFIG_SYS_HZ wraps in -	 * 5 * 10^6 days - long enough. -	 */ -	return tick_to_time(get_ticks()); -} - -ulong get_timer(ulong base) -{ -	return get_timer_masked() - base; -} - -/* delay x useconds AND preserve advance timstamp value */ -void __udelay(unsigned long 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*/; -} - -/* - * This function is derived from PowerPC code (timebase clock frequency). - * On ARM it returns the number of timer ticks per second. - */ -ulong get_tbclk(void) -{ -	ulong tbclk; - -	tbclk = MXC_CLK32; -	return tbclk; -} diff --git a/include/configs/mx25pdk.h b/include/configs/mx25pdk.h index e48798c70..a64bafed6 100644 --- a/include/configs/mx25pdk.h +++ b/include/configs/mx25pdk.h @@ -15,6 +15,10 @@  #define CONFIG_SYS_TEXT_BASE		0x81200000  #define CONFIG_MXC_GPIO +#define CONFIG_SYS_TIMER_RATE		32768 +#define CONFIG_SYS_TIMER_COUNTER	\ +	(&((struct gpt_regs *)IMX_GPT1_BASE)->counter) +  #define CONFIG_DISPLAY_CPUINFO  #define CONFIG_DISPLAY_BOARDINFO diff --git a/include/configs/tx25.h b/include/configs/tx25.h index edd1f48f3..5ac6e6441 100644 --- a/include/configs/tx25.h +++ b/include/configs/tx25.h @@ -15,6 +15,9 @@   */  #define CONFIG_MX25  #define CONFIG_MX25_CLK32		32000	/* OSC32K frequency */ +#define CONFIG_SYS_TIMER_RATE		CONFIG_MX25_CLK32 +#define CONFIG_SYS_TIMER_COUNTER	\ +	(&((struct gpt_regs *)IMX_GPT1_BASE)->counter)  #define	CONFIG_SYS_MONITOR_LEN		(256 << 10)	/* 256 kB for U-Boot */ diff --git a/include/configs/zmx25.h b/include/configs/zmx25.h index 2e7f14586..8ffe6f1e0 100644 --- a/include/configs/zmx25.h +++ b/include/configs/zmx25.h @@ -10,10 +10,16 @@  #ifndef __CONFIG_H  #define __CONFIG_H +#include <asm/arch/imx-regs.h> +  #define CONFIG_ARM926EJS			/* arm926ejs CPU core */  #define CONFIG_MX25  #define CONFIG_SYS_TEXT_BASE		0xA0000000 +#define CONFIG_SYS_TIMER_RATE		32768 +#define CONFIG_SYS_TIMER_COUNTER	\ +	(&((struct gpt_regs *)IMX_GPT1_BASE)->counter) +  #define CONFIG_MACH_TYPE	MACH_TYPE_ZMX25  /*   * Environment settings |