/** @file
Copyright (c) 2014, Applied Micro Curcuit Corporation. All rights reserved.
Copyright (c) 2015 - 2020, Hisilicon Limited. All rights reserved.
Copyright (c) 2015, Linaro Limited. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include "UpdateDsdt.h"
EFI_EVENT mUpdateAcpiDsdtTableEvent;
VOID
EFIAPI
UpdateAcpiDsdt (
IN EFI_EVENT Event,
IN VOID *Context
)
{
EFI_ACPI_TABLE_PROTOCOL *AcpiTableProtocol;
EFI_STATUS Status;
Status = gBS->LocateProtocol (
&gEfiAcpiTableProtocolGuid,
NULL,
(VOID**)&AcpiTableProtocol
);
if (EFI_ERROR (Status)) {
DEBUG ((DEBUG_ERROR, " Unable to locate ACPI table protocol\n"));
return;
}
Status = UpdateAcpiDsdtTable ();
if (EFI_ERROR (Status)) {
DEBUG ((DEBUG_ERROR, " UpdateAcpiDsdtTable Failed, Status = %r\n", Status));
}
gBS->CloseEvent (Event);
return;
}
EFI_STATUS
EFIAPI
AcpiPlatformEntryPoint (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
{
EFI_STATUS Status;
//
// Register notify function
//
Status = gBS->CreateEventEx (
EVT_NOTIFY_SIGNAL,
TPL_CALLBACK,
UpdateAcpiDsdt,
NULL,
&gEfiEventReadyToBootGuid,
&mUpdateAcpiDsdtTableEvent
);
if (EFI_ERROR (Status)) {
DEBUG ((DEBUG_ERROR, "Create ReadyToBoot event for UpdateAcpiDsdt failed.\n"));
} else {
DEBUG ((DEBUG_INFO, "Create ReadyToBoot event for UpdateAcpiDsdt success.\n"));
}
return Status;
}