no-OS
All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
no_os_irq.h
Go to the documentation of this file.
1/***************************************************************************/
33
34#ifndef _NO_OS_IRQ_H_
35#define _NO_OS_IRQ_H_
36
37#include <stdint.h>
38
52
68
76
89
96
112
119 uint32_t irq_ctrl_id;
122 /* Reference counter */
123 uint32_t ref;
128 void *extra;
129};
130
148
156 int (*init)(struct no_os_irq_ctrl_desc **desc,
157 const struct no_os_irq_init_param *param);
159 int (*register_callback)(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id,
160 struct no_os_callback_desc *callback);
163 uint32_t irq_id,
164 struct no_os_callback_desc *callback);
166 int (*global_enable)(struct no_os_irq_ctrl_desc *desc);
170 int (*trigger_level_set)(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id,
171 enum no_os_irq_trig_level trig);
173 int (*enable)(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id);
175 int (*disable)(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id);
177 int (*set_priority)(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id,
178 uint32_t priority_level);
180 int (*get_priority)(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id,
181 uint32_t *priority_level);
183 int (*remove)(struct no_os_irq_ctrl_desc *desc);
185 int(*clear_pending)(struct no_os_irq_ctrl_desc* desc, uint32_t irq_id);
186};
187
188/* Initialize a interrupt controller peripheral. */
190 const struct no_os_irq_init_param *param);
191
192/* Free the resources allocated by no_os_irq_ctrl_init(). */
194
195/* Register a callback to handle the irq events */
197 uint32_t irq_id,
198 struct no_os_callback_desc *callback_desc);
199
200/* Unregisters a generic IRQ handling function */
202 uint32_t irq_id,
203 struct no_os_callback_desc *callback_desc);
204
205/* Global interrupt enable */
207
208/* Global interrupt disable */
210
211/* Set interrupt trigger level. */
213 uint32_t irq_id,
214 enum no_os_irq_trig_level trig);
215
216/* Enable specific interrupt */
217int no_os_irq_enable(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id);
218
219/* Disable specific interrupt */
220int no_os_irq_disable(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id);
221
224 uint32_t irq_id,
225 uint32_t priority_level);
226
229 uint32_t irq_id,
230 uint32_t *priority_level);
231
232/* Clear the pending interrupts */
234 uint32_t irq_id);
235#endif // _NO_OS_IRQ_H_
irq_id
Interrupts IDs supported by the irq driver.
Definition aducm3029_irq.h:50
int no_os_irq_set_priority(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id, uint32_t priority_level)
Set the priority for an interrupt.
Definition no_os_irq.c:216
int no_os_irq_global_enable(struct no_os_irq_ctrl_desc *desc)
Enable global interrupts.
Definition no_os_irq.c:129
int no_os_irq_get_priority(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id, uint32_t *priority_level)
Get the priority for an interrupt.
Definition no_os_irq.c:236
int no_os_irq_clear_pending(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id)
Clear the pending interrupt.
Definition no_os_irq.c:255
int no_os_irq_global_disable(struct no_os_irq_ctrl_desc *desc)
Disable global interrupts.
Definition no_os_irq.c:144
int no_os_irq_trigger_level_set(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id, enum no_os_irq_trig_level trig)
Set interrupt trigger level.
Definition no_os_irq.c:162
int no_os_irq_unregister_callback(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id, struct no_os_callback_desc *callback_desc)
Unregisters a generic IRQ handling function.
Definition no_os_irq.c:112
int no_os_irq_register_callback(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id, struct no_os_callback_desc *callback_desc)
Register a callback to handle the irq events.
Definition no_os_irq.c:92
no_os_irq_trig_level
Definition no_os_irq.h:69
@ NO_OS_IRQ_EDGE_BOTH
Definition no_os_irq.h:74
@ NO_OS_IRQ_EDGE_FALLING
Definition no_os_irq.h:72
@ NO_OS_IRQ_LEVEL_LOW
Definition no_os_irq.h:70
@ NO_OS_IRQ_LEVEL_HIGH
Definition no_os_irq.h:71
@ NO_OS_IRQ_EDGE_RISING
Definition no_os_irq.h:73
no_os_irq_event
Definition no_os_irq.h:53
@ NO_OS_EVT_XINT
Definition no_os_irq.h:59
@ NO_OS_EVT_UART_RX_COMPLETE
Definition no_os_irq.h:56
@ NO_OS_EVT_DMA_RX_HALF_COMPLETE
Definition no_os_irq.h:64
@ NO_OS_EVT_USB
Definition no_os_irq.h:66
@ NO_OS_EVT_RTC
Definition no_os_irq.h:58
@ NO_OS_EVT_LPTIM_PWM_PULSE_FINISHED
Definition no_os_irq.h:62
@ NO_OS_EVT_GPIO
Definition no_os_irq.h:54
@ NO_OS_EVT_UART_ERROR
Definition no_os_irq.h:57
@ NO_OS_EVT_DMA_TX_COMPLETE
Definition no_os_irq.h:65
@ NO_OS_EVT_UART_TX_COMPLETE
Definition no_os_irq.h:55
@ NO_OS_EVT_DMA_RX_COMPLETE
Definition no_os_irq.h:63
@ NO_OS_EVT_TIM_PWM_PULSE_FINISHED
Definition no_os_irq.h:61
@ NO_OS_EVT_TIM_ELAPSED
Definition no_os_irq.h:60
no_os_irq_peripheral
Definition no_os_irq.h:77
@ NO_OS_GPIO_IRQ
Definition no_os_irq.h:78
@ NO_OS_TIM_DMA_IRQ
Definition no_os_irq.h:84
@ NO_OS_SPI_DMA_IRQ
Definition no_os_irq.h:85
@ NO_OS_UART_IRQ
Definition no_os_irq.h:79
@ NO_OS_TDM_DMA_IRQ
Definition no_os_irq.h:83
@ NO_OS_USB_IRQ
Definition no_os_irq.h:87
@ NO_OS_DMA_IRQ
Definition no_os_irq.h:86
@ NO_OS_TIM_IRQ
Definition no_os_irq.h:81
@ NO_OS_RTC_IRQ
Definition no_os_irq.h:80
@ NO_OS_LPTIM_IRQ
Definition no_os_irq.h:82
int no_os_irq_disable(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id)
Disable specific interrupt.
Definition no_os_irq.c:198
int no_os_irq_ctrl_remove(struct no_os_irq_ctrl_desc *desc)
Free the resources allocated by no_os_irq_ctrl_init().
Definition no_os_irq.c:71
int no_os_irq_ctrl_init(struct no_os_irq_ctrl_desc **desc, const struct no_os_irq_init_param *param)
Initialize the IRQ interrupts.
Definition no_os_irq.c:45
no_os_irq_uart_event_e
Possible events for uart interrupt.
Definition no_os_irq.h:44
@ NO_OS_IRQ_WRITE_DONE
Definition no_os_irq.h:46
@ NO_OS_IRQ_READ_DONE
Definition no_os_irq.h:48
@ NO_OS_IRQ_ERROR
Definition no_os_irq.h:50
int no_os_irq_enable(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id)
Enable specific interrupt.
Definition no_os_irq.c:181
Structure describing a callback to be registered.
Definition no_os_irq.h:136
void * ctx
Definition no_os_irq.h:140
enum no_os_irq_peripheral peripheral
Definition no_os_irq.h:144
enum no_os_irq_event event
Definition no_os_irq.h:142
void * handle
Definition no_os_irq.h:146
void(* callback)(void *context)
Definition no_os_irq.h:138
Definition no_os_irq.h:117
const struct no_os_irq_platform_ops * platform_ops
Definition no_os_irq.h:121
uint32_t ref
Definition no_os_irq.h:123
uint32_t irq_ctrl_id
Definition no_os_irq.h:119
void * extra
Definition no_os_irq.h:128
Structure holding the initial parameters for Interrupt Request.
Definition no_os_irq.h:101
void * extra
Definition no_os_irq.h:110
const struct no_os_irq_platform_ops * platform_ops
Definition no_os_irq.h:105
uint32_t irq_ctrl_id
Definition no_os_irq.h:103
Structure holding IRQ function pointers that point to the platform specific function.
Definition no_os_irq.h:154
int(* clear_pending)(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id)
Definition no_os_irq.h:185
int(* get_priority)(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id, uint32_t *priority_level)
Definition no_os_irq.h:180
int(* unregister_callback)(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id, struct no_os_callback_desc *callback)
Definition no_os_irq.h:162
int(* global_disable)(struct no_os_irq_ctrl_desc *desc)
Definition no_os_irq.h:168
int(* enable)(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id)
Definition no_os_irq.h:173
int(* register_callback)(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id, struct no_os_callback_desc *callback)
Definition no_os_irq.h:159
int(* set_priority)(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id, uint32_t priority_level)
Definition no_os_irq.h:177
int(* trigger_level_set)(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id, enum no_os_irq_trig_level trig)
Definition no_os_irq.h:170
int(* init)(struct no_os_irq_ctrl_desc **desc, const struct no_os_irq_init_param *param)
Definition no_os_irq.h:156
int(* global_enable)(struct no_os_irq_ctrl_desc *desc)
Definition no_os_irq.h:166
int(* remove)(struct no_os_irq_ctrl_desc *desc)
Definition no_os_irq.h:183
int(* disable)(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id)
Definition no_os_irq.h:175