summaryrefslogtreecommitdiff
path: root/arch/arm/mach-sc/include/mach/__irqs-sc8830.h
blob: 58609d8ada11ddae016886f2932c18780665c83e (plain)
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
223
224
225
226
227
228
229
/*
 * Copyright (C) 2012 Spreadtrum Communications Inc.
 *
 * This software is licensed under the terms of the GNU General Public
 * License version 2, as published by the Free Software Foundation, and
 * may be copied, distributed, and modified under those terms.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 */

#ifndef __ASM_ARCH_SPRD_IRQS_SCX35_H
#define __ASM_ARCH_SPRD_IRQS_SCX35_H

#ifndef __ASM_ARCH_SCI_IRQS_H
#error  "Don't include this file directly, include <mach/irqs.h>"
#endif

#define IRQ_GIC_START			(32)
#if defined(CONFIG_ARCH_SCX15) || defined(CONFIG_ARCH_SCX30G)
#define NR_SCI_PHY_IRQS			(IRQ_GIC_START + 127)
#else
#define NR_SCI_PHY_IRQS			(IRQ_GIC_START + 125)
#endif

#define SCI_IRQ(_X_)			(IRQ_GIC_START + (_X_))
#define SCI_EXT_IRQ(_X_)		(NR_SCI_PHY_IRQS + (_X_))

#define IRQ_SPECIAL_LATCH		SCI_IRQ(0)
#define IRQ_SOFT_TRIGGED0_INT		SCI_IRQ(1)
#define IRQ_SER0_INT			SCI_IRQ(2)
#define IRQ_SER1_INT			SCI_IRQ(3)
#define IRQ_SER2_INT			SCI_IRQ(4)
#define IRQ_SER3_INT			SCI_IRQ(5)
#define IRQ_SER4_INT			SCI_IRQ(6)
#define IRQ_SPI0_INT			SCI_IRQ(7)
#define IRQ_SPI1_INT			SCI_IRQ(8)
#define IRQ_SPI2_INT			SCI_IRQ(9)
#define IRQ_SIM0_INT 			SCI_IRQ(10)
#define IRQ_I2C0_INT 			SCI_IRQ(11)
#define IRQ_I2C1_INT 			SCI_IRQ(12)
#define IRQ_I2C2_INT 			SCI_IRQ(13)
#define IRQ_I2C3_INT 			SCI_IRQ(14)
#define IRQ_I2C4_INT 			SCI_IRQ(15)
#define IRQ_IIS0_INT			SCI_IRQ(16)
#define IRQ_IIS1_INT			SCI_IRQ(17)
#define IRQ_IIS2_INT			SCI_IRQ(18)
#define IRQ_IIS3_INT			SCI_IRQ(19)
#define IRQ_REQ_AUD_INT			SCI_IRQ(20)
#define IRQ_REQ_AUD_VBC_AFIFO_INT			SCI_IRQ(21)
#define IRQ_REQ_AUD_VBC_DA_INT			SCI_IRQ(22)
#define IRQ_REQ_AUD_VBC_AD01_INT			SCI_IRQ(23)
#define IRQ_REQ_AUD_VBC_AD23_INT			SCI_IRQ(24)
#define IRQ_ADI_INT			SCI_IRQ(25)
#define IRQ_THM_INT			SCI_IRQ(26)
#define IRQ_FM_INT			SCI_IRQ(27)
#define IRQ_AONTMR0_INT			SCI_IRQ(28)
#define IRQ_APTMR0_INT			SCI_IRQ(29)
#define IRQ_AONSYST_INT			SCI_IRQ(30)
#define IRQ_APSYST_INT			SCI_IRQ(31)

#define IRQ_AONI2C_INT			SCI_IRQ(34)
#define IRQ_GPIO_INT			SCI_IRQ(35)
#define IRQ_KPD_INT			SCI_IRQ(36)
#define IRQ_EIC_INT			SCI_IRQ(37)
#define IRQ_ANA_INT			SCI_IRQ(38)
#define IRQ_GPU_INT			SCI_IRQ(39)
#define IRQ_CSI_INT0			SCI_IRQ(40)
#define IRQ_CSI_INT1			SCI_IRQ(41)
#define IRQ_JPG_INT			SCI_IRQ(42)
#define IRQ_VSP_INT			SCI_IRQ(43)
#define IRQ_ISP_INT			SCI_IRQ(44)
#define IRQ_DCAM_INT			SCI_IRQ(45)
#define IRQ_DISPC0_INT			SCI_IRQ(46)
#define IRQ_DISPC1_INT			SCI_IRQ(47)
#define IRQ_DSI0_INT			SCI_IRQ(48)
#define IRQ_DSI1_INT			SCI_IRQ(49)
#define IRQ_DSI2_INT			SCI_IRQ(47)
//#define IRQ_DMA_INT			SCI_IRQ(50)
#define IRQ_GSP_INT			SCI_IRQ(51)
#define IRQ_GPS_INT			SCI_IRQ(52)
#define IRQ_GPS_RTCEXP_INT			SCI_IRQ(53)
#define IRQ_GPS_WAKEUP_INT			SCI_IRQ(54)
#define IRQ_USBD_INT			SCI_IRQ(55)
#define IRQ_NFC_INT			SCI_IRQ(56)
#define IRQ_SDIO0_INT			SCI_IRQ(57)
#define IRQ_SDIO1_INT			SCI_IRQ(58)
#define IRQ_SDIO2_INT			SCI_IRQ(59)
#define IRQ_EMMC_INT			SCI_IRQ(60)
#define IRQ_BM0_INT			SCI_IRQ(61)
#define IRQ_BM1_INT			SCI_IRQ(62)
#define IRQ_BM2_INT			SCI_IRQ(63)
#define IRQ_DRM_INT			SCI_IRQ(66)
#define IRQ_CP0_DSP_INT			SCI_IRQ(67)
#define IRQ_CP0_MCU0_INT			SCI_IRQ(68)
#define IRQ_CP0_MCU1_INT			SCI_IRQ(69)
#define IRQ_CP1_DSP_INT			SCI_IRQ(70)
#define IRQ_CP1_MCU0_INT			SCI_IRQ(71)
#define IRQ_CP1_MCU1_INT			SCI_IRQ(72)
#define IRQ_CP2_INT0_INT			SCI_IRQ(73)
#define IRQ_CP2_INT1_INT			SCI_IRQ(74)
#define IRQ_CP0_DSP_FIQ_INT			SCI_IRQ(75)
#define IRQ_CP0_MCU_FIQ0_INT			SCI_IRQ(76)
#define IRQ_CP0_MCU_FIQ1_INT			SCI_IRQ(77)
#define IRQ_CP1_MCU_FIQ_INT			SCI_IRQ(78)
#if 0
#define IRQ_NFC_INT			SCI_IRQ(79)
#define IRQ_NFC_INT			SCI_IRQ(80)
#define IRQ_NFC_INT			SCI_IRQ(81)
#define IRQ_NFC_INT			SCI_IRQ(82)
#endif
#define IRQ_CP0_WDG_INT			SCI_IRQ(83)
#define IRQ_CP1_WDG_INT			SCI_IRQ(84)
#define IRQ_CP2_WDG_INT			SCI_IRQ(85)
#define IRQ_AXI_BM_PUB_INT		SCI_IRQ(86)
#if 0
#define IRQ_NFC_INT			SCI_IRQ(86)
#define IRQ_NFC_INT			SCI_IRQ(87)
#define IRQ_NFC_INT			SCI_IRQ(88)
#define IRQ_NFC_INT			SCI_IRQ(89)
#define IRQ_NFC_INT			SCI_IRQ(90)
#define IRQ_NFC_INT			SCI_IRQ(91)
#endif
#define IRQ_NPMUIRQ0_INT			SCI_IRQ(92)
#define IRQ_NPMUIRQ1_INT			SCI_IRQ(93)
#define IRQ_NPMUIRQ2_INT			SCI_IRQ(94)
#define IRQ_NPMUIRQ3_INT			SCI_IRQ(95)
#define IRQ_CA7COM0_INT			SCI_IRQ(98)
#define IRQ_CA7COM1_INT			SCI_IRQ(99)
#define IRQ_CA7COM2_INT			SCI_IRQ(100)
#define IRQ_CA7COM3_INT			SCI_IRQ(101)
#define IRQ_NCNTV0_INT			SCI_IRQ(102)
#define IRQ_NCNTV1_INT			SCI_IRQ(103)
#define IRQ_NCNTV2_INT			SCI_IRQ(104)
#define IRQ_NCNTV3_INT			SCI_IRQ(105)
#define IRQ_NCNTHP0_INT			SCI_IRQ(106)
#define IRQ_NCNTHP1_INT			SCI_IRQ(107)
#define IRQ_NCNTHP2_INT			SCI_IRQ(108)
#define IRQ_NCNTHP3_INT			SCI_IRQ(109)
#define IRQ_NCNTPN0_INT			SCI_IRQ(110)
#define IRQ_NCNTPN1_INT			SCI_IRQ(111)
#define IRQ_NCNTPN2_INT			SCI_IRQ(112)
#define IRQ_NCNTPN3_INT			SCI_IRQ(113)
#define IRQ_NCNTPS0_INT			SCI_IRQ(114)
#define IRQ_NCNTPS1_INT			SCI_IRQ(115)
#define IRQ_NCNTPS2_INT			SCI_IRQ(116)
#define IRQ_NCNTPS3_INT			SCI_IRQ(117)
#define IRQ_APTMR1_INT			SCI_IRQ(118)
#define IRQ_APTMR2_INT			SCI_IRQ(119)
#define IRQ_APTMR3_INT			SCI_IRQ(120)
#define IRQ_APTMR4_INT			SCI_IRQ(121)
#define IRQ_AVS_INT				SCI_IRQ(122)
#define IRQ_APWDG_INT			SCI_IRQ(123)
#define IRQ_CA7WDG_INT			SCI_IRQ(124)
#if defined(CONFIG_ARCH_SCX15) || defined(CONFIG_ARCH_SCX30G)
#define IRQ_ZIPDEC_INT			SCI_IRQ(125)
#define IRQ_ZIPENC_INT			SCI_IRQ(126)
#endif

#define IRQ_SIPC_CPW			IRQ_CP0_MCU0_INT
#ifdef CONFIG_ARCH_SCX30G
#define IRQ_SIPC_CPT 			IRQ_CP0_MCU0_INT
#else
#define IRQ_SIPC_CPT			IRQ_CP1_MCU0_INT
#endif
#define IRQ_SIPC_WCN			IRQ_CP2_INT0_INT


/* translate gic irq number(user using ) to intc number */
#define SCI_GET_INTC_IRQ(_IRQ_NUM_)	((_IRQ_NUM_) - IRQ_GIC_START)
#define SCI_INTC_IRQ_BIT(_IRQ_NUM_)	((SCI_GET_INTC_IRQ(_IRQ_NUM_)<IRQ_GIC_START)	? \
					(1<<SCI_GET_INTC_IRQ(_IRQ_NUM_))		: \
					(1<<(SCI_GET_INTC_IRQ(_IRQ_NUM_)-IRQ_GIC_START)))

/* analog die interrupt number */
#define IRQ_ANA_ADC_INT			SCI_EXT_IRQ(0)
#if defined(CONFIG_ARCH_SCX15)
#define IRQ_ANA_GPIO_INT		-1
#else
#define IRQ_ANA_GPIO_INT		SCI_EXT_IRQ(1)
#endif
#define IRQ_ANA_RTC_INT			SCI_EXT_IRQ(2)
#define IRQ_ANA_WDG_INT			SCI_EXT_IRQ(3)
#define IRQ_ANA_FGU_INT			SCI_EXT_IRQ(4)
#define IRQ_ANA_EIC_INT			SCI_EXT_IRQ(5)
#define IRQ_ANA_AUD_HEAD_BUTTON_INT		SCI_EXT_IRQ(6)
#define IRQ_ANA_AUD_PROTECT_INT			SCI_EXT_IRQ(7)
#if defined(CONFIG_ARCH_SCX15)
#define IRQ_ANA_CAL_INT			SCI_EXT_IRQ(8)
#define IRQ_ANA_TPC_INT			SCI_EXT_IRQ(9)
#define NR_ANA_IRQS			(10)
#else
#define IRQ_ANA_THM_OTP_INT			SCI_EXT_IRQ(9)
#define IRQ_ANA_DCD_OTP_INT			SCI_EXT_IRQ(10)/*bit9 is reserved in adie intc*/
#define NR_ANA_IRQS			(11)
#endif

#define IRQ_ANA_INT_START		IRQ_ANA_ADC_INT

#if defined(CONFIG_ARCH_SCX15)
#define GPIO_IRQ_START			SCI_EXT_IRQ(10)
#define NR_GPIO_IRQS	( 320 )
#else
/* sc8830 gpio&eic pin interrupt number, total is 320, which is bigger than 256 */
#define GPIO_IRQ_START			SCI_EXT_IRQ(11)
#define NR_GPIO_IRQS	( 320 )
#endif

#if (defined(CONFIG_EIRQ_NUM) && CONFIG_EIRQ_NUM)
#ifndef CONFIG_SPARSE_IRQ
/* For external irq region desc request */
#define __NR_IRQS			(NR_SCI_PHY_IRQS + NR_ANA_IRQS + NR_GPIO_IRQS)
#define NR_IRQS				(__NR_IRQS + CONFIG_EIRQ_NUM)
#else
#error 'Dont support CONFIG_EIRQ_NUM & CONFIG_SPARSE_IRQ coexist'
#endif /* CONFIG_SPARSE_IRQ */
#else
#define NR_IRQS				(NR_SCI_PHY_IRQS + NR_ANA_IRQS + NR_GPIO_IRQS)
#endif /* CONFIG_EIRQ_NUM */
#define FIQ_START	(0)
#define NR_FIQS		(NR_SCI_PHY_IRQS)


/* redefined some MACROS for module code*/
#define IRQ_TIMER1_INT			IRQ_AONTMR0_INT
#define IRQ_ANA_AUD_INT			IRQ_ANA_AUD_PROTECT_INT
#endif