aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-davinci/include/mach
diff options
context:
space:
mode:
authorSekhar Nori <nsekhar@ti.com>2012-06-20 13:40:13 -0400
committerSekhar Nori <nsekhar@ti.com>2012-07-09 06:31:11 -0400
commitbbb33445b9cdd5ac7609723fcfc28dfa77a11039 (patch)
tree0e5a43af51fafdc94482fd502f9107357064c73e /arch/arm/mach-davinci/include/mach
parent485802a6c524e62b5924849dd727ddbb1497cc71 (diff)
ARM: davinci: da8xx: fix interrupt handling
CP_INTC code in entry-macro.S code reads SECR1n register to see if an interrupt was indeed pending. This register is actually marked as write-only in the OMAP-L138 TRM. Moreover, the code just checks to see the entire register is non-zero and does not check a specific interrupt number. Fix this to use interrupt pending bit in GIPR register for this purpose. GIPR register is already being read to know the highest priority interrupt pending. Signed-off-by: Sekhar Nori <nsekhar@ti.com>
Diffstat (limited to 'arch/arm/mach-davinci/include/mach')
-rw-r--r--arch/arm/mach-davinci/include/mach/entry-macro.S8
1 files changed, 3 insertions, 5 deletions
diff --git a/arch/arm/mach-davinci/include/mach/entry-macro.S b/arch/arm/mach-davinci/include/mach/entry-macro.S
index 768b3c060214..cf5f573eb5fd 100644
--- a/arch/arm/mach-davinci/include/mach/entry-macro.S
+++ b/arch/arm/mach-davinci/include/mach/entry-macro.S
@@ -30,12 +30,10 @@
30#endif 30#endif
31#if defined(CONFIG_CP_INTC) 31#if defined(CONFIG_CP_INTC)
321001: ldr \irqnr, [\base, #0x80] /* get irq number */ 321001: ldr \irqnr, [\base, #0x80] /* get irq number */
33 mov \tmp, \irqnr, lsr #31
33 and \irqnr, \irqnr, #0xff /* irq is in bits 0-9 */ 34 and \irqnr, \irqnr, #0xff /* irq is in bits 0-9 */
34 mov \tmp, \irqnr, lsr #3 35 and \tmp, \tmp, #0x1
35 and \tmp, \tmp, #0xfc 36 cmp \tmp, #0x1
36 add \tmp, \tmp, #0x280 /* get the register offset */
37 ldr \irqstat, [\base, \tmp] /* get the intc status */
38 cmp \irqstat, #0x0
39#endif 37#endif
401002: 381002:
41 .endm 39 .endm