diff --git a/XilinxProcessorIPLib/drivers/sdps/data/sdps.mdd b/XilinxProcessorIPLib/drivers/sdps/data/sdps.mdd index c7c40d2e..3e49a71f 100755 --- a/XilinxProcessorIPLib/drivers/sdps/data/sdps.mdd +++ b/XilinxProcessorIPLib/drivers/sdps/data/sdps.mdd @@ -36,7 +36,7 @@ BEGIN driver sdps OPTION supported_peripherals = (ps7_sdio psu_sd); OPTION driver_state = ACTIVE; OPTION copyfiles = all; - OPTION VERSION = 2.5; + OPTION VERSION = 2.6; OPTION NAME = sdps; END driver diff --git a/XilinxProcessorIPLib/drivers/sdps/src/xsdps_options.c b/XilinxProcessorIPLib/drivers/sdps/src/xsdps_options.c index d7a10b0a..f8f227c5 100644 --- a/XilinxProcessorIPLib/drivers/sdps/src/xsdps_options.c +++ b/XilinxProcessorIPLib/drivers/sdps/src/xsdps_options.c @@ -293,6 +293,24 @@ s32 XSdPs_Change_BusWidth(XSdPs *InstancePtr) Status = XST_FAILURE; goto RETURN_PATH; } + + /* Check for transfer complete */ + do { + StatusReg = XSdPs_ReadReg16(InstancePtr->Config.BaseAddress, + XSDPS_NORM_INTR_STS_OFFSET); + if ((StatusReg & XSDPS_INTR_ERR_MASK) != 0U) { + /* Write to clear error bits */ + XSdPs_WriteReg16(InstancePtr->Config.BaseAddress, + XSDPS_ERR_INTR_STS_OFFSET, + XSDPS_ERROR_INTR_ALL_MASK); + Status = XST_FAILURE; + goto RETURN_PATH; + } + } while((StatusReg & XSDPS_INTR_TC_MASK) == 0U); + + /* Write to clear bit */ + XSdPs_WriteReg16(InstancePtr->Config.BaseAddress, + XSDPS_NORM_INTR_STS_OFFSET, XSDPS_INTR_TC_MASK); } #if defined (__arm__) || defined (__aarch64__)