blob: c626016ff41d7bc5555de216032ceeec5c53ba3b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
--- linux-2.6.18.orig/arch/avr32/kernel/time.c 2006-11-06 14:36:50.000000000 +0100
+++ linux-2.6.18/arch/avr32/kernel/time.c 2006-11-06 14:57:03.000000000 +0100
@@ -21,6 +21,7 @@
#include <linux/profile.h>
#include <linux/sysdev.h>
+#include <asm/intc.h>
#include <asm/div64.h>
#include <asm/sysreg.h>
#include <asm/io.h>
@@ -136,6 +137,10 @@
{
unsigned int count;
+ /* Check if interrupt is timer or performance counters */
+ if (!(intc_get_pending(irq) & 1))
+ return IRQ_NONE;
+
/* ack timer interrupt and try to set next interrupt */
count = avr32_hpt_read();
avr32_timer_ack();
@@ -164,7 +169,7 @@
static struct irqaction timer_irqaction = {
.handler = timer_interrupt,
- .flags = IRQF_DISABLED,
+ .flags = IRQF_DISABLED|IRQF_SHARED,
.name = "timer",
};
|