From 2b86552aef6f73fb96063651c3caa44263802af3 Mon Sep 17 00:00:00 2001 From: Naga Sureshkumar Relli Date: Thu, 6 Aug 2015 19:50:45 +0530 Subject: [PATCH] iomodule: Fix Iomodule UART receive interrupt detection. This patch updates the XIOModule_Uart_InterruptHandler to read ISR Register instead of reading Interrupt pending register. Signed-off-by: Naga Sureshkumar Relli Reviewed-by: Kedareswara rao Appana --- XilinxProcessorIPLib/drivers/iomodule/src/xiomodule.h | 4 ++++ .../drivers/iomodule/src/xiomodule_uart_intr.c | 7 +++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/XilinxProcessorIPLib/drivers/iomodule/src/xiomodule.h b/XilinxProcessorIPLib/drivers/iomodule/src/xiomodule.h index e86d685f..810ad85c 100644 --- a/XilinxProcessorIPLib/drivers/iomodule/src/xiomodule.h +++ b/XilinxProcessorIPLib/drivers/iomodule/src/xiomodule.h @@ -218,6 +218,10 @@ * 1.02a sa 07/25/12 Updated with GPI interrupts and programmable baudrate * 2.0 adk 19/12/13 Updated as per the New Tcl API's * 2.1 bss 05/02/14 Added PitMask in XIOModule_Config.(CR #794167) +* 2.2 nsk 08/06/15 Updated XIOModule_Uart_InterruptHandler function +* in xiomodule_uart_intr.c file to read Status register +* instead of reading Interrupt Pending register. +* (CR #862715). * * ******************************************************************************/ diff --git a/XilinxProcessorIPLib/drivers/iomodule/src/xiomodule_uart_intr.c b/XilinxProcessorIPLib/drivers/iomodule/src/xiomodule_uart_intr.c index 6005e25c..9c41f99b 100644 --- a/XilinxProcessorIPLib/drivers/iomodule/src/xiomodule_uart_intr.c +++ b/XilinxProcessorIPLib/drivers/iomodule/src/xiomodule_uart_intr.c @@ -48,6 +48,10 @@ * Ver Who Date Changes * ----- ---- -------- ----------------------------------------------- * 1.03a sa 10/16/12 First release +* 2.2 nsk 08/06/15 Updated XIOModule_Uart_InterruptHandler function +* to read Status register instead of reading Interrupt +* Pending register. +* * * *****************************************************************************/ @@ -583,8 +587,7 @@ void XIOModule_Uart_InterruptHandler(XIOModule *InstancePtr) * Read the status register to determine which, could be both, * interrupt is active */ - IsrStatus = XIOModule_ReadReg(InstancePtr->BaseAddress, - XIN_IPR_OFFSET); + IsrStatus = XIOModule_GetStatusReg(InstancePtr->BaseAddress); if ((IsrStatus & XUL_SR_RX_FIFO_VALID_DATA) != 0) { ReceiveDataHandler(InstancePtr);