|
@@ -23,9 +23,28 @@
|
|
|
.endm
|
|
|
|
|
|
.macro get_irqnr_and_base, irqnr, irqstat, base, tmp
|
|
|
+#if defined(CONFIG_AINTC) && defined(CONFIG_CP_INTC)
|
|
|
+ ldr \tmp, =davinci_intc_type
|
|
|
+ ldr \tmp, [\tmp]
|
|
|
+ cmp \tmp, #DAVINCI_INTC_TYPE_CP_INTC
|
|
|
+ beq 1001f
|
|
|
+#endif
|
|
|
+#if defined(CONFIG_AINTC)
|
|
|
ldr \tmp, [\base, #0x14]
|
|
|
movs \tmp, \tmp, lsr #2
|
|
|
sub \irqnr, \tmp, #1
|
|
|
+ b 1002f
|
|
|
+#endif
|
|
|
+#if defined(CONFIG_CP_INTC)
|
|
|
+1001: ldr \irqnr, [\base, #0x80] /* get irq number */
|
|
|
+ and \irqnr, \irqnr, #0xff /* irq is in bits 0-9 */
|
|
|
+ mov \tmp, \irqnr, lsr #3
|
|
|
+ and \tmp, \tmp, #0xfc
|
|
|
+ add \tmp, \tmp, #0x280 /* get the register offset */
|
|
|
+ ldr \irqstat, [\base, \tmp] /* get the intc status */
|
|
|
+ cmp \irqstat, #0x0
|
|
|
+#endif
|
|
|
+1002:
|
|
|
.endm
|
|
|
|
|
|
.macro irq_prio_table
|