diff options
Diffstat (limited to 'ReferenceCode/Chipset/LynxPoint/Usb/Pei/PchUsb.c')
-rw-r--r-- | ReferenceCode/Chipset/LynxPoint/Usb/Pei/PchUsb.c | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/ReferenceCode/Chipset/LynxPoint/Usb/Pei/PchUsb.c b/ReferenceCode/Chipset/LynxPoint/Usb/Pei/PchUsb.c new file mode 100644 index 0000000..493f5e6 --- /dev/null +++ b/ReferenceCode/Chipset/LynxPoint/Usb/Pei/PchUsb.c @@ -0,0 +1,77 @@ +/** @file + Pch Usb Pei Init + +@copyright + Copyright (c) 2009 - 2012 Intel Corporation. All rights reserved + This software and associated documentation (if any) is furnished + under a license and may only be used or copied in accordance + with the terms of the license. Except as permitted by such + license, no part of this software or documentation may be + reproduced, stored in a retrieval system, or transmitted in any + form or by any means without the express written consent of + Intel Corporation. + + This file contains an 'Intel Peripheral Driver' and uniquely + identified as "Intel Reference Module" and is + licensed for Intel CPUs and chipsets under the terms of your + license agreement with Intel or your vendor. This file may + be modified by the user, subject to additional terms of the + license agreement +**/ +#include "PchUsb.h" + +/** + Initialize PCH USB PEIM + + @param[in] FfsHeader Not used. + @param[in] PeiServices General purpose services available to every PEIM. + + @retval EFI_SUCCESS The PCH USB PEIM is initialized successfully + @retval Others All other error conditions encountered result in an ASSERT. +**/ +EFI_STATUS +InitializePchUsb ( + IN EFI_FFS_FILE_HEADER *FfsHeader, + IN EFI_PEI_SERVICES **PeiServices + ) +{ + EFI_STATUS Status; + PCH_USB_POLICY_PPI *UsbPolicyPpi; + + DEBUG ((EFI_D_INFO, "InitializePchUsb() Start\n")); + + /// + /// Locate UsbPolicy PPI + /// + Status = (**PeiServices).LocatePpi ( + PeiServices, + &gPchUsbPolicyPpiGuid, + 0, + NULL, + (VOID **) &UsbPolicyPpi + ); + ASSERT_EFI_ERROR (Status); + + if (Status == EFI_SUCCESS) { + /// + /// Enable USB controller and install PeiUsbControllerPpi for USB recovery function + /// + switch (UsbPolicyPpi->Mode) { + case EHCI_MODE: + DEBUG ((EFI_D_ERROR, "Usb Recovery Mode : EHCI !\n")); + DEBUG ((EFI_D_ERROR, "EhciMemBaseAddr:%0x!\n", UsbPolicyPpi->EhciMemBaseAddr)); + DEBUG ((EFI_D_ERROR, "EhciMemLength:%0x!\n", UsbPolicyPpi->EhciMemLength)); + InitForEHCI (PeiServices, UsbPolicyPpi); + break; + + default: + ASSERT_EFI_ERROR (EFI_INVALID_PARAMETER); + break; + } + } + + DEBUG ((EFI_D_INFO, "InitializePchUsb() End\n")); + + return Status; + +}
\ No newline at end of file |