|
@@ -65,15 +65,12 @@ int timer_init(void)
|
|
|
writel((PRESCALER_1 & 0xff) << 8, &timer->tcfg0);
|
|
|
writel((MUX_DIV_2 & 0xf) << MUX4_DIV_SHIFT, &timer->tcfg1);
|
|
|
|
|
|
- if (count_value == 0) {
|
|
|
- /* reset initial value */
|
|
|
- /* count_value = 2085937.5(HZ) (per 1 sec)*/
|
|
|
- count_value = get_pwm_clk() / ((PRESCALER_1 + 1) *
|
|
|
- (MUX_DIV_2 + 1));
|
|
|
-
|
|
|
- /* count_value / 100 = 20859.375(HZ) (per 10 msec) */
|
|
|
- count_value = count_value / 100;
|
|
|
- }
|
|
|
+ /* count_value = 2085937.5(HZ) (per 1 sec)*/
|
|
|
+ count_value = get_pwm_clk() / ((PRESCALER_1 + 1) *
|
|
|
+ (MUX_DIV_2 + 1));
|
|
|
+
|
|
|
+ /* count_value / 100 = 20859.375(HZ) (per 10 msec) */
|
|
|
+ count_value = count_value / 100;
|
|
|
|
|
|
/* set count value */
|
|
|
writel(count_value, &timer->tcntb4);
|
|
@@ -114,8 +111,11 @@ void set_timer(unsigned long t)
|
|
|
/* delay x useconds */
|
|
|
void __udelay(unsigned long usec)
|
|
|
{
|
|
|
+ struct s5p_timer *const timer = s5p_get_base_timer();
|
|
|
unsigned long tmo, tmp;
|
|
|
|
|
|
+ count_value = readl(&timer->tcntb4);
|
|
|
+
|
|
|
if (usec >= 1000) {
|
|
|
/*
|
|
|
* if "big" number, spread normalization
|