Commit d4578592 authored by Marc Zyngier's avatar Marc Zyngier

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: default avatarMarc Zyngier <marc.zyngier@arm.com>
parent 5ca709c1
...@@ -19,38 +19,12 @@ struct local_timer_ops { ...@@ -19,38 +19,12 @@ struct local_timer_ops {
void (*stop)(struct clock_event_device *); void (*stop)(struct clock_event_device *);
}; };
/*
* Setup a per-cpu timer, whether it be a local timer or dummy broadcast
*/
void percpu_timer_setup(void);
#ifdef CONFIG_LOCAL_TIMERS #ifdef CONFIG_LOCAL_TIMERS
/*
* Stop the local timer
*/
void local_timer_stop(struct clock_event_device *);
/*
* Setup a local timer interrupt for a CPU.
*/
int local_timer_setup(struct clock_event_device *);
/* /*
* Register a local timer driver * Register a local timer driver
*/ */
int local_timer_register(struct local_timer_ops *); int local_timer_register(struct local_timer_ops *);
#else #else
static inline int local_timer_setup(struct clock_event_device *evt)
{
return -ENXIO;
}
static inline void local_timer_stop(struct clock_event_device *evt)
{
}
static inline int local_timer_register(struct local_timer_ops *ops) static inline int local_timer_register(struct local_timer_ops *ops)
{ {
return -ENXIO; return -ENXIO;
......
...@@ -246,6 +246,8 @@ static void __cpuinit smp_store_cpu_info(unsigned int cpuid) ...@@ -246,6 +246,8 @@ static void __cpuinit smp_store_cpu_info(unsigned int cpuid)
store_cpu_topology(cpuid); store_cpu_topology(cpuid);
} }
static void percpu_timer_setup(void);
/* /*
* This is the secondary CPU boot entry. We're using this CPUs * This is the secondary CPU boot entry. We're using this CPUs
* idle thread stack, but a set of temporary page tables. * idle thread stack, but a set of temporary page tables.
...@@ -472,21 +474,7 @@ int local_timer_register(struct local_timer_ops *ops) ...@@ -472,21 +474,7 @@ int local_timer_register(struct local_timer_ops *ops)
} }
#endif #endif
int __cpuinit __attribute__ ((weak)) local_timer_setup(struct clock_event_device *clk) static void __cpuinit percpu_timer_setup(void)
{
if (lt_ops)
return lt_ops->setup(clk);
return -ENXIO;
}
void __attribute__ ((weak)) local_timer_stop(struct clock_event_device *clk)
{
if (lt_ops)
lt_ops->stop(clk);
}
void __cpuinit percpu_timer_setup(void)
{ {
unsigned int cpu = smp_processor_id(); unsigned int cpu = smp_processor_id();
struct clock_event_device *evt = &per_cpu(percpu_clockevent, cpu); struct clock_event_device *evt = &per_cpu(percpu_clockevent, cpu);
...@@ -494,7 +482,7 @@ void __cpuinit percpu_timer_setup(void) ...@@ -494,7 +482,7 @@ void __cpuinit percpu_timer_setup(void)
evt->cpumask = cpumask_of(cpu); evt->cpumask = cpumask_of(cpu);
evt->broadcast = smp_timer_broadcast; evt->broadcast = smp_timer_broadcast;
if (local_timer_setup(evt)) if (!lt_ops || lt_ops->setup(evt))
broadcast_timer_setup(evt); broadcast_timer_setup(evt);
} }
...@@ -509,7 +497,8 @@ static void percpu_timer_stop(void) ...@@ -509,7 +497,8 @@ static void percpu_timer_stop(void)
unsigned int cpu = smp_processor_id(); unsigned int cpu = smp_processor_id();
struct clock_event_device *evt = &per_cpu(percpu_clockevent, cpu); struct clock_event_device *evt = &per_cpu(percpu_clockevent, cpu);
local_timer_stop(evt); if (lt_ops)
lt_ops->stop(evt);
} }
#endif #endif
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment