libmetal
|
Macros | |
#define | METAL_IRQ_NOT_HANDLED 0 |
#define | METAL_IRQ_HANDLED 1 |
Typedefs | |
typedef int(* | metal_irq_handler) (int irq, void *priv) |
type of interrupt handler More... | |
Functions | |
int | metal_irq_register (int irq, metal_irq_handler irq_handler, struct metal_device *dev, void *drv_id) |
Register interrupt handler for driver ID/device. More... | |
int | metal_irq_unregister (int irq, metal_irq_handler irq_handler, struct metal_device *dev, void *drv_id) |
Unregister interrupt handler for driver ID and/or device. More... | |
unsigned int | metal_irq_save_disable (void) |
disable interrupts More... | |
void | metal_irq_restore_enable (unsigned int flags) |
restore interrupts to their previous state More... | |
void | metal_irq_enable (unsigned int vector) |
metal_irq_enable More... | |
void | metal_irq_disable (unsigned int vector) |
metal_irq_disable More... | |
#define METAL_IRQ_HANDLED 1 |
#define METAL_IRQ_NOT_HANDLED 0 |
IRQ handled status
typedef int(* metal_irq_handler) (int irq, void *priv) |
type of interrupt handler
[in] | irq | interrupt id |
[in] | priv | private data |
void metal_irq_disable | ( | unsigned int | vector | ) |
metal_irq_disable
Disables the given interrupt
vector | - interrupt vector number |
void metal_irq_enable | ( | unsigned int | vector | ) |
metal_irq_enable
Enables the given interrupt
vector | - interrupt vector number |
int metal_irq_register | ( | int | irq, |
metal_irq_handler | irq_handler, | ||
struct metal_device * | dev, | ||
void * | drv_id | ||
) |
Register interrupt handler for driver ID/device.
[in] | irq | interrupt id |
[in] | irq_handler | interrupt handler |
[in] | dev | metal device this irq belongs to (can be NULL). |
[in] | drv_id | driver id is a unique interrupt handler identifier. It can also be used for driver data. |
void metal_irq_restore_enable | ( | unsigned int | flags | ) |
restore interrupts to their previous state
[in] | flags | previous interrupts state |
unsigned int metal_irq_save_disable | ( | void | ) |
disable interrupts
int metal_irq_unregister | ( | int | irq, |
metal_irq_handler | irq_handler, | ||
struct metal_device * | dev, | ||
void * | drv_id | ||
) |
Unregister interrupt handler for driver ID and/or device.
If interrupt handler (hd), driver ID (drv_id) and device (dev) are NULL, unregister all handlers for this interrupt.
If interrupt handler (hd), device (dev) or driver ID (drv_id), are not NULL, unregister handlers matching non NULL criterias. e.g: when call is made with drv_id and dev non NULL, all handlers matching both are unregistered.
If interrupt is not found, or other criterias not matching, return -ENOENT
[in] | irq | interrupt id |
[in] | irq_handler | interrupt handler |
[in] | dev | metal device this irq belongs to |
[in] | drv_id | driver id. It can be used for driver data. |