Skip to content

Commit 29114fd

Browse files
linuswolofj
authored andcommitted
ARM: integrator: deactivate timer0 on the Integrator/CP
This fixes a long-standing Integrator/CP regression from commit 870e292 "ARM: integrator-cp: convert use CLKSRC_OF for timer init" When this code was introduced, the both aliases pointing the system to use timer1 as primary (clocksource) and timer2 as secondary (clockevent) was ignored, and the system would simply use the first two timers found as clocksource and clockevent. However this made the system timeline accelerate by a factor x25, as it turns out that the way the clocking actually works (totally undocumented and found after some trial-and-error) is that timer0 runs @ 25MHz and timer1 and timer2 runs @ 1MHz. Presumably this divider setting is a boot-on default and configurable albeit the way to configure it is not documented. So as a quick fix to the problem, let's mark timer0 as disabled, so the code will chose timer1 and timer2 as it used to. This also deletes the two aliases for the primary and secondary timer as they have been superceded by the auto-selection Cc: stable@vger.kernel.org Cc: Rob Herring <rob.herring@calxeda.com> Cc: Russell King <linux@arm.linux.org.uk> Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Olof Johansson <olof@lixom.net>
1 parent 4d594dd commit 29114fd

File tree

1 file changed

+4
-5
lines changed

1 file changed

+4
-5
lines changed

arch/arm/boot/dts/integratorcp.dts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,6 @@
99
model = "ARM Integrator/CP";
1010
compatible = "arm,integrator-cp";
1111

12-
aliases {
13-
arm,timer-primary = &timer2;
14-
arm,timer-secondary = &timer1;
15-
};
16-
1712
chosen {
1813
bootargs = "root=/dev/ram0 console=ttyAMA0,38400n8 earlyprintk";
1914
};
@@ -24,14 +19,18 @@
2419
};
2520

2621
timer0: timer@13000000 {
22+
/* TIMER0 runs @ 25MHz */
2723
compatible = "arm,integrator-cp-timer";
24+
status = "disabled";
2825
};
2926

3027
timer1: timer@13000100 {
28+
/* TIMER1 runs @ 1MHz */
3129
compatible = "arm,integrator-cp-timer";
3230
};
3331

3432
timer2: timer@13000200 {
33+
/* TIMER2 runs @ 1MHz */
3534
compatible = "arm,integrator-cp-timer";
3635
};
3736

0 commit comments

Comments
 (0)