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
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