/** @file * * Fixed ACPI Description Table (FADT) * * Copyright (c) 2019, Pete Batard * Copyright (c) 2018, Andrey Warkentin * Copyright (c) Microsoft Corporation. All rights reserved. * * SPDX-License-Identifier: BSD-2-Clause-Patent * **/ #include #include #include #include "AcpiTables.h" /* * Windows 10 on the Raspberry Pi 3 requires a specific OEM Id for FADT. * We replace the one that was defined in "AcpiTables.h", so that it is * picked by the ACPI_HEADER () macro. */ #if (RPI_MODEL == 3) #undef EFI_ACPI_OEM_ID #define EFI_ACPI_OEM_ID {'B','C','2','8','3','6'} #endif EFI_ACPI_6_3_FIXED_ACPI_DESCRIPTION_TABLE Fadt = { ACPI_HEADER ( EFI_ACPI_6_3_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE, EFI_ACPI_6_3_FIXED_ACPI_DESCRIPTION_TABLE, EFI_ACPI_6_3_FIXED_ACPI_DESCRIPTION_TABLE_REVISION ), 0, // UINT32 FirmwareCtrl 0, // UINT32 Dsdt EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved0 EFI_ACPI_6_3_PM_PROFILE_APPLIANCE_PC, // UINT8 PreferredPmProfile 0, // UINT16 SciInt 0, // UINT32 SmiCmd 0, // UINT8 AcpiEnable 0, // UINT8 AcpiDisable 0, // UINT8 S4BiosReq 0, // UINT8 PstateCnt 0, // UINT32 Pm1aEvtBlk 0, // UINT32 Pm1bEvtBlk 0, // UINT32 Pm1aCntBlk 0, // UINT32 Pm1bCntBlk 0, // UINT32 Pm2CntBlk 0, // UINT32 PmTmrBlk 0, // UINT32 Gpe0Blk 0, // UINT32 Gpe1Blk 0, // UINT8 Pm1EvtLen 0, // UINT8 Pm1CntLen 0, // UINT8 Pm2CntLen 0, // UINT8 PmTmrLen 0, // UINT8 Gpe0BlkLen 0, // UINT8 Gpe1BlkLen 0, // UINT8 Gpe1Base 0, // UINT8 CstCnt 0, // UINT16 PLvl2Lat 0, // UINT16 PLvl3Lat 0, // UINT16 FlushSize 0, // UINT16 FlushStride 0, // UINT8 DutyOffset 0, // UINT8 DutyWidth 0, // UINT8 DayAlrm 0, // UINT8 MonAlrm 0, // UINT8 Century EFI_ACPI_RESERVED_WORD, // UINT16 IaPcBootArch (Reserved on ARM) EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1 EFI_ACPI_6_3_WBINVD | EFI_ACPI_6_3_SLP_BUTTON | // UINT32 Flags EFI_ACPI_6_3_HW_REDUCED_ACPI, NULL_GAS, // EFI_ACPI_6_3_GENERIC_ADDRESS_STRUCTURE ResetReg 0, // UINT8 ResetValue EFI_ACPI_6_3_ARM_PSCI_COMPLIANT, // UINT16 ArmBootArchFlags EFI_ACPI_6_3_FIXED_ACPI_DESCRIPTION_TABLE_MINOR_REVISION, // UINT8 MinorRevision 0, // UINT64 XFirmwareCtrl 0, // UINT64 XDsdt NULL_GAS, // EFI_ACPI_6_3_GENERIC_ADDRESS_STRUCTURE XPm1aEvtBlk NULL_GAS, // EFI_ACPI_6_3_GENERIC_ADDRESS_STRUCTURE XPm1bEvtBlk NULL_GAS, // EFI_ACPI_6_3_GENERIC_ADDRESS_STRUCTURE XPm1aCntBlk NULL_GAS, // EFI_ACPI_6_3_GENERIC_ADDRESS_STRUCTURE XPm1bCntBlk NULL_GAS, // EFI_ACPI_6_3_GENERIC_ADDRESS_STRUCTURE XPm2CntBlk NULL_GAS, // EFI_ACPI_6_3_GENERIC_ADDRESS_STRUCTURE XPmTmrBlk NULL_GAS, // EFI_ACPI_6_3_GENERIC_ADDRESS_STRUCTURE XGpe0Blk NULL_GAS, // EFI_ACPI_6_3_GENERIC_ADDRESS_STRUCTURE XGpe1Blk NULL_GAS, // EFI_ACPI_6_3_GENERIC_ADDRESS_STRUCTURE SleepControlReg NULL_GAS // EFI_ACPI_6_3_GENERIC_ADDRESS_STRUCTURE SleepStatusReg }; // // Reference the table being generated to prevent the optimizer from removing the // data structure from the executable // VOID* CONST ReferenceAcpiTable = &Fadt;