]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EmbeddedPkg/Universal/MmcDxe/MmcBlockIo.c
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / EmbeddedPkg / Universal / MmcDxe / MmcBlockIo.c
index 7614ecdf0ac31d4a0e72bc91e1d41eb537cb452d..d695e25571eca9dddb8a0e09304b5b56631359f2 100644 (file)
@@ -12,8 +12,8 @@
 \r
 EFI_STATUS\r
 MmcNotifyState (\r
-  IN MMC_HOST_INSTANCE *MmcHostInstance,\r
-  IN MMC_STATE State\r
+  IN MMC_HOST_INSTANCE  *MmcHostInstance,\r
+  IN MMC_STATE          State\r
   )\r
 {\r
   MmcHostInstance->State = State;\r
@@ -23,23 +23,24 @@ MmcNotifyState (
 EFI_STATUS\r
 EFIAPI\r
 MmcGetCardStatus (\r
-  IN MMC_HOST_INSTANCE     *MmcHostInstance\r
+  IN MMC_HOST_INSTANCE  *MmcHostInstance\r
   )\r
 {\r
-  EFI_STATUS              Status;\r
-  UINT32                  Response[4];\r
-  UINTN                   CmdArg;\r
-  EFI_MMC_HOST_PROTOCOL   *MmcHost;\r
+  EFI_STATUS             Status;\r
+  UINT32                 Response[4];\r
+  UINTN                  CmdArg;\r
+  EFI_MMC_HOST_PROTOCOL  *MmcHost;\r
 \r
-  Status = EFI_SUCCESS;\r
+  Status  = EFI_SUCCESS;\r
   MmcHost = MmcHostInstance->MmcHost;\r
-  CmdArg = 0;\r
+  CmdArg  = 0;\r
 \r
   if (MmcHost == NULL) {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
+\r
   if (MmcHostInstance->State != MmcHwInitializationState) {\r
-    //Get the Status of the card.\r
+    // Get the Status of the card.\r
     CmdArg = MmcHostInstance->CardInfo.RCA << 16;\r
     Status = MmcHost->SendCommand (MmcHost, MMC_CMD13, CmdArg);\r
     if (EFI_ERROR (Status)) {\r
@@ -47,7 +48,7 @@ MmcGetCardStatus (
       return Status;\r
     }\r
 \r
-    //Read Response\r
+    // Read Response\r
     MmcHost->ReceiveResponse (MmcHost, MMC_RESPONSE_TYPE_R1, Response);\r
     PrintResponseR1 (Response[0]);\r
   }\r
@@ -58,11 +59,11 @@ MmcGetCardStatus (
 EFI_STATUS\r
 EFIAPI\r
 MmcReset (\r
-  IN EFI_BLOCK_IO_PROTOCOL    *This,\r
-  IN BOOLEAN                  ExtendedVerification\r
+  IN EFI_BLOCK_IO_PROTOCOL  *This,\r
+  IN BOOLEAN                ExtendedVerification\r
   )\r
 {\r
-  MMC_HOST_INSTANCE       *MmcHostInstance;\r
+  MMC_HOST_INSTANCE  *MmcHostInstance;\r
 \r
   MmcHostInstance = MMC_HOST_INSTANCE_FROM_BLOCK_IO_THIS (This);\r
 \r
@@ -91,7 +92,7 @@ MmcReset (
 \r
 EFI_STATUS\r
 MmcDetectCard (\r
-  EFI_MMC_HOST_PROTOCOL     *MmcHost\r
+  EFI_MMC_HOST_PROTOCOL  *MmcHost\r
   )\r
 {\r
   if (!MmcHost->IsCardPresent (MmcHost)) {\r
@@ -103,58 +104,61 @@ MmcDetectCard (
 \r
 EFI_STATUS\r
 MmcStopTransmission (\r
-  EFI_MMC_HOST_PROTOCOL     *MmcHost\r
+  EFI_MMC_HOST_PROTOCOL  *MmcHost\r
   )\r
 {\r
-  EFI_STATUS              Status;\r
-  UINT32                  Response[4];\r
+  EFI_STATUS  Status;\r
+  UINT32      Response[4];\r
+\r
   // Command 12 - Stop transmission (ends read or write)\r
   // Normally only needed for streaming transfers or after error.\r
   Status = MmcHost->SendCommand (MmcHost, MMC_CMD12, 0);\r
   if (!EFI_ERROR (Status)) {\r
     MmcHost->ReceiveResponse (MmcHost, MMC_RESPONSE_TYPE_R1b, Response);\r
   }\r
+\r
   return Status;\r
 }\r
 \r
-#define MMCI0_BLOCKLEN 512\r
-#define MMCI0_TIMEOUT  10000\r
+#define MMCI0_BLOCKLEN  512\r
+#define MMCI0_TIMEOUT   10000\r
 \r
 STATIC\r
 EFI_STATUS\r
 MmcTransferBlock (\r
-  IN EFI_BLOCK_IO_PROTOCOL    *This,\r
-  IN UINTN                    Cmd,\r
-  IN UINTN                    Transfer,\r
-  IN UINT32                   MediaId,\r
-  IN EFI_LBA                  Lba,\r
-  IN UINTN                    BufferSize,\r
-  OUT VOID                    *Buffer\r
+  IN EFI_BLOCK_IO_PROTOCOL  *This,\r
+  IN UINTN                  Cmd,\r
+  IN UINTN                  Transfer,\r
+  IN UINT32                 MediaId,\r
+  IN EFI_LBA                Lba,\r
+  IN UINTN                  BufferSize,\r
+  OUT VOID                  *Buffer\r
   )\r
 {\r
-  EFI_STATUS              Status;\r
-  UINTN                   CmdArg;\r
-  INTN                    Timeout;\r
-  UINT32                  Response[4];\r
-  MMC_HOST_INSTANCE       *MmcHostInstance;\r
-  EFI_MMC_HOST_PROTOCOL   *MmcHost;\r
+  EFI_STATUS             Status;\r
+  UINTN                  CmdArg;\r
+  INTN                   Timeout;\r
+  UINT32                 Response[4];\r
+  MMC_HOST_INSTANCE      *MmcHostInstance;\r
+  EFI_MMC_HOST_PROTOCOL  *MmcHost;\r
 \r
   MmcHostInstance = MMC_HOST_INSTANCE_FROM_BLOCK_IO_THIS (This);\r
-  MmcHost = MmcHostInstance->MmcHost;\r
+  MmcHost         = MmcHostInstance->MmcHost;\r
 \r
   if (MmcHostInstance->CardInfo.CardType != EMMC_CARD) {\r
-    //Set command argument based on the card capacity\r
-    //if 0 : SDSC card\r
-    //if 1 : SDXC/SDHC\r
+    // Set command argument based on the card capacity\r
+    // if 0 : SDSC card\r
+    // if 1 : SDXC/SDHC\r
     if (MmcHostInstance->CardInfo.OCRData.AccessMode & SD_CARD_CAPACITY) {\r
       CmdArg = Lba;\r
     } else {\r
       CmdArg = MultU64x32 (Lba, This->Media->BlockSize);\r
     }\r
   } else {\r
-    //Set command argument based on the card access mode (Byte mode or Block mode)\r
+    // Set command argument based on the card access mode (Byte mode or Block mode)\r
     if ((MmcHostInstance->CardInfo.OCRData.AccessMode & MMC_OCR_ACCESS_MASK) ==\r
-        MMC_OCR_ACCESS_SECTOR) {\r
+        MMC_OCR_ACCESS_SECTOR)\r
+    {\r
       CmdArg = Lba;\r
     } else {\r
       CmdArg = MultU64x32 (Lba, This->Media->BlockSize);\r
@@ -175,6 +179,7 @@ MmcTransferBlock (
       MmcStopTransmission (MmcHost);\r
       return Status;\r
     }\r
+\r
     Status = MmcNotifyState (MmcHostInstance, MmcProgrammingState);\r
     if (EFI_ERROR (Status)) {\r
       DEBUG ((DEBUG_ERROR, "%a() : Error MmcProgrammingState\n", __func__));\r
@@ -191,12 +196,13 @@ MmcTransferBlock (
   }\r
 \r
   // Command 13 - Read status and wait for programming to complete (return to tran)\r
-  Timeout = MMCI0_TIMEOUT;\r
-  CmdArg = MmcHostInstance->CardInfo.RCA << 16;\r
+  Timeout     = MMCI0_TIMEOUT;\r
+  CmdArg      = MmcHostInstance->CardInfo.RCA << 16;\r
   Response[0] = 0;\r
-  while(!(Response[0] & MMC_R0_READY_FOR_DATA)\r
+  while (  !(Response[0] & MMC_R0_READY_FOR_DATA)\r
         && (MMC_R0_CURRENTSTATE (Response) != MMC_R0_STATE_TRAN)\r
-        && Timeout--) {\r
+        && Timeout--)\r
+  {\r
     Status = MmcHost->SendCommand (MmcHost, MMC_CMD13, CmdArg);\r
     if (!EFI_ERROR (Status)) {\r
       MmcHost->ReceiveResponse (MmcHost, MMC_RESPONSE_TYPE_R1, Response);\r
@@ -211,6 +217,7 @@ MmcTransferBlock (
     if (EFI_ERROR (Status)) {\r
       DEBUG ((DEBUG_BLKIO, "%a(): Error and Status:%r\n", __func__, Status));\r
     }\r
+\r
     MmcHost->ReceiveResponse (MmcHost, MMC_RESPONSE_TYPE_R1b, Response);\r
   }\r
 \r
@@ -219,33 +226,34 @@ MmcTransferBlock (
     DEBUG ((DEBUG_ERROR, "MmcIoBlocks() : Error MmcTransferState\n"));\r
     return Status;\r
   }\r
+\r
   return Status;\r
 }\r
 \r
 EFI_STATUS\r
 MmcIoBlocks (\r
-  IN EFI_BLOCK_IO_PROTOCOL    *This,\r
-  IN UINTN                    Transfer,\r
-  IN UINT32                   MediaId,\r
-  IN EFI_LBA                  Lba,\r
-  IN UINTN                    BufferSize,\r
-  OUT VOID                    *Buffer\r
+  IN EFI_BLOCK_IO_PROTOCOL  *This,\r
+  IN UINTN                  Transfer,\r
+  IN UINT32                 MediaId,\r
+  IN EFI_LBA                Lba,\r
+  IN UINTN                  BufferSize,\r
+  OUT VOID                  *Buffer\r
   )\r
 {\r
-  UINT32                  Response[4];\r
-  EFI_STATUS              Status;\r
-  UINTN                   CmdArg;\r
-  INTN                    Timeout;\r
-  UINTN                   Cmd;\r
-  MMC_HOST_INSTANCE       *MmcHostInstance;\r
-  EFI_MMC_HOST_PROTOCOL   *MmcHost;\r
-  UINTN                   BytesRemainingToBeTransfered;\r
-  UINTN                   BlockCount;\r
-  UINTN                   ConsumeSize;\r
-  UINT32                  MaxBlock;\r
-  UINTN                   RemainingBlock;\r
-\r
-  BlockCount = 1;\r
+  UINT32                 Response[4];\r
+  EFI_STATUS             Status;\r
+  UINTN                  CmdArg;\r
+  INTN                   Timeout;\r
+  UINTN                  Cmd;\r
+  MMC_HOST_INSTANCE      *MmcHostInstance;\r
+  EFI_MMC_HOST_PROTOCOL  *MmcHost;\r
+  UINTN                  BytesRemainingToBeTransfered;\r
+  UINTN                  BlockCount;\r
+  UINTN                  ConsumeSize;\r
+  UINT32                 MaxBlock;\r
+  UINTN                  RemainingBlock;\r
+\r
+  BlockCount      = 1;\r
   MmcHostInstance = MMC_HOST_INSTANCE_FROM_BLOCK_IO_THIS (This);\r
   ASSERT (MmcHostInstance != NULL);\r
   MmcHost = MmcHostInstance->MmcHost;\r
@@ -274,7 +282,7 @@ MmcIoBlocks (
     return EFI_BAD_BUFFER_SIZE;\r
   }\r
 \r
-  if (MMC_HOST_HAS_ISMULTIBLOCK(MmcHost) && MmcHost->IsMultiBlock(MmcHost)) {\r
+  if (MMC_HOST_HAS_ISMULTIBLOCK (MmcHost) && MmcHost->IsMultiBlock (MmcHost)) {\r
     BlockCount = BufferSize / This->Media->BlockSize;\r
   }\r
 \r
@@ -293,11 +301,10 @@ MmcIoBlocks (
   }\r
 \r
   // Max block number in single cmd is 65535 blocks.\r
-  MaxBlock = 0xFFFF;\r
-  RemainingBlock = BlockCount;\r
+  MaxBlock                     = 0xFFFF;\r
+  RemainingBlock               = BlockCount;\r
   BytesRemainingToBeTransfered = BufferSize;\r
   while (BytesRemainingToBeTransfered > 0) {\r
-\r
     if (RemainingBlock <= MaxBlock) {\r
       BlockCount = RemainingBlock;\r
     } else {\r
@@ -305,12 +312,13 @@ MmcIoBlocks (
     }\r
 \r
     // Check if the Card is in Ready status\r
-    CmdArg = MmcHostInstance->CardInfo.RCA << 16;\r
+    CmdArg      = MmcHostInstance->CardInfo.RCA << 16;\r
     Response[0] = 0;\r
-    Timeout = 20;\r
-    while  (!(Response[0] & MMC_R0_READY_FOR_DATA))\r
+    Timeout     = 20;\r
+    while (  (!(Response[0] & MMC_R0_READY_FOR_DATA))\r
           && (MMC_R0_CURRENTSTATE (Response) != MMC_R0_STATE_TRAN)\r
-          && Timeout--) {\r
+          && Timeout--)\r
+    {\r
       Status = MmcHost->SendCommand (MmcHost, MMC_CMD13, CmdArg);\r
       if (!EFI_ERROR (Status)) {\r
         MmcHost->ReceiveResponse (MmcHost, MMC_RESPONSE_TYPE_R1, Response);\r
@@ -327,16 +335,16 @@ MmcIoBlocks (
         // Read a single block\r
         Cmd = MMC_CMD17;\r
       } else {\r
-       // Read multiple blocks\r
-       Cmd = MMC_CMD18;\r
+        // Read multiple blocks\r
+        Cmd = MMC_CMD18;\r
       }\r
     } else {\r
       if (BlockCount == 1) {\r
         // Write a single block\r
         Cmd = MMC_CMD24;\r
       } else {\r
-       // Write multiple blocks\r
-       Cmd = MMC_CMD25;\r
+        // Write multiple blocks\r
+        Cmd = MMC_CMD25;\r
       }\r
     }\r
 \r
@@ -344,15 +352,16 @@ MmcIoBlocks (
     if (BytesRemainingToBeTransfered < ConsumeSize) {\r
       ConsumeSize = BytesRemainingToBeTransfered;\r
     }\r
+\r
     Status = MmcTransferBlock (This, Cmd, Transfer, MediaId, Lba, ConsumeSize, Buffer);\r
     if (EFI_ERROR (Status)) {\r
       DEBUG ((DEBUG_ERROR, "%a(): Failed to transfer block and Status:%r\n", __func__, Status));\r
     }\r
 \r
-    RemainingBlock -= BlockCount;\r
+    RemainingBlock               -= BlockCount;\r
     BytesRemainingToBeTransfered -= ConsumeSize;\r
     if (BytesRemainingToBeTransfered > 0) {\r
-      Lba    += BlockCount;\r
+      Lba   += BlockCount;\r
       Buffer = (UINT8 *)Buffer + ConsumeSize;\r
     }\r
   }\r
@@ -363,11 +372,11 @@ MmcIoBlocks (
 EFI_STATUS\r
 EFIAPI\r
 MmcReadBlocks (\r
-  IN EFI_BLOCK_IO_PROTOCOL    *This,\r
-  IN UINT32                   MediaId,\r
-  IN EFI_LBA                  Lba,\r
-  IN UINTN                    BufferSize,\r
-  OUT VOID                    *Buffer\r
+  IN EFI_BLOCK_IO_PROTOCOL  *This,\r
+  IN UINT32                 MediaId,\r
+  IN EFI_LBA                Lba,\r
+  IN UINTN                  BufferSize,\r
+  OUT VOID                  *Buffer\r
   )\r
 {\r
   return MmcIoBlocks (This, MMC_IOBLOCKS_READ, MediaId, Lba, BufferSize, Buffer);\r
@@ -376,11 +385,11 @@ MmcReadBlocks (
 EFI_STATUS\r
 EFIAPI\r
 MmcWriteBlocks (\r
-  IN EFI_BLOCK_IO_PROTOCOL    *This,\r
-  IN UINT32                   MediaId,\r
-  IN EFI_LBA                  Lba,\r
-  IN UINTN                    BufferSize,\r
-  IN VOID                     *Buffer\r
+  IN EFI_BLOCK_IO_PROTOCOL  *This,\r
+  IN UINT32                 MediaId,\r
+  IN EFI_LBA                Lba,\r
+  IN UINTN                  BufferSize,\r
+  IN VOID                   *Buffer\r
   )\r
 {\r
   return MmcIoBlocks (This, MMC_IOBLOCKS_WRITE, MediaId, Lba, BufferSize, Buffer);\r