From ad401f70a51c4b1c745d2ff3199e1510157cc105 Mon Sep 17 00:00:00 2001 From: P L Sai Krishna Date: Thu, 30 Jul 2015 15:18:48 +0530 Subject: [PATCH] sdps: Used MB_Sleep API for microblaze. This patch use MB_Sleep API for microblaze design and removed sleep.h inclusion in xsdps.h file. Signed-off-by: P L Sai Krishna Reviewed-by: Harini Katakam --- XilinxProcessorIPLib/drivers/sdps/src/xsdps.c | 24 +++++++++++++++++-- XilinxProcessorIPLib/drivers/sdps/src/xsdps.h | 1 - .../drivers/sdps/src/xsdps_options.c | 6 ++--- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/XilinxProcessorIPLib/drivers/sdps/src/xsdps.c b/XilinxProcessorIPLib/drivers/sdps/src/xsdps.c index e18a50f9..bd2e2177 100644 --- a/XilinxProcessorIPLib/drivers/sdps/src/xsdps.c +++ b/XilinxProcessorIPLib/drivers/sdps/src/xsdps.c @@ -69,7 +69,7 @@ * The header sleep.h and API usleep() can only be used with an arm design. * MB_Sleep() is used for microblaze design. */ -#ifdef __arm__ +#if defined (__arm__) || defined (__aarch64__) #include "sleep.h" @@ -165,8 +165,18 @@ s32 XSdPs_CfgInitialize(XSdPs *InstancePtr, XSdPs_Config *ConfigPtr, XSDPS_POWER_CTRL_OFFSET, 0U); /* Delay to poweroff card */ +#if defined (__arm__) || defined (__aarch64__) + (void)sleep(1U); +#endif + +#ifdef __MICROBLAZE__ + + MB_Sleep(1000U); + +#endif + /* "Software reset for all" is initiated */ XSdPs_WriteReg8(InstancePtr->Config.BaseAddress, XSDPS_SW_RST_OFFSET, XSDPS_SWRST_ALL_MASK); @@ -698,7 +708,7 @@ static s32 XSdPs_IdentifyCard(XSdPs *InstancePtr) Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); /* 74 CLK delay after card is powered up, before the first command. */ -#ifdef __arm__ +#if defined (__arm__) || defined (__aarch64__) usleep(XSDPS_INIT_DELAY); @@ -788,8 +798,18 @@ static s32 XSdPs_Switch_Voltage(XSdPs *InstancePtr) CtrlReg); /* Wait minimum 5mSec */ +#if defined (__arm__) || defined (__aarch64__) + (void)usleep(5000U); +#endif + +#ifdef __MICROBLAZE__ + + MB_Sleep(5U); + +#endif + /* Enabling 1.8V in controller */ CtrlReg = XSdPs_ReadReg16(InstancePtr->Config.BaseAddress, XSDPS_HOST_CTRL2_OFFSET); diff --git a/XilinxProcessorIPLib/drivers/sdps/src/xsdps.h b/XilinxProcessorIPLib/drivers/sdps/src/xsdps.h index e56ecf94..774afd16 100644 --- a/XilinxProcessorIPLib/drivers/sdps/src/xsdps.h +++ b/XilinxProcessorIPLib/drivers/sdps/src/xsdps.h @@ -133,7 +133,6 @@ extern "C" { #include "xil_printf.h" #include "xil_cache.h" -#include "sleep.h" #include "xstatus.h" #include "xsdps_hw.h" #include diff --git a/XilinxProcessorIPLib/drivers/sdps/src/xsdps_options.c b/XilinxProcessorIPLib/drivers/sdps/src/xsdps_options.c index 5ff1df87..638978fa 100644 --- a/XilinxProcessorIPLib/drivers/sdps/src/xsdps_options.c +++ b/XilinxProcessorIPLib/drivers/sdps/src/xsdps_options.c @@ -62,7 +62,7 @@ * The header sleep.h and API usleep() can only be used with an arm design. * MB_Sleep() is used for microblaze design. */ -#ifdef __arm__ +#if defined (__arm__) || defined (__aarch64__) #include "sleep.h" @@ -295,7 +295,7 @@ s32 XSdPs_Change_BusWidth(XSdPs *InstancePtr) } } -#ifdef __arm__ +#if defined (__arm__) || defined (__aarch64__) usleep(XSDPS_MMC_DELAY_FOR_SWITCH); @@ -544,7 +544,7 @@ s32 XSdPs_Change_BusSpeed(XSdPs *InstancePtr) } } -#ifdef __arm__ +#if defined (__arm__) || defined (__aarch64__) usleep(XSDPS_MMC_DELAY_FOR_SWITCH);