]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdDevice.c
MdeModulePkg/SdMmcPciHcDxe: Add UhsSignaling to SdMmcOverride protocol
[mirror_edk2.git] / MdeModulePkg / Bus / Pci / SdMmcPciHcDxe / SdDevice.c
index 6ee9ed7f14e22ee4d3e8ff62d7a8ac337f959f32..55b3564e9a77785cac64c4fc1f1fba0c7d40af68 100644 (file)
@@ -784,8 +784,8 @@ SdCardSetBusMode (
   UINT8                        BusWidth;\r
   UINT8                        AccessMode;\r
   UINT8                        HostCtrl1;\r
-  UINT8                        HostCtrl2;\r
   UINT8                        SwitchResp[64];\r
+  SD_MMC_BUS_MODE              Timing;\r
   SD_MMC_HC_PRIVATE_DATA       *Private;\r
 \r
   Private = SD_MMC_HC_PRIVATE_FROM_THIS (PassThru);\r
@@ -817,18 +817,23 @@ SdCardSetBusMode (
   if (S18A && (Capability->Sdr104 != 0) && ((SwitchResp[13] & BIT3) != 0)) {\r
     ClockFreq = 208;\r
     AccessMode = 3;\r
+    Timing = SdMmcUhsSdr104;\r
   } else if (S18A && (Capability->Sdr50 != 0) && ((SwitchResp[13] & BIT2) != 0)) {\r
     ClockFreq = 100;\r
     AccessMode = 2;\r
+    Timing = SdMmcUhsSdr50;\r
   } else if (S18A && (Capability->Ddr50 != 0) && ((SwitchResp[13] & BIT4) != 0)) {\r
     ClockFreq = 50;\r
     AccessMode = 4;\r
+    Timing = SdMmcUhsDdr50;\r
   } else if ((SwitchResp[13] & BIT1) != 0) {\r
     ClockFreq = 50;\r
     AccessMode = 1;\r
+    Timing = SdMmcUhsSdr25;\r
   } else {\r
     ClockFreq = 25;\r
     AccessMode = 0;\r
+    Timing = SdMmcUhsSdr12;\r
   }\r
 \r
   Status = SdCardSwitch (PassThru, Slot, AccessMode, 0xF, 0xF, 0xF, TRUE, SwitchResp);\r
@@ -854,13 +859,7 @@ SdCardSetBusMode (
     }\r
   }\r
 \r
-  HostCtrl2 = (UINT8)~0x7;\r
-  Status = SdMmcHcAndMmio (PciIo, Slot, SD_MMC_HC_HOST_CTRL2, sizeof (HostCtrl2), &HostCtrl2);\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-  HostCtrl2 = AccessMode;\r
-  Status = SdMmcHcOrMmio (PciIo, Slot, SD_MMC_HC_HOST_CTRL2, sizeof (HostCtrl2), &HostCtrl2);\r
+  Status = SdMmcHcUhsSignaling (Private->ControllerHandle, PciIo, Slot, Timing);\r
   if (EFI_ERROR (Status)) {\r
     return Status;\r
   }\r