diff options
| author | Mark Rutland <mark.rutland@arm.com> | 2012-10-30 08:13:42 -0400 |
|---|---|---|
| committer | Mark Rutland <mark.rutland@arm.com> | 2013-02-01 04:14:02 -0500 |
| commit | 3d06770eef43eaad606e77246bfcc7e82b1d9fb4 (patch) | |
| tree | d79692eb324c0c18e425576e7a93ad05c4834272 | |
| parent | e2c501190c7d4bf9d7febb9e1f1094cbde59ed89 (diff) | |
arm: Add generic timer broadcast support
Implement timer_broadcast for the arm architecture, allowing for the use
of clock_event_device_drivers decoupled from the timer tick broadcast
mechanism.
Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Reviewed-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Tested-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Reviewed-by: Stephen Boyd <sboyd@codeaurora.org>
| -rw-r--r-- | arch/arm/Kconfig | 1 | ||||
| -rw-r--r-- | arch/arm/kernel/smp.c | 3 |
2 files changed, 2 insertions, 2 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 67874b82a4ed..65ae7375c6c1 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
| @@ -4,6 +4,7 @@ config ARM | |||
| 4 | select ARCH_BINFMT_ELF_RANDOMIZE_PIE | 4 | select ARCH_BINFMT_ELF_RANDOMIZE_PIE |
| 5 | select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE | 5 | select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE |
| 6 | select ARCH_HAVE_CUSTOM_GPIO_H | 6 | select ARCH_HAVE_CUSTOM_GPIO_H |
| 7 | select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST | ||
| 7 | select ARCH_WANT_IPC_PARSE_VERSION | 8 | select ARCH_WANT_IPC_PARSE_VERSION |
| 8 | select BUILDTIME_EXTABLE_SORT if MMU | 9 | select BUILDTIME_EXTABLE_SORT if MMU |
| 9 | select CPU_PM if (SUSPEND || CPU_IDLE) | 10 | select CPU_PM if (SUSPEND || CPU_IDLE) |
diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c index 930851912b37..b7e3b506219b 100644 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c | |||
| @@ -476,7 +476,7 @@ u64 smp_irq_stat_cpu(unsigned int cpu) | |||
| 476 | static DEFINE_PER_CPU(struct clock_event_device, percpu_clockevent); | 476 | static DEFINE_PER_CPU(struct clock_event_device, percpu_clockevent); |
| 477 | 477 | ||
| 478 | #ifdef CONFIG_GENERIC_CLOCKEVENTS_BROADCAST | 478 | #ifdef CONFIG_GENERIC_CLOCKEVENTS_BROADCAST |
| 479 | static void smp_timer_broadcast(const struct cpumask *mask) | 479 | void tick_broadcast(const struct cpumask *mask) |
| 480 | { | 480 | { |
| 481 | smp_cross_call(mask, IPI_TIMER); | 481 | smp_cross_call(mask, IPI_TIMER); |
| 482 | } | 482 | } |
| @@ -524,7 +524,6 @@ static void __cpuinit percpu_timer_setup(void) | |||
| 524 | struct clock_event_device *evt = &per_cpu(percpu_clockevent, cpu); | 524 | struct clock_event_device *evt = &per_cpu(percpu_clockevent, cpu); |
| 525 | 525 | ||
| 526 | evt->cpumask = cpumask_of(cpu); | 526 | evt->cpumask = cpumask_of(cpu); |
| 527 | evt->broadcast = smp_timer_broadcast; | ||
| 528 | 527 | ||
| 529 | if (!lt_ops || lt_ops->setup(evt)) | 528 | if (!lt_ops || lt_ops->setup(evt)) |
| 530 | broadcast_timer_setup(evt); | 529 | broadcast_timer_setup(evt); |
