From efe9186f09a22146361c01d3121c72b1a591f50a Mon Sep 17 00:00:00 2001 From: eric_tian Date: Wed, 16 Dec 2009 00:58:46 +0000 Subject: add error handling on usb related modules. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9566 6f19259b-4bc3-4df7-8a09-765794883524 --- MdeModulePkg/Bus/Pci/EhciDxe/Ehci.c | 6 ++++++ MdeModulePkg/Bus/Pci/EhciDxe/EhciReg.h | 29 +++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) (limited to 'MdeModulePkg/Bus/Pci') diff --git a/MdeModulePkg/Bus/Pci/EhciDxe/Ehci.c b/MdeModulePkg/Bus/Pci/EhciDxe/Ehci.c index d6210255f4..47ab1e3f8e 100644 --- a/MdeModulePkg/Bus/Pci/EhciDxe/Ehci.c +++ b/MdeModulePkg/Bus/Pci/EhciDxe/Ehci.c @@ -1884,6 +1884,12 @@ EhcDriverBindingStop ( FreeUnicodeStringTable (Ehc->ControllerNameTable); } + // + // Disable routing of all ports to EHCI controller, so all ports are + // routed back to the UHCI controller. + // + EhcClearOpRegBit (Ehc, EHC_CONFIG_FLAG_OFFSET, CONFIGFLAG_ROUTE_EHC); + // // Restore original PCI attributes // diff --git a/MdeModulePkg/Bus/Pci/EhciDxe/EhciReg.h b/MdeModulePkg/Bus/Pci/EhciDxe/EhciReg.h index 15fd661e3d..a995dc40c2 100644 --- a/MdeModulePkg/Bus/Pci/EhciDxe/EhciReg.h +++ b/MdeModulePkg/Bus/Pci/EhciDxe/EhciReg.h @@ -160,6 +160,35 @@ EhcWriteOpReg ( IN UINT32 Data ); +/** + Set one bit of the operational register while keeping other bits. + + @param Ehc The EHCI device. + @param Offset The offset of the operational register. + @param Bit The bit mask of the register to set. + +**/ +VOID +EhcSetOpRegBit ( + IN USB2_HC_DEV *Ehc, + IN UINT32 Offset, + IN UINT32 Bit + ); + +/** + Clear one bit of the operational register while keeping other bits. + + @param Ehc The EHCI device. + @param Offset The offset of the operational register. + @param Bit The bit mask of the register to clear. + +**/ +VOID +EhcClearOpRegBit ( + IN USB2_HC_DEV *Ehc, + IN UINT32 Offset, + IN UINT32 Bit + ); /** Add support for UEFI Over Legacy (UoL) feature, stop -- cgit v1.2.3