aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/kernel/smp.c
diff options
context:
space:
mode:
authorMarc Zyngier <marc.zyngier@arm.com>2012-01-10 18:38:25 -0500
committerMarc Zyngier <marc.zyngier@arm.com>2012-03-13 09:45:55 -0400
commitd45785929f1248d2e769f959f180f0504e326622 (patch)
treeb9ff3ebc9ec742f649261d51d269dd8c7b2e6172 /arch/arm/kernel/smp.c
parent5ca709c16d0fb88b86db35e958b165b61cbc1962 (diff)
ARM: local timers: make the runtime registration interface mandatory
Remove all traces of the compile-time local timer interface, and make the runtime selection mandatory. Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Diffstat (limited to 'arch/arm/kernel/smp.c')
-rw-r--r--arch/arm/kernel/smp.c23
1 files changed, 6 insertions, 17 deletions
diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c
index 89bb02c90ae1..1ad84a6c9bfb 100644
--- a/arch/arm/kernel/smp.c
+++ b/arch/arm/kernel/smp.c
@@ -246,6 +246,8 @@ static void __cpuinit smp_store_cpu_info(unsigned int cpuid)
246 store_cpu_topology(cpuid); 246 store_cpu_topology(cpuid);
247} 247}
248 248
249static void percpu_timer_setup(void);
250
249/* 251/*
250 * This is the secondary CPU boot entry. We're using this CPUs 252 * This is the secondary CPU boot entry. We're using this CPUs
251 * idle thread stack, but a set of temporary page tables. 253 * idle thread stack, but a set of temporary page tables.
@@ -472,21 +474,7 @@ int local_timer_register(struct local_timer_ops *ops)
472} 474}
473#endif 475#endif
474 476
475int __cpuinit __attribute__ ((weak)) local_timer_setup(struct clock_event_device *clk) 477static void __cpuinit percpu_timer_setup(void)
476{
477 if (lt_ops)
478 return lt_ops->setup(clk);
479
480 return -ENXIO;
481}
482
483void __attribute__ ((weak)) local_timer_stop(struct clock_event_device *clk)
484{
485 if (lt_ops)
486 lt_ops->stop(clk);
487}
488
489void __cpuinit percpu_timer_setup(void)
490{ 478{
491 unsigned int cpu = smp_processor_id(); 479 unsigned int cpu = smp_processor_id();
492 struct clock_event_device *evt = &per_cpu(percpu_clockevent, cpu); 480 struct clock_event_device *evt = &per_cpu(percpu_clockevent, cpu);
@@ -494,7 +482,7 @@ void __cpuinit percpu_timer_setup(void)
494 evt->cpumask = cpumask_of(cpu); 482 evt->cpumask = cpumask_of(cpu);
495 evt->broadcast = smp_timer_broadcast; 483 evt->broadcast = smp_timer_broadcast;
496 484
497 if (local_timer_setup(evt)) 485 if (!lt_ops || lt_ops->setup(evt))
498 broadcast_timer_setup(evt); 486 broadcast_timer_setup(evt);
499} 487}
500 488
@@ -509,7 +497,8 @@ static void percpu_timer_stop(void)
509 unsigned int cpu = smp_processor_id(); 497 unsigned int cpu = smp_processor_id();
510 struct clock_event_device *evt = &per_cpu(percpu_clockevent, cpu); 498 struct clock_event_device *evt = &per_cpu(percpu_clockevent, cpu);
511 499
512 local_timer_stop(evt); 500 if (lt_ops)
501 lt_ops->stop(evt);
513} 502}
514#endif 503#endif
515 504