00001 #ifndef _DEV_IRQREG_ARM_H_ 00002 #define _DEV_IRQREG_ARM_H_ 00003 00004 /* 00005 * Copyright (C) 2001-2007 by egnite Software GmbH. All rights reserved. 00006 * 00007 * Redistribution and use in source and binary forms, with or without 00008 * modification, are permitted provided that the following conditions 00009 * are met: 00010 * 00011 * 1. Redistributions of source code must retain the above copyright 00012 * notice, this list of conditions and the following disclaimer. 00013 * 2. Redistributions in binary form must reproduce the above copyright 00014 * notice, this list of conditions and the following disclaimer in the 00015 * documentation and/or other materials provided with the distribution. 00016 * 3. Neither the name of the copyright holders nor the names of 00017 * contributors may be used to endorse or promote products derived 00018 * from this software without specific prior written permission. 00019 * 00020 * THIS SOFTWARE IS PROVIDED BY EGNITE SOFTWARE GMBH AND CONTRIBUTORS 00021 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 00022 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 00023 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL EGNITE 00024 * SOFTWARE GMBH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 00025 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 00026 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 00027 * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 00028 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 00029 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 00030 * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 00031 * SUCH DAMAGE. 00032 * 00033 * For additional information see http://www.ethernut.de/ 00034 */ 00035 00036 /* 00037 * $Log$ 00038 * Revision 1.17 2008/10/03 11:31:28 haraldkipp 00039 * Added TWI support for the AT91SAM9260. 00040 * 00041 * Revision 1.16 2008/08/06 12:51:11 haraldkipp 00042 * Added support for Ethernut 5 (AT91SAM9XE reference design). 00043 * 00044 * Revision 1.15 2008/02/15 17:00:08 haraldkipp 00045 * Spport for AT91SAM7SE512 added. 00046 * 00047 * Revision 1.14 2008/01/31 09:22:32 haraldkipp 00048 * Added first version of platform independent GPIO routines. Consider the 00049 * AVR version untested. 00050 * 00051 * Revision 1.13 2007/12/09 21:29:33 olereinhardt 00052 * Added adc support 00053 * 00054 * Revision 1.12 2007/10/04 20:27:58 olereinhardt 00055 * Support for SAM7S256 added 00056 * 00057 * Revision 1.11 2007/09/06 19:46:47 olereinhardt 00058 * Added interrupt definitions for SPI/TWI 00059 * 00060 * Revision 1.10 2007/02/15 16:29:23 haraldkipp 00061 * Support for system controller interrupts added. 00062 * 00063 * Revision 1.9 2006/09/29 12:34:59 haraldkipp 00064 * Basic AT91 SPI support added. 00065 * 00066 * Revision 1.8 2006/09/08 16:47:49 haraldkipp 00067 * For some reason the SSC driver for SAM7X had not been included. 00068 * 00069 * Revision 1.7 2006/09/05 12:33:45 haraldkipp 00070 * SSC interrupt handler added. 00071 * 00072 * Revision 1.6 2006/08/31 19:04:08 haraldkipp 00073 * Added support for the AT91SAM9260 and Atmel's AT91SAM9260 Evaluation Kit. 00074 * 00075 * Revision 1.5 2006/07/05 07:45:28 haraldkipp 00076 * Split on-chip interface definitions. 00077 * 00078 * Revision 1.4 2006/06/28 17:22:34 haraldkipp 00079 * Make it compile for AT91SAM7X256. 00080 * 00081 * Revision 1.3 2006/02/23 15:33:59 haraldkipp 00082 * Support for Philips LPC2xxx Family and LPC-E2294 Board from Olimex added. 00083 * Many thanks to Michael Fischer for this port. 00084 * 00085 * Revision 1.2 2005/10/24 10:26:21 haraldkipp 00086 * AT91 handlers added. 00087 * 00088 * Revision 1.1 2005/07/26 18:35:09 haraldkipp 00089 * First check in 00090 * 00091 * Revision 1.3 2005/04/05 17:52:40 haraldkipp 00092 * Much better implementation of GBA interrupt registration. 00093 * 00094 * Revision 1.2 2004/09/08 10:52:31 haraldkipp 00095 * Tyou's support for the SAMSUNG S3C45 00096 * 00097 * Revision 1.1 2004/03/16 16:48:28 haraldkipp 00098 * Added Jan Dubiec's H8/300 port. 00099 * 00100 * 00101 */ 00102 00103 #ifdef S3C4510B 00104 #include "s3c4510b_irqreg.h" 00105 00106 #elif defined(MCU_GBA) 00107 00108 extern IRQ_HANDLER sig_VBLANK; 00109 extern IRQ_HANDLER sig_HBLANK; 00110 extern IRQ_HANDLER sig_VCOUNT; 00111 extern IRQ_HANDLER sig_TMR0; 00112 extern IRQ_HANDLER sig_TMR1; 00113 extern IRQ_HANDLER sig_TMR2; 00114 extern IRQ_HANDLER sig_TMR3; 00115 extern IRQ_HANDLER sig_SIO; 00116 extern IRQ_HANDLER sig_DMA0; 00117 extern IRQ_HANDLER sig_DMA1; 00118 extern IRQ_HANDLER sig_DMA2; 00119 extern IRQ_HANDLER sig_DMA3; 00120 extern IRQ_HANDLER sig_KEYPAD; 00121 extern IRQ_HANDLER sig_GAMEPAK; 00122 00123 extern void InitIrqHandler(void); 00124 00125 #elif defined(MCU_AT91R40008) 00126 00127 extern IRQ_HANDLER sig_FIQ; 00128 extern IRQ_HANDLER sig_SWIRQ; 00129 extern IRQ_HANDLER sig_UART0; 00130 extern IRQ_HANDLER sig_UART1; 00131 extern IRQ_HANDLER sig_TC0; 00132 extern IRQ_HANDLER sig_TC1; 00133 extern IRQ_HANDLER sig_TC2; 00134 extern IRQ_HANDLER sig_WDI; 00135 extern IRQ_HANDLER sig_PIO; 00136 extern IRQ_HANDLER sig_INTERRUPT0; 00137 extern IRQ_HANDLER sig_INTERRUPT1; 00138 extern IRQ_HANDLER sig_INTERRUPT2; 00139 00140 #elif defined(MCU_LPC2XXX) 00141 00142 extern IRQ_HANDLER sig_UART0; 00143 extern IRQ_HANDLER sig_UART1; 00144 extern IRQ_HANDLER sig_TC0; 00145 extern IRQ_HANDLER sig_TC1; 00146 extern IRQ_HANDLER sig_WDI; 00147 extern IRQ_HANDLER sig_INTERRUPT0; 00148 extern IRQ_HANDLER sig_INTERRUPT1; 00149 extern IRQ_HANDLER sig_INTERRUPT2; 00150 extern IRQ_HANDLER sig_INTERRUPT2; 00151 00152 #elif defined(MCU_AT91SAM7X) 00153 00154 extern IRQ_HANDLER sig_FIQ; 00155 extern IRQ_HANDLER sig_SYS; 00156 extern IRQ_HANDLER sig_UART0; 00157 extern IRQ_HANDLER sig_UART1; 00158 extern IRQ_HANDLER sig_TC0; 00159 extern IRQ_HANDLER sig_TC1; 00160 extern IRQ_HANDLER sig_TC2; 00161 extern IRQ_HANDLER sig_INTERRUPT0; 00162 extern IRQ_HANDLER sig_INTERRUPT1; 00163 extern IRQ_HANDLER sig_EMAC; 00164 extern IRQ_HANDLER sig_PIOA; 00165 extern IRQ_HANDLER sig_PIOB; 00166 extern IRQ_HANDLER sig_PIOC; 00167 extern IRQ_HANDLER sig_SWIRQ; 00168 extern IRQ_HANDLER sig_SSC; 00169 extern IRQ_HANDLER sig_SPI0; 00170 extern IRQ_HANDLER sig_SPI1; 00171 extern IRQ_HANDLER sig_TWI; 00172 extern IRQ_HANDLER sig_ADC; 00173 00174 /* 00175 * Registered system interrupt handler information structure. 00176 */ 00177 typedef struct { 00178 void *sir_arg; 00179 void (*sir_handler) (void *); 00180 int sir_enabled; 00181 } SYSIRQ_HANDLER; 00182 00183 extern SYSIRQ_HANDLER syssig_DBGU; 00184 extern SYSIRQ_HANDLER syssig_MC; 00185 extern SYSIRQ_HANDLER syssig_PIT; 00186 extern SYSIRQ_HANDLER syssig_PMC; 00187 extern SYSIRQ_HANDLER syssig_RSTC; 00188 extern SYSIRQ_HANDLER syssig_RTT; 00189 extern SYSIRQ_HANDLER syssig_WDT; 00190 00191 extern int NutRegisterSysIrqHandler(SYSIRQ_HANDLER * sysirq, void (*handler) (void *), void *arg); 00192 extern int NutSysIrqEnable(SYSIRQ_HANDLER * sysirq); 00193 extern int NutSysIrqDisable(SYSIRQ_HANDLER * sysirq); 00194 00195 #elif defined(MCU_AT91SAM7S256) || defined(MCU_AT91SAM7SE512) 00196 00197 extern IRQ_HANDLER sig_FIQ; 00198 extern IRQ_HANDLER sig_SYS; 00199 extern IRQ_HANDLER sig_UART0; 00200 extern IRQ_HANDLER sig_UART1; 00201 extern IRQ_HANDLER sig_TC0; 00202 extern IRQ_HANDLER sig_TC1; 00203 extern IRQ_HANDLER sig_TC2; 00204 extern IRQ_HANDLER sig_INTERRUPT0; 00205 extern IRQ_HANDLER sig_INTERRUPT1; 00206 extern IRQ_HANDLER sig_PIOA; 00207 extern IRQ_HANDLER sig_PIOB; 00208 extern IRQ_HANDLER sig_PIOC; 00209 extern IRQ_HANDLER sig_SWIRQ; 00210 extern IRQ_HANDLER sig_SSC; 00211 extern IRQ_HANDLER sig_SPI0; 00212 extern IRQ_HANDLER sig_TWI; 00213 00214 /* 00215 * Registered system interrupt handler information structure. 00216 */ 00217 typedef struct { 00218 void *sir_arg; 00219 void (*sir_handler) (void *); 00220 int sir_enabled; 00221 } SYSIRQ_HANDLER; 00222 00223 extern SYSIRQ_HANDLER syssig_DBGU; 00224 extern SYSIRQ_HANDLER syssig_MC; 00225 extern SYSIRQ_HANDLER syssig_PIT; 00226 extern SYSIRQ_HANDLER syssig_PMC; 00227 extern SYSIRQ_HANDLER syssig_RSTC; 00228 extern SYSIRQ_HANDLER syssig_RTT; 00229 extern SYSIRQ_HANDLER syssig_WDT; 00230 00231 extern int NutRegisterSysIrqHandler(SYSIRQ_HANDLER * sysirq, void (*handler) (void *), void *arg); 00232 extern int NutSysIrqEnable(SYSIRQ_HANDLER * sysirq); 00233 extern int NutSysIrqDisable(SYSIRQ_HANDLER * sysirq); 00234 00235 #elif defined(MCU_AT91SAM9260) || defined(MCU_AT91SAM9XE512) 00236 00237 extern IRQ_HANDLER sig_FIQ; 00238 extern IRQ_HANDLER sig_UART0; 00239 extern IRQ_HANDLER sig_UART1; 00240 extern IRQ_HANDLER sig_TC0; 00241 extern IRQ_HANDLER sig_TC1; 00242 extern IRQ_HANDLER sig_TC2; 00243 extern IRQ_HANDLER sig_INTERRUPT0; 00244 extern IRQ_HANDLER sig_INTERRUPT1; 00245 extern IRQ_HANDLER sig_EMAC; 00246 extern IRQ_HANDLER sig_PIOA; 00247 extern IRQ_HANDLER sig_PIOB; 00248 extern IRQ_HANDLER sig_PIOC; 00249 extern IRQ_HANDLER sig_SWIRQ; 00250 extern IRQ_HANDLER sig_SSC; 00251 extern IRQ_HANDLER sig_SPI0; 00252 extern IRQ_HANDLER sig_SPI1; 00253 extern IRQ_HANDLER sig_TWI; 00254 00255 /* 00256 * Registered system interrupt handler information structure. 00257 */ 00258 typedef struct { 00259 void *sir_arg; 00260 void (*sir_handler) (void *); 00261 int sir_enabled; 00262 } SYSIRQ_HANDLER; 00263 00264 extern SYSIRQ_HANDLER syssig_DBGU; 00265 extern SYSIRQ_HANDLER syssig_MC; 00266 extern SYSIRQ_HANDLER syssig_PIT; 00267 extern SYSIRQ_HANDLER syssig_PMC; 00268 extern SYSIRQ_HANDLER syssig_RSTC; 00269 extern SYSIRQ_HANDLER syssig_RTT; 00270 extern SYSIRQ_HANDLER syssig_WDT; 00271 00272 extern int NutRegisterSysIrqHandler(SYSIRQ_HANDLER * sysirq, void (*handler) (void *), void *arg); 00273 extern int NutSysIrqEnable(SYSIRQ_HANDLER * sysirq); 00274 extern int NutSysIrqDisable(SYSIRQ_HANDLER * sysirq); 00275 00276 #else 00277 #warning "No MCU defined" 00278 #endif 00279 00280 #endif