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.19 2010/12/15 21:46:28 ve2yag 00039 * Add PWM interrupt support for AT91SAM7S and SE. 00040 * 00041 * Revision 1.18 2010/12/15 13:22:28 ve2yag 00042 * Add support for all AT91SAM7S and SE family. 00043 * 00044 * Revision 1.17 2008/10/03 11:31:28 haraldkipp 00045 * Added TWI support for the AT91SAM9260. 00046 * 00047 * Revision 1.16 2008/08/06 12:51:11 haraldkipp 00048 * Added support for Ethernut 5 (AT91SAM9XE reference design). 00049 * 00050 * Revision 1.15 2008/02/15 17:00:08 haraldkipp 00051 * Spport for AT91SAM7SE512 added. 00052 * 00053 * Revision 1.14 2008/01/31 09:22:32 haraldkipp 00054 * Added first version of platform independent GPIO routines. Consider the 00055 * AVR version untested. 00056 * 00057 * Revision 1.13 2007/12/09 21:29:33 olereinhardt 00058 * Added adc support 00059 * 00060 * Revision 1.12 2007/10/04 20:27:58 olereinhardt 00061 * Support for SAM7S256 added 00062 * 00063 * Revision 1.11 2007/09/06 19:46:47 olereinhardt 00064 * Added interrupt definitions for SPI/TWI 00065 * 00066 * Revision 1.10 2007/02/15 16:29:23 haraldkipp 00067 * Support for system controller interrupts added. 00068 * 00069 * Revision 1.9 2006/09/29 12:34:59 haraldkipp 00070 * Basic AT91 SPI support added. 00071 * 00072 * Revision 1.8 2006/09/08 16:47:49 haraldkipp 00073 * For some reason the SSC driver for SAM7X had not been included. 00074 * 00075 * Revision 1.7 2006/09/05 12:33:45 haraldkipp 00076 * SSC interrupt handler added. 00077 * 00078 * Revision 1.6 2006/08/31 19:04:08 haraldkipp 00079 * Added support for the AT91SAM9260 and Atmel's AT91SAM9260 Evaluation Kit. 00080 * 00081 * Revision 1.5 2006/07/05 07:45:28 haraldkipp 00082 * Split on-chip interface definitions. 00083 * 00084 * Revision 1.4 2006/06/28 17:22:34 haraldkipp 00085 * Make it compile for AT91SAM7X256. 00086 * 00087 * Revision 1.3 2006/02/23 15:33:59 haraldkipp 00088 * Support for Philips LPC2xxx Family and LPC-E2294 Board from Olimex added. 00089 * Many thanks to Michael Fischer for this port. 00090 * 00091 * Revision 1.2 2005/10/24 10:26:21 haraldkipp 00092 * AT91 handlers added. 00093 * 00094 * Revision 1.1 2005/07/26 18:35:09 haraldkipp 00095 * First check in 00096 * 00097 * Revision 1.3 2005/04/05 17:52:40 haraldkipp 00098 * Much better implementation of GBA interrupt registration. 00099 * 00100 * Revision 1.2 2004/09/08 10:52:31 haraldkipp 00101 * Tyou's support for the SAMSUNG S3C45 00102 * 00103 * Revision 1.1 2004/03/16 16:48:28 haraldkipp 00104 * Added Jan Dubiec's H8/300 port. 00105 * 00106 * 00107 */ 00108 00109 #ifdef S3C4510B 00110 #include "s3c4510b_irqreg.h" 00111 00112 #elif defined(MCU_GBA) 00113 00114 extern IRQ_HANDLER sig_VBLANK; 00115 extern IRQ_HANDLER sig_HBLANK; 00116 extern IRQ_HANDLER sig_VCOUNT; 00117 extern IRQ_HANDLER sig_TMR0; 00118 extern IRQ_HANDLER sig_TMR1; 00119 extern IRQ_HANDLER sig_TMR2; 00120 extern IRQ_HANDLER sig_TMR3; 00121 extern IRQ_HANDLER sig_SIO; 00122 extern IRQ_HANDLER sig_DMA0; 00123 extern IRQ_HANDLER sig_DMA1; 00124 extern IRQ_HANDLER sig_DMA2; 00125 extern IRQ_HANDLER sig_DMA3; 00126 extern IRQ_HANDLER sig_KEYPAD; 00127 extern IRQ_HANDLER sig_GAMEPAK; 00128 00129 extern void InitIrqHandler(void); 00130 00131 #elif defined(MCU_AT91R40008) 00132 00133 extern IRQ_HANDLER sig_FIQ; 00134 extern IRQ_HANDLER sig_SWIRQ; 00135 extern IRQ_HANDLER sig_UART0; 00136 extern IRQ_HANDLER sig_UART1; 00137 extern IRQ_HANDLER sig_TC0; 00138 extern IRQ_HANDLER sig_TC1; 00139 extern IRQ_HANDLER sig_TC2; 00140 extern IRQ_HANDLER sig_WDI; 00141 extern IRQ_HANDLER sig_PIO; 00142 extern IRQ_HANDLER sig_INTERRUPT0; 00143 extern IRQ_HANDLER sig_INTERRUPT1; 00144 extern IRQ_HANDLER sig_INTERRUPT2; 00145 00146 #elif defined(MCU_LPC2XXX) 00147 00148 extern IRQ_HANDLER sig_UART0; 00149 extern IRQ_HANDLER sig_UART1; 00150 extern IRQ_HANDLER sig_TC0; 00151 extern IRQ_HANDLER sig_TC1; 00152 extern IRQ_HANDLER sig_WDI; 00153 extern IRQ_HANDLER sig_INTERRUPT0; 00154 extern IRQ_HANDLER sig_INTERRUPT1; 00155 extern IRQ_HANDLER sig_INTERRUPT2; 00156 extern IRQ_HANDLER sig_INTERRUPT2; 00157 00158 #elif defined(MCU_AT91SAM7X) 00159 00160 extern IRQ_HANDLER sig_FIQ; 00161 extern IRQ_HANDLER sig_SYS; 00162 extern IRQ_HANDLER sig_UART0; 00163 extern IRQ_HANDLER sig_UART1; 00164 extern IRQ_HANDLER sig_TC0; 00165 extern IRQ_HANDLER sig_TC1; 00166 extern IRQ_HANDLER sig_TC2; 00167 extern IRQ_HANDLER sig_INTERRUPT0; 00168 extern IRQ_HANDLER sig_INTERRUPT1; 00169 extern IRQ_HANDLER sig_EMAC; 00170 extern IRQ_HANDLER sig_PIOA; 00171 extern IRQ_HANDLER sig_PIOB; 00172 extern IRQ_HANDLER sig_PIOC; 00173 extern IRQ_HANDLER sig_SWIRQ; 00174 extern IRQ_HANDLER sig_SSC; 00175 extern IRQ_HANDLER sig_SPI0; 00176 extern IRQ_HANDLER sig_SPI1; 00177 extern IRQ_HANDLER sig_TWI; 00178 extern IRQ_HANDLER sig_ADC; 00179 00180 /* 00181 * Registered system interrupt handler information structure. 00182 */ 00183 typedef struct { 00184 void *sir_arg; 00185 void (*sir_handler) (void *); 00186 int sir_enabled; 00187 } SYSIRQ_HANDLER; 00188 00189 extern SYSIRQ_HANDLER syssig_DBGU; 00190 extern SYSIRQ_HANDLER syssig_MC; 00191 extern SYSIRQ_HANDLER syssig_PIT; 00192 extern SYSIRQ_HANDLER syssig_PMC; 00193 extern SYSIRQ_HANDLER syssig_RSTC; 00194 extern SYSIRQ_HANDLER syssig_RTT; 00195 extern SYSIRQ_HANDLER syssig_WDT; 00196 00197 extern int NutRegisterSysIrqHandler(SYSIRQ_HANDLER * sysirq, void (*handler) (void *), void *arg); 00198 extern int NutSysIrqEnable(SYSIRQ_HANDLER * sysirq); 00199 extern int NutSysIrqDisable(SYSIRQ_HANDLER * sysirq); 00200 00201 #elif defined(MCU_AT91SAM7S) || defined(MCU_AT91SAM7SE) 00202 00203 extern IRQ_HANDLER sig_FIQ; 00204 extern IRQ_HANDLER sig_SYS; 00205 extern IRQ_HANDLER sig_UART0; 00206 extern IRQ_HANDLER sig_UART1; 00207 extern IRQ_HANDLER sig_TC0; 00208 extern IRQ_HANDLER sig_TC1; 00209 extern IRQ_HANDLER sig_TC2; 00210 extern IRQ_HANDLER sig_PWMC; 00211 extern IRQ_HANDLER sig_INTERRUPT0; 00212 extern IRQ_HANDLER sig_INTERRUPT1; 00213 extern IRQ_HANDLER sig_PIOA; 00214 extern IRQ_HANDLER sig_PIOB; 00215 extern IRQ_HANDLER sig_PIOC; 00216 extern IRQ_HANDLER sig_SWIRQ; 00217 extern IRQ_HANDLER sig_SSC; 00218 extern IRQ_HANDLER sig_SPI0; 00219 extern IRQ_HANDLER sig_TWI; 00220 extern IRQ_HANDLER sig_ADC; 00221 00222 /* 00223 * Registered system interrupt handler information structure. 00224 */ 00225 typedef struct { 00226 void *sir_arg; 00227 void (*sir_handler) (void *); 00228 int sir_enabled; 00229 } SYSIRQ_HANDLER; 00230 00231 extern SYSIRQ_HANDLER syssig_DBGU; 00232 extern SYSIRQ_HANDLER syssig_MC; 00233 extern SYSIRQ_HANDLER syssig_PIT; 00234 extern SYSIRQ_HANDLER syssig_PMC; 00235 extern SYSIRQ_HANDLER syssig_RSTC; 00236 extern SYSIRQ_HANDLER syssig_RTT; 00237 extern SYSIRQ_HANDLER syssig_WDT; 00238 00239 extern int NutRegisterSysIrqHandler(SYSIRQ_HANDLER * sysirq, void (*handler) (void *), void *arg); 00240 extern int NutSysIrqEnable(SYSIRQ_HANDLER * sysirq); 00241 extern int NutSysIrqDisable(SYSIRQ_HANDLER * sysirq); 00242 00243 #elif defined(MCU_AT91SAM9260) || defined(MCU_AT91SAM9XE512) || defined(MCU_AT91SAM9G45) 00244 00245 extern IRQ_HANDLER sig_FIQ; 00246 extern IRQ_HANDLER sig_UART0; 00247 extern IRQ_HANDLER sig_UART1; 00248 extern IRQ_HANDLER sig_TC0; 00249 extern IRQ_HANDLER sig_TC1; 00250 extern IRQ_HANDLER sig_TC2; 00251 extern IRQ_HANDLER sig_INTERRUPT0; 00252 extern IRQ_HANDLER sig_INTERRUPT1; 00253 extern IRQ_HANDLER sig_EMAC; 00254 extern IRQ_HANDLER sig_PIOA; 00255 extern IRQ_HANDLER sig_PIOB; 00256 extern IRQ_HANDLER sig_PIOC; 00257 extern IRQ_HANDLER sig_SWIRQ; 00258 extern IRQ_HANDLER sig_SSC; 00259 extern IRQ_HANDLER sig_SPI0; 00260 extern IRQ_HANDLER sig_SPI1; 00261 extern IRQ_HANDLER sig_TWI; 00262 extern IRQ_HANDLER sig_ADC; 00263 00264 /* 00265 * Registered system interrupt handler information structure. 00266 */ 00267 typedef struct { 00268 void *sir_arg; 00269 void (*sir_handler) (void *); 00270 int sir_enabled; 00271 } SYSIRQ_HANDLER; 00272 00273 extern SYSIRQ_HANDLER syssig_DBGU; 00274 extern SYSIRQ_HANDLER syssig_MC; 00275 extern SYSIRQ_HANDLER syssig_PIT; 00276 extern SYSIRQ_HANDLER syssig_PMC; 00277 extern SYSIRQ_HANDLER syssig_RSTC; 00278 extern SYSIRQ_HANDLER syssig_RTT; 00279 extern SYSIRQ_HANDLER syssig_WDT; 00280 00281 extern int NutRegisterSysIrqHandler(SYSIRQ_HANDLER * sysirq, void (*handler) (void *), void *arg); 00282 extern int NutSysIrqEnable(SYSIRQ_HANDLER * sysirq); 00283 extern int NutSysIrqDisable(SYSIRQ_HANDLER * sysirq); 00284 00285 #else 00286 #warning "No MCU defined" 00287 #endif 00288 00289 #endif