]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdDevice.c
MdeModulePkg/SdMmcPciHcDxe: Hook SwitchClockFreq after SD clock start
[mirror_edk2.git] / MdeModulePkg / Bus / Pci / SdMmcPciHcDxe / SdDevice.c
index 336baade9e58070c140395500c5cc9cbac77900e..d63dc54e8c3a02e21215978c57672e37c6a450f3 100644 (file)
@@ -1145,29 +1145,11 @@ SdCardSetBusMode (
     return Status;\r
   }\r
 \r
-  Status = SdMmcHcClockSupply (PciIo, Slot, BusMode.ClockFreq * 1000, Private->BaseClkFreq[Slot], Private->ControllerVersion[Slot]);\r
+  Status = SdMmcHcClockSupply (Private, Slot, BusMode.BusTiming, FALSE, BusMode.ClockFreq * 1000);\r
   if (EFI_ERROR (Status)) {\r
     return Status;\r
   }\r
 \r
-  if (mOverride != NULL && mOverride->NotifyPhase != NULL) {\r
-    Status = mOverride->NotifyPhase (\r
-                          Private->ControllerHandle,\r
-                          Slot,\r
-                          EdkiiSdMmcSwitchClockFreqPost,\r
-                          &BusMode.BusTiming\r
-                          );\r
-    if (EFI_ERROR (Status)) {\r
-      DEBUG ((\r
-        DEBUG_ERROR,\r
-        "%a: SD/MMC switch clock freq post notifier callback failed - %r\n",\r
-        __FUNCTION__,\r
-        Status\r
-        ));\r
-      return Status;\r
-    }\r
-  }\r
-\r
   if ((BusMode.BusTiming == SdMmcUhsSdr104) || ((BusMode.BusTiming == SdMmcUhsSdr50) && (Capability->TuningSDR50 != 0))) {\r
     Status = SdCardTuningClock (PciIo, PassThru, Slot);\r
     if (EFI_ERROR (Status)) {\r
@@ -1345,7 +1327,13 @@ SdCardIdentification (
         goto Error;\r
       }\r
 \r
-      SdMmcHcInitClockFreq (PciIo, Slot, Private->BaseClkFreq[Slot], Private->ControllerVersion[Slot]);\r
+      //\r
+      // Restart the clock with first time parameters.\r
+      // NOTE: it is not required to actually restart the clock\r
+      // and go through internal clock setup again. Some time\r
+      // could be saved if we simply started the SD clock.\r
+      //\r
+      SdMmcHcClockSupply (Private, Slot, 0, TRUE, 400);\r
 \r
       gBS->Stall (1000);\r
 \r