1/*
2 * DaVinci interrupt controller definitions
3 *
4 *  Copyright (C) 2006 Texas Instruments.
5 *
6 *  This program is free software; you can redistribute  it and/or modify it
7 *  under  the terms of  the GNU General  Public License as published by the
8 *  Free Software Foundation;  either version 2 of the  License, or (at your
9 *  option) any later version.
10 *
11 *  THIS  SOFTWARE  IS PROVIDED   ``AS  IS'' AND   ANY  EXPRESS OR IMPLIED
12 *  WARRANTIES,   INCLUDING, BUT NOT  LIMITED  TO, THE IMPLIED WARRANTIES OF
13 *  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN
14 *  NO  EVENT  SHALL   THE AUTHOR  BE    LIABLE FOR ANY   DIRECT, INDIRECT,
15 *  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
16 *  NOT LIMITED   TO, PROCUREMENT OF  SUBSTITUTE GOODS  OR SERVICES; LOSS OF
17 *  USE, DATA,  OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
18 *  ANY THEORY OF LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT
19 *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
20 *  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
21 *
22 *  You should have received a copy of the  GNU General Public License along
23 *  with this program; if not, write  to the Free Software Foundation, Inc.,
24 *  675 Mass Ave, Cambridge, MA 02139, USA.
25 *
26 */
27#ifndef __ASM_ARCH_IRQS_H
28#define __ASM_ARCH_IRQS_H
29
30/* Base address */
31#define DAVINCI_ARM_INTC_BASE 0x01C48000
32
33/* Interrupt lines */
34#define IRQ_VDINT0       0
35#define IRQ_VDINT1       1
36#define IRQ_VDINT2       2
37#define IRQ_HISTINT      3
38#define IRQ_H3AINT       4
39#define IRQ_PRVUINT      5
40#define IRQ_RSZINT       6
41#define IRQ_VFOCINT      7
42#define IRQ_VENCINT      8
43#define IRQ_ASQINT       9
44#define IRQ_IMXINT       10
45#define IRQ_VLCDINT      11
46#define IRQ_USBINT       12
47#define IRQ_EMACINT      13
48
49#define IRQ_CCINT0       16
50#define IRQ_CCERRINT     17
51#define IRQ_TCERRINT0    18
52#define IRQ_TCERRINT     19
53#define IRQ_PSCIN        20
54
55#define IRQ_IDE          22
56#define IRQ_HPIINT       23
57#define IRQ_MBXINT       24
58#define IRQ_MBRINT       25
59#define IRQ_MMCINT       26
60#define IRQ_SDIOINT      27
61#define IRQ_MSINT        28
62#define IRQ_DDRINT       29
63#define IRQ_AEMIFINT     30
64#define IRQ_VLQINT       31
65#define IRQ_TINT0_TINT12 32
66#define IRQ_TINT0_TINT34 33
67#define IRQ_TINT1_TINT12 34
68#define IRQ_TINT1_TINT34 35
69#define IRQ_PWMINT0      36
70#define IRQ_PWMINT1      37
71#define IRQ_PWMINT2      38
72#define IRQ_I2C          39
73#define IRQ_UARTINT0     40
74#define IRQ_UARTINT1     41
75#define IRQ_UARTINT2     42
76#define IRQ_SPINT0       43
77#define IRQ_SPINT1       44
78
79#define IRQ_DSP2ARM0     46
80#define IRQ_DSP2ARM1     47
81#define IRQ_GPIO0        48
82#define IRQ_GPIO1        49
83#define IRQ_GPIO2        50
84#define IRQ_GPIO3        51
85#define IRQ_GPIO4        52
86#define IRQ_GPIO5        53
87#define IRQ_GPIO6        54
88#define IRQ_GPIO7        55
89#define IRQ_GPIOBNK0     56
90#define IRQ_GPIOBNK1     57
91#define IRQ_GPIOBNK2     58
92#define IRQ_GPIOBNK3     59
93#define IRQ_GPIOBNK4     60
94#define IRQ_COMMTX       61
95#define IRQ_COMMRX       62
96#define IRQ_EMUINT       63
97
98#define DAVINCI_N_AINTC_IRQ	64
99
100#define ARCH_TIMER_IRQ IRQ_TINT1_TINT34
101
102/* DaVinci DM6467-specific Interrupts */
103#define IRQ_DM646X_VP_VERTINT0  0
104#define IRQ_DM646X_VP_VERTINT1  1
105#define IRQ_DM646X_VP_VERTINT2  2
106#define IRQ_DM646X_VP_VERTINT3  3
107#define IRQ_DM646X_VP_ERRINT    4
108#define IRQ_DM646X_RESERVED_1   5
109#define IRQ_DM646X_RESERVED_2   6
110#define IRQ_DM646X_WDINT        7
111#define IRQ_DM646X_CRGENINT0    8
112#define IRQ_DM646X_CRGENINT1    9
113#define IRQ_DM646X_TSIFINT0     10
114#define IRQ_DM646X_TSIFINT1     11
115#define IRQ_DM646X_VDCEINT      12
116#define IRQ_DM646X_USBINT       13
117#define IRQ_DM646X_USBDMAINT    14
118#define IRQ_DM646X_PCIINT       15
119#define IRQ_DM646X_TCERRINT2    20
120#define IRQ_DM646X_TCERRINT3    21
121#define IRQ_DM646X_IDE          22
122#define IRQ_DM646X_HPIINT       23
123#define IRQ_DM646X_EMACRXTHINT  24
124#define IRQ_DM646X_EMACRXINT    25
125#define IRQ_DM646X_EMACTXINT    26
126#define IRQ_DM646X_EMACMISCINT  27
127#define IRQ_DM646X_MCASP0TXINT  28
128#define IRQ_DM646X_MCASP0RXINT  29
129#define IRQ_DM646X_MCASP1TXINT  30
130#define IRQ_DM646X_RESERVED_3   31
131#define IRQ_DM646X_VLQINT       38
132#define IRQ_DM646X_UARTINT2     42
133#define IRQ_DM646X_SPINT0       43
134#define IRQ_DM646X_SPINT1       44
135#define IRQ_DM646X_DSP2ARMINT   45
136#define IRQ_DM646X_RESERVED_4   46
137#define IRQ_DM646X_PSCINT       47
138#define IRQ_DM646X_GPIO0        48
139#define IRQ_DM646X_GPIO1        49
140#define IRQ_DM646X_GPIO2        50
141#define IRQ_DM646X_GPIO3        51
142#define IRQ_DM646X_GPIO4        52
143#define IRQ_DM646X_GPIO5        53
144#define IRQ_DM646X_GPIO6        54
145#define IRQ_DM646X_GPIO7        55
146#define IRQ_DM646X_GPIOBNK0     56
147#define IRQ_DM646X_GPIOBNK1     57
148#define IRQ_DM646X_GPIOBNK2     58
149#define IRQ_DM646X_DDRINT       59
150#define IRQ_DM646X_AEMIFINT     60
151
152/* DaVinci DM355-specific Interrupts */
153#define IRQ_DM355_CCDC_VDINT0	0
154#define IRQ_DM355_CCDC_VDINT1	1
155#define IRQ_DM355_CCDC_VDINT2	2
156#define IRQ_DM355_IPIPE_HST	3
157#define IRQ_DM355_H3AINT	4
158#define IRQ_DM355_IPIPE_SDR	5
159#define IRQ_DM355_IPIPEIFINT	6
160#define IRQ_DM355_OSDINT	7
161#define IRQ_DM355_VENCINT	8
162#define IRQ_DM355_IMCOPINT	11
163#define IRQ_DM355_RTOINT	13
164#define IRQ_DM355_TINT4		13
165#define IRQ_DM355_TINT2_TINT12	13
166#define IRQ_DM355_UARTINT2	14
167#define IRQ_DM355_TINT5		14
168#define IRQ_DM355_TINT2_TINT34	14
169#define IRQ_DM355_TINT6		15
170#define IRQ_DM355_TINT3_TINT12	15
171#define IRQ_DM355_SPINT1_0	17
172#define IRQ_DM355_SPINT1_1	18
173#define IRQ_DM355_SPINT2_0	19
174#define IRQ_DM355_SPINT2_1	21
175#define IRQ_DM355_TINT7		22
176#define IRQ_DM355_TINT3_TINT34	22
177#define IRQ_DM355_SDIOINT0	23
178#define IRQ_DM355_MMCINT0	26
179#define IRQ_DM355_MSINT		26
180#define IRQ_DM355_MMCINT1	27
181#define IRQ_DM355_PWMINT3	28
182#define IRQ_DM355_SDIOINT1	31
183#define IRQ_DM355_SPINT0_0	42
184#define IRQ_DM355_SPINT0_1	43
185#define IRQ_DM355_GPIO0		44
186#define IRQ_DM355_GPIO1		45
187#define IRQ_DM355_GPIO2		46
188#define IRQ_DM355_GPIO3		47
189#define IRQ_DM355_GPIO4		48
190#define IRQ_DM355_GPIO5		49
191#define IRQ_DM355_GPIO6		50
192#define IRQ_DM355_GPIO7		51
193#define IRQ_DM355_GPIO8		52
194#define IRQ_DM355_GPIO9		53
195#define IRQ_DM355_GPIOBNK0	54
196#define IRQ_DM355_GPIOBNK1	55
197#define IRQ_DM355_GPIOBNK2	56
198#define IRQ_DM355_GPIOBNK3	57
199#define IRQ_DM355_GPIOBNK4	58
200#define IRQ_DM355_GPIOBNK5	59
201#define IRQ_DM355_GPIOBNK6	60
202
203/* DaVinci DM365-specific Interrupts */
204#define IRQ_DM365_INSFINT	7
205#define IRQ_DM365_IMXINT1	8
206#define IRQ_DM365_IMXINT0	10
207#define IRQ_DM365_KLD_ARMINT	10
208#define IRQ_DM365_IMCOPINT	11
209#define IRQ_DM365_RTOINT	13
210#define IRQ_DM365_TINT5		14
211#define IRQ_DM365_TINT6		15
212#define IRQ_DM365_SPINT2_1	21
213#define IRQ_DM365_TINT7		22
214#define IRQ_DM365_SDIOINT0	23
215#define IRQ_DM365_MMCINT1	27
216#define IRQ_DM365_PWMINT3	28
217#define IRQ_DM365_RTCINT	29
218#define IRQ_DM365_SDIOINT1	31
219#define IRQ_DM365_SPIINT0_0	42
220#define IRQ_DM365_SPIINT3_0	43
221#define IRQ_DM365_GPIO0		44
222#define IRQ_DM365_GPIO1		45
223#define IRQ_DM365_GPIO2		46
224#define IRQ_DM365_GPIO3		47
225#define IRQ_DM365_GPIO4		48
226#define IRQ_DM365_GPIO5		49
227#define IRQ_DM365_GPIO6		50
228#define IRQ_DM365_GPIO7		51
229#define IRQ_DM365_EMAC_RXTHRESH	52
230#define IRQ_DM365_EMAC_RXPULSE	53
231#define IRQ_DM365_EMAC_TXPULSE	54
232#define IRQ_DM365_EMAC_MISCPULSE 55
233#define IRQ_DM365_GPIO12	56
234#define IRQ_DM365_GPIO13	57
235#define IRQ_DM365_GPIO14	58
236#define IRQ_DM365_GPIO15	59
237#define IRQ_DM365_ADCINT	59
238#define IRQ_DM365_KEYINT	60
239#define IRQ_DM365_TCERRINT2	61
240#define IRQ_DM365_TCERRINT3	62
241#define IRQ_DM365_EMUINT	63
242
243/* DA8XX interrupts */
244#define IRQ_DA8XX_COMMTX		0
245#define IRQ_DA8XX_COMMRX		1
246#define IRQ_DA8XX_NINT			2
247#define IRQ_DA8XX_EVTOUT0		3
248#define IRQ_DA8XX_EVTOUT1		4
249#define IRQ_DA8XX_EVTOUT2		5
250#define IRQ_DA8XX_EVTOUT3		6
251#define IRQ_DA8XX_EVTOUT4		7
252#define IRQ_DA8XX_EVTOUT5		8
253#define IRQ_DA8XX_EVTOUT6		9
254#define IRQ_DA8XX_EVTOUT7		10
255#define IRQ_DA8XX_CCINT0		11
256#define IRQ_DA8XX_CCERRINT		12
257#define IRQ_DA8XX_TCERRINT0		13
258#define IRQ_DA8XX_AEMIFINT		14
259#define IRQ_DA8XX_I2CINT0		15
260#define IRQ_DA8XX_MMCSDINT0		16
261#define IRQ_DA8XX_MMCSDINT1		17
262#define IRQ_DA8XX_ALLINT0		18
263#define IRQ_DA8XX_RTC			19
264#define IRQ_DA8XX_SPINT0		20
265#define IRQ_DA8XX_TINT12_0		21
266#define IRQ_DA8XX_TINT34_0		22
267#define IRQ_DA8XX_TINT12_1		23
268#define IRQ_DA8XX_TINT34_1		24
269#define IRQ_DA8XX_UARTINT0		25
270#define IRQ_DA8XX_KEYMGRINT		26
271#define IRQ_DA8XX_SECINT		26
272#define IRQ_DA8XX_SECKEYERR		26
273#define IRQ_DA8XX_CHIPINT0		28
274#define IRQ_DA8XX_CHIPINT1		29
275#define IRQ_DA8XX_CHIPINT2		30
276#define IRQ_DA8XX_CHIPINT3		31
277#define IRQ_DA8XX_TCERRINT1		32
278#define IRQ_DA8XX_C0_RX_THRESH_PULSE	33
279#define IRQ_DA8XX_C0_RX_PULSE		34
280#define IRQ_DA8XX_C0_TX_PULSE		35
281#define IRQ_DA8XX_C0_MISC_PULSE		36
282#define IRQ_DA8XX_C1_RX_THRESH_PULSE	37
283#define IRQ_DA8XX_C1_RX_PULSE		38
284#define IRQ_DA8XX_C1_TX_PULSE		39
285#define IRQ_DA8XX_C1_MISC_PULSE		40
286#define IRQ_DA8XX_MEMERR		41
287#define IRQ_DA8XX_GPIO0			42
288#define IRQ_DA8XX_GPIO1			43
289#define IRQ_DA8XX_GPIO2			44
290#define IRQ_DA8XX_GPIO3			45
291#define IRQ_DA8XX_GPIO4			46
292#define IRQ_DA8XX_GPIO5			47
293#define IRQ_DA8XX_GPIO6			48
294#define IRQ_DA8XX_GPIO7			49
295#define IRQ_DA8XX_GPIO8			50
296#define IRQ_DA8XX_I2CINT1		51
297#define IRQ_DA8XX_LCDINT		52
298#define IRQ_DA8XX_UARTINT1		53
299#define IRQ_DA8XX_MCASPINT		54
300#define IRQ_DA8XX_ALLINT1		55
301#define IRQ_DA8XX_SPINT1		56
302#define IRQ_DA8XX_UHPI_INT1		57
303#define IRQ_DA8XX_USB_INT		58
304#define IRQ_DA8XX_IRQN			59
305#define IRQ_DA8XX_RWAKEUP		60
306#define IRQ_DA8XX_UARTINT2		61
307#define IRQ_DA8XX_DFTSSINT		62
308#define IRQ_DA8XX_EHRPWM0		63
309#define IRQ_DA8XX_EHRPWM0TZ		64
310#define IRQ_DA8XX_EHRPWM1		65
311#define IRQ_DA8XX_EHRPWM1TZ		66
312#define IRQ_DA8XX_ECAP0			69
313#define IRQ_DA8XX_ECAP1			70
314#define IRQ_DA8XX_ECAP2			71
315#define IRQ_DA8XX_ARMCLKSTOPREQ		90
316
317/* DA830 specific interrupts */
318#define IRQ_DA830_MPUERR		27
319#define IRQ_DA830_IOPUERR		27
320#define IRQ_DA830_BOOTCFGERR		27
321#define IRQ_DA830_EHRPWM2		67
322#define IRQ_DA830_EHRPWM2TZ		68
323#define IRQ_DA830_EQEP0			72
324#define IRQ_DA830_EQEP1			73
325#define IRQ_DA830_T12CMPINT0_0		74
326#define IRQ_DA830_T12CMPINT1_0		75
327#define IRQ_DA830_T12CMPINT2_0		76
328#define IRQ_DA830_T12CMPINT3_0		77
329#define IRQ_DA830_T12CMPINT4_0		78
330#define IRQ_DA830_T12CMPINT5_0		79
331#define IRQ_DA830_T12CMPINT6_0		80
332#define IRQ_DA830_T12CMPINT7_0		81
333#define IRQ_DA830_T12CMPINT0_1		82
334#define IRQ_DA830_T12CMPINT1_1		83
335#define IRQ_DA830_T12CMPINT2_1		84
336#define IRQ_DA830_T12CMPINT3_1		85
337#define IRQ_DA830_T12CMPINT4_1		86
338#define IRQ_DA830_T12CMPINT5_1		87
339#define IRQ_DA830_T12CMPINT6_1		88
340#define IRQ_DA830_T12CMPINT7_1		89
341
342#define DA830_N_CP_INTC_IRQ		96
343
344/* DA850 speicific interrupts */
345#define IRQ_DA850_MPUADDRERR0		27
346#define IRQ_DA850_MPUPROTERR0		27
347#define IRQ_DA850_IOPUADDRERR0		27
348#define IRQ_DA850_IOPUPROTERR0		27
349#define IRQ_DA850_IOPUADDRERR1		27
350#define IRQ_DA850_IOPUPROTERR1		27
351#define IRQ_DA850_IOPUADDRERR2		27
352#define IRQ_DA850_IOPUPROTERR2		27
353#define IRQ_DA850_BOOTCFG_ADDR_ERR	27
354#define IRQ_DA850_BOOTCFG_PROT_ERR	27
355#define IRQ_DA850_MPUADDRERR1		27
356#define IRQ_DA850_MPUPROTERR1		27
357#define IRQ_DA850_IOPUADDRERR3		27
358#define IRQ_DA850_IOPUPROTERR3		27
359#define IRQ_DA850_IOPUADDRERR4		27
360#define IRQ_DA850_IOPUPROTERR4		27
361#define IRQ_DA850_IOPUADDRERR5		27
362#define IRQ_DA850_IOPUPROTERR5		27
363#define IRQ_DA850_MIOPU_BOOTCFG_ERR	27
364#define IRQ_DA850_SATAINT		67
365#define IRQ_DA850_TINT12_2		68
366#define IRQ_DA850_TINT34_2		68
367#define IRQ_DA850_TINTALL_2		68
368#define IRQ_DA850_MMCSDINT0_1		72
369#define IRQ_DA850_MMCSDINT1_1		73
370#define IRQ_DA850_T12CMPINT0_2		74
371#define IRQ_DA850_T12CMPINT1_2		75
372#define IRQ_DA850_T12CMPINT2_2		76
373#define IRQ_DA850_T12CMPINT3_2		77
374#define IRQ_DA850_T12CMPINT4_2		78
375#define IRQ_DA850_T12CMPINT5_2		79
376#define IRQ_DA850_T12CMPINT6_2		80
377#define IRQ_DA850_T12CMPINT7_2		81
378#define IRQ_DA850_T12CMPINT0_3		82
379#define IRQ_DA850_T12CMPINT1_3		83
380#define IRQ_DA850_T12CMPINT2_3		84
381#define IRQ_DA850_T12CMPINT3_3		85
382#define IRQ_DA850_T12CMPINT4_3		86
383#define IRQ_DA850_T12CMPINT5_3		87
384#define IRQ_DA850_T12CMPINT6_3		88
385#define IRQ_DA850_T12CMPINT7_3		89
386#define IRQ_DA850_RPIINT		91
387#define IRQ_DA850_VPIFINT		92
388#define IRQ_DA850_CCINT1		93
389#define IRQ_DA850_CCERRINT1		94
390#define IRQ_DA850_TCERRINT2		95
391#define IRQ_DA850_TINT12_3		96
392#define IRQ_DA850_TINT34_3		96
393#define IRQ_DA850_TINTALL_3		96
394#define IRQ_DA850_MCBSP0RINT		97
395#define IRQ_DA850_MCBSP0XINT		98
396#define IRQ_DA850_MCBSP1RINT		99
397#define IRQ_DA850_MCBSP1XINT		100
398
399#define DA850_N_CP_INTC_IRQ		101
400
401/* da850 currently has the most gpio pins (144) */
402#define DAVINCI_N_GPIO			144
403/* da850 currently has the most irqs so use DA850_N_CP_INTC_IRQ */
404
405#endif /* __ASM_ARCH_IRQS_H */
406