The latest development version of this page may be more current than this released 2.3-beta.1 version.

IRQ API Reference

IRQ

typedef wm_hal_sw_irq_handle wm_drv_sw_irq_handle

IRQ callback type.

typedef wm_hal_hw_irq_handle wm_drv_hw_irq_handle

IRQ callback type.

int wm_drv_irq_attach_hw_vector(wm_irq_no_t irq, wm_drv_hw_irq_handle handle)

Attach hw interrupt vector with callback and replace sw vector. For the registered functions, please add the ATTRIBUTE_ISR attribute and add csi_kernel_intrpt_enter at the beginning and csi_kernel_intrpt_exit at the end.

Note

If hw vector attached, sw vector will be invalidated

Parameters:
  • irq[in] irq number

  • handle[in] interrupt callback

Returns:

  • WM_ERR_SUCCESS: succeed

  • others: failed

int wm_drv_irq_detach_hw_vector(wm_irq_no_t irq)

Detach hw interrupt vector.

Parameters:

irq[in] irq number

Returns:

  • WM_ERR_SUCCESS: succeed

  • others: failed

int wm_drv_irq_attach_sw_vector(wm_irq_no_t irq, wm_drv_sw_irq_handle handle, void *arg)

Attach sw interrupt with callback.

Parameters:
  • irq[in] irq number

  • handle[in] interrupt callback

  • arg[in] user data

Returns:

  • WM_ERR_SUCCESS: succeed

  • others: failed

int wm_drv_irq_detach_sw_vector(wm_irq_no_t irq)

Detach sw interrupt vector.

Parameters:

irq[in] irq number

Returns:

  • WM_ERR_SUCCESS: succeed

  • others: failed

uint32_t wm_drv_irq_save(void)

Disable global irq and save the previous status.

Returns:

last status

void wm_drv_irq_restore(uint32_t irq_state)

Enable global irq by the previous status.

Parameters:

irq_state[in] previous status by wm_drv_irq_save

int wm_drv_irq_enable(wm_irq_no_t irq)

Enable interrupt.

Parameters:

irq[in] irq number

Returns:

  • WM_ERR_SUCCESS: succeed

  • others: failed

int wm_drv_irq_disable(wm_irq_no_t irq)

Disable interrupt.

Parameters:

irq[in] irq number

Returns:

  • WM_ERR_SUCCESS: succeed

  • others: failed

int wm_drv_irq_set_pending(wm_irq_no_t irq)

Set interrupt with pending.

Parameters:

irq[in] irq number

Returns:

  • WM_ERR_SUCCESS: succeed

  • others: failed

int wm_drv_irq_clear_pending(wm_irq_no_t irq)

Clear interrupt pending status.

Parameters:

irq[in] irq number

Returns:

  • WM_ERR_SUCCESS: succeed

  • others: failed

int wm_drv_irq_set_wakeup(wm_irq_no_t irq)

Set wakeup interrupt.

Parameters:

irq[in] irq number

Returns:

  • WM_ERR_SUCCESS: succeed

  • others: failed

int wm_drv_irq_clear_wakeup(wm_irq_no_t irq)

Clear wakeup interrupt.

Parameters:

irq[in] irq number

Returns:

  • WM_ERR_SUCCESS: succeed

  • others: failed