summaryrefslogtreecommitdiff
path: root/packages/linux/linux-2.6.18/avr32-time-add-shared-interrupts.patch
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",
 };