123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221 |
- /** @file
- @copyright
- Copyright 2013 Intel Corporation. <BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
- **/
- #include <Base.h>
- #include <Uefi.h>
- #include <Library/BaseLib.h>
- #include <Library/BaseMemoryLib.h>
- #include <Library/MemoryAllocationLib.h>
- #include <Library/UefiBootServicesTableLib.h>
- #include <Library/DebugLib.h>
- #include <Library/UbaOpromUpdateLib.h>
- #include <Protocol/UbaCfgDb.h>
- BOOLEAN
- PlatformCheckPcieRootPort (
- IN UINTN Bus,
- IN UINT32 PcieSlotOpromBitMap
- )
- {
- EFI_STATUS Status;
- UBA_CONFIG_DATABASE_PROTOCOL *UbaConfigProtocol = NULL;
- UINTN DataLength = 0;
- PLATFORM_OPTION_ROM_UPDATE_DATA OptionRomUpdateTable;
- Status = gBS->LocateProtocol (
- &gUbaConfigDatabaseProtocolGuid,
- NULL,
- &UbaConfigProtocol
- );
- if (EFI_ERROR (Status)) {
- return TRUE;
- }
- DataLength = sizeof (OptionRomUpdateTable);
- Status = UbaConfigProtocol->GetData (
- UbaConfigProtocol,
- &gPlatformOptionRomUpdateConfigDataGuid,
- &OptionRomUpdateTable,
- &DataLength
- );
- if (EFI_ERROR (Status)) {
- return TRUE;
- }
- ASSERT (OptionRomUpdateTable.Signature == PLATFORM_OPTION_ROM_UPDATE_SIGNATURE);
- ASSERT (OptionRomUpdateTable.Version == PLATFORM_OPTION_ROM_UPDATE_VERSION);
- return OptionRomUpdateTable.CallCheckRootPort (Bus, PcieSlotOpromBitMap);
- }
- EFI_STATUS
- PlatformGetOptionRomTable (
- IN PC_PCI_OPTION_ROM_TABLE **OptionRomTable
- )
- {
- EFI_STATUS Status;
- UBA_CONFIG_DATABASE_PROTOCOL *UbaConfigProtocol = NULL;
- UINTN DataLength = 0;
- PLATFORM_OPTION_ROM_UPDATE_DATA OptionRomUpdateTable;
- Status = gBS->LocateProtocol (
- &gUbaConfigDatabaseProtocolGuid,
- NULL,
- &UbaConfigProtocol
- );
- if (EFI_ERROR (Status)) {
- return Status;
- }
- DataLength = sizeof (OptionRomUpdateTable);
- Status = UbaConfigProtocol->GetData (
- UbaConfigProtocol,
- &gPlatformOptionRomUpdateConfigDataGuid,
- &OptionRomUpdateTable,
- &DataLength
- );
- if (EFI_ERROR (Status)) {
- return Status;
- }
- ASSERT (OptionRomUpdateTable.Signature == PLATFORM_OPTION_ROM_UPDATE_SIGNATURE);
- ASSERT (OptionRomUpdateTable.Version == PLATFORM_OPTION_ROM_UPDATE_VERSION);
- if (OptionRomUpdateTable.GetOptionRomTable == NULL) {
- return EFI_NOT_FOUND;
- }
- return OptionRomUpdateTable.GetOptionRomTable (OptionRomTable);
- }
- EFI_STATUS
- PlatformGetNicSetupConfigTable (
- IN NIC_SETUP_CONFIGURATION_STUCT **NicSetupConfigTable,
- IN UINTN *NumOfConfig
- )
- {
- EFI_STATUS Status;
- UBA_CONFIG_DATABASE_PROTOCOL *UbaConfigProtocol = NULL;
- UINTN DataLength = 0;
- PLATFORM_OPTION_ROM_UPDATE_DATA OptionRomUpdateTable;
- Status = gBS->LocateProtocol (
- &gUbaConfigDatabaseProtocolGuid,
- NULL,
- &UbaConfigProtocol
- );
- if (EFI_ERROR (Status)) {
- return Status;
- }
- DataLength = sizeof (OptionRomUpdateTable);
- Status = UbaConfigProtocol->GetData (
- UbaConfigProtocol,
- &gPlatformOptionRomUpdateConfigDataGuid,
- &OptionRomUpdateTable,
- &DataLength
- );
- if (EFI_ERROR (Status)) {
- return Status;
- }
- ASSERT (OptionRomUpdateTable.Signature == PLATFORM_OPTION_ROM_UPDATE_SIGNATURE);
- ASSERT (OptionRomUpdateTable.Version == PLATFORM_OPTION_ROM_UPDATE_VERSION);
- if (OptionRomUpdateTable.GetNicSetupConfigTable == NULL) {
- return EFI_NOT_FOUND;
- }
- return OptionRomUpdateTable.GetNicSetupConfigTable (NicSetupConfigTable, NumOfConfig);
- }
- EFI_STATUS
- PlatformGetNicCapabilityTable (
- IN NIC_OPTIONROM_CAPBILITY_STRUCT **NicCapabilityTable,
- IN UINTN *NumOfNicCapTable
- )
- {
- EFI_STATUS Status;
- UBA_CONFIG_DATABASE_PROTOCOL *UbaConfigProtocol = NULL;
- UINTN DataLength = 0;
- PLATFORM_OPTION_ROM_UPDATE_DATA OptionRomUpdateTable;
- Status = gBS->LocateProtocol (
- &gUbaConfigDatabaseProtocolGuid,
- NULL,
- &UbaConfigProtocol
- );
- if (EFI_ERROR (Status)) {
- return Status;
- }
- DataLength = sizeof (OptionRomUpdateTable);
- Status = UbaConfigProtocol->GetData (
- UbaConfigProtocol,
- &gPlatformOptionRomUpdateConfigDataGuid,
- &OptionRomUpdateTable,
- &DataLength
- );
- if (EFI_ERROR (Status)) {
- return Status;
- }
- ASSERT (OptionRomUpdateTable.Signature == PLATFORM_OPTION_ROM_UPDATE_SIGNATURE);
- ASSERT (OptionRomUpdateTable.Version == PLATFORM_OPTION_ROM_UPDATE_VERSION);
- if (OptionRomUpdateTable.GetNicCapabilityTable == NULL) {
- return EFI_NOT_FOUND;
- }
- return OptionRomUpdateTable.GetNicCapabilityTable (NicCapabilityTable, NumOfNicCapTable);
- }
- EFI_STATUS
- PlatformSetupPcieSlotNumber (
- OUT UINT8 *PcieSlotItemCtrl
- )
- {
- EFI_STATUS Status;
- UBA_CONFIG_DATABASE_PROTOCOL *UbaConfigProtocol = NULL;
- UINTN DataLength = 0;
- PLATFORM_OPTION_ROM_UPDATE_DATA OptionRomUpdateTable;
- Status = gBS->LocateProtocol (
- &gUbaConfigDatabaseProtocolGuid,
- NULL,
- &UbaConfigProtocol
- );
- if (EFI_ERROR (Status)) {
- return Status;
- }
- DataLength = sizeof (OptionRomUpdateTable);
- Status = UbaConfigProtocol->GetData (
- UbaConfigProtocol,
- &gPlatformOptionRomUpdateConfigDataGuid,
- &OptionRomUpdateTable,
- &DataLength
- );
- if (EFI_ERROR (Status)) {
- return Status;
- }
- ASSERT (OptionRomUpdateTable.Signature == PLATFORM_OPTION_ROM_UPDATE_SIGNATURE);
- ASSERT (OptionRomUpdateTable.Version == PLATFORM_OPTION_ROM_UPDATE_VERSION);
- return OptionRomUpdateTable.SetupSlotNumber (PcieSlotItemCtrl);
- }
|