diff options
| author | Rob Herring <rob.herring@calxeda.com> | 2013-02-06 22:17:47 -0500 |
|---|---|---|
| committer | Rob Herring <rob.herring@calxeda.com> | 2013-03-11 09:42:08 -0400 |
| commit | da4a686a2cfb077a8bfc1697f597e7f86235b822 (patch) | |
| tree | a705ed178357d4adaf82218407f27b6b74b341ad | |
| parent | 1d16cfb3aeba71bc6ecf2d19ccbabed0426e5c22 (diff) | |
ARM: smp_twd: convert to use CLKSRC_OF init
Now that we have OF based init with CLKSRC_OF, convert smp_twd init
function to use it and covert all callers of
twd_local_timer_of_register.
Signed-off-by: Rob Herring <rob.herring@calxeda.com>
Cc: Shawn Guo <shawn.guo@linaro.org>
Cc: Sascha Hauer <kernel@pengutronix.de>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Viresh Kumar <viresh.linux@gmail.com>
Cc: Shiraz Hashim <shiraz.hashim@st.com>
Cc: Srinidhi Kasagar <srinidhi.kasagar@stericsson.com>
Cc: John Stultz <johnstul@us.ibm.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-omap@vger.kernel.org
Cc: spear-devel@list.st.com
Reviewed-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Acked-by: Tony Lindgren <tony@atomide.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
| -rw-r--r-- | arch/arm/Kconfig | 1 | ||||
| -rw-r--r-- | arch/arm/include/asm/smp_twd.h | 8 | ||||
| -rw-r--r-- | arch/arm/kernel/smp_twd.c | 17 | ||||
| -rw-r--r-- | arch/arm/mach-highbank/highbank.c | 5 | ||||
| -rw-r--r-- | arch/arm/mach-imx/mach-imx6q.c | 5 | ||||
| -rw-r--r-- | arch/arm/mach-omap2/timer.c | 2 | ||||
| -rw-r--r-- | arch/arm/mach-spear13xx/spear13xx.c | 4 | ||||
| -rw-r--r-- | arch/arm/mach-ux500/timer.c | 3 | ||||
| -rw-r--r-- | arch/arm/mach-vexpress/v2m.c | 6 | ||||
| -rw-r--r-- | drivers/clocksource/tegra20_timer.c | 3 |
10 files changed, 17 insertions, 37 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 5b714695b01b..5bfd584929c8 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
| @@ -1597,6 +1597,7 @@ config HAVE_ARM_ARCH_TIMER | |||
| 1597 | config HAVE_ARM_TWD | 1597 | config HAVE_ARM_TWD |
| 1598 | bool | 1598 | bool |
| 1599 | depends on SMP | 1599 | depends on SMP |
| 1600 | select CLKSRC_OF if OF | ||
| 1600 | help | 1601 | help |
| 1601 | This options enables support for the ARM timer and watchdog unit | 1602 | This options enables support for the ARM timer and watchdog unit |
| 1602 | 1603 | ||
diff --git a/arch/arm/include/asm/smp_twd.h b/arch/arm/include/asm/smp_twd.h index 0f01f4677bd2..7b2899c2f7fc 100644 --- a/arch/arm/include/asm/smp_twd.h +++ b/arch/arm/include/asm/smp_twd.h | |||
| @@ -34,12 +34,4 @@ struct twd_local_timer name __initdata = { \ | |||
| 34 | 34 | ||
| 35 | int twd_local_timer_register(struct twd_local_timer *); | 35 | int twd_local_timer_register(struct twd_local_timer *); |
| 36 | 36 | ||
| 37 | #ifdef CONFIG_HAVE_ARM_TWD | ||
| 38 | void twd_local_timer_of_register(void); | ||
| 39 | #else | ||
| 40 | static inline void twd_local_timer_of_register(void) | ||
| 41 | { | ||
| 42 | } | ||
| 43 | #endif | ||
| 44 | |||
| 45 | #endif | 37 | #endif |
diff --git a/arch/arm/kernel/smp_twd.c b/arch/arm/kernel/smp_twd.c index 3f2565037480..90525d9d290b 100644 --- a/arch/arm/kernel/smp_twd.c +++ b/arch/arm/kernel/smp_twd.c | |||
| @@ -362,25 +362,13 @@ int __init twd_local_timer_register(struct twd_local_timer *tlt) | |||
| 362 | } | 362 | } |
| 363 | 363 | ||
| 364 | #ifdef CONFIG_OF | 364 | #ifdef CONFIG_OF |
| 365 | const static struct of_device_id twd_of_match[] __initconst = { | 365 | static void __init twd_local_timer_of_register(struct device_node *np) |
| 366 | { .compatible = "arm,cortex-a9-twd-timer", }, | ||
| 367 | { .compatible = "arm,cortex-a5-twd-timer", }, | ||
| 368 | { .compatible = "arm,arm11mp-twd-timer", }, | ||
| 369 | { }, | ||
| 370 | }; | ||
| 371 | |||
| 372 | void __init twd_local_timer_of_register(void) | ||
| 373 | { | 366 | { |
| 374 | struct device_node *np; | ||
| 375 | int err; | 367 | int err; |
| 376 | 368 | ||
| 377 | if (!is_smp() || !setup_max_cpus) | 369 | if (!is_smp() || !setup_max_cpus) |
| 378 | return; | 370 | return; |
| 379 | 371 | ||
| 380 | np = of_find_matching_node(NULL, twd_of_match); | ||
| 381 | if (!np) | ||
| 382 | return; | ||
| 383 | |||
| 384 | twd_ppi = irq_of_parse_and_map(np, 0); | 372 | twd_ppi = irq_of_parse_and_map(np, 0); |
| 385 | if (!twd_ppi) { | 373 | if (!twd_ppi) { |
| 386 | err = -EINVAL; | 374 | err = -EINVAL; |
| @@ -398,4 +386,7 @@ void __init twd_local_timer_of_register(void) | |||
| 398 | out: | 386 | out: |
| 399 | WARN(err, "twd_local_timer_of_register failed (%d)\n", err); | 387 | WARN(err, "twd_local_timer_of_register failed (%d)\n", err); |
| 400 | } | 388 | } |
| 389 | CLOCKSOURCE_OF_DECLARE(arm_twd_a9, "arm,cortex-a9-twd-timer", twd_local_timer_of_register); | ||
| 390 | CLOCKSOURCE_OF_DECLARE(arm_twd_a5, "arm,cortex-a5-twd-timer", twd_local_timer_of_register); | ||
| 391 | CLOCKSOURCE_OF_DECLARE(arm_twd_11mp, "arm,arm11mp-twd-timer", twd_local_timer_of_register); | ||
| 401 | #endif | 392 | #endif |
diff --git a/arch/arm/mach-highbank/highbank.c b/arch/arm/mach-highbank/highbank.c index a4f9f50247d4..76c1170b3528 100644 --- a/arch/arm/mach-highbank/highbank.c +++ b/arch/arm/mach-highbank/highbank.c | |||
| @@ -32,7 +32,6 @@ | |||
| 32 | #include <asm/cacheflush.h> | 32 | #include <asm/cacheflush.h> |
| 33 | #include <asm/cputype.h> | 33 | #include <asm/cputype.h> |
| 34 | #include <asm/smp_plat.h> | 34 | #include <asm/smp_plat.h> |
| 35 | #include <asm/smp_twd.h> | ||
| 36 | #include <asm/hardware/arm_timer.h> | 35 | #include <asm/hardware/arm_timer.h> |
| 37 | #include <asm/hardware/timer-sp.h> | 36 | #include <asm/hardware/timer-sp.h> |
| 38 | #include <asm/hardware/cache-l2x0.h> | 37 | #include <asm/hardware/cache-l2x0.h> |
| @@ -119,10 +118,10 @@ static void __init highbank_timer_init(void) | |||
| 119 | sp804_clocksource_and_sched_clock_init(timer_base + 0x20, "timer1"); | 118 | sp804_clocksource_and_sched_clock_init(timer_base + 0x20, "timer1"); |
| 120 | sp804_clockevents_init(timer_base, irq, "timer0"); | 119 | sp804_clockevents_init(timer_base, irq, "timer0"); |
| 121 | 120 | ||
| 122 | twd_local_timer_of_register(); | ||
| 123 | |||
| 124 | arch_timer_of_register(); | 121 | arch_timer_of_register(); |
| 125 | arch_timer_sched_clock_init(); | 122 | arch_timer_sched_clock_init(); |
| 123 | |||
| 124 | clocksource_of_init(); | ||
| 126 | } | 125 | } |
| 127 | 126 | ||
| 128 | static void highbank_power_off(void) | 127 | static void highbank_power_off(void) |
diff --git a/arch/arm/mach-imx/mach-imx6q.c b/arch/arm/mach-imx/mach-imx6q.c index 9ffd103b27e4..b59ddcb57c78 100644 --- a/arch/arm/mach-imx/mach-imx6q.c +++ b/arch/arm/mach-imx/mach-imx6q.c | |||
| @@ -12,6 +12,7 @@ | |||
| 12 | 12 | ||
| 13 | #include <linux/clk.h> | 13 | #include <linux/clk.h> |
| 14 | #include <linux/clkdev.h> | 14 | #include <linux/clkdev.h> |
| 15 | #include <linux/clocksource.h> | ||
| 15 | #include <linux/cpu.h> | 16 | #include <linux/cpu.h> |
| 16 | #include <linux/delay.h> | 17 | #include <linux/delay.h> |
| 17 | #include <linux/export.h> | 18 | #include <linux/export.h> |
| @@ -28,11 +29,9 @@ | |||
| 28 | #include <linux/regmap.h> | 29 | #include <linux/regmap.h> |
| 29 | #include <linux/micrel_phy.h> | 30 | #include <linux/micrel_phy.h> |
| 30 | #include <linux/mfd/syscon.h> | 31 | #include <linux/mfd/syscon.h> |
| 31 | #include <asm/smp_twd.h> | ||
| 32 | #include <asm/hardware/cache-l2x0.h> | 32 | #include <asm/hardware/cache-l2x0.h> |
| 33 | #include <asm/mach/arch.h> | 33 | #include <asm/mach/arch.h> |
| 34 | #include <asm/mach/map.h> | 34 | #include <asm/mach/map.h> |
| 35 | #include <asm/mach/time.h> | ||
| 36 | #include <asm/system_misc.h> | 35 | #include <asm/system_misc.h> |
| 37 | 36 | ||
| 38 | #include "common.h" | 37 | #include "common.h" |
| @@ -292,7 +291,7 @@ static void __init imx6q_init_irq(void) | |||
| 292 | static void __init imx6q_timer_init(void) | 291 | static void __init imx6q_timer_init(void) |
| 293 | { | 292 | { |
| 294 | mx6q_clocks_init(); | 293 | mx6q_clocks_init(); |
| 295 | twd_local_timer_of_register(); | 294 | clocksource_of_init(); |
| 296 | imx_print_silicon_rev("i.MX6Q", imx6q_revision()); | 295 | imx_print_silicon_rev("i.MX6Q", imx6q_revision()); |
| 297 | } | 296 | } |
| 298 | 297 | ||
diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c index 2bdd4cf17a8f..4fd80257c73e 100644 --- a/arch/arm/mach-omap2/timer.c +++ b/arch/arm/mach-omap2/timer.c | |||
| @@ -597,7 +597,7 @@ void __init omap4_local_timer_init(void) | |||
| 597 | int err; | 597 | int err; |
| 598 | 598 | ||
| 599 | if (of_have_populated_dt()) { | 599 | if (of_have_populated_dt()) { |
| 600 | twd_local_timer_of_register(); | 600 | clocksource_of_init(); |
| 601 | return; | 601 | return; |
| 602 | } | 602 | } |
| 603 | 603 | ||
diff --git a/arch/arm/mach-spear13xx/spear13xx.c b/arch/arm/mach-spear13xx/spear13xx.c index c7d2b4a8d8cc..25a10191b021 100644 --- a/arch/arm/mach-spear13xx/spear13xx.c +++ b/arch/arm/mach-spear13xx/spear13xx.c | |||
| @@ -15,12 +15,12 @@ | |||
| 15 | 15 | ||
| 16 | #include <linux/amba/pl022.h> | 16 | #include <linux/amba/pl022.h> |
| 17 | #include <linux/clk.h> | 17 | #include <linux/clk.h> |
| 18 | #include <linux/clocksource.h> | ||
| 18 | #include <linux/dw_dmac.h> | 19 | #include <linux/dw_dmac.h> |
| 19 | #include <linux/err.h> | 20 | #include <linux/err.h> |
| 20 | #include <linux/of.h> | 21 | #include <linux/of.h> |
| 21 | #include <asm/hardware/cache-l2x0.h> | 22 | #include <asm/hardware/cache-l2x0.h> |
| 22 | #include <asm/mach/map.h> | 23 | #include <asm/mach/map.h> |
| 23 | #include <asm/smp_twd.h> | ||
| 24 | #include <mach/dma.h> | 24 | #include <mach/dma.h> |
| 25 | #include <mach/generic.h> | 25 | #include <mach/generic.h> |
| 26 | #include <mach/spear.h> | 26 | #include <mach/spear.h> |
| @@ -179,5 +179,5 @@ void __init spear13xx_timer_init(void) | |||
| 179 | clk_put(pclk); | 179 | clk_put(pclk); |
