forked from urjaman/fernly
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathirq.h
84 lines (77 loc) · 1.82 KB
/
irq.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#ifndef __IRQ_H__
#define __IRQ_H__
enum irq_number {
irq_unk_0,
irq_unk_1,
irq_unk_2,
irq_unk_3,
irq_unk_4,
irq_unk_5,
irq_unk_6,
irq_unk_7,
irq_unk_8,
irq_unk_9,
irq_unk_10,
irq_unk_11,
irq_unk_12,
irq_unk_13,
irq_unk_14,
irq_uart1,
irq_unk_16,
irq_uart2,
irq_unk_18,
irq_unk_19,
irq_unk_20,
irq_unk_21,
irq_unk_22,
irq_unk_23,
irq_unk_24,
irq_unk_25,
irq_unk_26,
irq_unk_27,
irq_unk_28,
irq_unk_29,
irq_unk_30,
irq_unk_31,
irq_unk_32,
irq_unk_33,
irq_unk_34,
irq_unk_35,
irq_unk_36,
irq_unk_37,
irq_unk_38,
irq_unk_39,
irq_unk_40,
irq_unk_41,
irq_unk_42,
irq_unk_43,
irq_unk_44,
irq_unk_45,
irq_unk_46,
irq_unk_47,
__irq_max__,
};
int irq_init(void);
int fiq_init(void);
int irq_enable(enum irq_number irq_num);
int irq_disable(enum irq_number irq_num);
void irq_acknowledge(enum irq_number irq_num);
void irq_mask_acknowledge(enum irq_number irq_num);
void irq_dispatch(void);
void irq_stimulate(enum irq_number irq_num);
void irq_stimulate_reset(enum irq_number irq_num);
void irq_register_handler(enum irq_number irq_num,
void (*handler)(enum irq_number irq_num, void *opaque),
void *opaque);
#define IRQ_BASE (0xa0060000)
#define IRQ_MASK_OFF 0x00 /* IRQ mask (enabled/disabled) */
#define IRQ_SENSE_OFF 0x60 /* IRQ sensitivity (edge vs level) */
#define IRQ_STIM_OFF 0xc0 /* IRQ "stimulate" (for debug) */
#define IRQ_STATUS_OFF 0x100 /* IRQ status (IRQ firing or not) */
#define FIQ_STATUS_OFF 0x140 /* FIQ status (FIQ firing or not) */
#define IRQ_ACK_OFF 0x160 /* IRQ acknowledge (write a 1 to acknowledge) */
#define FIQ_SOURCE_OFF 0x180 /* IRQ number used as FIQ */
#define IRQ_SET 0x20 /* Offset from OFF for "SET" behaviour */
#define IRQ_CLR 0x40 /* Offset from OFF for "CLR" behaviour */
#define IRQ_NUM_ADJ(x) (((x) > 32) ? 4 : 0) /* Offset for IRQs > 32 */
#endif /* __IRQ_H__ */