Linux 2.6.31-rc6
[linux-2.6] / arch / arm / mach-ixp23xx / include / mach / irqs.h
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