/** @file UbaSlotUpdateLib implementation. @copyright Copyright 2012 - 2016 Intel Corporation.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #include #include #include #include #include #include #include #include #include EFI_STATUS PlatformGetSlotTableData ( IN OUT IIO_BROADWAY_ADDRESS_DATA_ENTRY **BroadwayTable, IN OUT UINT8 *IOU2Setting, IN OUT UINT8 *FlagValue ) { EFI_STATUS Status; UBA_CONFIG_DATABASE_PROTOCOL *UbaConfigProtocol = NULL; UINTN DataLength = 0; PLATFORM_SLOT_UPDATE_TABLE IioSlotUpdateTable; Status = gBS->LocateProtocol ( &gUbaConfigDatabaseProtocolGuid, NULL, (VOID **) &UbaConfigProtocol ); if (EFI_ERROR (Status)) { return Status; } DataLength = sizeof(IioSlotUpdateTable); Status = UbaConfigProtocol->GetData ( UbaConfigProtocol, &gPlatformSlotDataDxeGuid, &IioSlotUpdateTable, &DataLength ); if (EFI_ERROR (Status)) { return Status; } ASSERT (IioSlotUpdateTable.Signature == PLATFORM_SLOT_UPDATE_SIGNATURE); ASSERT (IioSlotUpdateTable.Version == PLATFORM_SLOT_UPDATE_VERSION); *BroadwayTable = IioSlotUpdateTable.BroadwayTablePtr; *IOU2Setting = IioSlotUpdateTable.GetIOU2Setting (*IOU2Setting); *FlagValue = IioSlotUpdateTable.FlagValue; return Status; } EFI_STATUS PlatformGetSlotTableData2 ( IN OUT IIO_BROADWAY_ADDRESS_DATA_ENTRY **BroadwayTable, IN OUT UINT8 *IOU0Setting, IN OUT UINT8 *FlagValue, IN OUT UINT8 *IOU2Setting, IN UINT8 SkuPersonalityType ) { EFI_STATUS Status; UBA_CONFIG_DATABASE_PROTOCOL *UbaConfigProtocol = NULL; UINTN DataLength = 0; PLATFORM_SLOT_UPDATE_TABLE2 IioSlotUpdateTable; Status = gBS->LocateProtocol ( &gUbaConfigDatabaseProtocolGuid, NULL, (VOID **) &UbaConfigProtocol ); if (EFI_ERROR (Status)) { return Status; } DataLength = sizeof(IioSlotUpdateTable); if ((SkuPersonalityType == 1) || (SkuPersonalityType == 3)) { Status = UbaConfigProtocol->GetData ( UbaConfigProtocol, &gPlatformSlotDataDxeGuid2_1, &IioSlotUpdateTable, &DataLength ); } else { Status = UbaConfigProtocol->GetData ( UbaConfigProtocol, &gPlatformSlotDataDxeGuid2, &IioSlotUpdateTable, &DataLength ); } if (EFI_ERROR (Status)) { return Status; } ASSERT (IioSlotUpdateTable.Signature == PLATFORM_SLOT_UPDATE_SIGNATURE); ASSERT (IioSlotUpdateTable.Version == PLATFORM_SLOT_UPDATE_VERSION); *BroadwayTable = IioSlotUpdateTable.BroadwayTablePtr; *IOU0Setting = IioSlotUpdateTable.GetIOU0Setting (*IOU0Setting); *FlagValue = IioSlotUpdateTable.FlagValue; *IOU2Setting = IioSlotUpdateTable.GetIOU2Setting (SkuPersonalityType, *IOU2Setting); return Status; }