1 /** @file 2 * Fixed ACPI Description Table (FADT) 3 * 4 * Copyright (c) 2012 - 2016, ARM Limited. All rights reserved. 5 * 6 * This program and the accompanying materials 7 * are licensed and made available under the terms and conditions of the BSD License 8 * which accompanies this distribution. The full text of the license may be found at 9 * http://opensource.org/licenses/bsd-license.php 10 * 11 * THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 13 * 14 **/ 15 16 #include "ArmPlatform.h" 17 #include <Library/AcpiLib.h> 18 #include <IndustryStandard/Acpi.h> 19 20 #ifdef ARM_JUNO_ACPI_5_0 21 EFI_ACPI_5_0_FIXED_ACPI_DESCRIPTION_TABLE Fadt = { 22 ARM_ACPI_HEADER ( 23 EFI_ACPI_5_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE, 24 EFI_ACPI_5_0_FIXED_ACPI_DESCRIPTION_TABLE, 25 EFI_ACPI_5_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 26 ), 27 #else 28 EFI_ACPI_5_1_FIXED_ACPI_DESCRIPTION_TABLE Fadt = { 29 ARM_ACPI_HEADER ( 30 EFI_ACPI_5_1_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE, 31 EFI_ACPI_5_1_FIXED_ACPI_DESCRIPTION_TABLE, 32 EFI_ACPI_5_1_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 33 ), 34 #endif 35 0, // UINT32 FirmwareCtrl 36 0, // UINT32 Dsdt 37 EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved0 38 EFI_ACPI_5_0_PM_PROFILE_UNSPECIFIED, // UINT8 PreferredPmProfile 39 0, // UINT16 SciInt 40 0, // UINT32 SmiCmd 41 0, // UINT8 AcpiEnable 42 0, // UINT8 AcpiDisable 43 0, // UINT8 S4BiosReq 44 0, // UINT8 PstateCnt 45 0, // UINT32 Pm1aEvtBlk 46 0, // UINT32 Pm1bEvtBlk 47 0, // UINT32 Pm1aCntBlk 48 0, // UINT32 Pm1bCntBlk 49 0, // UINT32 Pm2CntBlk 50 0, // UINT32 PmTmrBlk 51 0, // UINT32 Gpe0Blk 52 0, // UINT32 Gpe1Blk 53 0, // UINT8 Pm1EvtLen 54 0, // UINT8 Pm1CntLen 55 0, // UINT8 Pm2CntLen 56 0, // UINT8 PmTmrLen 57 0, // UINT8 Gpe0BlkLen 58 0, // UINT8 Gpe1BlkLen 59 0, // UINT8 Gpe1Base 60 0, // UINT8 CstCnt 61 0, // UINT16 PLvl2Lat 62 0, // UINT16 PLvl3Lat 63 0, // UINT16 FlushSize 64 0, // UINT16 FlushStride 65 0, // UINT8 DutyOffset 66 0, // UINT8 DutyWidth 67 0, // UINT8 DayAlrm 68 0, // UINT8 MonAlrm 69 0, // UINT8 Century 70 0, // UINT16 IaPcBootArch 71 0, // UINT8 Reserved1 72 EFI_ACPI_5_0_HW_REDUCED_ACPI | EFI_ACPI_5_0_LOW_POWER_S0_IDLE_CAPABLE, // UINT32 Flags 73 NULL_GAS, // EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE ResetReg 74 0, // UINT8 ResetValue 75 #ifdef ARM_JUNO_ACPI_5_0 76 {EFI_ACPI_RESERVED_BYTE,EFI_ACPI_RESERVED_BYTE,EFI_ACPI_RESERVED_BYTE}, // UINT8 Reserved2[3] 77 #else 78 EFI_ACPI_5_1_ARM_PSCI_COMPLIANT, // UINT16 ArmBootArchFlags 79 EFI_ACPI_5_1_FIXED_ACPI_DESCRIPTION_TABLE_MINOR_REVISION, // UINT8 MinorRevision 80 #endif 81 0, // UINT64 XFirmwareCtrl 82 0, // UINT64 XDsdt 83 NULL_GAS, // EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XPm1aEvtBlk 84 NULL_GAS, // EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XPm1bEvtBlk 85 NULL_GAS, // EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XPm1aCntBlk 86 NULL_GAS, // EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XPm1bCntBlk 87 NULL_GAS, // EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XPm2CntBlk 88 NULL_GAS, // EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XPmTmrBlk 89 NULL_GAS, // EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XGpe0Blk 90 NULL_GAS, // EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XGpe1Blk 91 NULL_GAS, // EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE SleepControlReg 92 NULL_GAS // EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE SleepStatusReg 93 }; 94 95 // 96 // Reference the table being generated to prevent the optimizer from removing the 97 // data structure from the executable 98 // 99 VOID* CONST ReferenceAcpiTable = &Fadt; 100