blob: f7692731e514359a6a8fb66cb229444b9cf9fabe [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/*
Russell King4baa9922008-08-02 10:55:55 +01002 * arch/arm/include/asm/hardware/entry-macro-iomd.S
Linus Torvalds1da177e2005-04-16 15:20:36 -07003 *
4 * Low-level IRQ helper macros for IOC/IOMD 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 */
10
11/* IOC / IOMD based hardware */
12#include <asm/hardware/iomd.h>
13
Linus Torvalds1da177e2005-04-16 15:20:36 -070014 .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
Russell King641e7912007-05-12 15:25:50 +010015 ldrb \irqstat, [\base, #IOMD_IRQREQB] @ get high priority first
16 ldr \tmp, =irq_prio_h
Linus Torvalds1da177e2005-04-16 15:20:36 -070017 teq \irqstat, #0
18#ifdef IOMD_BASE
Stefan Agnere44fc382019-02-18 00:57:38 +010019 ldrbeq \irqstat, [\base, #IOMD_DMAREQ] @ get dma
Russell King641e7912007-05-12 15:25:50 +010020 addeq \tmp, \tmp, #256 @ irq_prio_h table size
Linus Torvalds1da177e2005-04-16 15:20:36 -070021 teqeq \irqstat, #0
22 bne 2406f
23#endif
Stefan Agnere44fc382019-02-18 00:57:38 +010024 ldrbeq \irqstat, [\base, #IOMD_IRQREQA] @ get low priority
Russell King641e7912007-05-12 15:25:50 +010025 addeq \tmp, \tmp, #256 @ irq_prio_d table size
Linus Torvalds1da177e2005-04-16 15:20:36 -070026 teqeq \irqstat, #0
27#ifdef IOMD_IRQREQC
Stefan Agnere44fc382019-02-18 00:57:38 +010028 ldrbeq \irqstat, [\base, #IOMD_IRQREQC]
Russell King641e7912007-05-12 15:25:50 +010029 addeq \tmp, \tmp, #256 @ irq_prio_l table size
Linus Torvalds1da177e2005-04-16 15:20:36 -070030 teqeq \irqstat, #0
31#endif
32#ifdef IOMD_IRQREQD
Stefan Agnere44fc382019-02-18 00:57:38 +010033 ldrbeq \irqstat, [\base, #IOMD_IRQREQD]
Russell King641e7912007-05-12 15:25:50 +010034 addeq \tmp, \tmp, #256 @ irq_prio_lc table size
Linus Torvalds1da177e2005-04-16 15:20:36 -070035 teqeq \irqstat, #0
36#endif
Stefan Agnere44fc382019-02-18 00:57:38 +0100372406: ldrbne \irqnr, [\tmp, \irqstat] @ get IRQ number
Linus Torvalds1da177e2005-04-16 15:20:36 -070038 .endm
39
40/*
41 * Interrupt table (incorporates priority). Please note that we
42 * rely on the order of these tables (see above code).
43 */
44 .align 5
45irq_prio_h: .byte 0, 8, 9, 8,10,10,10,10,11,11,11,11,10,10,10,10
46 .byte 12, 8, 9, 8,10,10,10,10,11,11,11,11,10,10,10,10
47 .byte 13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
48 .byte 13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
49 .byte 14,14,14,14,10,10,10,10,11,11,11,11,10,10,10,10
50 .byte 14,14,14,14,10,10,10,10,11,11,11,11,10,10,10,10
51 .byte 13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
52 .byte 13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
53 .byte 15,15,15,15,10,10,10,10,11,11,11,11,10,10,10,10
54 .byte 15,15,15,15,10,10,10,10,11,11,11,11,10,10,10,10
55 .byte 13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
56 .byte 13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
57 .byte 15,15,15,15,10,10,10,10,11,11,11,11,10,10,10,10
58 .byte 15,15,15,15,10,10,10,10,11,11,11,11,10,10,10,10
59 .byte 13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
60 .byte 13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
61#ifdef IOMD_BASE
62irq_prio_d: .byte 0,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
63 .byte 20,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
64 .byte 21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
65 .byte 21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
66 .byte 22,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
67 .byte 22,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
68 .byte 21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
69 .byte 21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
70 .byte 23,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
71 .byte 23,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
72 .byte 21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
73 .byte 21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
74 .byte 22,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
75 .byte 22,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
76 .byte 21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
77 .byte 21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
78#endif
79irq_prio_l: .byte 0, 0, 1, 0, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3
80 .byte 4, 0, 1, 0, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3
81 .byte 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5
82 .byte 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5
83 .byte 6, 6, 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 3, 3, 3, 3
84 .byte 6, 6, 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 3, 3, 3, 3
85 .byte 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5
86 .byte 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5
87 .byte 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
88 .byte 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
89 .byte 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
90 .byte 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
91 .byte 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
92 .byte 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
93 .byte 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
94 .byte 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
95#ifdef IOMD_IRQREQC
96irq_prio_lc: .byte 24,24,25,24,26,26,26,26,27,27,27,27,27,27,27,27
97 .byte 28,24,25,24,26,26,26,26,27,27,27,27,27,27,27,27
98 .byte 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29
99 .byte 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29
100 .byte 30,30,30,30,30,30,30,30,27,27,27,27,27,27,27,27
101 .byte 30,30,30,30,30,30,30,30,27,27,27,27,27,27,27,27
102 .byte 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29
103 .byte 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29
104 .byte 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
105 .byte 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
106 .byte 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
107 .byte 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
108 .byte 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
109 .byte 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
110 .byte 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
111 .byte 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
112#endif
113#ifdef IOMD_IRQREQD
114irq_prio_ld: .byte 40,40,41,40,42,42,42,42,43,43,43,43,43,43,43,43
115 .byte 44,40,41,40,42,42,42,42,43,43,43,43,43,43,43,43
116 .byte 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45
117 .byte 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45
118 .byte 46,46,46,46,46,46,46,46,43,43,43,43,43,43,43,43
119 .byte 46,46,46,46,46,46,46,46,43,43,43,43,43,43,43,43
120 .byte 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45
121 .byte 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45
122 .byte 47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
123 .byte 47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
124 .byte 47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
125 .byte 47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
126 .byte 47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
127 .byte 47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
128 .byte 47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
129 .byte 47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
130#endif
131