c1a4f0461cbdf259935cee6c6efb53ef2f1d2af4
[my-code/arm.git] / betty / interrupts.h
1 /*
2  * interrupts.h - arm exception handling header file
3  *
4  * author: hackbard@hackdaworld.org
5  *
6  */
7
8 #ifndef INTERRUPTS_H
9 #define INTERRUPTS_H
10
11 #include "lpc2xxx.h"
12 #include "types.h"
13
14 /* defines */
15
16 #define INTERRUPT_MAX_VIC               16
17
18 #define INTERRUPT_WATCHDOG              0
19 #define INTERRUPT_DBG_COMM_RX           2
20 #define INTERRUPT_DBG_COMM_TX           3
21 #define INTERRUPT_TIMER0                4
22 #define INTERRUPT_TIMER1                5
23 #define INTERRUPT_UART0                 6
24 #define INTERRUPT_UART1                 7
25 #define INTERRUPT_PWM                   8
26 #define INTERRUPT_I2C                   9
27 #define INTERRUPT_SPI0                  10
28 #define INTERRUPT_SPI1                  11
29 #define INTERRUPT_PLL                   12
30 #define INTERRUPT_RTC                   13
31 #define INTERRUPT_EINT0                 14
32 #define INTERRUPT_EINT1                 15
33 #define INTERRUPT_EINT2                 16
34 #define INTERRUPT_EINT3                 17
35 #define INTERRUPT_ADC                   18
36
37 #define INTERRUPT_IRQ                   0
38 #define INTERRUPT_VIRQ                  1
39 #define INTERRUPT_FIQ                   2
40
41 #define INTERRUPT_EXT_MODE_EDGE         0
42 #define INTERRUPT_EXT_MODE_LEVEL        1
43 #define INTERRUPT_EXT_POLAR_LOW         0
44 #define INTERRUPT_EXT_POLAR_HIGH        1
45
46 #define INTERRUPT_SET                   0x00
47 #define INTERRUPT_USED                  0x01
48 #define INTERRUPT_PRIORITY_USED         0x02
49
50 /* type definitions */
51
52 typedef struct s_interrupt {
53         void (*default_soft_callback)(void);
54 } t_interrupt;
55
56 /* function prototypes */
57
58 void interrupt_init(void);
59 void interrupt_set_default_callback(u32 callback_addr);
60 void interrupt_set_soft_callback(void (*callback)(void));
61 void interrupt_soft_clear(u8 src_number);
62 void interrupt_clear(u8 src_number);
63 void interrupt_soft_enable(u8 src_number);
64 int interrupt_enable(u8 src_number,u8 mode,u8 priority,u32 callback_addr);
65
66 void interrupt_handler_reset(void);
67 void interrupt_handler_undef_instruction(void);
68 void interrupt_handler_soft_ir(void);
69 void interrupt_handler_prefetch_abort(void);
70 void interrupt_handler_data_abort(void);
71 void interrupt_handler_fiq(void);
72
73 #endif