arm/s5pxx: Fix get_timer_masked to get the time.
PATCH 1/1 arm/s5pxx: Fix get_timer_masked to get the time.
From: Zhong Hongbo <[email protected]>
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.
--- 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(-)
arch/arm/cpu/armv7/s5p-common/pwm.c +1 -1
@@ -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 ;
arch/arm/cpu/armv7/s5p-common/timer.c +16 -4
@@ -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);
Signature · 1 line
1.7.5.4
PATCH 1/1 arm/s5pxx: Fix get_timer_masked to get the time.
Hi Minkyu,
Could you help me to review it?
Thanks,
hongbo
Quoted 93 lines · Zhong Hongbo
From: Zhong Hongbo <[email protected]>
In general, The
get_timer_maskedfunction get the system time, no the number of ticks. Such as thenand_wait_readywill useget_timer_maskedto delay the operations. And change the system time to adopt to theCONFIG_SYS_HZ.Signed-off-by Hongbo Zhong <[email protected]>--- 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(-)arch/arm/cpu/armv7/s5p-common/pwm.c +1
-1@@ -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 ;arch/arm/cpu/armv7/s5p-common/timer.c +16
-4@@ -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);
PATCH 1/1 arm/s5pxx: Fix get_timer_masked to get the time.
Dear Jaehoon and Donghwa,
Quoted 21 lines · Zhong Hongbo
Hi Minkyu,
Could you help me to review it?
Thanks,
hongboQuoted 13 lines · Zhong Hongbo
From: Zhong Hongbo <[email protected]>
In general, The
get_timer_maskedfunction get the system time, no the number of ticks. Such as thenand_wait_readywill useget_timer_maskedto delay the operations. And change the system time to adopt to theCONFIG_SYS_HZ.Signed-off-by Hongbo Zhong <[email protected]>--- 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(-)
Could please test this patch.
Thanks.
Minkyu Kang.
Signature · 2 lines
from. prom. www.promsoft.net
PATCH 1/1 arm/s5pxx: Fix get_timer_masked to get the time.
Hi Minkyu,
I tested on trats-board.
I think it's working fine.
Best Regards,
Jaehoon Chung
Quoted 29 lines · Minkyu Kang
Dear Jaehoon and Donghwa,
Quoted 21 lines · Zhong Hongbo
Hi Minkyu,
Could you help me to review it?
Thanks,
hongboQuoted 13 lines · Zhong Hongbo
From: Zhong Hongbo <[email protected]>
In general, The
get_timer_maskedfunction get the system time, no the number of ticks. Such as thenand_wait_readywill useget_timer_maskedto delay the operations. And change the system time to adopt to theCONFIG_SYS_HZ.Signed-off-by Hongbo Zhong <[email protected]>--- 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(-)Could please test this patch.
Thanks.
Minkyu Kang.
PATCH 1/1 arm/s5pxx: Fix get_timer_masked to get the time.
Quoted 5 lines · Jaehoon Chung
Hi Minkyu,
I tested on trats-board.
I think it's working fine.
Quoted 27 lines
Tested-by Jaehoon Chung<[email protected]>Best Regards,
Jaehoon ChungQuoted 20 lines · Minkyu Kang
Dear Jaehoon and Donghwa,
Quoted 17 lines · Zhong Hongbo
Hi Minkyu,
Could you help me to review it?
Thanks,
hongboQuoted 9 lines · Zhong Hongbo
From: Zhong Hongbo <[email protected]>
In general, The
get_timer_maskedfunction get the system time, no the number of ticks. Such as thenand_wait_readywill useget_timer_maskedto delay the operations. And change the system time to adopt to theCONFIG_SYS_HZ.Signed-off-by Hongbo Zhong <[email protected]>---
applied to u-boot-samsung.
Thanks.
Minkyu Kang.
Signature · 2 lines
from. prom. www.promsoft.net
PATCH 1/1 arm/s5pxx: Fix get_timer_masked to get the time.
Quoted 31 lines · Minkyu Kang
Quoted 30 lines · Jaehoon Chung
Hi Minkyu,
I tested on trats-board.
I think it's working fine.Tested-by Jaehoon Chung<[email protected]>Best Regards,
Jaehoon ChungQuoted 18 lines · Minkyu Kang
Dear Jaehoon and Donghwa,
Quoted 15 lines · Zhong Hongbo
Hi Minkyu,
Could you help me to review it?
Thanks,
hongboQuoted 7 lines · Zhong Hongbo
From: Zhong Hongbo <[email protected]>
In general, The
get_timer_maskedfunction get the system time, no the number of ticks. Such as thenand_wait_readywill useget_timer_maskedto delay the operations. And change the system time to adopt to theCONFIG_SYS_HZ.
Quoted 4 lines
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines
Signed-off-by Hongbo Zhong <[email protected]>---
applied to u-boot-samsung.
Hi Jaehoon and Minkyu,
Thanks?
BR?
hongbo
Quoted 4 lines
Thanks.
Minkyu Kang.