/** @file
*  Fixed ACPI Description Table (FADT)
*
*  Copyright (c) 2020, Linaro Limited. All rights reserved.
*
*  SPDX-License-Identifier: BSD-2-Clause-Patent
**/

#include <Library/AcpiLib.h>
#include <IndustryStandard/Acpi.h>
#include <IndustryStandard/SbsaQemuAcpi.h>

EFI_ACPI_6_0_FIXED_ACPI_DESCRIPTION_TABLE Fadt = {
  SBSAQEMU_ACPI_HEADER (
    EFI_ACPI_6_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE,
    EFI_ACPI_6_0_FIXED_ACPI_DESCRIPTION_TABLE,
    EFI_ACPI_6_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION
  ),
  0,                                            // UINT32     FirmwareCtrl
  0,                                            // UINT32     Dsdt
  EFI_ACPI_RESERVED_BYTE,                       // UINT8      Reserved0
  EFI_ACPI_6_0_PM_PROFILE_ENTERPRISE_SERVER,    // 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
  0,                                            // UINT16     IaPcBootArch
  0,                                            // UINT8      Reserved1
  EFI_ACPI_6_0_HW_REDUCED_ACPI |
  EFI_ACPI_6_0_LOW_POWER_S0_IDLE_CAPABLE,       // UINT32     Flags
  NULL_GAS,                                     // GAS        ResetReg
  0,                                            // UINT8      ResetValue
  EFI_ACPI_6_0_ARM_PSCI_COMPLIANT,              // UINT16     ArmBootArchFlags
  EFI_ACPI_6_0_FIXED_ACPI_DESCRIPTION_TABLE_MINOR_REVISION,
                                                // UINT8      MinorRevision
  0,                                            // UINT64     XFirmwareCtrl
  0,                                            // UINT64     XDsdt
  NULL_GAS,                                     // GAS        XPm1aEvtBlk
  NULL_GAS,                                     // GAS        XPm1bEvtBlk
  NULL_GAS,                                     // GAS        XPm1aCntBlk
  NULL_GAS,                                     // GAS        XPm1bCntBlk
  NULL_GAS,                                     // GAS        XPm2CntBlk
  NULL_GAS,                                     // GAS        XPmTmrBlk
  NULL_GAS,                                     // GAS        XGpe0Blk
  NULL_GAS,                                     // GAS        XGpe1Blk
  NULL_GAS,                                     // GAS        SleepControlReg
  NULL_GAS,                                     // GAS        SleepStatusReg
  0                                             // UINT64     HypervisorVendorId
};

// Reference the table being generated to prevent the optimizer
// from removing the data structure from the executable
VOID* CONST ReferenceAcpiTable = &Fadt;
