12 #ifndef __METAL_IRQ_CONTROLLER__H__
13 #define __METAL_IRQ_CONTROLLER__H__
23 #include <metal/irq.h>
24 #include <metal/list.h>
28 #define METAL_IRQ_ANY (-1)
33 #define METAL_IRQ_DISABLE 0U
34 #define METAL_IRQ_ENABLE 1U
45 int irq,
unsigned int enable);
80 #define METAL_IRQ_CONTROLLER_DECLARE(_irq_controller, \
81 _irq_base, _irq_num, \
86 struct metal_irq_controller _irq_controller = { \
87 .irq_base = _irq_base, \
88 .irq_num = _irq_num, \
90 .irq_set_enable = _irq_set_enable, \
91 .irq_register = _irq_register, \
121 if (irq_data && irq_data->
hd) {
122 return irq_data->
hd(irq, irq_data->
arg);
void(* metal_irq_set_enable)(struct metal_irq_controller *irq_cntr, int irq, unsigned int enable)
type of interrupt controller to set irq enable
Definition: irq_controller.h:44
int(* metal_cntr_irq_register)(struct metal_irq_controller *irq_cntr, int irq, metal_irq_handler hd, void *arg)
type of controller specific registering interrupt function
Definition: irq_controller.h:55
#define METAL_IRQ_NOT_HANDLED
IRQ handled status.
Definition: irq.h:27
int(* metal_irq_handler)(int irq, void *arg)
type of interrupt handler
Definition: irq.h:36
static int metal_irq_handle(struct metal_irq *irq_data, int irq)
metal_irq_handle
Definition: irq_controller.h:119
int metal_irq_register_controller(struct metal_irq_controller *cntr)
metal_irq_register_controller
Definition: irq.c:50