Revision: 14525
          http://sourceforge.net/p/edk2/code/14525
Author:   oliviermartin
Date:     2013-08-06 12:10:25 +0000 (Tue, 06 Aug 2013)
Log Message:
-----------
EmbeddedPkg/MmcDxe: Removed redundant CMD12 calls from MMC

Command 12 - Stop transmission (ends read or write).
Normally only needed for streaming transfers or after error.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Olivier Martin <[email protected]>

Modified Paths:
--------------
    trunk/edk2/EmbeddedPkg/Universal/MmcDxe/MmcBlockIo.c

Modified: trunk/edk2/EmbeddedPkg/Universal/MmcDxe/MmcBlockIo.c
===================================================================
--- trunk/edk2/EmbeddedPkg/Universal/MmcDxe/MmcBlockIo.c        2013-08-06 
12:09:33 UTC (rev 14524)
+++ trunk/edk2/EmbeddedPkg/Universal/MmcDxe/MmcBlockIo.c        2013-08-06 
12:10:25 UTC (rev 14525)
@@ -486,6 +486,22 @@
   }
 }
 
+EFI_STATUS
+MmcStopTransmission (
+  EFI_MMC_HOST_PROTOCOL     *MmcHost
+  )
+{
+  EFI_STATUS              Status;
+  UINT32                  Response[4];
+  // Command 12 - Stop transmission (ends read or write)
+  // Normally only needed for streaming transfers or after error.
+  Status = MmcHost->SendCommand (MmcHost, MMC_CMD12, 0);
+  if (!EFI_ERROR (Status)) {
+    MmcHost->ReceiveResponse (MmcHost, MMC_RESPONSE_TYPE_R1b, Response);
+  }
+  return Status;
+}
+
 #define MMCI0_BLOCKLEN 512
 #define MMCI0_TIMEOUT  10000
 
@@ -598,6 +614,7 @@
       Status = MmcHost->ReadBlockData (MmcHost, Lba, This->Media->BlockSize, 
Buffer);
       if (EFI_ERROR (Status)) {
         DEBUG ((EFI_D_BLKIO, "MmcIoBlocks(): Error Read Block Data and Status 
= %r\n", Status));
+        MmcStopTransmission (MmcHost);
         return Status;
       }
       Status = MmcNotifyState (MmcHostInstance, MmcProgrammingState);
@@ -610,16 +627,11 @@
       Status = MmcHost->WriteBlockData (MmcHost, Lba, This->Media->BlockSize, 
Buffer);
       if (EFI_ERROR (Status)) {
         DEBUG ((EFI_D_BLKIO, "MmcIoBlocks(): Error Write Block Data and Status 
= %r\n", Status));
+        MmcStopTransmission (MmcHost);
         return Status;
       }
     }
 
-    // Command 12 - Stop transmission (ends read)
-    Status = MmcHost->SendCommand (MmcHost, MMC_CMD12, 0);
-    if (!EFI_ERROR (Status)) {
-      MmcHost->ReceiveResponse (MmcHost, MMC_RESPONSE_TYPE_R1b, Response);
-    }
-
     // Command 13 - Read status and wait for programming to complete (return 
to tran)
     Timeout = MMCI0_TIMEOUT;
     CmdArg = MmcHostInstance->CardInfo.RCA << 16;

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
Get your SQL database under version control now!
Version control is standard for application code, but databases havent 
caught up. So what steps can you take to put your SQL databases under 
version control? Why should you start doing it? Read more to find out.
http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits

Reply via email to