1 /*
2  * arch/arm/mach-ixp23xx/include/mach/irqs.h
3  *
4  * IRQ definitions for IXP23XX based systems
5  *
6  * Author: Naeem Afzal <naeem.m.afzal@intel.com>
7  *
8  * Copyright (C) 2003-2004 Intel Corporation.
9  *
10  * This program is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License version 2 as
12  * published by the Free Software Foundation.
13  */
14 
15 #ifndef __ASM_ARCH_IRQS_H
16 #define __ASM_ARCH_IRQS_H
17 
18 #define NR_IXP23XX_IRQS			IRQ_IXP23XX_INTB+1
19 #define IRQ_IXP23XX_EXTIRQS		NR_IXP23XX_IRQS
20 
21 
22 #define IRQ_IXP23XX_DBG0		0	/* Debug/Execution/MBox */
23 #define IRQ_IXP23XX_DBG1		1	/* Debug/Execution/MBox */
24 #define IRQ_IXP23XX_NPE_TRG		2	/* npe_trigger */
25 #define IRQ_IXP23XX_TIMER1		3	/* Timer[0] */
26 #define IRQ_IXP23XX_TIMER2		4	/* Timer[1] */
27 #define IRQ_IXP23XX_TIMESTAMP		5	/* Timer[2], Time-stamp */
28 #define IRQ_IXP23XX_WDOG		6	/* Time[3], Watchdog Timer */
29 #define IRQ_IXP23XX_PCI_DBELL		7	/* PCI Doorbell */
30 #define IRQ_IXP23XX_PCI_DMA1		8	/* PCI DMA Channel 1 */
31 #define IRQ_IXP23XX_PCI_DMA2		9	/* PCI DMA Channel 2 */
32 #define IRQ_IXP23XX_PCI_DMA3		10	/* PCI DMA Channel 3 */
33 #define IRQ_IXP23XX_PCI_INT_RPH		11	/* pcxg_pci_int_rph */
34 #define IRQ_IXP23XX_CPP_PMU		12	/* xpxg_pm_int_rpl */
35 #define IRQ_IXP23XX_SWINT0		13	/* S/W Interrupt0 */
36 #define IRQ_IXP23XX_SWINT1		14	/* S/W Interrupt1 */
37 #define IRQ_IXP23XX_UART2		15	/* UART1 Interrupt */
38 #define IRQ_IXP23XX_UART1		16	/* UART0 Interrupt */
39 #define IRQ_IXP23XX_XSI_PMU_ROLLOVER	17	/* AHB Performance M. Unit counter rollover */
40 #define IRQ_IXP23XX_XSI_AHB_PM0		18	/* intr_pm_o */
41 #define IRQ_IXP23XX_XSI_AHB_ECE0	19	/* intr_ece_o */
42 #define IRQ_IXP23XX_XSI_AHB_GASKET	20	/* gas_intr_o */
43 #define IRQ_IXP23XX_XSI_CPP		21	/* xsi2cpp_int */
44 #define IRQ_IXP23XX_CPP_XSI		22	/* cpp2xsi_int */
45 #define IRQ_IXP23XX_ME_ATTN0		23	/* ME_ATTN */
46 #define IRQ_IXP23XX_ME_ATTN1		24	/* ME_ATTN */
47 #define IRQ_IXP23XX_ME_ATTN2		25	/* ME_ATTN */
48 #define IRQ_IXP23XX_ME_ATTN3		26	/* ME_ATTN */
49 #define IRQ_IXP23XX_PCI_ERR_RPH		27	/* PCXG_PCI_ERR_RPH */
50 #define IRQ_IXP23XX_D0XG_ECC_CORR	28	/* D0XG_DRAM_ECC_CORR */
51 #define IRQ_IXP23XX_D0XG_ECC_UNCORR	29	/* D0XG_DRAM_ECC_UNCORR */
52 #define IRQ_IXP23XX_SRAM_ERR1		30	/* SRAM1_ERR */
53 #define IRQ_IXP23XX_SRAM_ERR0		31	/* SRAM0_ERR */
54 #define IRQ_IXP23XX_MEDIA_ERR		32	/* MEDIA_ERR */
55 #define IRQ_IXP23XX_STH_DRAM_ECC_MAJ	33	/* STH_DRAM0_ECC_MAJ */
56 #define IRQ_IXP23XX_GPIO6		34	/* GPIO0 interrupts */
57 #define IRQ_IXP23XX_GPIO7		35	/* GPIO1 interrupts */
58 #define IRQ_IXP23XX_GPIO8		36	/* GPIO2 interrupts */
59 #define IRQ_IXP23XX_GPIO9		37	/* GPIO3 interrupts */
60 #define IRQ_IXP23XX_GPIO10		38	/* GPIO4 interrupts */
61 #define IRQ_IXP23XX_GPIO11		39	/* GPIO5 interrupts */
62 #define IRQ_IXP23XX_GPIO12		40	/* GPIO6 interrupts */
63 #define IRQ_IXP23XX_GPIO13		41	/* GPIO7 interrupts */
64 #define IRQ_IXP23XX_GPIO14		42	/* GPIO8 interrupts */
65 #define IRQ_IXP23XX_GPIO15		43	/* GPIO9 interrupts */
66 #define IRQ_IXP23XX_SHAC_RING0		44	/* SHAC Ring Full */
67 #define IRQ_IXP23XX_SHAC_RING1		45	/* SHAC Ring Full */
68 #define IRQ_IXP23XX_SHAC_RING2		46	/* SHAC Ring Full */
69 #define IRQ_IXP23XX_SHAC_RING3		47	/* SHAC Ring Full */
70 #define IRQ_IXP23XX_SHAC_RING4		48	/* SHAC Ring Full */
71 #define IRQ_IXP23XX_SHAC_RING5		49	/* SHAC Ring Full */
72 #define IRQ_IXP23XX_SHAC_RING6		50	/* SHAC RING Full */
73 #define IRQ_IXP23XX_SHAC_RING7		51	/* SHAC Ring Full */
74 #define IRQ_IXP23XX_SHAC_RING8		52	/* SHAC Ring Full */
75 #define IRQ_IXP23XX_SHAC_RING9		53	/* SHAC Ring Full */
76 #define IRQ_IXP23XX_SHAC_RING10		54	/* SHAC Ring Full */
77 #define IRQ_IXP23XX_SHAC_RING11		55	/* SHAC Ring Full */
78 #define IRQ_IXP23XX_ME_THREAD_A0_ME0	56	/* ME_THREAD_A */
79 #define IRQ_IXP23XX_ME_THREAD_A1_ME0	57	/* ME_THREAD_A */
80 #define IRQ_IXP23XX_ME_THREAD_A2_ME0	58	/* ME_THREAD_A */
81 #define IRQ_IXP23XX_ME_THREAD_A3_ME0	59	/* ME_THREAD_A */
82 #define IRQ_IXP23XX_ME_THREAD_A4_ME0	60	/* ME_THREAD_A */
83 #define IRQ_IXP23XX_ME_THREAD_A5_ME0	61	/* ME_THREAD_A */
84 #define IRQ_IXP23XX_ME_THREAD_A6_ME0	62	/* ME_THREAD_A */
85 #define IRQ_IXP23XX_ME_THREAD_A7_ME0	63	/* ME_THREAD_A */
86 #define IRQ_IXP23XX_ME_THREAD_A8_ME1	64	/* ME_THREAD_A */
87 #define IRQ_IXP23XX_ME_THREAD_A9_ME1	65	/* ME_THREAD_A */
88 #define IRQ_IXP23XX_ME_THREAD_A10_ME1	66	/* ME_THREAD_A */
89 #define IRQ_IXP23XX_ME_THREAD_A11_ME1	67	/* ME_THREAD_A */
90 #define IRQ_IXP23XX_ME_THREAD_A12_ME1	68	/* ME_THREAD_A */
91 #define IRQ_IXP23XX_ME_THREAD_A13_ME1	69	/* ME_THREAD_A */
92 #define IRQ_IXP23XX_ME_THREAD_A14_ME1	70	/* ME_THREAD_A */
93 #define IRQ_IXP23XX_ME_THREAD_A15_ME1	71	/* ME_THREAD_A */
94 #define IRQ_IXP23XX_ME_THREAD_A16_ME2	72	/* ME_THREAD_A */
95 #define IRQ_IXP23XX_ME_THREAD_A17_ME2	73	/* ME_THREAD_A */
96 #define IRQ_IXP23XX_ME_THREAD_A18_ME2	74	/* ME_THREAD_A */
97 #define IRQ_IXP23XX_ME_THREAD_A19_ME2	75	/* ME_THREAD_A */
98 #define IRQ_IXP23XX_ME_THREAD_A20_ME2	76	/* ME_THREAD_A */
99 #define IRQ_IXP23XX_ME_THREAD_A21_ME2	77	/* ME_THREAD_A */
100 #define IRQ_IXP23XX_ME_THREAD_A22_ME2	78	/* ME_THREAD_A */
101 #define IRQ_IXP23XX_ME_THREAD_A23_ME2	79	/* ME_THREAD_A */
102 #define IRQ_IXP23XX_ME_THREAD_A24_ME3	80	/* ME_THREAD_A */
103 #define IRQ_IXP23XX_ME_THREAD_A25_ME3	81	/* ME_THREAD_A */
104 #define IRQ_IXP23XX_ME_THREAD_A26_ME3	82	/* ME_THREAD_A */
105 #define IRQ_IXP23XX_ME_THREAD_A27_ME3	83	/* ME_THREAD_A */
106 #define IRQ_IXP23XX_ME_THREAD_A28_ME3	84	/* ME_THREAD_A */
107 #define IRQ_IXP23XX_ME_THREAD_A29_ME3	85	/* ME_THREAD_A */
108 #define IRQ_IXP23XX_ME_THREAD_A30_ME3	86	/* ME_THREAD_A */
109 #define IRQ_IXP23XX_ME_THREAD_A31_ME3	87	/* ME_THREAD_A */
110 #define IRQ_IXP23XX_ME_THREAD_B0_ME0	88	/* ME_THREAD_B */
111 #define IRQ_IXP23XX_ME_THREAD_B1_ME0	89	/* ME_THREAD_B */
112 #define IRQ_IXP23XX_ME_THREAD_B2_ME0	90	/* ME_THREAD_B */
113 #define IRQ_IXP23XX_ME_THREAD_B3_ME0	91	/* ME_THREAD_B */
114 #define IRQ_IXP23XX_ME_THREAD_B4_ME0	92	/* ME_THREAD_B */
115 #define IRQ_IXP23XX_ME_THREAD_B5_ME0	93	/* ME_THREAD_B */
116 #define IRQ_IXP23XX_ME_THREAD_B6_ME0	94	/* ME_THREAD_B */
117 #define IRQ_IXP23XX_ME_THREAD_B7_ME0	95	/* ME_THREAD_B */
118 #define IRQ_IXP23XX_ME_THREAD_B8_ME1	96	/* ME_THREAD_B */
119 #define IRQ_IXP23XX_ME_THREAD_B9_ME1	97	/* ME_THREAD_B */
120 #define IRQ_IXP23XX_ME_THREAD_B10_ME1	98	/* ME_THREAD_B */
121 #define IRQ_IXP23XX_ME_THREAD_B11_ME1	99	/* ME_THREAD_B */
122 #define IRQ_IXP23XX_ME_THREAD_B12_ME1	100	/* ME_THREAD_B */
123 #define IRQ_IXP23XX_ME_THREAD_B13_ME1	101	/* ME_THREAD_B */
124 #define IRQ_IXP23XX_ME_THREAD_B14_ME1	102	/* ME_THREAD_B */
125 #define IRQ_IXP23XX_ME_THREAD_B15_ME1	103	/* ME_THREAD_B */
126 #define IRQ_IXP23XX_ME_THREAD_B16_ME2	104	/* ME_THREAD_B */
127 #define IRQ_IXP23XX_ME_THREAD_B17_ME2	105	/* ME_THREAD_B */
128 #define IRQ_IXP23XX_ME_THREAD_B18_ME2	106	/* ME_THREAD_B */
129 #define IRQ_IXP23XX_ME_THREAD_B19_ME2	107	/* ME_THREAD_B */
130 #define IRQ_IXP23XX_ME_THREAD_B20_ME2	108	/* ME_THREAD_B */
131 #define IRQ_IXP23XX_ME_THREAD_B21_ME2	109	/* ME_THREAD_B */
132 #define IRQ_IXP23XX_ME_THREAD_B22_ME2	110	/* ME_THREAD_B */
133 #define IRQ_IXP23XX_ME_THREAD_B23_ME2	111	/* ME_THREAD_B */
134 #define IRQ_IXP23XX_ME_THREAD_B24_ME3	112	/* ME_THREAD_B */
135 #define IRQ_IXP23XX_ME_THREAD_B25_ME3	113	/* ME_THREAD_B */
136 #define IRQ_IXP23XX_ME_THREAD_B26_ME3	114	/* ME_THREAD_B */
137 #define IRQ_IXP23XX_ME_THREAD_B27_ME3	115	/* ME_THREAD_B */
138 #define IRQ_IXP23XX_ME_THREAD_B28_ME3	116	/* ME_THREAD_B */
139 #define IRQ_IXP23XX_ME_THREAD_B29_ME3	117	/* ME_THREAD_B */
140 #define IRQ_IXP23XX_ME_THREAD_B30_ME3	118	/* ME_THREAD_B */
141 #define IRQ_IXP23XX_ME_THREAD_B31_ME3	119	/* ME_THREAD_B */
142 
143 #define NUM_IXP23XX_RAW_IRQS		120
144 
145 #define IRQ_IXP23XX_INTA		120	/* Indirect pcxg_pci_int_rph */
146 #define IRQ_IXP23XX_INTB		121	/* Indirect pcxg_pci_int_rph */
147 
148 #define NR_IXP23XX_IRQ			(IRQ_IXP23XX_INTB + 1)
149 
150 /*
151  * We default to 32 per-board IRQs. Increase this number if you need
152  * more, but keep it realistic.
153  */
154 #define NR_IXP23XX_MACH_IRQS 		32
155 
156 #define NR_IRQS				(NR_IXP23XX_IRQS + NR_IXP23XX_MACH_IRQS)
157 
158 #define IXP23XX_MACH_IRQ(irq) 		(NR_IXP23XX_IRQ + (irq))
159 
160 
161 /*
162  * IXDP2351-specific interrupts
163  */
164 
165 /*
166  * External PCI interrupts signaled through INTB
167  *
168  */
169 #define IXDP2351_INTB_IRQ_BASE 		0
170 #define IRQ_IXDP2351_INTA_82546		IXP23XX_MACH_IRQ(0)
171 #define IRQ_IXDP2351_INTB_82546		IXP23XX_MACH_IRQ(1)
172 #define IRQ_IXDP2351_SPCI_DB_0		IXP23XX_MACH_IRQ(2)
173 #define IRQ_IXDP2351_SPCI_DB_1		IXP23XX_MACH_IRQ(3)
174 #define IRQ_IXDP2351_SPCI_PMC_INTA	IXP23XX_MACH_IRQ(4)
175 #define IRQ_IXDP2351_SPCI_PMC_INTB	IXP23XX_MACH_IRQ(5)
176 #define IRQ_IXDP2351_SPCI_PMC_INTC	IXP23XX_MACH_IRQ(6)
177 #define IRQ_IXDP2351_SPCI_PMC_INTD	IXP23XX_MACH_IRQ(7)
178 #define IRQ_IXDP2351_SPCI_FIC		IXP23XX_MACH_IRQ(8)
179 
180 #define IXDP2351_INTB_IRQ_BIT(irq)	(irq - IXP23XX_MACH_IRQ(0))
181 #define IXDP2351_INTB_IRQ_MASK(irq)	(1 << IXDP2351_INTB_IRQ_BIT(irq))
182 #define IXDP2351_INTB_IRQ_VALID		0x01FF
183 #define IXDP2351_INTB_IRQ_NUM 		16
184 
185 /*
186  * Other external interrupts signaled through INTA
187  */
188 #define IXDP2351_INTA_IRQ_BASE 		16
189 #define IRQ_IXDP2351_IPMI_FROM		IXP23XX_MACH_IRQ(16)
190 #define IRQ_IXDP2351_125US		IXP23XX_MACH_IRQ(17)
191 #define IRQ_IXDP2351_DB_0_ADD		IXP23XX_MACH_IRQ(18)
192 #define IRQ_IXDP2351_DB_1_ADD		IXP23XX_MACH_IRQ(19)
193 #define IRQ_IXDP2351_DEBUG1		IXP23XX_MACH_IRQ(20)
194 #define IRQ_IXDP2351_ADD_UART		IXP23XX_MACH_IRQ(21)
195 #define IRQ_IXDP2351_FIC_ADD		IXP23XX_MACH_IRQ(24)
196 #define IRQ_IXDP2351_CS8900		IXP23XX_MACH_IRQ(25)
197 #define IRQ_IXDP2351_BBSRAM		IXP23XX_MACH_IRQ(26)
198 #define IRQ_IXDP2351_CONFIG_MEDIA	IXP23XX_MACH_IRQ(27)
199 #define IRQ_IXDP2351_CLOCK_REF		IXP23XX_MACH_IRQ(28)
200 #define IRQ_IXDP2351_A10_NP		IXP23XX_MACH_IRQ(29)
201 #define IRQ_IXDP2351_A11_NP		IXP23XX_MACH_IRQ(30)
202 #define IRQ_IXDP2351_DEBUG_NP		IXP23XX_MACH_IRQ(31)
203 
204 #define IXDP2351_INTA_IRQ_BIT(irq) 	(irq - IXP23XX_MACH_IRQ(16))
205 #define IXDP2351_INTA_IRQ_MASK(irq) 	(1 << IXDP2351_INTA_IRQ_BIT(irq))
206 #define IXDP2351_INTA_IRQ_VALID 	0xFF3F
207 #define IXDP2351_INTA_IRQ_NUM 		16
208 
209 
210 /*
211  * ADI RoadRunner IRQs
212  */
213 #define IRQ_ROADRUNNER_PCI_INTA 	IRQ_IXP23XX_INTA
214 #define IRQ_ROADRUNNER_PCI_INTB 	IRQ_IXP23XX_INTB
215 #define IRQ_ROADRUNNER_PCI_INTC 	IRQ_IXP23XX_GPIO11
216 #define IRQ_ROADRUNNER_PCI_INTD 	IRQ_IXP23XX_GPIO12
217 
218 /*
219  * Put new board definitions here
220  */
221 
222 
223 #endif
224