blob: af5faba1f52daa9f3e6a596e2700514546abd35b [file] [log] [blame]
Wedson Almeida Filho987c0ff2018-06-20 16:34:38 +01001#ifndef _IRQ_H
2#define _IRQ_H
3
4#include <stdbool.h>
5#include <stddef.h>
6#include <stdint.h>
7
8struct irq_handle;
9
10enum irq_trigger {
11 irq_trigger_level,
12 irq_trigger_edge,
13};
14
15enum irq_polarity {
16 irq_polarity_active_high,
17 irq_polarity_active_low,
18};
19
20/* TODO: Add target CPUs here. */
21void irq_config(uint32_t num, enum irq_trigger t, enum irq_polarity p,
22 bool (*cb)(void *, struct irq_handle *), void *context);
23void irq_enable(uint32_t num);
24
25void irq_dismiss(struct irq_handle *h);
26
27/* TODO: These don't really belong here, do they?. */
28bool irq_handle(uint32_t num, struct irq_handle *h);
29void irq_init(void);
30void irq_init_percpu(void);
31
32#endif