]>
Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | /* |
2 | * include/asm-arm/arch-omap/entry-macro.S | |
3 | * | |
4 | * Low-level IRQ helper macros for OMAP-based platforms | |
5 | * | |
6 | * This file is licensed under the terms of the GNU General Public | |
7 | * License version 2. This program is licensed "as is" without any | |
8 | * warranty of any kind, whether express or implied. | |
9 | */ | |
78ff18a4 RK |
10 | #include <asm/hardware.h> |
11 | #include <asm/arch/irqs.h> | |
1da177e4 | 12 | |
9839c6b8 TL |
13 | #if defined(CONFIG_ARCH_OMAP1) |
14 | ||
9ad5897c TL |
15 | #if defined(CONFIG_ARCH_OMAP730) && \ |
16 | (defined(CONFIG_ARCH_OMAP15XX) || defined(CONFIG_ARCH_OMAP16XX)) | |
17 | #error "FIXME: OMAP730 doesn't support multiple-OMAP" | |
18 | #elif defined(CONFIG_ARCH_OMAP730) | |
19 | #define INT_IH2_IRQ INT_730_IH2_IRQ | |
20 | #elif defined(CONFIG_ARCH_OMAP15XX) | |
21 | #define INT_IH2_IRQ INT_1510_IH2_IRQ | |
22 | #elif defined(CONFIG_ARCH_OMAP16XX) | |
23 | #define INT_IH2_IRQ INT_1610_IH2_IRQ | |
24 | #else | |
25 | #warning "IH2 IRQ defaulted" | |
26 | #define INT_IH2_IRQ INT_1510_IH2_IRQ | |
27 | #endif | |
28 | ||
1da177e4 LT |
29 | .macro disable_fiq |
30 | .endm | |
31 | ||
32 | .macro get_irqnr_and_base, irqnr, irqstat, base, tmp | |
33 | ldr \base, =IO_ADDRESS(OMAP_IH1_BASE) | |
34 | ldr \irqnr, [\base, #IRQ_ITR_REG_OFFSET] | |
35 | ldr \tmp, [\base, #IRQ_MIR_REG_OFFSET] | |
36 | mov \irqstat, #0xffffffff | |
37 | bic \tmp, \irqstat, \tmp | |
38 | tst \irqnr, \tmp | |
39 | beq 1510f | |
40 | ||
41 | ldr \irqnr, [\base, #IRQ_SIR_FIQ_REG_OFFSET] | |
42 | cmp \irqnr, #0 | |
43 | ldreq \irqnr, [\base, #IRQ_SIR_IRQ_REG_OFFSET] | |
44 | cmpeq \irqnr, #INT_IH2_IRQ | |
45 | ldreq \base, =IO_ADDRESS(OMAP_IH2_BASE) | |
46 | ldreq \irqnr, [\base, #IRQ_SIR_IRQ_REG_OFFSET] | |
47 | addeqs \irqnr, \irqnr, #32 | |
48 | 1510: | |
49 | .endm | |
50 | ||
9839c6b8 TL |
51 | #elif defined(CONFIG_ARCH_OMAP24XX) |
52 | ||
53 | #include <asm/arch/omap24xx.h> | |
54 | ||
55 | .macro disable_fiq | |
56 | .endm | |
57 | ||
58 | .macro get_irqnr_and_base, irqnr, irqstat, base, tmp | |
59 | ldr \base, =VA_IC_BASE | |
60 | ldr \irqnr, [\base, #0x98] /* IRQ pending reg 1 */ | |
61 | cmp \irqnr, #0x0 | |
62 | bne 2222f | |
63 | ldr \irqnr, [\base, #0xb8] /* IRQ pending reg 2 */ | |
64 | cmp \irqnr, #0x0 | |
65 | bne 2222f | |
66 | ldr \irqnr, [\base, #0xd8] /* IRQ pending reg 3 */ | |
67 | cmp \irqnr, #0x0 | |
68 | 2222: | |
69 | ldrne \irqnr, [\base, #IRQ_SIR_IRQ] | |
70 | ||
71 | .endm | |
72 | ||
73 | .macro irq_prio_table | |
74 | .endm | |
75 | ||
76 | #endif |