summaryrefslogtreecommitdiff
path: root/edk2/EmbeddedPkg
diff options
context:
space:
mode:
authoroliviermartin <oliviermartin@6f19259b-4bc3-4df7-8a09-765794883524>2012-08-02 10:14:52 +0000
committeroliviermartin <oliviermartin@6f19259b-4bc3-4df7-8a09-765794883524>2012-08-02 10:14:52 +0000
commitdfab911077311b14f0355ac342ea23f989177285 (patch)
tree14101f204c428d5c7b7e38c72ac77abec047a5b0 /edk2/EmbeddedPkg
parent2f3a2fa4793242b0fdcde9520dcde4843be41f82 (diff)
EmbeddedPkg/MmcDxe: Avoid nanosecond delay when command succeeds
Check response just after receiving it to avoid the delay. Signed-off-by: Olivier Martin <olivier.martin@arm.com> git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk@13584 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'edk2/EmbeddedPkg')
-rw-r--r--edk2/EmbeddedPkg/Universal/MmcDxe/MmcBlockIo.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/edk2/EmbeddedPkg/Universal/MmcDxe/MmcBlockIo.c b/edk2/EmbeddedPkg/Universal/MmcDxe/MmcBlockIo.c
index 32a85196a..7452b5539 100644
--- a/edk2/EmbeddedPkg/Universal/MmcDxe/MmcBlockIo.c
+++ b/edk2/EmbeddedPkg/Universal/MmcDxe/MmcBlockIo.c
@@ -628,7 +628,10 @@ MmcIoBlocks (
while(!(Response[0] & MMC_R0_READY_FOR_DATA) && (MMC_R0_CURRENTSTATE(Response) != MMC_R0_STATE_TRAN) && Timeout--) {
Status = MmcHost->SendCommand (MmcHost, MMC_CMD13, CmdArg);
if (!EFI_ERROR(Status)) {
- MmcHost->ReceiveResponse (MmcHost, MMC_RESPONSE_TYPE_R1,Response);
+ MmcHost->ReceiveResponse (MmcHost, MMC_RESPONSE_TYPE_R1, Response);
+ if ((Response[0] & MMC_R0_READY_FOR_DATA)) {
+ break; // Prevents delay once finished
+ }
}
NanoSecondDelay(100);
Timeout--;