ARM: 7310/1: integrator: implement sched_clock across all boards
authorLinus Walleij <linus.walleij@linaro.org>
Tue, 31 Jan 2012 22:38:23 +0000 (23:38 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Sat, 24 Mar 2012 09:38:51 +0000 (09:38 +0000)
Now that we can select a sched_clock at runtime, let's implement
it for the Integrator AP, default-select the one found in all
other board it for all plat-versatile boards and make the right
clock kick in at runtime.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/mach-integrator/Kconfig
arch/arm/mach-integrator/integrator_ap.c
arch/arm/plat-versatile/Kconfig

index 350e26636a06c8b0c21a3552377ef268f788aca2..5a6148ab6dacd711a84a9ac6e64d57330e54a8cb 100644 (file)
@@ -5,6 +5,7 @@ menu "Integrator Options"
 config ARCH_INTEGRATOR_AP
        bool "Support Integrator/AP and Integrator/PP2 platforms"
        select CLKSRC_MMIO
+       select HAVE_SCHED_CLOCK
        select MIGHT_HAVE_PCI
        select SERIAL_AMBA_PL010
        select SERIAL_AMBA_PL010_CONSOLE
index 21a1d6cbef40c43dad90ff3fc9da70d550f78fe9..4dde28b9dc07d2868926a85a4e53791f5a28dc9f 100644 (file)
@@ -42,6 +42,7 @@
 #include <asm/setup.h>
 #include <asm/param.h>         /* HZ */
 #include <asm/mach-types.h>
+#include <asm/sched_clock.h>
 
 #include <mach/lm.h>
 
@@ -325,6 +326,11 @@ static void __init ap_init(void)
 
 static unsigned long timer_reload;
 
+static u32 notrace integrator_read_sched_clock(void)
+{
+       return -readl((void __iomem *) TIMER2_VA_BASE + TIMER_VALUE);
+}
+
 static void integrator_clocksource_init(unsigned long inrate)
 {
        void __iomem *base = (void __iomem *)TIMER2_VA_BASE;
@@ -341,6 +347,7 @@ static void integrator_clocksource_init(unsigned long inrate)
 
        clocksource_mmio_init(base + TIMER_VALUE, "timer2",
                        rate, 200, 16, clocksource_mmio_readl_down);
+       setup_sched_clock(integrator_read_sched_clock, 16, rate);
 }
 
 static void __iomem * const clkevt_base = (void __iomem *)TIMER1_VA_BASE;
index 52353beb369d635ebfd51de7b2d0fa3bf6b21966..aa63f38f28486e56a237f6b529feda3866f9a090 100644 (file)
@@ -11,7 +11,7 @@ config PLAT_VERSATILE_LEDS
        depends on ARCH_REALVIEW || ARCH_VERSATILE
 
 config PLAT_VERSATILE_SCHED_CLOCK
-       def_bool y if !ARCH_INTEGRATOR_AP
+       def_bool y
        select HAVE_SCHED_CLOCK
 
 endif