diff options
| author | Wolfgang Denk <wd@denx.de> | 2009-12-15 23:38:34 +0100 | 
|---|---|---|
| committer | Wolfgang Denk <wd@denx.de> | 2009-12-15 23:38:34 +0100 | 
| commit | bb3bcfa2426cc6a0aecec7270e3ee67ca843a125 (patch) | |
| tree | 0314e3d8e8d9e4d568a496fca27db33d66e68bb4 /cpu/arm926ejs/davinci/timer.c | |
| parent | a200a7c04d89853d2a1395b96d8ca5e3dd754551 (diff) | |
| parent | 4b142febff71eabdb7ddbb125c7b583b24ddc434 (diff) | |
| download | olio-uboot-2014.01-bb3bcfa2426cc6a0aecec7270e3ee67ca843a125.tar.xz olio-uboot-2014.01-bb3bcfa2426cc6a0aecec7270e3ee67ca843a125.zip | |
Merge branch 'next' of ../next
Diffstat (limited to 'cpu/arm926ejs/davinci/timer.c')
| -rw-r--r-- | cpu/arm926ejs/davinci/timer.c | 30 | 
1 files changed, 16 insertions, 14 deletions
| diff --git a/cpu/arm926ejs/davinci/timer.c b/cpu/arm926ejs/davinci/timer.c index 80751add8..9da7443f3 100644 --- a/cpu/arm926ejs/davinci/timer.c +++ b/cpu/arm926ejs/davinci/timer.c @@ -38,8 +38,9 @@   */  #include <common.h> +#include <asm/io.h> -typedef volatile struct { +struct davinci_timer {  	u_int32_t	pid12;  	u_int32_t	emumgt;  	u_int32_t	na1; @@ -51,9 +52,10 @@ typedef volatile struct {  	u_int32_t	tcr;  	u_int32_t	tgcr;  	u_int32_t	wdtcr; -} davinci_timer; +}; -davinci_timer		*timer = (davinci_timer *)CONFIG_SYS_TIMERBASE; +static struct davinci_timer * const timer = +	(struct davinci_timer *)CONFIG_SYS_TIMERBASE;  #define TIMER_LOAD_VAL	(CONFIG_SYS_HZ_CLOCK / CONFIG_SYS_HZ)  #define TIM_CLK_DIV	16 @@ -64,30 +66,30 @@ static ulong lastinc;  int timer_init(void)  {  	/* We are using timer34 in unchained 32-bit mode, full speed */ -	timer->tcr = 0x0; -	timer->tgcr = 0x0; -	timer->tgcr = 0x06 | ((TIM_CLK_DIV - 1) << 8); -	timer->tim34 = 0x0; -	timer->prd34 = TIMER_LOAD_VAL; +	writel(0x0, &timer->tcr); +	writel(0x0, &timer->tgcr); +	writel(0x06 | ((TIM_CLK_DIV - 1) << 8), &timer->tgcr); +	writel(0x0, &timer->tim34); +	writel(TIMER_LOAD_VAL, &timer->prd34);  	lastinc = 0;  	timestamp = 0; -	timer->tcr = 2 << 22; +	writel(2 << 22, &timer->tcr);  	return(0);  }  void reset_timer(void)  { -	timer->tcr = 0x0; -	timer->tim34 = 0; +	writel(0x0, &timer->tcr); +	writel(0x0, &timer->tim34);  	lastinc = 0;  	timestamp = 0; -	timer->tcr = 2 << 22; +	writel(2 << 22, &timer->tcr);  }  static ulong get_timer_raw(void)  { -	ulong now = timer->tim34; +	ulong now = readl(&timer->tim34);  	if (now >= lastinc) {  		/* normal mode */ @@ -110,7 +112,7 @@ void set_timer(ulong t)  	timestamp = t;  } -void udelay(unsigned long usec) +void __udelay(unsigned long usec)  {  	ulong tmo;  	ulong endtime; |