/** @file
Copyright (c) 2018, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
//
// EDK and EDKII have different GUID formats
//
#include
#include
#include "PlatformHost.h"
#include
#include
#include
VOID
UpdatePchUsbConfig (
IN PCH_USB_CONFIG *PchUsbConfig,
IN SYSTEM_CONFIGURATION *SetupVariables,
IN PCH_RC_CONFIGURATION *PchRcVariables,
IN VOID *Usb20OverCurrentMappings,
IN VOID *Usb30OverCurrentMappings
)
/*++
Routine Description:
This function performs PCH USB Platform Policy initialzation
Arguments:
PchUsbConfig Pointer to PCH_USB_CONFIG data buffer
SetupVariables Pointer to Setup variable
PlatformType PlatformType specified
PlatformFlavor PlatformFlavor specified
BoardType BoardType specified
Returns:
--*/
{
UINTN PortIndex;
PchUsbConfig->UsbPrecondition = PchRcVariables->UsbPrecondition;
for (PortIndex = 0; PortIndex < GetPchXhciMaxUsb2PortNum (); PortIndex++) {
if (PchRcVariables->PchUsbHsPort[PortIndex] == 1) {
PchUsbConfig->PortUsb20[PortIndex].Enable = TRUE;
} else {
PchUsbConfig->PortUsb20[PortIndex].Enable = FALSE;
}
}
for (PortIndex = 0; PortIndex < GetPchXhciMaxUsb3PortNum (); PortIndex++) {
if (PchRcVariables->PchUsbSsPort[PortIndex] == 1) {
PchUsbConfig->PortUsb30[PortIndex].Enable = TRUE;
} else {
PchUsbConfig->PortUsb30[PortIndex].Enable = FALSE;
}
}
//
// xDCI (USB device) related settings from setup variable
//
if(PchRcVariables->PchXdciSupport == 1) {
PchUsbConfig->XdciConfig.Enable= TRUE;
} else {
PchUsbConfig->XdciConfig.Enable= FALSE;
}
//
// XHCI USB Over Current Pins disabled, update it based on setup option.
//
PchUsbConfig->XhciOcMapEnabled = PchRcVariables->XhciOcMapEnabled;
//
// XHCI Wake On USB configured based on user input through setup option
//
PchUsbConfig->XhciWakeOnUsb = SetupVariables->XhciWakeOnUsbEnabled;
//
// XHCI option to disable MSIs
//
PchUsbConfig->XhciDisMSICapability = PchRcVariables->XhciDisMSICapability;
//
// Platform Board programming per the layout of each port.
//
// OC Map for USB2 Ports
for (PortIndex=0;PortIndexPortUsb20[PortIndex].OverCurrentPin = (UINT8)((PCH_USB_OVERCURRENT_PIN *)Usb20OverCurrentMappings)[PortIndex];
}
// OC Map for USB3 Ports
for (PortIndex=0;PortIndexPortUsb30[PortIndex].OverCurrentPin = (UINT8)((PCH_USB_OVERCURRENT_PIN *)Usb30OverCurrentMappings)[PortIndex];
}
}