]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Omap35xxPkg/MMCHSDxe/MMCHS.c
Omap35xxPkg/MMCHSDxe: fix device path initializer
[mirror_edk2.git] / Omap35xxPkg / MMCHSDxe / MMCHS.c
index 7d4e22f5246aad7fb22c06cb32229475718aa28f..5c8e1bd746922eba3a36528d61a55e44e49999c8 100644 (file)
@@ -2,15 +2,15 @@
   MMC/SD Card driver for OMAP 35xx (SDIO not supported)\r
 \r
   This driver always produces a BlockIo protocol but it starts off with no Media\r
-  present. A TimerCallBack detects when media is inserted or removed and after \r
-  a media change event a call to BlockIo ReadBlocks/WriteBlocks will cause the \r
+  present. A TimerCallBack detects when media is inserted or removed and after\r
+  a media change event a call to BlockIo ReadBlocks/WriteBlocks will cause the\r
   media to be detected (or removed) and the BlockIo Media structure will get\r
   updated. No MMC/SD Card harward registers are updated until the first BlockIo\r
-  ReadBlocks/WriteBlocks after media has been insterted (booting with a card \r
-  plugged in counts as an insertion event). \r
+  ReadBlocks/WriteBlocks after media has been insterted (booting with a card\r
+  plugged in counts as an insertion event).\r
 \r
   Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>\r
-  \r
+\r
   This program and the accompanying materials\r
   are licensed and made available under the terms and conditions of the BSD License\r
   which accompanies this distribution.  The full text of the license may be found at\r
@@ -43,17 +43,20 @@ typedef struct {
 \r
 MMCHS_DEVICE_PATH gMmcHsDevicePath = {\r
   {\r
-    HARDWARE_DEVICE_PATH,\r
-    HW_VENDOR_DP,\r
-    (UINT8)(sizeof(VENDOR_DEVICE_PATH)),\r
-    (UINT8)((sizeof(VENDOR_DEVICE_PATH)) >> 8),\r
-    0xb615f1f5, 0x5088, 0x43cd, 0x80, 0x9c, 0xa1, 0x6e, 0x52, 0x48, 0x7d, 0x00 \r
+    {\r
+      HARDWARE_DEVICE_PATH,\r
+      HW_VENDOR_DP,\r
+      {\r
+        (UINT8)(sizeof(VENDOR_DEVICE_PATH)),\r
+        (UINT8)((sizeof(VENDOR_DEVICE_PATH)) >> 8),\r
+      },\r
+    },\r
+    { 0xb615f1f5, 0x5088, 0x43cd, { 0x80, 0x9c, 0xa1, 0x6e, 0x52, 0x48, 0x7d, 0x00 } },\r
   },\r
   {\r
     END_DEVICE_PATH_TYPE,\r
     END_ENTIRE_DEVICE_PATH_SUBTYPE,\r
-    sizeof (EFI_DEVICE_PATH_PROTOCOL),\r
-    0\r
+    { sizeof (EFI_DEVICE_PATH_PROTOCOL), 0 }\r
   }\r
 };\r
 \r
@@ -69,8 +72,8 @@ BOOLEAN                    gMediaChange = FALSE;
 \r
 VOID\r
 ParseCardCIDData (\r
-  UINT32 Response0, \r
-  UINT32 Response1, \r
+  UINT32 Response0,\r
+  UINT32 Response1,\r
   UINT32 Response2,\r
   UINT32 Response3\r
   )\r
@@ -97,7 +100,7 @@ UpdateMMCHSClkFrequency (
   MmioAnd32 (MMCHS_SYSCTL, ~CEN);\r
 \r
   //Set new clock frequency.\r
-  MmioAndThenOr32 (MMCHS_SYSCTL, ~CLKD_MASK, NewCLKD << 6); \r
+  MmioAndThenOr32 (MMCHS_SYSCTL, ~CLKD_MASK, NewCLKD << 6);\r
 \r
   //Poll till Internal Clock Stable\r
   while ((MmioRead32 (MMCHS_SYSCTL) & ICS_MASK) != ICS);\r
@@ -360,7 +363,7 @@ InitializeMMCHS (
   Data = VSEL_3_00V;\r
   Status = gTPS65950->Write (gTPS65950, EXTERNAL_DEVICE_REGISTER(I2C_ADDR_GRP_ID4, VMMC1_DEDICATED_REG), 1, &Data);\r
   ASSERT_EFI_ERROR(Status);\r
-  \r
+\r
   //After ramping up voltage, set VDDS stable bit to indicate that voltage level is stable.\r
   MmioOr32 (CONTROL_PBIAS_LITE, (PBIASLITEVMODE0 | PBIASLITEPWRDNZ0 | PBIASSPEEDCTRL0 | PBIASLITEVMODE1 | PBIASLITEWRDNZ1));\r
 \r
@@ -425,13 +428,13 @@ PerformCardIdenfication (
 \r
   DEBUG ((EFI_D_INFO, "CMD0 response: %x\n", MmioRead32 (MMCHS_RSP10)));\r
 \r
-  //Send CMD5 command. \r
+  //Send CMD5 command.\r
   Status = SendCmd (CMD5, CMD5_INT_EN, CmdArgument);\r
   if (Status == EFI_SUCCESS) {\r
     DEBUG ((EFI_D_ERROR, "CMD5 Success. SDIO card. Follow SDIO card specification.\n"));\r
     DEBUG ((EFI_D_INFO, "CMD5 response: %x\n", MmioRead32 (MMCHS_RSP10)));\r
     //NOTE: Returning unsupported error for now. Need to implement SDIO specification.\r
-    return EFI_UNSUPPORTED; \r
+    return EFI_UNSUPPORTED;\r
   } else {\r
     DEBUG ((EFI_D_INFO, "CMD5 fails. Not an SDIO card.\n"));\r
   }\r
@@ -463,7 +466,7 @@ PerformCardIdenfication (
 \r
   //Poll till card is busy\r
   while (RetryCount < MAX_RETRY_COUNT) {\r
-    //Send CMD55 command. \r
+    //Send CMD55 command.\r
     CmdArgument = 0;\r
     Status = SendCmd (CMD55, CMD55_INT_EN, CmdArgument);\r
     if (Status == EFI_SUCCESS) {\r
@@ -617,7 +620,7 @@ PerformCardConfiguration (
   if ((gCardInfo.CardType != UNKNOWN_CARD) && (gCardInfo.CardType != MMC_CARD)) {\r
     // We could read SCR register, but SD Card Phys spec stats any SD Card shall\r
     // set SCR.SD_BUS_WIDTHS to support 4-bit mode, so why bother?\r
\r
+\r
     // Send ACMD6 (application specific commands must be prefixed with CMD55)\r
     Status = SendCmd (CMD55, CMD55_INT_EN, CmdArgument);\r
     if (!EFI_ERROR (Status)) {\r
@@ -760,11 +763,11 @@ CpuDeadLoop ();
   }\r
 \r
   ZeroMem (&DmaOperation, sizeof (DMA_MAP_OPERATION));\r
-  \r
+\r
 \r
   Dma4.DataType = 2;                      // DMA4_CSDPi[1:0]   32-bit elements from MMCHS_DATA\r
 \r
-  Dma4.SourceEndiansim = 0;               // DMA4_CSDPi[21]    \r
+  Dma4.SourceEndiansim = 0;               // DMA4_CSDPi[21]\r
 \r
   Dma4.DestinationEndianism = 0;          // DMA4_CSDPi[19]\r
 \r
@@ -772,11 +775,11 @@ CpuDeadLoop ();
 \r
   Dma4.DestinationPacked = 0;             // DMA4_CSDPi[13]\r
 \r
-  Dma4.NumberOfElementPerFrame = This->Media->BlockSize/4; // DMA4_CENi  (TRM 4K is optimum value)  \r
+  Dma4.NumberOfElementPerFrame = This->Media->BlockSize/4; // DMA4_CENi  (TRM 4K is optimum value)\r
 \r
-  Dma4.NumberOfFramePerTransferBlock = BlockCount;         // DMA4_CFNi    \r
+  Dma4.NumberOfFramePerTransferBlock = BlockCount;         // DMA4_CFNi\r
 \r
-  Dma4.ReadPriority = 0;                  // DMA4_CCRi[6]      Low priority read  \r
+  Dma4.ReadPriority = 0;                  // DMA4_CCRi[6]      Low priority read\r
 \r
   Dma4.WritePriority = 0;                 // DMA4_CCRi[23]     Prefetech disabled\r
 \r
@@ -793,7 +796,7 @@ CpuDeadLoop ();
 \r
     Dma4.WriteMode = 1;                     // DMA4_CSDPi[17:16] Write posted\r
 \r
-    \r
+\r
 \r
     Dma4.SourceStartAddress = MMCHS_DATA;                   // DMA4_CSSAi\r
 \r
@@ -813,11 +816,11 @@ CpuDeadLoop ();
 \r
     Dma4.WritePortAccessMode = 1;           // DMA4_CCRi[15:14]  Post increment memory address\r
 \r
-    Dma4.ReadRequestNumber = 0x1e;          // DMA4_CCRi[4:0]    Syncro with MMCA_DMA_RX (61)  \r
+    Dma4.ReadRequestNumber = 0x1e;          // DMA4_CCRi[4:0]    Syncro with MMCA_DMA_RX (61)\r
 \r
     Dma4.WriteRequestNumber = 1;            // DMA4_CCRi[20:19]  Syncro upper 0x3e == 62 (one based)\r
 \r
-  } else if (OperationType == WRITE) { \r
+  } else if (OperationType == WRITE) {\r
     Cmd = CMD25; //Multiple block write\r
     CmdInterruptEnable = CMD25_INT_EN;\r
     DmaOperation = MapOperationBusMasterRead;\r
@@ -828,7 +831,7 @@ CpuDeadLoop ();
 \r
     Dma4.WriteMode = 1;                     // DMA4_CSDPi[17:16] Write posted ???\r
 \r
-    \r
+\r
 \r
     Dma4.SourceStartAddress = (UINT32)BufferAddress;        // DMA4_CSSAi\r
 \r
@@ -848,7 +851,7 @@ CpuDeadLoop ();
 \r
     Dma4.WritePortAccessMode = 0;           // DMA4_CCRi[15:14]  Always write MMCHS_DATA\r
 \r
-    Dma4.ReadRequestNumber = 0x1d;          // DMA4_CCRi[4:0]    Syncro with MMCA_DMA_TX (60)  \r
+    Dma4.ReadRequestNumber = 0x1d;          // DMA4_CCRi[4:0]    Syncro with MMCA_DMA_TX (60)\r
 \r
     Dma4.WriteRequestNumber = 1;            // DMA4_CCRi[20:19]  Syncro upper 0x3d == 61 (one based)\r
 \r
@@ -858,7 +861,7 @@ CpuDeadLoop ();
 \r
 \r
   EnableDmaChannel (2, &Dma4);\r
-  \r
+\r
 \r
   //Set command argument based on the card access mode (Byte mode or Block mode)\r
   if (gCardInfo.OCRData.AccessMode & BIT1) {\r
@@ -900,7 +903,7 @@ CpuDeadLoop ();
       }\r
     }\r
     RetryCount++;\r
-  } \r
+  }\r
 \r
   DisableDmaChannel (2, DMA4_CSR_BLOCK, DMA4_CSR_ERR);\r
   Status = DmaUnmap (BufferMap);\r
@@ -934,7 +937,7 @@ TransferBlock (
   if (OperationType == READ) {\r
     Cmd = CMD17; //Single block read\r
     CmdInterruptEnable = CMD18_INT_EN;\r
-  } else if (OperationType == WRITE) { \r
+  } else if (OperationType == WRITE) {\r
     Cmd = CMD24; //Single block write\r
     CmdInterruptEnable = CMD24_INT_EN;\r
   }\r
@@ -992,7 +995,7 @@ TransferBlock (
       }\r
     }\r
     RetryCount++;\r
-  } \r
+  }\r
 \r
   if (RetryCount == MAX_RETRY_COUNT) {\r
     DEBUG ((EFI_D_ERROR, "TransferBlockData timed out.\n"));\r
@@ -1084,13 +1087,13 @@ DetectCard (
     DEBUG ((EFI_D_ERROR, "No MMC/SD card detected.\n"));\r
     return Status;\r
   }\r
-  \r
+\r
   //Get CSD (Card specific data) for the detected card.\r
   Status = GetCardSpecificData();\r
   if (EFI_ERROR(Status)) {\r
     return Status;\r
   }\r
-  \r
+\r
   //Configure the card in data transfer mode.\r
   Status = PerformCardConfiguration();\r
   if (EFI_ERROR(Status)) {\r
@@ -1101,8 +1104,8 @@ DetectCard (
   gMMCHSMedia.LastBlock    = (gCardInfo.NumBlocks - 1);\r
   gMMCHSMedia.BlockSize    = gCardInfo.BlockSize;\r
   gMMCHSMedia.ReadOnly     = (MmioRead32 (GPIO1_BASE + GPIO_DATAIN) & BIT23) == BIT23;\r
-  gMMCHSMedia.MediaPresent = TRUE; \r
-  gMMCHSMedia.MediaId++; \r
+  gMMCHSMedia.MediaPresent = TRUE;\r
+  gMMCHSMedia.MediaId++;\r
 \r
   DEBUG ((EFI_D_INFO, "SD Card Media Change on Handle 0x%08x\n", gImageHandle));\r
 \r
@@ -1114,8 +1117,8 @@ DetectCard (
 EFI_STATUS\r
 SdReadWrite (\r
   IN EFI_BLOCK_IO_PROTOCOL    *This,\r
-  IN  UINTN                   Lba, \r
-  OUT VOID                    *Buffer, \r
+  IN  UINTN                   Lba,\r
+  OUT VOID                    *Buffer,\r
   IN  UINTN                   BufferSize,\r
   IN  OPERATION_TYPE          OperationType\r
   )\r
@@ -1130,7 +1133,7 @@ SdReadWrite (
   BOOLEAN    Update;\r
 \r
 \r
-  \r
+\r
   Update               = FALSE;\r
 \r
   if (gMediaChange) {\r
@@ -1141,7 +1144,7 @@ SdReadWrite (
       gMMCHSMedia.MediaPresent = FALSE;\r
       gMMCHSMedia.LastBlock    = 0;\r
       gMMCHSMedia.BlockSize    = 512;  // Should be zero but there is a bug in DiskIo\r
-      gMMCHSMedia.ReadOnly     = FALSE; \r
+      gMMCHSMedia.ReadOnly     = FALSE;\r
     }\r
     gMediaChange             = FALSE;\r
   } else if (!gMMCHSMedia.MediaPresent) {\r
@@ -1173,7 +1176,7 @@ SdReadWrite (
     Status = EFI_INVALID_PARAMETER;\r
     goto Done;\r
   }\r
-  \r
+\r
   if ((BufferSize % This->Media->BlockSize) != 0) {\r
     Status = EFI_BAD_BUFFER_SIZE;\r
     goto Done;\r
@@ -1259,7 +1262,7 @@ MMCHSReset (
   IN BOOLEAN                        ExtendedVerification\r
   )\r
 {\r
-  return EFI_SUCCESS; \r
+  return EFI_SUCCESS;\r
 }\r
 \r
 \r
@@ -1293,7 +1296,7 @@ MMCHSReset (
 \r
   @retval EFI_BAD_BUFFER_SIZE   The Buffer was not a multiple of the block size of the device.\r
 \r
-  @retval EFI_INVALID_PARAMETER The read request contains LBAs that are not valid, \r
+  @retval EFI_INVALID_PARAMETER The read request contains LBAs that are not valid,\r
 \r
                                 or the buffer is not on proper alignment.\r
 \r
@@ -1352,7 +1355,7 @@ MMCHSReadBlocks (
 \r
   @retval EFI_BAD_BUFFER_SIZE   The Buffer was not a multiple of the block size of the device.\r
 \r
-  @retval EFI_INVALID_PARAMETER The write request contains LBAs that are not valid, \r
+  @retval EFI_INVALID_PARAMETER The write request contains LBAs that are not valid,\r
 \r
                                 or the buffer is not on proper alignment.\r
 \r
@@ -1423,7 +1426,7 @@ EFI_BLOCK_IO_PROTOCOL gBlockIo = {
 \r
   Timer callback to convert card present hardware into a boolean that indicates\r
 \r
-  a media change event has happened. If you just check the GPIO you could see \r
+  a media change event has happened. If you just check the GPIO you could see\r
 \r
   card 1 and then check again after card 1 was removed and card 2 was inserted\r
 \r
@@ -1458,7 +1461,7 @@ TimerCallback (
     }\r
   } else {\r
     if (Present && !gMediaChange) {\r
-      gMediaChange = TRUE;    \r
+      gMediaChange = TRUE;\r
     }\r
   }\r
 }\r
@@ -1480,14 +1483,14 @@ MMCHSInitialize (
 \r
   Status = gBS->CreateEvent (EVT_TIMER | EVT_NOTIFY_SIGNAL, TPL_CALLBACK, TimerCallback, NULL, &gTimerEvent);\r
   ASSERT_EFI_ERROR (Status);\r
\r
-  Status = gBS->SetTimer (gTimerEvent, TimerPeriodic, FixedPcdGet32 (PcdMmchsTimerFreq100NanoSeconds)); \r
+\r
+  Status = gBS->SetTimer (gTimerEvent, TimerPeriodic, FixedPcdGet32 (PcdMmchsTimerFreq100NanoSeconds));\r
   ASSERT_EFI_ERROR (Status);\r
 \r
   //Publish BlockIO.\r
   Status = gBS->InstallMultipleProtocolInterfaces (\r
-                  &ImageHandle, \r
-                  &gEfiBlockIoProtocolGuid,    &gBlockIo, \r
+                  &ImageHandle,\r
+                  &gEfiBlockIoProtocolGuid,    &gBlockIo,\r
                   &gEfiDevicePathProtocolGuid, &gMmcHsDevicePath,\r
                   NULL\r
                   );\r