*
*/
+#ifndef INTERRUPTS_H
+#define INTERRUPTS_H
+
#include "lpc2xxx.h"
#include "types.h"
+/* defines */
+
+#define INTERRUPT_MAX_VIC 16
+
+#define INTERRUPT_WATCHDOG 0
+#define INTERRUPT_DBG_COMM_RX 2
+#define INTERRUPT_DBG_COMM_TX 3
+#define INTERRUPT_TIMER0 4
+#define INTERRUPT_TIMER1 5
+#define INTERRUPT_UART0 6
+#define INTERRUPT_UART1 7
+#define INTERRUPT_PWM 8
+#define INTERRUPT_I2C 9
+#define INTERRUPT_SPI0 10
+#define INTERRUPT_SPI1 11
+#define INTERRUPT_PLL 12
+#define INTERRUPT_RTC 13
+#define INTERRUPT_EINT0 14
+#define INTERRUPT_EINT1 15
+#define INTERRUPT_EINT2 16
+#define INTERRUPT_EINT3 17
+#define INTERRUPT_ADC 18
+
+#define INTERRUPT_MODE_IRQ 0
+#define INTERRUPT_MODE_VIRQ 1
+#define INTERRUPT_MODE_FIQ 2
+
+#define INTERRUPT_EXT_MODE_EDGE 0
+#define INTERRUPT_EXT_MODE_LEVEL 1
+#define INTERRUPT_EXT_POLAR_LOW 0
+#define INTERRUPT_EXT_POLAR_HIGH 1
+#define INTERRUPT_EXT_NOWAKE 0
+#define INTERRUPT_EXT_WAKEUP 1
+
+#define INTERRUPT_EXT0 0
+#define INTERRUPT_EXT1 1
+#define INTERRUPT_EXT2 2
+#define INTERRUPT_EXT3 3
+
+#define INTERRUPT_TC0 0
+#define INTERRUPT_TC1 1
+
+#define INTERRUPT_TC_MODE_T 0x00
+#define INTERRUPT_TC_MODE_CR 0x01
+#define INTERRUPT_TC_MODE_CF 0x02
+#define INTERRUPT_TC_MODE_CB 0x03
+
+#define INTERRUPT_TC_MATCH_IR 0x01
+#define INTERRUPT_TC_MATCH_RESET 0x02
+#define INTERRUPT_TC_MATCH_STOP 0x04
+
+#define INTERRUPT_M0 0
+#define INTERRUPT_M1 1
+#define INTERRUPT_M2 2
+#define INTERRUPT_M3 3
+
+#define INTERRUPT_TC_CAPT_R 0x01
+#define INTERRUPT_TC_CAPT_F 0x02
+#define INTERRUPT_TC_CAPT_I 0x04
+
+#define INTERRUPT_C0 0
+#define INTERRUPT_C1 1
+#define INTERRUPT_C2 2
+#define INTERRUPT_C3 3
+
+#define INTERRUPT_MATCH0 0x01
+#define INTERRUPT_MATCH1 0x02
+#define INTERRUPT_MATCH2 0x04
+#define INTERRUPT_MATCH3 0x08
+#define INTERRUPT_CAP0 0x10
+#define INTERRUPT_CAP1 0x20
+#define INTERRUPT_CAP2 0x40
+#define INTERRUPT_CAP3 0x80
+
+#define INTERRUPT_SET 0x00
+#define INTERRUPT_USED 0x01
+#define INTERRUPT_PRIORITY_USED 0x02
+#define INTERRUPT_CALLBACK_CHANGED 0x03
+#define INTERRUPT_SRC_NOT_USED 0x04
+
+/* type definitions */
+
+typedef struct s_interrupt {
+ void (*default_soft_callback)(void);
+ void (*fiq_callback)(void);
+} t_interrupt;
+
/* function prototypes */
+void interrupt_init(void);
+void interrupt_set_default_callback(u32 callback_addr);
+void interrupt_set_soft_callback(void (*callback)(void));
+void interrupt_set_fiq_callback(void (*callback)(void));
+void interrupt_soft_clear(u8 src_number);
+void interrupt_clear(u8 src_number);
+void interrupt_soft_enable(u8 src_number);
+int interrupt_enable(u8 src_number,u8 mode,u8 prio,u32 callback_addr);
+int interrupt_change_callback(u8 src_number,u32 callback_addr);
+
+void interrupt_ext_ir_config(u8 eint,u8 wakeup,u8 mode,u8 polarity);
+void interrupt_ext_ir_set(u8 eint);
+void interrupt_ack(void);
+
+void interrupt_tc_config(u8 tcnum,u8 mode,u8 cap,u32 psc);
+void interrupt_tc_match_config(u8 tcnum,u8 mnum,u32 val,u8 mode);
+void interrupt_tc_capt_config(u8 tcnum,u8 cnum,u8 mode);
+void interrupt_tc_ir_set(u8 tcnum,u8 tcmc);
+
+void interrupt_pwm_ir_set(u8 pwm_channel);
+
void interrupt_handler_reset(void);
void interrupt_handler_undef_instruction(void);
void interrupt_handler_soft_ir(void);
void interrupt_handler_prefetch_abort(void);
void interrupt_handler_data_abort(void);
-void interrupt_handler_irq(void);
void interrupt_handler_fiq(void);
+#endif