84 lines
1.8 KiB
C
84 lines
1.8 KiB
C
#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__ */
|