From af1a266670d040d2f4083ff309d732d648afba2a Mon Sep 17 00:00:00 2001 From: Angelos Mouzakitis Date: Tue, 10 Oct 2023 14:33:42 +0000 Subject: Add submodule dependency files Change-Id: Iaf8d18082d3991dec7c0ebbea540f092188eb4ec --- .../Universal/Acpi/AcpiTableDxe/AcpiTable.c | 84 ++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 roms/edk2/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTable.c (limited to 'roms/edk2/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTable.c') diff --git a/roms/edk2/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTable.c b/roms/edk2/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTable.c new file mode 100644 index 000000000..1d91737cb --- /dev/null +++ b/roms/edk2/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTable.c @@ -0,0 +1,84 @@ +/** @file + ACPI Table Protocol Driver + + Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +// +// Includes +// +#include "AcpiTable.h" + +// +// Handle to install ACPI Table Protocol +// +EFI_HANDLE mHandle = NULL; +GLOBAL_REMOVE_IF_UNREFERENCED EFI_ACPI_TABLE_INSTANCE *mPrivateData = NULL; + +/** + Entry point of the ACPI table driver. + Creates and initializes an instance of the ACPI Table + Protocol and installs it on a new handle. + + @param ImageHandle A handle for the image that is initializing this driver. + @param SystemTable A pointer to the EFI system table. + + @return EFI_SUCCESS Driver initialized successfully. + @return EFI_LOAD_ERROR Failed to Initialize or has been loaded. + @return EFI_OUT_OF_RESOURCES Could not allocate needed resources. + +**/ +EFI_STATUS +EFIAPI +InitializeAcpiTableDxe ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + EFI_STATUS Status; + EFI_ACPI_TABLE_INSTANCE *PrivateData; + + // + // Initialize our protocol + // + PrivateData = AllocateZeroPool (sizeof (EFI_ACPI_TABLE_INSTANCE)); + ASSERT (PrivateData); + PrivateData->Signature = EFI_ACPI_TABLE_SIGNATURE; + + // + // Call all constructors per produced protocols + // + Status = AcpiTableAcpiTableConstructor (PrivateData); + if (EFI_ERROR (Status)) { + gBS->FreePool (PrivateData); + return EFI_LOAD_ERROR; + } + + // + // Install ACPI Table protocol + // + if (FeaturePcdGet (PcdInstallAcpiSdtProtocol)) { + mPrivateData = PrivateData; + Status = gBS->InstallMultipleProtocolInterfaces ( + &mHandle, + &gEfiAcpiTableProtocolGuid, + &PrivateData->AcpiTableProtocol, + &gEfiAcpiSdtProtocolGuid, + &mPrivateData->AcpiSdtProtocol, + NULL + ); + } else { + Status = gBS->InstallMultipleProtocolInterfaces ( + &mHandle, + &gEfiAcpiTableProtocolGuid, + &PrivateData->AcpiTableProtocol, + NULL + ); + } + ASSERT_EFI_ERROR (Status); + + return Status; +} + -- cgit 1.2.3-korg