diff options
Diffstat (limited to 'arch/arm/kernel/irq.c')
| -rw-r--r-- | arch/arm/kernel/irq.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c index ff187f4308f0..395137a8fad2 100644 --- a/arch/arm/kernel/irq.c +++ b/arch/arm/kernel/irq.c | |||
| @@ -4,6 +4,10 @@ | |||
| 4 | * Copyright (C) 1992 Linus Torvalds | 4 | * Copyright (C) 1992 Linus Torvalds |
| 5 | * Modifications for ARM processor Copyright (C) 1995-2000 Russell King. | 5 | * Modifications for ARM processor Copyright (C) 1995-2000 Russell King. |
| 6 | * | 6 | * |
| 7 | * Support for Dynamic Tick Timer Copyright (C) 2004-2005 Nokia Corporation. | ||
| 8 | * Dynamic Tick Timer written by Tony Lindgren <tony@atomide.com> and | ||
| 9 | * Tuukka Tikkanen <tuukka.tikkanen@elektrobit.com>. | ||
| 10 | * | ||
| 7 | * This program is free software; you can redistribute it and/or modify | 11 | * This program is free software; you can redistribute it and/or modify |
| 8 | * it under the terms of the GNU General Public License version 2 as | 12 | * it under the terms of the GNU General Public License version 2 as |
| 9 | * published by the Free Software Foundation. | 13 | * published by the Free Software Foundation. |
| @@ -37,6 +41,7 @@ | |||
| 37 | #include <asm/irq.h> | 41 | #include <asm/irq.h> |
| 38 | #include <asm/system.h> | 42 | #include <asm/system.h> |
| 39 | #include <asm/mach/irq.h> | 43 | #include <asm/mach/irq.h> |
| 44 | #include <asm/mach/time.h> | ||
| 40 | 45 | ||
| 41 | /* | 46 | /* |
| 42 | * Maximum IRQ count. Currently, this is arbitary. However, it should | 47 | * Maximum IRQ count. Currently, this is arbitary. However, it should |
| @@ -329,6 +334,15 @@ __do_irq(unsigned int irq, struct irqaction *action, struct pt_regs *regs) | |||
| 329 | 334 | ||
| 330 | spin_unlock(&irq_controller_lock); | 335 | spin_unlock(&irq_controller_lock); |
| 331 | 336 | ||
| 337 | #ifdef CONFIG_NO_IDLE_HZ | ||
| 338 | if (!(action->flags & SA_TIMER) && system_timer->dyn_tick != NULL) { | ||
| 339 | write_seqlock(&xtime_lock); | ||
| 340 | if (system_timer->dyn_tick->state & DYN_TICK_ENABLED) | ||
| 341 | system_timer->dyn_tick->handler(irq, 0, regs); | ||
| 342 | write_sequnlock(&xtime_lock); | ||
| 343 | } | ||
| 344 | #endif | ||
| 345 | |||
| 332 | if (!(action->flags & SA_INTERRUPT)) | 346 | if (!(action->flags & SA_INTERRUPT)) |
| 333 | local_irq_enable(); | 347 | local_irq_enable(); |
| 334 | 348 | ||
