xref: /nrf52832-nimble/rt-thread/libcpu/mips/x1000/x1000_intc.h (revision 104654410c56c573564690304ae786df310c91fc)
1*10465441SEvalZero /*
2*10465441SEvalZero  * File      : x1000_intc.h
3*10465441SEvalZero  * This file is part of RT-Thread RTOS
4*10465441SEvalZero  * COPYRIGHT (C) 2008 - 2012, RT-Thread Development Team
5*10465441SEvalZero  *
6*10465441SEvalZero  *  This program is free software; you can redistribute it and/or modify
7*10465441SEvalZero  *  it under the terms of the GNU General Public License as published by
8*10465441SEvalZero  *  the Free Software Foundation; either version 2 of the License, or
9*10465441SEvalZero  *  (at your option) any later version.
10*10465441SEvalZero  *
11*10465441SEvalZero  *  This program is distributed in the hope that it will be useful,
12*10465441SEvalZero  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13*10465441SEvalZero  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14*10465441SEvalZero  *  GNU General Public License for more details.
15*10465441SEvalZero  *
16*10465441SEvalZero  *  You should have received a copy of the GNU General Public License along
17*10465441SEvalZero  *  with this program; if not, write to the Free Software Foundation, Inc.,
18*10465441SEvalZero  *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19*10465441SEvalZero  *
20*10465441SEvalZero  * Change Logs:
21*10465441SEvalZero  * Date           Author       Notes
22*10465441SEvalZero  * 2017-02-03     Urey         the first version
23*10465441SEvalZero  */
24*10465441SEvalZero 
25*10465441SEvalZero #ifndef _X1000_INTC_H_
26*10465441SEvalZero #define _X1000_INTC_H_
27*10465441SEvalZero 
28*10465441SEvalZero 
29*10465441SEvalZero /*
30*10465441SEvalZero  * INTC (Interrupt Controller)
31*10465441SEvalZero  */
32*10465441SEvalZero #define INTC_ISR(n)             (INTC_BASE + 0x00 + (n) * 0x20)
33*10465441SEvalZero #define INTC_IMR(n)             (INTC_BASE + 0x04 + (n) * 0x20)
34*10465441SEvalZero #define INTC_IMSR(n)            (INTC_BASE + 0x08 + (n) * 0x20)
35*10465441SEvalZero #define INTC_IMCR(n)            (INTC_BASE + 0x0c + (n) * 0x20)
36*10465441SEvalZero #define INTC_IPR(n)             (INTC_BASE + 0x10 + (n) * 0x20)
37*10465441SEvalZero 
38*10465441SEvalZero #define REG_INTC_ISR(n)         REG32(INTC_ISR((n)))
39*10465441SEvalZero #define REG_INTC_IMR(n)         REG32(INTC_IMR((n)))
40*10465441SEvalZero #define REG_INTC_IMSR(n)        REG32(INTC_IMSR((n)))
41*10465441SEvalZero #define REG_INTC_IMCR(n)        REG32(INTC_IMCR((n)))
42*10465441SEvalZero #define REG_INTC_IPR(n)         REG32(INTC_IPR((n)))
43*10465441SEvalZero 
44*10465441SEvalZero // interrupt controller interrupts
45*10465441SEvalZero #define IRQ_DMIC                0
46*10465441SEvalZero #define IRQ_AIC0                1
47*10465441SEvalZero #define IRQ_RESERVED2           2
48*10465441SEvalZero #define IRQ_RESERVED3           3
49*10465441SEvalZero #define IRQ_RESERVED4           4
50*10465441SEvalZero #define IRQ_RESERVED5           5
51*10465441SEvalZero #define IRQ_RESERVED6           6
52*10465441SEvalZero #define IRQ_SFC                 7
53*10465441SEvalZero #define IRQ_SSI0                8
54*10465441SEvalZero #define IRQ_RESERVED9           9
55*10465441SEvalZero #define IRQ_PDMA                10
56*10465441SEvalZero #define IRQ_PDMAD               11
57*10465441SEvalZero #define IRQ_RESERVED12          12
58*10465441SEvalZero #define IRQ_RESERVED13          13
59*10465441SEvalZero #define IRQ_GPIO3               14
60*10465441SEvalZero #define IRQ_GPIO2               15
61*10465441SEvalZero #define IRQ_GPIO1               16
62*10465441SEvalZero #define IRQ_GPIO0               17
63*10465441SEvalZero #define IRQ_RESERVED18          18
64*10465441SEvalZero #define IRQ_RESERVED19          19
65*10465441SEvalZero #define IRQ_RESERVED20          20
66*10465441SEvalZero #define IRQ_OTG                 21
67*10465441SEvalZero #define IRQ_RESERVED22          22
68*10465441SEvalZero #define IRQ_AES                 23
69*10465441SEvalZero #define IRQ_RESERVED24          24
70*10465441SEvalZero #define IRQ_TCU2                25
71*10465441SEvalZero #define IRQ_TCU1                26
72*10465441SEvalZero #define IRQ_TCU0                27
73*10465441SEvalZero #define IRQ_RESERVED28          28
74*10465441SEvalZero #define IRQ_RESERVED29          29
75*10465441SEvalZero #define IRQ_CIM                 30
76*10465441SEvalZero #define IRQ_LCD                 31
77*10465441SEvalZero #define IRQ_RTC                 32
78*10465441SEvalZero #define IRQ_RESERVED33          33
79*10465441SEvalZero #define IRQ_RESERVED34          34
80*10465441SEvalZero #define IRQ_RESERVED35          35
81*10465441SEvalZero #define IRQ_MSC1                36
82*10465441SEvalZero #define IRQ_MSC0                37
83*10465441SEvalZero #define IRQ_SCC                 38
84*10465441SEvalZero #define IRQ_RESERVED39          39
85*10465441SEvalZero #define IRQ_PCM0                40
86*10465441SEvalZero #define IRQ_RESERVED41          41
87*10465441SEvalZero #define IRQ_RESERVED42          42
88*10465441SEvalZero #define IRQ_RESERVED43          43
89*10465441SEvalZero #define IRQ_HARB2               44
90*10465441SEvalZero #define IRQ_RESERVED45          45
91*10465441SEvalZero #define IRQ_HARB0               46
92*10465441SEvalZero #define IRQ_CPM                 47
93*10465441SEvalZero #define IRQ_RESERVED48          48
94*10465441SEvalZero #define IRQ_UART2               49
95*10465441SEvalZero #define IRQ_UART1               50
96*10465441SEvalZero #define IRQ_UART0               51
97*10465441SEvalZero #define IRQ_DDR                 52
98*10465441SEvalZero #define IRQ_RESERVED53          53
99*10465441SEvalZero #define IRQ_EFUSE               54
100*10465441SEvalZero #define IRQ_MAC                 55
101*10465441SEvalZero #define IRQ_RESERVED56          56
102*10465441SEvalZero #define IRQ_RESERVED57          57
103*10465441SEvalZero #define IRQ_I2C2                58
104*10465441SEvalZero #define IRQ_I2C1                59
105*10465441SEvalZero #define IRQ_I2C0                60
106*10465441SEvalZero #define IRQ_PDMAM               61
107*10465441SEvalZero #define IRQ_JPEG                62
108*10465441SEvalZero #define IRQ_RESERVED63          63
109*10465441SEvalZero 
110*10465441SEvalZero #define IRQ_INTC_MAX            63
111*10465441SEvalZero 
112*10465441SEvalZero #ifndef __ASSEMBLY__
113*10465441SEvalZero 
114*10465441SEvalZero #define __intc_unmask_irq(n)    (REG_INTC_IMCR((n)/32) = (1 << ((n)%32)))
115*10465441SEvalZero #define __intc_mask_irq(n)      (REG_INTC_IMSR((n)/32) = (1 << ((n)%32)))
116*10465441SEvalZero #define __intc_ack_irq(n)       (REG_INTC_IPR((n)/32) = (1 << ((n)%32)))        /* A dummy ack, as the Pending Register is Read Only. Should we remove __intc_ack_irq() */
117*10465441SEvalZero 
118*10465441SEvalZero #endif /* !__ASSEMBLY__ */
119*10465441SEvalZero 
120*10465441SEvalZero #endif /* _X1000_INTC_H_ */
121