]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EmbeddedPkg/Universal/MmcDxe/MmcIdentification.c
EmbeddedPkg/MmcDxe: Enable 4-bit mode even if SD_HIGH_SPEED is not supported
[mirror_edk2.git] / EmbeddedPkg / Universal / MmcDxe / MmcIdentification.c
index f661a0c900b0aa3ecaec7f736d76c7702bd4fda9..7079fa64066419393944349ce3a585eab14e8dd9 100755 (executable)
@@ -473,28 +473,27 @@ InitializeSdMmcDevice (
     }\r
 \r
     if (!(Buffer[3] & SD_HIGH_SPEED_SUPPORTED)) {\r
-      DEBUG ((DEBUG_ERROR, "%a : High Speed not supported by Card %r\n", __FUNCTION__, Status));\r
-      return Status;\r
-    }\r
-\r
-    Speed = SD_HIGH_SPEED;\r
-\r
-    /* SD Switch, Mode:1, Group:0, Value:1 */\r
-    CmdArg = CreateSwitchCmdArgument(1, 0, 1);\r
-    Status = MmcHost->SendCommand (MmcHost, MMC_CMD6, CmdArg);\r
-    if (EFI_ERROR (Status)) {\r
-      DEBUG ((DEBUG_ERROR, "%a (MMC_CMD6): Error and Status = %r\n", __FUNCTION__, Status));\r
-       return Status;\r
+      DEBUG ((DEBUG_INFO, "%a : High Speed not supported by Card\n", __FUNCTION__));\r
     } else {\r
-      Status = MmcHost->ReadBlockData (MmcHost, 0, SWITCH_CMD_DATA_LENGTH, Buffer);\r
+      Speed = SD_HIGH_SPEED;\r
+\r
+      /* SD Switch, Mode:1, Group:0, Value:1 */\r
+      CmdArg = CreateSwitchCmdArgument(1, 0, 1);\r
+      Status = MmcHost->SendCommand (MmcHost, MMC_CMD6, CmdArg);\r
       if (EFI_ERROR (Status)) {\r
-        DEBUG ((DEBUG_ERROR, "%a (MMC_CMD6): ReadBlockData Error and Status = %r\n", __FUNCTION__, Status));\r
+        DEBUG ((DEBUG_ERROR, "%a (MMC_CMD6): Error and Status = %r\n", __FUNCTION__, Status));\r
         return Status;\r
-      }\r
+      } else {\r
+        Status = MmcHost->ReadBlockData (MmcHost, 0, SWITCH_CMD_DATA_LENGTH, Buffer);\r
+        if (EFI_ERROR (Status)) {\r
+          DEBUG ((DEBUG_ERROR, "%a (MMC_CMD6): ReadBlockData Error and Status = %r\n", __FUNCTION__, Status));\r
+          return Status;\r
+        }\r
 \r
-      if ((Buffer[4] & SWITCH_CMD_SUCCESS_MASK) != 0x01000000) {\r
-        DEBUG((DEBUG_ERROR, "Problem switching SD card into high-speed mode\n"));\r
-        return Status;\r
+        if ((Buffer[4] & SWITCH_CMD_SUCCESS_MASK) != 0x01000000) {\r
+          DEBUG((DEBUG_ERROR, "Problem switching SD card into high-speed mode\n"));\r
+          return Status;\r
+        }\r
       }\r
     }\r
   }\r