[PATCH 06/15] ARM: plat-versatile: convert to twd_local_timer_register() interface
From: Russell King - ARM Linux <hidden>
Date: 2012-01-12 09:14:26
On Wed, Jan 11, 2012 at 01:08:45PM +0000, Marc Zyngier wrote:
quoted hunk ↗ jump to hunk
Add support for the new smp_twd runtime registration interface to the RealView/VE platforms, and remove the old compile-time support. Tested on EB11MP. Signed-off-by: Marc Zyngier <redacted> --- arch/arm/mach-realview/realview_eb.c | 34 ++++++++++++++++++++++++++--- arch/arm/mach-realview/realview_pb11mp.c | 32 ++++++++++++++++++++++++--- arch/arm/mach-realview/realview_pbx.c | 31 ++++++++++++++++++++++++-- arch/arm/mach-vexpress/ct-ca9x4.c | 30 +++++++++++++++++++++++-- arch/arm/plat-versatile/Makefile | 1 - arch/arm/plat-versatile/localtimer.c | 27 ----------------------- 6 files changed, 113 insertions(+), 42 deletions(-) delete mode 100644 arch/arm/plat-versatile/localtimer.cdiff --git a/arch/arm/mach-realview/realview_eb.c b/arch/arm/mach-realview/realview_eb.c index e629621..6c5e61d 100644 --- a/arch/arm/mach-realview/realview_eb.c +++ b/arch/arm/mach-realview/realview_eb.c@@ -36,7 +36,7 @@ #include <asm/pgtable.h> #include <asm/hardware/gic.h> #include <asm/hardware/cache-l2x0.h> -#include <asm/localtimer.h> +#include <asm/smp_twd.h> #include <asm/mach/arch.h> #include <asm/mach/map.h>@@ -388,6 +388,34 @@ static void realview_eb11mp_fixup(void) realview_eb_isp1761_resources[1].end = IRQ_EB11MP_USB; } +#ifdef CONFIG_HAVE_ARM_TWD +static struct twd_local_timer twd_local_timer __initdata = { + .res = { + { + .start = REALVIEW_EB11MP_TWD_BASE, + .end = REALVIEW_EB11MP_TWD_BASE + 0xff, + .flags = IORESOURCE_MEM, + },
DEFINE_RES_MEM() ?
+ {
+ .start = IRQ_LOCALTIMER,
+ .end = IRQ_LOCALTIMER,
+ .flags = IORESOURCE_IRQ,
+ },DEFINE_RES_IRQ() ?
quoted hunk ↗ jump to hunk
+ }, +}; + +static void __init realview_eb_twd_init(void) +{ + if (core_tile_eb11mp() || core_tile_a9mp()) { + int err = twd_local_timer_register(&twd_local_timer); + if (err) + pr_err("twd_local_timer_register failed %d\n", err); + } +} +#else +#define realview_eb_twd_init NULL +#endif + static void __init realview_eb_timer_init(void) { unsigned int timer_irq;@@ -398,9 +426,7 @@ static void __init realview_eb_timer_init(void) timer3_va_base = __io_address(REALVIEW_EB_TIMER2_3_BASE) + 0x20; if (core_tile_eb11mp() || core_tile_a9mp()) { -#ifdef CONFIG_LOCAL_TIMERS - twd_base = __io_address(REALVIEW_EB11MP_TWD_BASE); -#endif + late_time_init = realview_eb_twd_init;
With Nicolas' IO space patches in mainline, is it still necessary to use late_time_init() ?