summaryrefslogtreecommitdiff
path: root/nuttx/arch/arm/include/a1x/a10_irq.h
blob: bb42692988bc0b01fe466e80299e709afd612da3 (plain) (blame)
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
/****************************************************************************************
 * arch/arm/include/a1x/a10_irq.h
 *
 *   Copyright (C) 2013 Gregory Nutt. All rights reserved.
 *   Author: Gregory Nutt <gnutt@nuttx.org>
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in
 *    the documentation and/or other materials provided with the
 *    distribution.
 * 3. Neither the name NuttX nor the names of its contributors may be
 *    used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
 * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 *
 ****************************************************************************************/

/* This file should never be included directed but, rather, only indirectly through
 * nuttx/irq.h
 */

#ifndef __ARCH_ARM_INCLUDE_A1X_A10_IRQ_H
#define __ARCH_ARM_INCLUDE_A1X_A10_IRQ_H

/****************************************************************************************
 * Included Files
 ****************************************************************************************/

/****************************************************************************************
 * Pre-processor Definitions
 ****************************************************************************************/

/* External interrupts numbers */

#define A1X_IRQ_NMI         0 /* External Non-Mask Interrupt */
#  define A1X_IRQ_POWER     0 /* Power module */
#  define A1X_IRQ_BATTERY   0 /* Brownout detect */
#  define A1X_IRQ_BROWNOUT  0 /* Brownout */
#define A1X_IRQ_UART0       1 /* UART 0 interrupt */
#define A1X_IRQ_UART1       2 /* UART 1 interrupt */
#define A1X_IRQ_UART2       3 /* UART 2 interrupt */
#define A1X_IRQ_UART3       4 /* UART 3 interrupt */
#define A1X_IRQ_IR0         5 /* IR 0 interrupt */
#define A1X_IRQ_IR1         6 /* IR 1 interrupt */
#define A1X_IRQ_TWI0        7 /* TWI 0 interrupt */
#define A1X_IRQ_TWI1        8 /* TWI 1 interrupt */
#define A1X_IRQ_TWI2        9 /* TWI 2 interrupt */
#define A1X_IRQ_SPI0       10 /* SPI 0 interrupt */
#define A1X_IRQ_SPI1       11 /* SPI 1 interrupt */
#define A1X_IRQ_SPI2       12 /* SPI 2 interrupt */
#define A1X_IRQ_NC         13 /* NC */
#define A1X_IRQ_AC97       14 /* AC97 interrupt */
#define A1X_IRQ_TS         15 /* TS interrupt */
#define A1X_IRQ_IIS        16 /* Digital Audio Controller interrupt */
#define A1X_IRQ_UART4      17 /* UART 4 interrupt */
#define A1X_IRQ_UART5      18 /* UART 5 interrupt */
#define A1X_IRQ_UART6      19 /* UART 6 interrupt */
#define A1X_IRQ_UART7      20 /* UART 7 interrupt */
#define A1X_IRQ_KEYPAD     21 /* Keypad interrupt */
#define A1X_IRQ_TIMER0     22 /* Timer port 0 */
#define A1X_IRQ_TIMER1     23 /* Timer port 1 */
#define A1X_IRQ_TIMER2     24 /* Timer 2 */
#  define A1X_IRQ_ALARM    24 /* Alarm */
#  define A1X_IRQ_WD       24 /* Watchdog */
#define A1X_IRQ_TIMER3     25 /* Timer 3 interrupt */
#define A1X_IRQ_CAN        26 /* CAN Bus controller interrupt */
#define A1X_IRQ_DMA        27 /* DMA channel interrupt */
#define A1X_IRQ_PIO        28 /* PIO interrupt */
#define A1X_IRQ_TOUCH      29 /* Touch Panel interrupt */
#define A1X_IRQ_AUDIO      30 /* Analog Audio Codec interrupt */
#define A1X_IRQ_LRADC      31 /* LRADC interrupt */
#define A1X_IRQ_SDMMC0     32 /* SD/MMC Host Controller 0 interrupt */
#define A1X_IRQ_SDMMC1     33 /* SD/MMC Host Controller 1 interrupt */
#define A1X_IRQ_SDMMC2     34 /* SD/MMC Host Controller 2 interrupt */
#define A1X_IRQ_SDMMC3     35 /* SD/MMC Host Controller 3 interrupt */
#define A1X_IRQ_RESERVED36 36
#define A1X_IRQ_NAND       37 /* NAND Flash Controller (NFC) interrupt */
#define A1X_IRQ_USB0       38 /* USB 0 wakeup, connect, disconnect interrupt */
#define A1X_IRQ_USB1       39 /* USB 1 wakeup, connect, disconnect interrupt */
#define A1X_IRQ_USB2       40 /* USB 2 wakeup, connect, disconnect interrupt */
#define A1X_IRQ_SCR        41 /* SCR interrupt */
#define A1X_IRQ_CSI0       42 /* CSI 0 interrupt */
#define A1X_IRQ_CSI1       43 /* CSI 1 interrupt */
#define A1X_IRQ_LCDC0      44 /* LCD Controller 0 interrupt */
#define A1X_IRQ_LCDC1      45 /* LCD Controller 1 interrupt */
#define A1X_IRQ_MP         46 /* MP interrupt */
#define A1X_IRQ_DEFE0      47 /* DE-FE0 interrupt */
#  define A1X_IRQ_DEBE0    47 /* DE-BE0 interrupt */
#define A1X_IRQ_DEFE1      48 /* DE-FE1 interrupt */
#  define A1X_IRQ_DEBE1    48 /* DE-BE1 interrupt */
#define A1X_IRQ_PMU        49 /* PMU interrupt */
#define A1X_IRQ_SPI3       50 /* SPI3 interrupt */
#define A1X_IRQ_TZASC      51 /* TZASC interrupt */
#define A1X_IRQ_PATA       52 /* PATA interrupt */
#define A1X_IRQ_VE         53 /* VE interrupt */
#define A1X_IRQ_SS         54 /* Security System interrupt */
#define A1X_IRQ_EMAC       55 /* EMAC interrupt */
#define A1X_IRQ_RESERVED56 56
#define A1X_IRQ_RESERVED57 57
#define A1X_IRQ_HDMI       58 /* HDMI interrupt */
#define A1X_IRQ_TVE        59 /* TV encoder 0/1 interrupt */
#define A1X_IRQ_ACE        60 /* ACE interrupt */
#define A1X_IRQ_TVD        61 /* TV decoder interrupt */
#define A1X_IRQ_PS20       62 /* PS2-0 interrupt */
#define A1X_IRQ_PS21       63 /* PS2-1 interrupt */
#define A1X_IRQ_USB3       64 /* USB 3 wakeup, connect, disconnect interrupt */
#define A1X_IRQ_USB4       65 /* USB 4 wakeup, connect, disconnect interrupt */
#define A1X_IRQ_PLE        66 /* PLE interrupts */
#  define A1X_IRQ_PERFMU   66 /* Performance monitor interrupt */
#define A1X_IRQ_TIMER4     67 /* Timer 4 interrupt */
#define A1X_IRQ_TIMER5     68 /* Timer 5 interrupt */
#define A1X_IRQ_GPU_GP     69
#define A1X_IRQ_GPU_GPMMU  70
#define A1X_IRQ_GPU_PP0    71
#define A1X_IRQ_GPU_PPMMU0 72
#define A1X_IRQ_GPU_PMU    73
#define A1X_IRQ_GPU_RSV0   74
#define A1X_IRQ_GPU_RSV1   75
#define A1X_IRQ_GPU_RSV2   76
#define A1X_IRQ_GPU_RSV3   77
#define A1X_IRQ_GPU_RSV4   78
#define A1X_IRQ_GPU_RSV5   79
#define A1X_IRQ_GPU_RSV6   80

/* Total number of interrupts */

#define A1X_IRQ_NINT       81

/* Up to 32 external PIO interrupts */

#ifdef CONFIG_A1X_PIO_IRQ
#  define A1X_PIO_EINT0    (A1X_IRQ_NINT+0)
#  define A1X_PIO_EINT1    (A1X_IRQ_NINT+1)
#  define A1X_PIO_EINT2    (A1X_IRQ_NINT+2)
#  define A1X_PIO_EINT3    (A1X_IRQ_NINT+3)
#  define A1X_PIO_EINT4    (A1X_IRQ_NINT+4)
#  define A1X_PIO_EINT5    (A1X_IRQ_NINT+5)
#  define A1X_PIO_EINT6    (A1X_IRQ_NINT+6)
#  define A1X_PIO_EINT7    (A1X_IRQ_NINT+7)
#  define A1X_PIO_EINT8    (A1X_IRQ_NINT+8)
#  define A1X_PIO_EINT9    (A1X_IRQ_NINT+9)
#  define A1X_PIO_EINT10   (A1X_IRQ_NINT+10)
#  define A1X_PIO_EINT11   (A1X_IRQ_NINT+11)
#  define A1X_PIO_EINT12   (A1X_IRQ_NINT+12)
#  define A1X_PIO_EINT13   (A1X_IRQ_NINT+13)
#  define A1X_PIO_EINT14   (A1X_IRQ_NINT+14)
#  define A1X_PIO_EINT15   (A1X_IRQ_NINT+15)
#  define A1X_PIO_EINT16   (A1X_IRQ_NINT+16)
#  define A1X_PIO_EINT17   (A1X_IRQ_NINT+17)
#  define A1X_PIO_EINT18   (A1X_IRQ_NINT+18)
#  define A1X_PIO_EINT19   (A1X_IRQ_NINT+19)
#  define A1X_PIO_EINT20   (A1X_IRQ_NINT+20)
#  define A1X_PIO_EINT21   (A1X_IRQ_NINT+21)
#  define A1X_PIO_EINT22   (A1X_IRQ_NINT+22)
#  define A1X_PIO_EINT23   (A1X_IRQ_NINT+23)
#  define A1X_PIO_EINT24   (A1X_IRQ_NINT+24)
#  define A1X_PIO_EINT25   (A1X_IRQ_NINT+25)
#  define A1X_PIO_EINT26   (A1X_IRQ_NINT+26)
#  define A1X_PIO_EINT27   (A1X_IRQ_NINT+27)
#  define A1X_PIO_EINT28   (A1X_IRQ_NINT+28)
#  define A1X_PIO_EINT29   (A1X_IRQ_NINT+29)
#  define A1X_PIO_EINT30   (A1X_IRQ_NINT+30)
#  define A1X_PIO_EINT31   (A1X_IRQ_NINT+31)
#  define A1X_PIO_NINT     32
#else
#  define A1X_PIO_NINT     0
#endif

/* Total number of IRQ numbers */

#define NR_IRQS            (A1X_IRQ_NINT + A1X_PIO_NINT)

/****************************************************************************************
 * Public Types
 ****************************************************************************************/

/****************************************************************************************
 * Inline functions
 ****************************************************************************************/

/****************************************************************************************
 * Public Variables
 ****************************************************************************************/

/****************************************************************************************
 * Public Function Prototypes
 ****************************************************************************************/

#ifndef __ASSEMBLY__
#ifdef __cplusplus
#define EXTERN extern "C"
extern "C" {
#else
#define EXTERN extern
#endif

#undef EXTERN
#ifdef __cplusplus
}
#endif
#endif

#endif /* __ARCH_ARM_INCLUDE_A1X_A10_IRQ_H */