All of lore.kernel.org
 help / color / mirror / Atom feed
From: Zhong Hongbo <bocui107@gmail.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] arm/s5pxx: Fix get_timer_masked to get the time.
Date: Thu, 05 Jul 2012 19:55:49 +0800	[thread overview]
Message-ID: <4FF580C5.1000008@gmail.com> (raw)
In-Reply-To: <1341273049-3587-1-git-send-email-bocui107@gmail.com>

Hi Minkyu,

Could you help me to review it?

Thanks,
hongbo

On 07/03/2012 07:50 AM, Zhong Hongbo wrote:
> From: Zhong Hongbo <bocui107@gmail.com>
> 
> In general, The get_timer_masked function get the system time,
> no the number of ticks. Such as the nand_wait_ready will use
> get_timer_masked to delay the operations. And change the system
> time to adopt to the CONFIG_SYS_HZ.
> 
> Signed-off-by: Hongbo Zhong <bocui107@gmail.com>
> ---
>  arch/arm/cpu/armv7/s5p-common/pwm.c   |    2 +-
>  arch/arm/cpu/armv7/s5p-common/timer.c |   20 ++++++++++++++++----
>  2 files changed, 17 insertions(+), 5 deletions(-)
> 
> diff --git a/arch/arm/cpu/armv7/s5p-common/pwm.c b/arch/arm/cpu/armv7/s5p-common/pwm.c
> index 58d279e..44d7bc3 100644
> --- a/arch/arm/cpu/armv7/s5p-common/pwm.c
> +++ b/arch/arm/cpu/armv7/s5p-common/pwm.c
> @@ -170,7 +170,7 @@ int pwm_init(int pwm_id, int div, int invert)
>  	timer_rate_hz = get_pwm_clk() / ((prescaler + 1) *
>  			(div + 1));
>  
> -	timer_rate_hz = timer_rate_hz / 100;
> +	timer_rate_hz = timer_rate_hz / CONFIG_SYS_HZ;
>  
>  	/* set count value */
>  	offset = pwm_id * 3;
> diff --git a/arch/arm/cpu/armv7/s5p-common/timer.c b/arch/arm/cpu/armv7/s5p-common/timer.c
> index 359c21f..bb0e795 100644
> --- a/arch/arm/cpu/armv7/s5p-common/timer.c
> +++ b/arch/arm/cpu/armv7/s5p-common/timer.c
> @@ -31,6 +31,8 @@
>  
>  DECLARE_GLOBAL_DATA_PTR;
>  
> +unsigned long get_current_tick(void);
> +
>  /* macro to read the 16 bit timer */
>  static inline struct s5p_timer *s5p_get_base_timer(void)
>  {
> @@ -44,6 +46,8 @@ int timer_init(void)
>  	pwm_config(4, 0, 0);
>  	pwm_enable(4);
>  
> +	reset_timer_masked();
> +
>  	return 0;
>  }
>  
> @@ -72,16 +76,16 @@ void __udelay(unsigned long usec)
>  		 * 3. finish normalize.
>  		 */
>  		tmo = usec / 1000;
> -		tmo *= (CONFIG_SYS_HZ * count_value / 10);
> +		tmo *= (CONFIG_SYS_HZ * count_value);
>  		tmo /= 1000;
>  	} else {
>  		/* else small number, don't kill it prior to HZ multiply */
> -		tmo = usec * CONFIG_SYS_HZ * count_value / 10;
> +		tmo = usec * CONFIG_SYS_HZ * count_value;
>  		tmo /= (1000 * 1000);
>  	}
>  
>  	/* get current timestamp */
> -	tmp = get_timer(0);
> +	tmp = get_current_tick();
>  
>  	/* if setting this fordward will roll time stamp */
>  	/* reset "advancing" timestamp to 0, set lastinc value */
> @@ -92,7 +96,7 @@ void __udelay(unsigned long usec)
>  		tmo += tmp;
>  
>  	/* loop till event */
> -	while (get_timer_masked() < tmo)
> +	while (get_current_tick() < tmo)
>  		;	/* nop */
>  }
>  
> @@ -108,6 +112,14 @@ void reset_timer_masked(void)
>  unsigned long get_timer_masked(void)
>  {
>  	struct s5p_timer *const timer = s5p_get_base_timer();
> +	unsigned long count_value = readl(&timer->tcntb4);
> +
> +	return get_current_tick() / count_value;
> +}
> +
> +unsigned long get_current_tick(void)
> +{
> +	struct s5p_timer *const timer = s5p_get_base_timer();
>  	unsigned long now = readl(&timer->tcnto4);
>  	unsigned long count_value = readl(&timer->tcntb4);
>  
> 

  reply	other threads:[~2012-07-05 11:55 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-02 23:50 [U-Boot] [PATCH] arm/s5pxx: Fix get_timer_masked to get the time Zhong Hongbo
2012-07-05 11:55 ` Zhong Hongbo [this message]
2012-07-06  2:13   ` Minkyu Kang
2012-07-06  4:43     ` Jaehoon Chung
2012-07-06 11:20       ` Minkyu Kang
2012-07-06 11:37         ` Zhong Hongbo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4FF580C5.1000008@gmail.com \
    --to=bocui107@gmail.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.