diff options
author | Vineet Gupta <vgupta@synopsys.com> | 2014-05-07 15:25:10 +0530 |
---|---|---|
committer | Vineet Gupta <vgupta@synopsys.com> | 2014-07-23 11:16:45 +0530 |
commit | 2b75c0f93e395aa6130c20a08016b143e6ec8c53 (patch) | |
tree | df879f7748f993f2e11150208e0c9ab01ef78112 /arch/arc/kernel/time.c | |
parent | 4c834452aad01531db949414f94f817a86348d59 (diff) | |
download | op-kernel-dev-2b75c0f93e395aa6130c20a08016b143e6ec8c53.zip op-kernel-dev-2b75c0f93e395aa6130c20a08016b143e6ec8c53.tar.gz |
ARC: [SMP] unify cpu private IRQ requests (TIMER/IPI)
The current cpu-private IRQ registration is ugly as it requires need to
expose arch_unmask_irq() outside of intc code.
So switch to percpu IRQ APIs:
-request_percpu_irq [boot core]
-enable_percpu_irq [all cores]
Encapsulated in helper arc_request_percpu_irq()
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Diffstat (limited to 'arch/arc/kernel/time.c')
-rw-r--r-- | arch/arc/kernel/time.c | 18 |
1 files changed, 3 insertions, 15 deletions
diff --git a/arch/arc/kernel/time.c b/arch/arc/kernel/time.c index 36c2aa9..f92cfb1 100644 --- a/arch/arc/kernel/time.c +++ b/arch/arc/kernel/time.c @@ -210,12 +210,6 @@ static irqreturn_t timer_irq_handler(int irq, void *dev_id) return IRQ_HANDLED; } -static struct irqaction arc_timer_irq = { - .name = "Timer0 (clock-evt-dev)", - .flags = IRQF_TIMER | IRQF_PERCPU, - .handler = timer_irq_handler, -}; - /* * Setup the local event timer for @cpu */ @@ -228,15 +222,9 @@ void arc_local_timer_setup() clockevents_config_and_register(evt, arc_get_core_freq(), 0, ARC_TIMER_MAX); - /* - * setup the per-cpu timer IRQ handler - for all cpus - * For non boot CPU explicitly unmask at intc - * setup_irq() -> .. -> irq_startup() already does this on boot-cpu - */ - if (!cpu) - setup_irq(TIMER0_IRQ, &arc_timer_irq); - else - arch_unmask_irq(TIMER0_IRQ); + /* setup the per-cpu timer IRQ handler - for all cpus */ + arc_request_percpu_irq(TIMER0_IRQ, cpu, timer_irq_handler, + "Timer0 (per-cpu-tick)", evt); } /* |