[U-Boot] [PATCH v2] davinci timer.c: Remove volatiles and memory mapped structures

Paulraj, Sandeep s-paulraj at ti.com
Mon Oct 26 16:53:25 CET 2009



> 
> Remove volatiles and memory mapped structure accesses and replace with
> readl and writel macro usage.
> 
> Signed-off-by: Nick Thompson <nick.thompson at gefanuc.com>
> ---
> This patch was originally part of the da830 support patch, but this
> effort is now being integrated into davinci. As a result, these
> changes would be have been lost, as no change is required for da830.
> The changes where request to be kept available however, so here they
> are.
> 
>  cpu/arm926ejs/davinci/timer.c |   29 +++++++++++++++++------------
>  1 files changed, 17 insertions(+), 12 deletions(-)

I started the process of integrating into my branch and doing some quick tests on other DM parts.
But, I got 2 checkpatch warnings while running checkpatch.
One of them I believe is unavoidable because U-boot does not have a linux/io.h

The other deals with using a typedef. 


> 
> diff --git a/cpu/arm926ejs/davinci/timer.c b/cpu/arm926ejs/davinci/timer.c
> index 80751ad..f705a6e 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 {
> +typedef struct {
>  	u_int32_t	pid12;
>  	u_int32_t	emumgt;
>  	u_int32_t	na1;
> @@ -53,7 +54,7 @@ typedef volatile struct {
>  	u_int32_t	wdtcr;
>  } davinci_timer;
> 
> -davinci_timer		*timer = (davinci_timer *)CONFIG_SYS_TIMERBASE;
> +static davinci_timer * const timer = (davinci_timer
> *)CONFIG_SYS_TIMERBASE;
> 
>  #define TIMER_LOAD_VAL	(CONFIG_SYS_HZ_CLOCK / CONFIG_SYS_HZ)
>  #define TIM_CLK_DIV	16
> @@ -64,30 +65,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 */



More information about the U-Boot mailing list