49 #include <drivers/xint/adi_xint.h> 50 #include <rtos_map/adi_rtos_map.h> 51 #include "adi_xint_def.h" 67 #pragma diag_suppress=Pm073,Pm143,Pm140,Pm136,Pm152 70 static inline void XIntCommonInterruptHandler (
const ADI_XINT_EVENT eEvent);
71 void Ext_Int0_Handler(
void);
72 void Ext_Int1_Handler(
void);
73 void Ext_Int2_Handler(
void);
74 void Ext_Int3_Handler(
void);
80 static ADI_XINT_CALLBACK_INFO *gpCallbackTable;
108 uint32_t
const MemorySize
127 if (gpCallbackTable == NULL)
130 memset(pMemory, 0, MemorySize);
132 gpCallbackTable = (ADI_XINT_CALLBACK_INFO *)pMemory;
154 if (NULL == gpCallbackTable)
162 gpCallbackTable = NULL;
197 ADI_INT_STATUS_ALLOC();
201 if (NULL == gpCallbackTable)
208 Mask = (BITM_XINT_CFG0_IRQ0MDE | BITM_XINT_CFG0_IRQ0EN) << (ADI_XINT_CFG_BITS * (uint32_t)eEvent);
217 Pattern = (BITM_XINT_CFG0_UART_RX_EN | ((uint32_t)eMode << BITP_XINT_CFG0_UART_RX_MDE));
219 XintIrq = XINT_EVT3_IRQn;
224 Pattern = (BITM_XINT_CFG0_IRQ0EN | eMode) << (ADI_XINT_CFG_BITS * (uint32_t)eEvent);
226 XintIrq = (IRQn_Type)((uint32_t)XINT_EVT0_IRQn + (uint32_t)eEvent);
230 ADI_ENTER_CRITICAL_REGION();
233 CfgReg = pADI_XINT0->CFG0;
236 pADI_XINT0->CFG0 = CfgReg;
238 ADI_EXIT_CRITICAL_REGION();
241 NVIC_EnableIRQ(XintIrq);
267 ADI_INT_STATUS_ALLOC();
271 if (NULL == gpCallbackTable)
280 XintIrq = XINT_EVT3_IRQn;
284 XintIrq = (IRQn_Type)((uint32_t)XINT_EVT0_IRQn + (uint32_t)eEvent);
288 NVIC_DisableIRQ(XintIrq);
291 Mask = (BITM_XINT_CFG0_IRQ0MDE | BITM_XINT_CFG0_IRQ0EN) << (ADI_XINT_CFG_BITS * (uint32_t)eEvent);
293 ADI_ENTER_CRITICAL_REGION();
295 CfgReg = pADI_XINT0->CFG0;
297 pADI_XINT0->CFG0 = CfgReg;
298 ADI_EXIT_CRITICAL_REGION();
335 ADI_INT_STATUS_ALLOC();
339 if (NULL == gpCallbackTable)
345 ADI_ENTER_CRITICAL_REGION();
346 gpCallbackTable[eEvent].pfCallback = pfCallback;
347 gpCallbackTable[eEvent].pCBParam = pCBParam;
348 ADI_EXIT_CRITICAL_REGION();
360 static inline void XIntCommonInterruptHandler(
const ADI_XINT_EVENT eEvent)
363 pADI_XINT0->CLR = (1u << (uint32_t)eEvent);
366 if(gpCallbackTable[eEvent].pfCallback != NULL)
368 gpCallbackTable[eEvent].pfCallback (gpCallbackTable[eEvent].pCBParam, (uint32_t) eEvent, NULL);
373 void Ext_Int0_Handler(
void)
380 void Ext_Int1_Handler(
void)
387 void Ext_Int2_Handler(
void)
395 void Ext_Int3_Handler(
void)
398 if((pADI_XINT0->EXT_STAT & BITM_XINT_EXT_STAT_STAT_UART_RXWKUP)==BITM_XINT_EXT_STAT_STAT_UART_RXWKUP)
ADI_XINT_RESULT adi_xint_Init(void *const pMemory, uint32_t const MemorySize)
Initializes the External Interrupt Driver.
ADI_XINT_RESULT adi_xint_RegisterCallback(const ADI_XINT_EVENT eEvent, ADI_CALLBACK const pfCallback, void *const pCBParam)
Register or unregister an application callback function for external pin interrupts.
ADI_XINT_RESULT adi_xint_UnInit(void)
Un-initialize the external interrupt driver.
#define ADI_XINT_MEMORY_SIZE
ADI_XINT_RESULT adi_xint_DisableIRQ(const ADI_XINT_EVENT eEvent)
Disable an External Interrupt.
ADI_XINT_RESULT adi_xint_EnableIRQ(const ADI_XINT_EVENT eEvent, const ADI_XINT_IRQ_MODE eMode)
Enable an External Interrupt.