callback addr as u32 not a void ptr
[my-code/arm.git] / betty / interrupts.h
index 9c1b8aa..c1a4f04 100644 (file)
@@ -5,16 +5,69 @@
  *
  */
 
+#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_IRQ                  0
+#define INTERRUPT_VIRQ                 1
+#define INTERRUPT_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_SET                  0x00
+#define INTERRUPT_USED                 0x01
+#define INTERRUPT_PRIORITY_USED                0x02
+
+/* type definitions */
+
+typedef struct s_interrupt {
+       void (*default_soft_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_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 priority,u32 callback_addr);
+
 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