prepare for interrupt support in the next few days
[my-code/arm.git] / betty / interrupts.h
index 9c1b8aa..20bb333 100644 (file)
@@ -5,16 +5,42 @@
  *
  */
 
  *
  */
 
+#ifndef INTERRUPTS_H
+#define INTERRUPTS_H
+
 #include "lpc2xxx.h"
 #include "types.h"
 
 #include "lpc2xxx.h"
 #include "types.h"
 
+/* defines */
+
+#define INTERRUPT_MAX_VIC              16
+
+#define INTERRUPT_EXT_MODE_EDGE                0
+#define INTERRUPT_EXT_MODE_LEVEL       1
+#define INTERRUPT_EXT_POLAR_LOW                0
+#define INTERRUPT_EXT_POLAR_HIGH       1
+
+/* type definitions */
+
+typedef struct s_interrupt {
+       void *default_callback;
+       u8 default_mode;
+       void *callback[INTERRUPT_MAX_VIC];
+       u8 mode[INTERRUPT_MAX_VIC];
+} t_interrupt;
+
 /* function prototypes */
 
 /* function prototypes */
 
+void interrupt_set_default_callback(t_interrupt *ir,void *callback);
+
+void interrupt_ext_ir_conf(u8 pin,u8 mode,u8 polar,
+                           void (*ext_ir_callback)(t_interrupt *ir));
+
 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_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);
 
 void interrupt_handler_fiq(void);
 
+#endif