/** @file
Copyright (c) 2017, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
VOID
DumpCharArray (
IN CHAR8 *Ch,
IN UINTN Size
);
VOID
DumpAcpiTableHeader (
IN EFI_ACPI_DESCRIPTION_HEADER *Table
);
BOOLEAN
IsMmioExit (
IN EFI_PHYSICAL_ADDRESS BaseAddress,
IN UINT64 Length,
IN BOOLEAN CheckAllocated
);
VOID
DumpAcpiHpet (
IN EFI_ACPI_HIGH_PRECISION_EVENT_TIMER_TABLE_HEADER *Hpet
)
{
DumpAcpiTableHeader (&Hpet->Header);
DEBUG ((DEBUG_INFO, " "));
DEBUG ((DEBUG_INFO, " Timer :"));
DEBUG ((DEBUG_INFO, " BlockId=0x%08x", Hpet->EventTimerBlockId));
DEBUG ((DEBUG_INFO, " BaseAddress=0x%016lx", Hpet->BaseAddressLower32Bit.Address));
DEBUG ((DEBUG_INFO, " HpetNumber=0x%08x", Hpet->HpetNumber));
DEBUG ((DEBUG_INFO, " MinClockTick=0x%04x", Hpet->MainCounterMinimumClockTickInPeriodicMode));
DEBUG ((DEBUG_INFO, " PageProtection=0x%02x", Hpet->PageProtectionAndOemAttribute));
DEBUG ((DEBUG_INFO, "\n"));
}
EFI_STATUS
CheckAcpiHpet (
IN EFI_ACPI_HIGH_PRECISION_EVENT_TIMER_TABLE_HEADER *Hpet
)
{
if (!IsMmioExit (Hpet->BaseAddressLower32Bit.Address, SIZE_4KB, TRUE)) {
DEBUG ((DEBUG_ERROR, "HPET resource (0x%x) is not reported correctly.\n", Hpet->BaseAddressLower32Bit.Address));
return EFI_NOT_STARTED;
}
return EFI_SUCCESS;
}