diff --git a/MdeModulePkg/Bus/Pci/EhciDxe/Ehci.c b/MdeModulePkg/Bus/Pci/EhciDxe/Ehci.c index 238766c56c..87e4aa079b 100644 --- a/MdeModulePkg/Bus/Pci/EhciDxe/Ehci.c +++ b/MdeModulePkg/Bus/Pci/EhciDxe/Ehci.c @@ -1476,11 +1476,9 @@ EhcExitBootService ( Ehc = (USB2_HC_DEV *) Context; // - // Stop the Host Controller + // Reset the Host Controller // - EhcHaltHC (Ehc, EHC_GENERIC_TIMEOUT); - - return; + EhcResetHC (Ehc, EHC_RESET_TIMEOUT); } diff --git a/MdeModulePkg/Bus/Pci/UhciDxe/Uhci.c b/MdeModulePkg/Bus/Pci/UhciDxe/Uhci.c index 92567f93e4..beea8f32d6 100644 --- a/MdeModulePkg/Bus/Pci/UhciDxe/Uhci.c +++ b/MdeModulePkg/Bus/Pci/UhciDxe/Uhci.c @@ -1588,7 +1588,11 @@ UhcExitBootService ( // UhciStopHc (Uhc, UHC_GENERIC_TIMEOUT); - return; + // + // Reset the Host Controller + // + UhciSetRegBit (Uhc->PciIo, USBCMD_OFFSET, USBCMD_HCRESET); + gBS->Stall (UHC_ROOT_PORT_RECOVERY_STALL); } /**