123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- /*
- * @file hv_vos_Irq.h
- * @brief Header file of irq.
- *
- * @verbatim
- * ==============================================================================
- * ##### How to use #####
- * ==============================================================================
- * (+) Use ()
- *
- * @endverbatim
- * @author HiView SoC Software Team
- * @version 1.0.0
- * @date 2023-03-01
- */
- #ifndef _HV_VOS_IRQ_H
- #define _HV_VOS_IRQ_H
- #include "hv_vos_Types.h"
- VOS_EXTERN_C_BEGIN
- /** @defgroup VOS_IRQ VOS_IRQ
- * VOS Interrupt handler routines
- * @{
- */
- void Hv_Vos_InterruptRecord(UINT32 dwIntFlag,UINT32 dwAddr);
- /// Initialize IRQ data structure
- void Hv_Vos_InitIrq(void);
- /// Configure IRQ channel enable/disable
- /// @param irqNum irq number
- /// @param enable disable/enable
- /// @param channel peripheral channel
- void Hv_Vos_ConfigIrq(UINT32 irqNum, BOOL enable, UINT32 channel);
- /// Cleanup IRQ data structure
- void Hv_Vos_CleanupIrq(void);
- /// Enable one interrupt
- /// @param irqNum irq number
- void Hv_Vos_MaskIrq(UINT32 irqNum);
- /// Disable one interrupt
- /// @param irqNum irq number
- void Hv_Vos_UnmaskIrq(UINT32 irqNum);
- /// disable all interrupt, save interrupt state before disable
- void Hv_Vos_DisableIrq(HV_VOS_IRQ_T *mask);
- /// restore interrupt by saved state
- void Hv_Vos_RestoreIrq(const HV_VOS_IRQ_T *mask);
- /// get interrupt mask status
- HV_VOS_IRQ_T Hv_Vos_GetIrqMask();
- /// trigger interrupt manually, for test only
- BOOL Hv_Vos_TriggerIrq(UINT32 irqNum);
- /// result of ISR handler function
- typedef enum _HV_VOS_ISR_RESULT_E {
- HV_VOS_ISR_HANDLED, //!< Handled
- HV_VOS_ISR_NOT_HANDLED, //!< Not handled
- } HV_VOS_ISR_RESULT_E;
- /// Interrupt function handler
- /// @param irqNum IRQ number
- /// @param param handler parameter
- /// @return operation after ISR processing
- typedef HV_VOS_ISR_RESULT_E (*HV_VOS_ISR_HANDLER)(UINT32 irqNum, void *arg);
- /// Attached IRQ handler
- /// @param irqNum IRQ number
- /// @param handler callback function
- /// @param arg callback function parameter
- void Hv_Vos_AttachIsr(UINT32 irqNum, HV_VOS_ISR_HANDLER handler, void *arg);
- /// Detach IRQ handler
- void Hv_Vos_ISR_Detach(UINT32 irqNum, HV_VOS_ISR_HANDLER handler);
- void Hv_Vos_DetachIsr(UINT32 irqNum, HV_VOS_ISR_HANDLER handler);
- void Hv_Vos_SetIrqPrio(UINT32 IRQn, UINT32 priority);
- void Hv_Vos_IRQ_SetThreshold(UINT32 VectThreshold, UINT32 PrioThreshold);
- void Hv_Vos_IRQ_SetWakeup(UINT32 IRQn);
- void Hv_Vos_IRQ_ClearWakeup(UINT32 IRQn);
- /// Misc int clear interrupt function
- void Hv_Vos_WClrMiscInt(UINT32 irqNum);
- /** @} */
- VOS_EXTERN_C_END
- #endif
|