@@ -69,12 +69,33 @@ static bool dmtimer_systimer_revision1(struct dmtimer_systimer *t)
69
69
return !(tidr >> 16 );
70
70
}
71
71
72
+ static void dmtimer_systimer_enable (struct dmtimer_systimer * t )
73
+ {
74
+ u32 val ;
75
+
76
+ if (dmtimer_systimer_revision1 (t ))
77
+ val = DMTIMER_TYPE1_ENABLE ;
78
+ else
79
+ val = DMTIMER_TYPE2_ENABLE ;
80
+
81
+ writel_relaxed (val , t -> base + t -> sysc );
82
+ }
83
+
84
+ static void dmtimer_systimer_disable (struct dmtimer_systimer * t )
85
+ {
86
+ if (!dmtimer_systimer_revision1 (t ))
87
+ return ;
88
+
89
+ writel_relaxed (DMTIMER_TYPE1_DISABLE , t -> base + t -> sysc );
90
+ }
91
+
72
92
static int __init dmtimer_systimer_type1_reset (struct dmtimer_systimer * t )
73
93
{
74
94
void __iomem * syss = t -> base + OMAP_TIMER_V1_SYS_STAT_OFFSET ;
75
95
int ret ;
76
96
u32 l ;
77
97
98
+ dmtimer_systimer_enable (t );
78
99
writel_relaxed (BIT (1 ) | BIT (2 ), t -> base + t -> ifctrl );
79
100
ret = readl_poll_timeout_atomic (syss , l , l & BIT (0 ), 100 ,
80
101
DMTIMER_RESET_WAIT );
@@ -88,6 +109,7 @@ static int __init dmtimer_systimer_type2_reset(struct dmtimer_systimer *t)
88
109
void __iomem * sysc = t -> base + t -> sysc ;
89
110
u32 l ;
90
111
112
+ dmtimer_systimer_enable (t );
91
113
l = readl_relaxed (sysc );
92
114
l |= BIT (0 );
93
115
writel_relaxed (l , sysc );
@@ -336,26 +358,6 @@ static int __init dmtimer_systimer_init_clock(struct dmtimer_systimer *t,
336
358
return 0 ;
337
359
}
338
360
339
- static void dmtimer_systimer_enable (struct dmtimer_systimer * t )
340
- {
341
- u32 val ;
342
-
343
- if (dmtimer_systimer_revision1 (t ))
344
- val = DMTIMER_TYPE1_ENABLE ;
345
- else
346
- val = DMTIMER_TYPE2_ENABLE ;
347
-
348
- writel_relaxed (val , t -> base + t -> sysc );
349
- }
350
-
351
- static void dmtimer_systimer_disable (struct dmtimer_systimer * t )
352
- {
353
- if (!dmtimer_systimer_revision1 (t ))
354
- return ;
355
-
356
- writel_relaxed (DMTIMER_TYPE1_DISABLE , t -> base + t -> sysc );
357
- }
358
-
359
361
static int __init dmtimer_systimer_setup (struct device_node * np ,
360
362
struct dmtimer_systimer * t )
361
363
{
@@ -409,8 +411,8 @@ static int __init dmtimer_systimer_setup(struct device_node *np,
409
411
t -> wakeup = regbase + _OMAP_TIMER_WAKEUP_EN_OFFSET ;
410
412
t -> ifctrl = regbase + _OMAP_TIMER_IF_CTRL_OFFSET ;
411
413
412
- dmtimer_systimer_enable (t );
413
414
dmtimer_systimer_reset (t );
415
+ dmtimer_systimer_enable (t );
414
416
pr_debug ("dmtimer rev %08x sysc %08x\n" , readl_relaxed (t -> base ),
415
417
readl_relaxed (t -> base + t -> sysc ));
416
418
0 commit comments