diff options
| -rw-r--r-- | arch/arm/cpu/arm920t/at91/timer.c | 29 | ||||
| -rw-r--r-- | arch/arm/include/asm/global_data.h | 1 | ||||
| -rw-r--r-- | include/configs/at91rm9200ek.h | 2 | 
3 files changed, 17 insertions, 15 deletions
| diff --git a/arch/arm/cpu/arm920t/at91/timer.c b/arch/arm/cpu/arm920t/at91/timer.c index 91377d47a..d9a024fc0 100644 --- a/arch/arm/cpu/arm920t/at91/timer.c +++ b/arch/arm/cpu/arm920t/at91/timer.c @@ -32,17 +32,16 @@  #include <common.h> -#include <asm/io.h> -#include <asm/hardware.h> +#include <asm/arch/io.h> +#include <asm/arch/hardware.h>  #include <asm/arch/at91_tc.h>  #include <asm/arch/at91_pmc.h> +DECLARE_GLOBAL_DATA_PTR; +  /* the number of clocks per CONFIG_SYS_HZ */  #define TIMER_LOAD_VAL (CONFIG_SYS_HZ_CLOCK/CONFIG_SYS_HZ) -static u32 timestamp; -static u32 lastinc; -  int timer_init(void)  {  	at91_tc_t *tc = (at91_tc_t *) AT91_TC_BASE; @@ -64,8 +63,8 @@ int timer_init(void)  	writel(TIMER_LOAD_VAL, &tc->tc[0].rc);  	writel(AT91_TC_CCR_SWTRG | AT91_TC_CCR_CLKEN, &tc->tc[0].ccr); -	lastinc = 0; -	timestamp = 0; +	gd->lastinc = 0; +	gd->tbl = 0;  	return 0;  } @@ -86,7 +85,7 @@ ulong get_timer(ulong base)  void set_timer(ulong t)  { -	timestamp = t; +	gd->tbl = t;  }  void __udelay(unsigned long usec) @@ -98,8 +97,8 @@ void reset_timer_masked(void)  {  	/* reset time */  	at91_tc_t *tc = (at91_tc_t *) AT91_TC_BASE; -	lastinc = readl(&tc->tc[0].cv) & 0x0000ffff; -	timestamp = 0; +	gd->lastinc = readl(&tc->tc[0].cv) & 0x0000ffff; +	gd->tbl = 0;  }  ulong get_timer_raw(void) @@ -109,16 +108,16 @@ ulong get_timer_raw(void)  	now = readl(&tc->tc[0].cv) & 0x0000ffff; -	if (now >= lastinc) { +	if (now >= gd->lastinc) {  		/* normal mode */ -		timestamp += now - lastinc; +		gd->tbl += now - gd->lastinc;  	} else {  		/* we have an overflow ... */ -		timestamp += now + TIMER_LOAD_VAL - lastinc; +		gd->tbl += now + TIMER_LOAD_VAL - gd->lastinc;  	} -	lastinc = now; +	gd->lastinc = now; -	return timestamp; +	return gd->tbl;  }  ulong get_timer_masked(void) diff --git a/arch/arm/include/asm/global_data.h b/arch/arm/include/asm/global_data.h index ada3fbb64..e459a5dc9 100644 --- a/arch/arm/include/asm/global_data.h +++ b/arch/arm/include/asm/global_data.h @@ -60,6 +60,7 @@ typedef	struct	global_data {  	unsigned long	tbl;  	unsigned long	tbu;  	unsigned long long	timer_reset_value; +	unsigned long	lastinc;  #endif  	unsigned long	relocaddr;	/* Start address of U-Boot in RAM */  	phys_size_t	ram_size;	/* RAM size */ diff --git a/include/configs/at91rm9200ek.h b/include/configs/at91rm9200ek.h index df4413d81..810023a49 100644 --- a/include/configs/at91rm9200ek.h +++ b/include/configs/at91rm9200ek.h @@ -71,6 +71,8 @@  #define CONFIG_SETUP_MEMORY_TAGS  #define CONFIG_INITRD_TAG +#define CONFIG_AT91FAMILY +  /*   * Memory Configuration   */ |