2 * interrupts.h - arm exception handling header file
4 * author: hackbard@hackdaworld.org
16 #define INTERRUPT_MAX_VIC 16
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
37 #define INTERRUPT_MODE_IRQ 0
38 #define INTERRUPT_MODE_VIRQ 1
39 #define INTERRUPT_MODE_FIQ 2
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 #define INTERRUPT_EXT_NOWAKE 0
46 #define INTERRUPT_EXT_WAKEUP 1
48 #define INTERRUPT_EXT0 0
49 #define INTERRUPT_EXT1 1
50 #define INTERRUPT_EXT2 2
51 #define INTERRUPT_EXT3 3
53 #define INTERRUPT_TC0 0
54 #define INTERRUPT_TC1 1
56 #define INTERRUPT_TC_MODE_T 0x00
57 #define INTERRUPT_TC_MODE_CR 0x01
58 #define INTERRUPT_TC_MODE_CF 0x02
59 #define INTERRUPT_TC_MODE_CB 0x03
61 #define INTERRUPT_TC_MATCH_IR 0x01
62 #define INTERRUPT_TC_MATCH_RESET 0x02
63 #define INTERRUPT_TC_MATCH_STOP 0x04
65 #define INTERRUPT_M0 0
66 #define INTERRUPT_M1 1
67 #define INTERRUPT_M2 2
68 #define INTERRUPT_M3 3
70 #define INTERRUPT_TC_CAPT_R 0x01
71 #define INTERRUPT_TC_CAPT_F 0x02
72 #define INTERRUPT_TC_CAPT_I 0x04
74 #define INTERRUPT_C0 0
75 #define INTERRUPT_C1 1
76 #define INTERRUPT_C2 2
77 #define INTERRUPT_C3 3
79 #define INTERRUPT_MATCH0 0x01
80 #define INTERRUPT_MATCH1 0x02
81 #define INTERRUPT_MATCH2 0x04
82 #define INTERRUPT_MATCH3 0x08
83 #define INTERRUPT_CAP0 0x10
84 #define INTERRUPT_CAP1 0x20
85 #define INTERRUPT_CAP2 0x40
86 #define INTERRUPT_CAP3 0x80
88 #define INTERRUPT_PWM0 0x01
89 #define INTERRUPT_PWM1 0x02
90 #define INTERRUPT_PWM2 0x04
91 #define INTERRUPT_PWM3 0x08
92 #define INTERRUPT_PWM4 0x10
93 #define INTERRUPT_PWM5 0x20
94 #define INTERRUPT_PWM6 0x40
96 #define INTERRUPT_SET 0x00
97 #define INTERRUPT_USED 0x01
98 #define INTERRUPT_PRIORITY_USED 0x02
99 #define INTERRUPT_CALLBACK_CHANGED 0x03
100 #define INTERRUPT_SRC_NOT_USED 0x04
102 /* type definitions */
104 typedef struct s_interrupt {
105 void (*default_soft_callback)(void);
106 void (*fiq_callback)(void);
109 /* function prototypes */
111 void interrupt_init(void);
112 void interrupt_set_default_callback(u32 callback_addr);
113 void interrupt_set_soft_callback(void (*callback)(void));
114 void interrupt_set_fiq_callback(void (*callback)(void));
115 void interrupt_soft_clear(u8 src_number);
116 void interrupt_clear(u8 src_number);
117 void interrupt_soft_enable(u8 src_number);
118 int interrupt_enable(u8 src_number,u8 mode,u8 prio,u32 callback_addr);
119 int interrupt_change_callback(u8 src_number,u32 callback_addr);
121 void interrupt_ext_ir_config(u8 eint,u8 wakeup,u8 mode,u8 polarity);
122 void interrupt_ext_ir_set(u8 eint);
123 void interrupt_ack(void);
125 void interrupt_tc_config(u8 tcnum,u8 mode,u8 cap,u32 psc);
126 void interrupt_tc_match_config(u8 tcnum,u8 mnum,u32 val,u8 mode);
127 void interrupt_tc_capt_config(u8 tcnum,u8 cnum,u8 mode);
128 void interrupt_tc_ir_set(u8 tcnum,u8 tcmc);
129 void interrupt_tc_enable(u8 tcnum);
131 void interrupt_pwm_ir_set(u8 pwm_channel);
133 void interrupt_handler_reset(void);
134 void interrupt_handler_undef_instruction(void);
135 void interrupt_handler_soft_ir(void);
136 void interrupt_handler_prefetch_abort(void);
137 void interrupt_handler_data_abort(void);
138 void interrupt_handler_fiq(void);