no-OS
no_os_irq.h
Go to the documentation of this file.
1 /***************************************************************************/
40 #ifndef _NO_OS_IRQ_H_
41 #define _NO_OS_IRQ_H_
42 
43 /******************************************************************************/
44 /***************************** Include Files **********************************/
45 /******************************************************************************/
46 
47 #include <stdint.h>
48 
49 /******************************************************************************/
50 /*************************** Types Declarations *******************************/
51 /******************************************************************************/
52 
65 };
66 
80 };
81 
88 };
89 
100 };
101 
107 struct no_os_irq_platform_ops ;
108 
115  uint32_t irq_ctrl_id;
122  void *extra;
123 };
124 
131  uint32_t irq_ctrl_id;
134  /* Reference counter */
135  uint32_t ref;
140  void *extra;
141 };
142 
150  void (*callback)(void *context);
152  void *ctx;
158  void *handle;
159 };
160 
168  int32_t (*init)(struct no_os_irq_ctrl_desc **desc,
169  const struct no_os_irq_init_param *param);
171  int32_t (*register_callback)(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id,
172  struct no_os_callback_desc *callback);
174  int32_t (*unregister_callback)(struct no_os_irq_ctrl_desc *desc,
175  uint32_t irq_id,
176  struct no_os_callback_desc *callback);
178  int32_t (*global_enable)(struct no_os_irq_ctrl_desc *desc);
180  int32_t (*global_disable)(struct no_os_irq_ctrl_desc *desc);
182  int32_t (*trigger_level_set)(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id,
183  enum no_os_irq_trig_level trig);
185  int32_t (*enable)(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id);
187  int32_t (*disable)(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id);
189  int32_t (*set_priority)(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id,
190  uint32_t priority_level);
192  int32_t (*remove)(struct no_os_irq_ctrl_desc *desc);
194  int32_t(*clear_pending)(struct no_os_irq_ctrl_desc* desc, uint32_t irq_id);
195 };
196 
197 /******************************************************************************/
198 /************************ Functions Declarations ******************************/
199 /******************************************************************************/
200 
201 /* Initialize a interrupt controller peripheral. */
202 int32_t no_os_irq_ctrl_init(struct no_os_irq_ctrl_desc **desc,
203  const struct no_os_irq_init_param *param);
204 
205 /* Free the resources allocated by no_os_irq_ctrl_init(). */
206 int32_t no_os_irq_ctrl_remove(struct no_os_irq_ctrl_desc *desc);
207 
208 /* Register a callback to handle the irq events */
210  uint32_t irq_id,
211  struct no_os_callback_desc *callback_desc);
212 
213 /* Unregisters a generic IRQ handling function */
215  uint32_t irq_id,
216  struct no_os_callback_desc *callback_desc);
217 
218 /* Global interrupt enable */
219 int32_t no_os_irq_global_enable(struct no_os_irq_ctrl_desc *desc);
220 
221 /* Global interrupt disable */
222 int32_t no_os_irq_global_disable(struct no_os_irq_ctrl_desc *desc);
223 
224 /* Set interrupt trigger level. */
226  uint32_t irq_id,
227  enum no_os_irq_trig_level trig);
228 
229 /* Enable specific interrupt */
230 int32_t no_os_irq_enable(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id);
231 
232 /* Disable specific interrupt */
233 int32_t no_os_irq_disable(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id);
234 
236 int32_t no_os_irq_set_priority(struct no_os_irq_ctrl_desc *desc,
237  uint32_t irq_id,
238  uint32_t priority_level);
239 
240 /* Clear the pending interrupts */
241 int32_t no_os_irq_clear_pending(struct no_os_irq_ctrl_desc* desc,
242  uint32_t irq_id);
243 #endif // _NO_OS_IRQ_H_
no_os_irq_platform_ops::clear_pending
int32_t(* clear_pending)(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id)
Definition: no_os_irq.h:194
NO_OS_EVT_UART_RX_COMPLETE
@ NO_OS_EVT_UART_RX_COMPLETE
Definition: no_os_irq.h:70
no_os_irq_platform_ops::set_priority
int32_t(* set_priority)(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id, uint32_t priority_level)
Definition: no_os_irq.h:189
NO_OS_IRQ_WRITE_DONE
@ NO_OS_IRQ_WRITE_DONE
Definition: no_os_irq.h:60
NO_OS_IRQ_LEVEL_HIGH
@ NO_OS_IRQ_LEVEL_HIGH
Definition: no_os_irq.h:84
no_os_callback_desc
Structure describing a callback to be registered.
Definition: no_os_irq.h:148
no_os_irq_register_callback
int32_t 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:98
NO_OS_IRQ_LEVEL_LOW
@ NO_OS_IRQ_LEVEL_LOW
Definition: no_os_irq.h:83
NO_OS_TIM_DMA_IRQ
@ NO_OS_TIM_DMA_IRQ
Definition: no_os_irq.h:96
NO_OS_EVT_TIM_PWM_PULSE_FINISHED
@ NO_OS_EVT_TIM_PWM_PULSE_FINISHED
Definition: no_os_irq.h:75
no_os_irq_peripheral
no_os_irq_peripheral
Definition: no_os_irq.h:90
NO_OS_EVT_USB
@ NO_OS_EVT_USB
Definition: no_os_irq.h:79
no_os_irq_platform_ops::init
int32_t(* init)(struct no_os_irq_ctrl_desc **desc, const struct no_os_irq_init_param *param)
Definition: no_os_irq.h:168
NO_OS_IRQ_EDGE_FALLING
@ NO_OS_IRQ_EDGE_FALLING
Definition: no_os_irq.h:85
NO_OS_TDM_DMA_IRQ
@ NO_OS_TDM_DMA_IRQ
Definition: no_os_irq.h:95
NO_OS_RTC_IRQ
@ NO_OS_RTC_IRQ
Definition: no_os_irq.h:93
no_os_irq_init_param::extra
void * extra
Definition: no_os_irq.h:122
no_os_callback_desc::peripheral
enum no_os_irq_peripheral peripheral
Definition: no_os_irq.h:156
NO_OS_EVT_UART_TX_COMPLETE
@ NO_OS_EVT_UART_TX_COMPLETE
Definition: no_os_irq.h:69
no_os_irq_set_priority
int32_t 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:222
no_os_irq_ctrl_desc::ref
uint32_t ref
Definition: no_os_irq.h:135
no_os_irq_global_enable
int32_t no_os_irq_global_enable(struct no_os_irq_ctrl_desc *desc)
Enable global interrupts.
Definition: no_os_irq.c:135
NO_OS_EVT_TIM_ELAPSED
@ NO_OS_EVT_TIM_ELAPSED
Definition: no_os_irq.h:74
no_os_irq_global_disable
int32_t no_os_irq_global_disable(struct no_os_irq_ctrl_desc *desc)
Disable global interrupts.
Definition: no_os_irq.c:150
NO_OS_USB_IRQ
@ NO_OS_USB_IRQ
Definition: no_os_irq.h:99
no_os_callback_desc::ctx
void * ctx
Definition: no_os_irq.h:152
NO_OS_SPI_DMA_IRQ
@ NO_OS_SPI_DMA_IRQ
Definition: no_os_irq.h:97
no_os_irq_uart_event_e
no_os_irq_uart_event_e
Possible events for uart interrupt.
Definition: no_os_irq.h:58
NO_OS_IRQ_READ_DONE
@ NO_OS_IRQ_READ_DONE
Definition: no_os_irq.h:62
no_os_irq_platform_ops::global_disable
int32_t(* global_disable)(struct no_os_irq_ctrl_desc *desc)
Definition: no_os_irq.h:180
no_os_irq_unregister_callback
int32_t 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:118
no_os_irq_trig_level
no_os_irq_trig_level
Definition: no_os_irq.h:82
no_os_irq_init_param::irq_ctrl_id
uint32_t irq_ctrl_id
Definition: no_os_irq.h:115
no_os_irq_ctrl_desc::platform_ops
const struct no_os_irq_platform_ops * platform_ops
Definition: no_os_irq.h:133
NO_OS_TIM_IRQ
@ NO_OS_TIM_IRQ
Definition: no_os_irq.h:94
no_os_irq_platform_ops::enable
int32_t(* enable)(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id)
Definition: no_os_irq.h:185
no_os_irq_init_param::platform_ops
const struct no_os_irq_platform_ops * platform_ops
Definition: no_os_irq.h:117
NO_OS_EVT_RTC
@ NO_OS_EVT_RTC
Definition: no_os_irq.h:72
NO_OS_EVT_XINT
@ NO_OS_EVT_XINT
Definition: no_os_irq.h:73
no_os_irq_ctrl_init
int32_t 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:51
no_os_callback_desc::handle
void * handle
Definition: no_os_irq.h:158
no_os_callback_desc::callback
void(* callback)(void *context)
Definition: no_os_irq.h:150
NO_OS_EVT_DMA_TX_COMPLETE
@ NO_OS_EVT_DMA_TX_COMPLETE
Definition: no_os_irq.h:78
irq_id
irq_id
Interrupts IDs supported by the irq driver.
Definition: aducm3029_irq.h:68
no_os_irq_clear_pending
int32_t 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:241
no_os_callback_desc::event
enum no_os_irq_event event
Definition: no_os_irq.h:154
no_os_irq_platform_ops::remove
int32_t(* remove)(struct no_os_irq_ctrl_desc *desc)
Definition: no_os_irq.h:192
NO_OS_EVT_DMA_RX_COMPLETE
@ NO_OS_EVT_DMA_RX_COMPLETE
Definition: no_os_irq.h:76
no_os_irq_platform_ops::global_enable
int32_t(* global_enable)(struct no_os_irq_ctrl_desc *desc)
Definition: no_os_irq.h:178
no_os_irq_ctrl_desc::irq_ctrl_id
uint32_t irq_ctrl_id
Definition: no_os_irq.h:131
NO_OS_EVT_GPIO
@ NO_OS_EVT_GPIO
Definition: no_os_irq.h:68
no_os_irq_init_param
Structure holding the initial parameters for Interrupt Request.
Definition: no_os_irq.h:113
no_os_irq_platform_ops::unregister_callback
int32_t(* unregister_callback)(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id, struct no_os_callback_desc *callback)
Definition: no_os_irq.h:174
NO_OS_IRQ_EDGE_RISING
@ NO_OS_IRQ_EDGE_RISING
Definition: no_os_irq.h:86
NO_OS_UART_IRQ
@ NO_OS_UART_IRQ
Definition: no_os_irq.h:92
no_os_irq_event
no_os_irq_event
Definition: no_os_irq.h:67
no_os_irq_ctrl_remove
int32_t 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:77
no_os_irq_enable
int32_t no_os_irq_enable(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id)
Enable specific interrupt.
Definition: no_os_irq.c:187
NO_OS_EVT_UART_ERROR
@ NO_OS_EVT_UART_ERROR
Definition: no_os_irq.h:71
no_os_irq_platform_ops
Structure holding IRQ function pointers that point to the platform specific function.
Definition: no_os_irq.h:166
NO_OS_GPIO_IRQ
@ NO_OS_GPIO_IRQ
Definition: no_os_irq.h:91
NO_OS_EVT_DMA_RX_HALF_COMPLETE
@ NO_OS_EVT_DMA_RX_HALF_COMPLETE
Definition: no_os_irq.h:77
NO_OS_IRQ_EDGE_BOTH
@ NO_OS_IRQ_EDGE_BOTH
Definition: no_os_irq.h:87
no_os_irq_platform_ops::disable
int32_t(* disable)(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id)
Definition: no_os_irq.h:187
no_os_irq_platform_ops::trigger_level_set
int32_t(* 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:182
no_os_irq_trigger_level_set
int32_t 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:168
no_os_irq_disable
int32_t no_os_irq_disable(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id)
Disable specific interrupt.
Definition: no_os_irq.c:204
no_os_irq_ctrl_desc
Definition: no_os_irq.h:129
no_os_irq_platform_ops::register_callback
int32_t(* register_callback)(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id, struct no_os_callback_desc *callback)
Definition: no_os_irq.h:171
NO_OS_IRQ_ERROR
@ NO_OS_IRQ_ERROR
Definition: no_os_irq.h:64
no_os_irq_ctrl_desc::extra
void * extra
Definition: no_os_irq.h:140
NO_OS_DMA_IRQ
@ NO_OS_DMA_IRQ
Definition: no_os_irq.h:98