/** @file @copyright Copyright 2018 - 2021 Intel Corporation.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #include "UsbOcUpdateDxe.h" #include #include #include #include USB_OVERCURRENT_PIN TypeWilsonCityRPUsb20OverCurrentMappings[PCH_MAX_USB2_PORTS] = { UsbOverCurrentPinSkip, //Port00: BMC UsbOverCurrentPinSkip, //Port01: BMC UsbOverCurrentPin0, //Port02: Rear Panel UsbOverCurrentPin1, //Port03: Rear Panel UsbOverCurrentPin1, //Port04: Rear Panel UsbOverCurrentPinSkip, //Port05: NC UsbOverCurrentPinSkip, //Port06: NC UsbOverCurrentPin4, //Port07: Type A internal UsbOverCurrentPinSkip, //Port08: NC UsbOverCurrentPinSkip, //Port09: NC UsbOverCurrentPin6, //Port10: Front Panel UsbOverCurrentPinSkip, //Port11: NC UsbOverCurrentPin6, //Port12: Front Panel UsbOverCurrentPinSkip, //Port13: NC UsbOverCurrentPinSkip, UsbOverCurrentPinSkip }; USB_OVERCURRENT_PIN TypeWilsonCityRPUsb30OverCurrentMappings[PCH_MAX_USB3_PORTS] = { UsbOverCurrentPin6, //Port01: Front Panel UsbOverCurrentPin6, //Port02: Front Panel UsbOverCurrentPin0, //Port03: Rear Panel UsbOverCurrentPin1, //Port04: Rear Panel UsbOverCurrentPin1, //Port05: Rear Panel UsbOverCurrentPinSkip, //Port06: NC UsbOverCurrentPinSkip, UsbOverCurrentPinSkip, UsbOverCurrentPinSkip, UsbOverCurrentPinSkip }; USB2_PHY_PARAMETERS TypeWilsonCityRPUsb20AfeParams[PCH_H_XHCI_MAX_USB2_PHYSICAL_PORTS] = { {3, 0, 3, 1}, // PP0 {5, 0, 3, 1}, // PP1 {3, 0, 3, 1}, // PP2 {0, 5, 1, 1}, // PP3 {3, 0, 3, 1}, // PP4 {3, 0, 3, 1}, // PP5 {3, 0, 3, 1}, // PP6 {3, 0, 3, 1}, // PP7 {2, 2, 1, 0}, // PP8 {6, 0, 2, 1}, // PP9 {2, 2, 1, 0}, // PP10 {6, 0, 2, 1}, // PP11 {0, 5, 1, 1}, // PP12 {7, 0, 2, 1}, // PP13 }; EFI_STATUS TypeWilsonCityRPPlatformUsbOcUpdateCallback ( IN OUT USB_OVERCURRENT_PIN **Usb20OverCurrentMappings, IN OUT USB_OVERCURRENT_PIN **Usb30OverCurrentMappings, IN OUT USB2_PHY_PARAMETERS **Usb20AfeParams ) { *Usb20OverCurrentMappings = &TypeWilsonCityRPUsb20OverCurrentMappings[0]; *Usb30OverCurrentMappings = &TypeWilsonCityRPUsb30OverCurrentMappings[0]; *Usb20AfeParams = TypeWilsonCityRPUsb20AfeParams; return EFI_SUCCESS; } PLATFORM_USBOC_UPDATE_TABLE TypeWilsonCityRPUsbOcUpdate = { PLATFORM_USBOC_UPDATE_SIGNATURE, PLATFORM_USBOC_UPDATE_VERSION, TypeWilsonCityRPPlatformUsbOcUpdateCallback }; /** The Driver Entry Point. The function is the driver Entry point. @param ImageHandle A handle for the image that is initializing this driver @param SystemTable A pointer to the EFI system table @retval EFI_SUCCESS: Driver initialized successfully @retval EFI_LOAD_ERROR: Failed to Initialize or has been loaded @retval EFI_OUT_OF_RESOURCES Could not allocate needed resources **/ EFI_STATUS EFIAPI UsbOcUpdateEntry ( IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable ) { EFI_STATUS Status; UBA_CONFIG_DATABASE_PROTOCOL *UbaConfigProtocol = NULL; DEBUG((EFI_D_INFO, "UBA:UsbOcUpdate-TypeWilsonCityRP\n")); Status = gBS->LocateProtocol ( &gUbaConfigDatabaseProtocolGuid, NULL, &UbaConfigProtocol ); if (EFI_ERROR(Status)) { return Status; } Status = UbaConfigProtocol->AddData ( UbaConfigProtocol, &gDxePlatformUbaOcConfigDataGuid, &TypeWilsonCityRPUsbOcUpdate, sizeof(TypeWilsonCityRPUsbOcUpdate) ); return Status; }