1*f334afcfSToomas Soome /** @file 2*f334afcfSToomas Soome ACPI 5.1 definitions from the ACPI Specification Revision 5.1 Errata B January, 2016. 3*f334afcfSToomas Soome 4*f334afcfSToomas Soome Copyright (c) 2014 Hewlett-Packard Development Company, L.P.<BR> 5*f334afcfSToomas Soome Copyright (c) 2014 - 2022, Intel Corporation. All rights reserved.<BR> 6*f334afcfSToomas Soome (C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR> 7*f334afcfSToomas Soome Copyright (c) 2020, ARM Ltd. All rights reserved.<BR> 8*f334afcfSToomas Soome SPDX-License-Identifier: BSD-2-Clause-Patent 9*f334afcfSToomas Soome **/ 10*f334afcfSToomas Soome 11*f334afcfSToomas Soome #ifndef _ACPI_5_1_H_ 12*f334afcfSToomas Soome #define _ACPI_5_1_H_ 13*f334afcfSToomas Soome 14*f334afcfSToomas Soome #include <IndustryStandard/Acpi50.h> 15*f334afcfSToomas Soome 16*f334afcfSToomas Soome // 17*f334afcfSToomas Soome // Ensure proper structure formats 18*f334afcfSToomas Soome // 19*f334afcfSToomas Soome #pragma pack(1) 20*f334afcfSToomas Soome 21*f334afcfSToomas Soome /// 22*f334afcfSToomas Soome /// ACPI 5.1 Generic Address Space definition 23*f334afcfSToomas Soome /// 24*f334afcfSToomas Soome typedef struct { 25*f334afcfSToomas Soome UINT8 AddressSpaceId; 26*f334afcfSToomas Soome UINT8 RegisterBitWidth; 27*f334afcfSToomas Soome UINT8 RegisterBitOffset; 28*f334afcfSToomas Soome UINT8 AccessSize; 29*f334afcfSToomas Soome UINT64 Address; 30*f334afcfSToomas Soome } EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE; 31*f334afcfSToomas Soome 32*f334afcfSToomas Soome // 33*f334afcfSToomas Soome // Generic Address Space Address IDs 34*f334afcfSToomas Soome // 35*f334afcfSToomas Soome #define EFI_ACPI_5_1_SYSTEM_MEMORY 0 36*f334afcfSToomas Soome #define EFI_ACPI_5_1_SYSTEM_IO 1 37*f334afcfSToomas Soome #define EFI_ACPI_5_1_PCI_CONFIGURATION_SPACE 2 38*f334afcfSToomas Soome #define EFI_ACPI_5_1_EMBEDDED_CONTROLLER 3 39*f334afcfSToomas Soome #define EFI_ACPI_5_1_SMBUS 4 40*f334afcfSToomas Soome #define EFI_ACPI_5_1_PLATFORM_COMMUNICATION_CHANNEL 0x0A 41*f334afcfSToomas Soome #define EFI_ACPI_5_1_FUNCTIONAL_FIXED_HARDWARE 0x7F 42*f334afcfSToomas Soome 43*f334afcfSToomas Soome // 44*f334afcfSToomas Soome // Generic Address Space Access Sizes 45*f334afcfSToomas Soome // 46*f334afcfSToomas Soome #define EFI_ACPI_5_1_UNDEFINED 0 47*f334afcfSToomas Soome #define EFI_ACPI_5_1_BYTE 1 48*f334afcfSToomas Soome #define EFI_ACPI_5_1_WORD 2 49*f334afcfSToomas Soome #define EFI_ACPI_5_1_DWORD 3 50*f334afcfSToomas Soome #define EFI_ACPI_5_1_QWORD 4 51*f334afcfSToomas Soome 52*f334afcfSToomas Soome // 53*f334afcfSToomas Soome // ACPI 5.1 table structures 54*f334afcfSToomas Soome // 55*f334afcfSToomas Soome 56*f334afcfSToomas Soome /// 57*f334afcfSToomas Soome /// Root System Description Pointer Structure 58*f334afcfSToomas Soome /// 59*f334afcfSToomas Soome typedef struct { 60*f334afcfSToomas Soome UINT64 Signature; 61*f334afcfSToomas Soome UINT8 Checksum; 62*f334afcfSToomas Soome UINT8 OemId[6]; 63*f334afcfSToomas Soome UINT8 Revision; 64*f334afcfSToomas Soome UINT32 RsdtAddress; 65*f334afcfSToomas Soome UINT32 Length; 66*f334afcfSToomas Soome UINT64 XsdtAddress; 67*f334afcfSToomas Soome UINT8 ExtendedChecksum; 68*f334afcfSToomas Soome UINT8 Reserved[3]; 69*f334afcfSToomas Soome } EFI_ACPI_5_1_ROOT_SYSTEM_DESCRIPTION_POINTER; 70*f334afcfSToomas Soome 71*f334afcfSToomas Soome /// 72*f334afcfSToomas Soome /// RSD_PTR Revision (as defined in ACPI 5.1 spec.) 73*f334afcfSToomas Soome /// 74*f334afcfSToomas Soome #define EFI_ACPI_5_1_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02 ///< ACPISpec (Revision 5.1) says current value is 2 75*f334afcfSToomas Soome 76*f334afcfSToomas Soome /// 77*f334afcfSToomas Soome /// Common table header, this prefaces all ACPI tables, including FACS, but 78*f334afcfSToomas Soome /// excluding the RSD PTR structure 79*f334afcfSToomas Soome /// 80*f334afcfSToomas Soome typedef struct { 81*f334afcfSToomas Soome UINT32 Signature; 82*f334afcfSToomas Soome UINT32 Length; 83*f334afcfSToomas Soome } EFI_ACPI_5_1_COMMON_HEADER; 84*f334afcfSToomas Soome 85*f334afcfSToomas Soome // 86*f334afcfSToomas Soome // Root System Description Table 87*f334afcfSToomas Soome // No definition needed as it is a common description table header, the same with 88*f334afcfSToomas Soome // EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32 table pointers. 89*f334afcfSToomas Soome // 90*f334afcfSToomas Soome 91*f334afcfSToomas Soome /// 92*f334afcfSToomas Soome /// RSDT Revision (as defined in ACPI 5.1 spec.) 93*f334afcfSToomas Soome /// 94*f334afcfSToomas Soome #define EFI_ACPI_5_1_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01 95*f334afcfSToomas Soome 96*f334afcfSToomas Soome // 97*f334afcfSToomas Soome // Extended System Description Table 98*f334afcfSToomas Soome // No definition needed as it is a common description table header, the same with 99*f334afcfSToomas Soome // EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT64 table pointers. 100*f334afcfSToomas Soome // 101*f334afcfSToomas Soome 102*f334afcfSToomas Soome /// 103*f334afcfSToomas Soome /// XSDT Revision (as defined in ACPI 5.1 spec.) 104*f334afcfSToomas Soome /// 105*f334afcfSToomas Soome #define EFI_ACPI_5_1_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01 106*f334afcfSToomas Soome 107*f334afcfSToomas Soome /// 108*f334afcfSToomas Soome /// Fixed ACPI Description Table Structure (FADT) 109*f334afcfSToomas Soome /// 110*f334afcfSToomas Soome typedef struct { 111*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 112*f334afcfSToomas Soome UINT32 FirmwareCtrl; 113*f334afcfSToomas Soome UINT32 Dsdt; 114*f334afcfSToomas Soome UINT8 Reserved0; 115*f334afcfSToomas Soome UINT8 PreferredPmProfile; 116*f334afcfSToomas Soome UINT16 SciInt; 117*f334afcfSToomas Soome UINT32 SmiCmd; 118*f334afcfSToomas Soome UINT8 AcpiEnable; 119*f334afcfSToomas Soome UINT8 AcpiDisable; 120*f334afcfSToomas Soome UINT8 S4BiosReq; 121*f334afcfSToomas Soome UINT8 PstateCnt; 122*f334afcfSToomas Soome UINT32 Pm1aEvtBlk; 123*f334afcfSToomas Soome UINT32 Pm1bEvtBlk; 124*f334afcfSToomas Soome UINT32 Pm1aCntBlk; 125*f334afcfSToomas Soome UINT32 Pm1bCntBlk; 126*f334afcfSToomas Soome UINT32 Pm2CntBlk; 127*f334afcfSToomas Soome UINT32 PmTmrBlk; 128*f334afcfSToomas Soome UINT32 Gpe0Blk; 129*f334afcfSToomas Soome UINT32 Gpe1Blk; 130*f334afcfSToomas Soome UINT8 Pm1EvtLen; 131*f334afcfSToomas Soome UINT8 Pm1CntLen; 132*f334afcfSToomas Soome UINT8 Pm2CntLen; 133*f334afcfSToomas Soome UINT8 PmTmrLen; 134*f334afcfSToomas Soome UINT8 Gpe0BlkLen; 135*f334afcfSToomas Soome UINT8 Gpe1BlkLen; 136*f334afcfSToomas Soome UINT8 Gpe1Base; 137*f334afcfSToomas Soome UINT8 CstCnt; 138*f334afcfSToomas Soome UINT16 PLvl2Lat; 139*f334afcfSToomas Soome UINT16 PLvl3Lat; 140*f334afcfSToomas Soome UINT16 FlushSize; 141*f334afcfSToomas Soome UINT16 FlushStride; 142*f334afcfSToomas Soome UINT8 DutyOffset; 143*f334afcfSToomas Soome UINT8 DutyWidth; 144*f334afcfSToomas Soome UINT8 DayAlrm; 145*f334afcfSToomas Soome UINT8 MonAlrm; 146*f334afcfSToomas Soome UINT8 Century; 147*f334afcfSToomas Soome UINT16 IaPcBootArch; 148*f334afcfSToomas Soome UINT8 Reserved1; 149*f334afcfSToomas Soome UINT32 Flags; 150*f334afcfSToomas Soome EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE ResetReg; 151*f334afcfSToomas Soome UINT8 ResetValue; 152*f334afcfSToomas Soome UINT16 ArmBootArch; 153*f334afcfSToomas Soome UINT8 MinorVersion; 154*f334afcfSToomas Soome UINT64 XFirmwareCtrl; 155*f334afcfSToomas Soome UINT64 XDsdt; 156*f334afcfSToomas Soome EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE XPm1aEvtBlk; 157*f334afcfSToomas Soome EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE XPm1bEvtBlk; 158*f334afcfSToomas Soome EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE XPm1aCntBlk; 159*f334afcfSToomas Soome EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE XPm1bCntBlk; 160*f334afcfSToomas Soome EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE XPm2CntBlk; 161*f334afcfSToomas Soome EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE XPmTmrBlk; 162*f334afcfSToomas Soome EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE XGpe0Blk; 163*f334afcfSToomas Soome EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE XGpe1Blk; 164*f334afcfSToomas Soome EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE SleepControlReg; 165*f334afcfSToomas Soome EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE SleepStatusReg; 166*f334afcfSToomas Soome } EFI_ACPI_5_1_FIXED_ACPI_DESCRIPTION_TABLE; 167*f334afcfSToomas Soome 168*f334afcfSToomas Soome /// 169*f334afcfSToomas Soome /// FADT Version (as defined in ACPI 5.1 spec.) 170*f334afcfSToomas Soome /// 171*f334afcfSToomas Soome #define EFI_ACPI_5_1_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 0x05 172*f334afcfSToomas Soome #define EFI_ACPI_5_1_FIXED_ACPI_DESCRIPTION_TABLE_MINOR_REVISION 0x01 173*f334afcfSToomas Soome 174*f334afcfSToomas Soome // 175*f334afcfSToomas Soome // Fixed ACPI Description Table Preferred Power Management Profile 176*f334afcfSToomas Soome // 177*f334afcfSToomas Soome #define EFI_ACPI_5_1_PM_PROFILE_UNSPECIFIED 0 178*f334afcfSToomas Soome #define EFI_ACPI_5_1_PM_PROFILE_DESKTOP 1 179*f334afcfSToomas Soome #define EFI_ACPI_5_1_PM_PROFILE_MOBILE 2 180*f334afcfSToomas Soome #define EFI_ACPI_5_1_PM_PROFILE_WORKSTATION 3 181*f334afcfSToomas Soome #define EFI_ACPI_5_1_PM_PROFILE_ENTERPRISE_SERVER 4 182*f334afcfSToomas Soome #define EFI_ACPI_5_1_PM_PROFILE_SOHO_SERVER 5 183*f334afcfSToomas Soome #define EFI_ACPI_5_1_PM_PROFILE_APPLIANCE_PC 6 184*f334afcfSToomas Soome #define EFI_ACPI_5_1_PM_PROFILE_PERFORMANCE_SERVER 7 185*f334afcfSToomas Soome #define EFI_ACPI_5_1_PM_PROFILE_TABLET 8 186*f334afcfSToomas Soome 187*f334afcfSToomas Soome // 188*f334afcfSToomas Soome // Fixed ACPI Description Table Boot Architecture Flags 189*f334afcfSToomas Soome // All other bits are reserved and must be set to 0. 190*f334afcfSToomas Soome // 191*f334afcfSToomas Soome #define EFI_ACPI_5_1_LEGACY_DEVICES BIT0 192*f334afcfSToomas Soome #define EFI_ACPI_5_1_8042 BIT1 193*f334afcfSToomas Soome #define EFI_ACPI_5_1_VGA_NOT_PRESENT BIT2 194*f334afcfSToomas Soome #define EFI_ACPI_5_1_MSI_NOT_SUPPORTED BIT3 195*f334afcfSToomas Soome #define EFI_ACPI_5_1_PCIE_ASPM_CONTROLS BIT4 196*f334afcfSToomas Soome #define EFI_ACPI_5_1_CMOS_RTC_NOT_PRESENT BIT5 197*f334afcfSToomas Soome 198*f334afcfSToomas Soome // 199*f334afcfSToomas Soome // Fixed ACPI Description Table Arm Boot Architecture Flags 200*f334afcfSToomas Soome // All other bits are reserved and must be set to 0. 201*f334afcfSToomas Soome // 202*f334afcfSToomas Soome #define EFI_ACPI_5_1_ARM_PSCI_COMPLIANT BIT0 203*f334afcfSToomas Soome #define EFI_ACPI_5_1_ARM_PSCI_USE_HVC BIT1 204*f334afcfSToomas Soome 205*f334afcfSToomas Soome // 206*f334afcfSToomas Soome // Fixed ACPI Description Table Fixed Feature Flags 207*f334afcfSToomas Soome // All other bits are reserved and must be set to 0. 208*f334afcfSToomas Soome // 209*f334afcfSToomas Soome #define EFI_ACPI_5_1_WBINVD BIT0 210*f334afcfSToomas Soome #define EFI_ACPI_5_1_WBINVD_FLUSH BIT1 211*f334afcfSToomas Soome #define EFI_ACPI_5_1_PROC_C1 BIT2 212*f334afcfSToomas Soome #define EFI_ACPI_5_1_P_LVL2_UP BIT3 213*f334afcfSToomas Soome #define EFI_ACPI_5_1_PWR_BUTTON BIT4 214*f334afcfSToomas Soome #define EFI_ACPI_5_1_SLP_BUTTON BIT5 215*f334afcfSToomas Soome #define EFI_ACPI_5_1_FIX_RTC BIT6 216*f334afcfSToomas Soome #define EFI_ACPI_5_1_RTC_S4 BIT7 217*f334afcfSToomas Soome #define EFI_ACPI_5_1_TMR_VAL_EXT BIT8 218*f334afcfSToomas Soome #define EFI_ACPI_5_1_DCK_CAP BIT9 219*f334afcfSToomas Soome #define EFI_ACPI_5_1_RESET_REG_SUP BIT10 220*f334afcfSToomas Soome #define EFI_ACPI_5_1_SEALED_CASE BIT11 221*f334afcfSToomas Soome #define EFI_ACPI_5_1_HEADLESS BIT12 222*f334afcfSToomas Soome #define EFI_ACPI_5_1_CPU_SW_SLP BIT13 223*f334afcfSToomas Soome #define EFI_ACPI_5_1_PCI_EXP_WAK BIT14 224*f334afcfSToomas Soome #define EFI_ACPI_5_1_USE_PLATFORM_CLOCK BIT15 225*f334afcfSToomas Soome #define EFI_ACPI_5_1_S4_RTC_STS_VALID BIT16 226*f334afcfSToomas Soome #define EFI_ACPI_5_1_REMOTE_POWER_ON_CAPABLE BIT17 227*f334afcfSToomas Soome #define EFI_ACPI_5_1_FORCE_APIC_CLUSTER_MODEL BIT18 228*f334afcfSToomas Soome #define EFI_ACPI_5_1_FORCE_APIC_PHYSICAL_DESTINATION_MODE BIT19 229*f334afcfSToomas Soome #define EFI_ACPI_5_1_HW_REDUCED_ACPI BIT20 230*f334afcfSToomas Soome #define EFI_ACPI_5_1_LOW_POWER_S0_IDLE_CAPABLE BIT21 231*f334afcfSToomas Soome 232*f334afcfSToomas Soome /// 233*f334afcfSToomas Soome /// Firmware ACPI Control Structure 234*f334afcfSToomas Soome /// 235*f334afcfSToomas Soome typedef struct { 236*f334afcfSToomas Soome UINT32 Signature; 237*f334afcfSToomas Soome UINT32 Length; 238*f334afcfSToomas Soome UINT32 HardwareSignature; 239*f334afcfSToomas Soome UINT32 FirmwareWakingVector; 240*f334afcfSToomas Soome UINT32 GlobalLock; 241*f334afcfSToomas Soome UINT32 Flags; 242*f334afcfSToomas Soome UINT64 XFirmwareWakingVector; 243*f334afcfSToomas Soome UINT8 Version; 244*f334afcfSToomas Soome UINT8 Reserved0[3]; 245*f334afcfSToomas Soome UINT32 OspmFlags; 246*f334afcfSToomas Soome UINT8 Reserved1[24]; 247*f334afcfSToomas Soome } EFI_ACPI_5_1_FIRMWARE_ACPI_CONTROL_STRUCTURE; 248*f334afcfSToomas Soome 249*f334afcfSToomas Soome /// 250*f334afcfSToomas Soome /// FACS Version (as defined in ACPI 5.1 spec.) 251*f334afcfSToomas Soome /// 252*f334afcfSToomas Soome #define EFI_ACPI_5_1_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION 0x02 253*f334afcfSToomas Soome 254*f334afcfSToomas Soome /// 255*f334afcfSToomas Soome /// Firmware Control Structure Feature Flags 256*f334afcfSToomas Soome /// All other bits are reserved and must be set to 0. 257*f334afcfSToomas Soome /// 258*f334afcfSToomas Soome #define EFI_ACPI_5_1_S4BIOS_F BIT0 259*f334afcfSToomas Soome #define EFI_ACPI_5_1_64BIT_WAKE_SUPPORTED_F BIT1 260*f334afcfSToomas Soome 261*f334afcfSToomas Soome /// 262*f334afcfSToomas Soome /// OSPM Enabled Firmware Control Structure Flags 263*f334afcfSToomas Soome /// All other bits are reserved and must be set to 0. 264*f334afcfSToomas Soome /// 265*f334afcfSToomas Soome #define EFI_ACPI_5_1_OSPM_64BIT_WAKE_F BIT0 266*f334afcfSToomas Soome 267*f334afcfSToomas Soome // 268*f334afcfSToomas Soome // Differentiated System Description Table, 269*f334afcfSToomas Soome // Secondary System Description Table 270*f334afcfSToomas Soome // and Persistent System Description Table, 271*f334afcfSToomas Soome // no definition needed as they are common description table header, the same with 272*f334afcfSToomas Soome // EFI_ACPI_DESCRIPTION_HEADER, followed by a definition block. 273*f334afcfSToomas Soome // 274*f334afcfSToomas Soome #define EFI_ACPI_5_1_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x02 275*f334afcfSToomas Soome #define EFI_ACPI_5_1_SECONDARY_SYSTEM_DESCRIPTION_TABLE_REVISION 0x02 276*f334afcfSToomas Soome 277*f334afcfSToomas Soome /// 278*f334afcfSToomas Soome /// Multiple APIC Description Table header definition. The rest of the table 279*f334afcfSToomas Soome /// must be defined in a platform specific manner. 280*f334afcfSToomas Soome /// 281*f334afcfSToomas Soome typedef struct { 282*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 283*f334afcfSToomas Soome UINT32 LocalApicAddress; 284*f334afcfSToomas Soome UINT32 Flags; 285*f334afcfSToomas Soome } EFI_ACPI_5_1_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER; 286*f334afcfSToomas Soome 287*f334afcfSToomas Soome /// 288*f334afcfSToomas Soome /// MADT Revision (as defined in ACPI 5.1 spec.) 289*f334afcfSToomas Soome /// 290*f334afcfSToomas Soome #define EFI_ACPI_5_1_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x03 291*f334afcfSToomas Soome 292*f334afcfSToomas Soome /// 293*f334afcfSToomas Soome /// Multiple APIC Flags 294*f334afcfSToomas Soome /// All other bits are reserved and must be set to 0. 295*f334afcfSToomas Soome /// 296*f334afcfSToomas Soome #define EFI_ACPI_5_1_PCAT_COMPAT BIT0 297*f334afcfSToomas Soome 298*f334afcfSToomas Soome // 299*f334afcfSToomas Soome // Multiple APIC Description Table APIC structure types 300*f334afcfSToomas Soome // All other values between 0x0D and 0x7F are reserved and 301*f334afcfSToomas Soome // will be ignored by OSPM. 0x80 ~ 0xFF are reserved for OEM. 302*f334afcfSToomas Soome // 303*f334afcfSToomas Soome #define EFI_ACPI_5_1_PROCESSOR_LOCAL_APIC 0x00 304*f334afcfSToomas Soome #define EFI_ACPI_5_1_IO_APIC 0x01 305*f334afcfSToomas Soome #define EFI_ACPI_5_1_INTERRUPT_SOURCE_OVERRIDE 0x02 306*f334afcfSToomas Soome #define EFI_ACPI_5_1_NON_MASKABLE_INTERRUPT_SOURCE 0x03 307*f334afcfSToomas Soome #define EFI_ACPI_5_1_LOCAL_APIC_NMI 0x04 308*f334afcfSToomas Soome #define EFI_ACPI_5_1_LOCAL_APIC_ADDRESS_OVERRIDE 0x05 309*f334afcfSToomas Soome #define EFI_ACPI_5_1_IO_SAPIC 0x06 310*f334afcfSToomas Soome #define EFI_ACPI_5_1_LOCAL_SAPIC 0x07 311*f334afcfSToomas Soome #define EFI_ACPI_5_1_PLATFORM_INTERRUPT_SOURCES 0x08 312*f334afcfSToomas Soome #define EFI_ACPI_5_1_PROCESSOR_LOCAL_X2APIC 0x09 313*f334afcfSToomas Soome #define EFI_ACPI_5_1_LOCAL_X2APIC_NMI 0x0A 314*f334afcfSToomas Soome #define EFI_ACPI_5_1_GIC 0x0B 315*f334afcfSToomas Soome #define EFI_ACPI_5_1_GICD 0x0C 316*f334afcfSToomas Soome #define EFI_ACPI_5_1_GIC_MSI_FRAME 0x0D 317*f334afcfSToomas Soome #define EFI_ACPI_5_1_GICR 0x0E 318*f334afcfSToomas Soome 319*f334afcfSToomas Soome // 320*f334afcfSToomas Soome // APIC Structure Definitions 321*f334afcfSToomas Soome // 322*f334afcfSToomas Soome 323*f334afcfSToomas Soome /// 324*f334afcfSToomas Soome /// Processor Local APIC Structure Definition 325*f334afcfSToomas Soome /// 326*f334afcfSToomas Soome typedef struct { 327*f334afcfSToomas Soome UINT8 Type; 328*f334afcfSToomas Soome UINT8 Length; 329*f334afcfSToomas Soome UINT8 AcpiProcessorId; 330*f334afcfSToomas Soome UINT8 ApicId; 331*f334afcfSToomas Soome UINT32 Flags; 332*f334afcfSToomas Soome } EFI_ACPI_5_1_PROCESSOR_LOCAL_APIC_STRUCTURE; 333*f334afcfSToomas Soome 334*f334afcfSToomas Soome /// 335*f334afcfSToomas Soome /// Local APIC Flags. All other bits are reserved and must be 0. 336*f334afcfSToomas Soome /// 337*f334afcfSToomas Soome #define EFI_ACPI_5_1_LOCAL_APIC_ENABLED BIT0 338*f334afcfSToomas Soome 339*f334afcfSToomas Soome /// 340*f334afcfSToomas Soome /// IO APIC Structure 341*f334afcfSToomas Soome /// 342*f334afcfSToomas Soome typedef struct { 343*f334afcfSToomas Soome UINT8 Type; 344*f334afcfSToomas Soome UINT8 Length; 345*f334afcfSToomas Soome UINT8 IoApicId; 346*f334afcfSToomas Soome UINT8 Reserved; 347*f334afcfSToomas Soome UINT32 IoApicAddress; 348*f334afcfSToomas Soome UINT32 GlobalSystemInterruptBase; 349*f334afcfSToomas Soome } EFI_ACPI_5_1_IO_APIC_STRUCTURE; 350*f334afcfSToomas Soome 351*f334afcfSToomas Soome /// 352*f334afcfSToomas Soome /// Interrupt Source Override Structure 353*f334afcfSToomas Soome /// 354*f334afcfSToomas Soome typedef struct { 355*f334afcfSToomas Soome UINT8 Type; 356*f334afcfSToomas Soome UINT8 Length; 357*f334afcfSToomas Soome UINT8 Bus; 358*f334afcfSToomas Soome UINT8 Source; 359*f334afcfSToomas Soome UINT32 GlobalSystemInterrupt; 360*f334afcfSToomas Soome UINT16 Flags; 361*f334afcfSToomas Soome } EFI_ACPI_5_1_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE; 362*f334afcfSToomas Soome 363*f334afcfSToomas Soome /// 364*f334afcfSToomas Soome /// Platform Interrupt Sources Structure Definition 365*f334afcfSToomas Soome /// 366*f334afcfSToomas Soome typedef struct { 367*f334afcfSToomas Soome UINT8 Type; 368*f334afcfSToomas Soome UINT8 Length; 369*f334afcfSToomas Soome UINT16 Flags; 370*f334afcfSToomas Soome UINT8 InterruptType; 371*f334afcfSToomas Soome UINT8 ProcessorId; 372*f334afcfSToomas Soome UINT8 ProcessorEid; 373*f334afcfSToomas Soome UINT8 IoSapicVector; 374*f334afcfSToomas Soome UINT32 GlobalSystemInterrupt; 375*f334afcfSToomas Soome UINT32 PlatformInterruptSourceFlags; 376*f334afcfSToomas Soome UINT8 CpeiProcessorOverride; 377*f334afcfSToomas Soome UINT8 Reserved[31]; 378*f334afcfSToomas Soome } EFI_ACPI_5_1_PLATFORM_INTERRUPT_APIC_STRUCTURE; 379*f334afcfSToomas Soome 380*f334afcfSToomas Soome // 381*f334afcfSToomas Soome // MPS INTI flags. 382*f334afcfSToomas Soome // All other bits are reserved and must be set to 0. 383*f334afcfSToomas Soome // 384*f334afcfSToomas Soome #define EFI_ACPI_5_1_POLARITY (3 << 0) 385*f334afcfSToomas Soome #define EFI_ACPI_5_1_TRIGGER_MODE (3 << 2) 386*f334afcfSToomas Soome 387*f334afcfSToomas Soome /// 388*f334afcfSToomas Soome /// Non-Maskable Interrupt Source Structure 389*f334afcfSToomas Soome /// 390*f334afcfSToomas Soome typedef struct { 391*f334afcfSToomas Soome UINT8 Type; 392*f334afcfSToomas Soome UINT8 Length; 393*f334afcfSToomas Soome UINT16 Flags; 394*f334afcfSToomas Soome UINT32 GlobalSystemInterrupt; 395*f334afcfSToomas Soome } EFI_ACPI_5_1_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE; 396*f334afcfSToomas Soome 397*f334afcfSToomas Soome /// 398*f334afcfSToomas Soome /// Local APIC NMI Structure 399*f334afcfSToomas Soome /// 400*f334afcfSToomas Soome typedef struct { 401*f334afcfSToomas Soome UINT8 Type; 402*f334afcfSToomas Soome UINT8 Length; 403*f334afcfSToomas Soome UINT8 AcpiProcessorId; 404*f334afcfSToomas Soome UINT16 Flags; 405*f334afcfSToomas Soome UINT8 LocalApicLint; 406*f334afcfSToomas Soome } EFI_ACPI_5_1_LOCAL_APIC_NMI_STRUCTURE; 407*f334afcfSToomas Soome 408*f334afcfSToomas Soome /// 409*f334afcfSToomas Soome /// Local APIC Address Override Structure 410*f334afcfSToomas Soome /// 411*f334afcfSToomas Soome typedef struct { 412*f334afcfSToomas Soome UINT8 Type; 413*f334afcfSToomas Soome UINT8 Length; 414*f334afcfSToomas Soome UINT16 Reserved; 415*f334afcfSToomas Soome UINT64 LocalApicAddress; 416*f334afcfSToomas Soome } EFI_ACPI_5_1_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE; 417*f334afcfSToomas Soome 418*f334afcfSToomas Soome /// 419*f334afcfSToomas Soome /// IO SAPIC Structure 420*f334afcfSToomas Soome /// 421*f334afcfSToomas Soome typedef struct { 422*f334afcfSToomas Soome UINT8 Type; 423*f334afcfSToomas Soome UINT8 Length; 424*f334afcfSToomas Soome UINT8 IoApicId; 425*f334afcfSToomas Soome UINT8 Reserved; 426*f334afcfSToomas Soome UINT32 GlobalSystemInterruptBase; 427*f334afcfSToomas Soome UINT64 IoSapicAddress; 428*f334afcfSToomas Soome } EFI_ACPI_5_1_IO_SAPIC_STRUCTURE; 429*f334afcfSToomas Soome 430*f334afcfSToomas Soome /// 431*f334afcfSToomas Soome /// Local SAPIC Structure 432*f334afcfSToomas Soome /// This struct followed by a null-terminated ASCII string - ACPI Processor UID String 433*f334afcfSToomas Soome /// 434*f334afcfSToomas Soome typedef struct { 435*f334afcfSToomas Soome UINT8 Type; 436*f334afcfSToomas Soome UINT8 Length; 437*f334afcfSToomas Soome UINT8 AcpiProcessorId; 438*f334afcfSToomas Soome UINT8 LocalSapicId; 439*f334afcfSToomas Soome UINT8 LocalSapicEid; 440*f334afcfSToomas Soome UINT8 Reserved[3]; 441*f334afcfSToomas Soome UINT32 Flags; 442*f334afcfSToomas Soome UINT32 ACPIProcessorUIDValue; 443*f334afcfSToomas Soome } EFI_ACPI_5_1_PROCESSOR_LOCAL_SAPIC_STRUCTURE; 444*f334afcfSToomas Soome 445*f334afcfSToomas Soome /// 446*f334afcfSToomas Soome /// Platform Interrupt Sources Structure 447*f334afcfSToomas Soome /// 448*f334afcfSToomas Soome typedef struct { 449*f334afcfSToomas Soome UINT8 Type; 450*f334afcfSToomas Soome UINT8 Length; 451*f334afcfSToomas Soome UINT16 Flags; 452*f334afcfSToomas Soome UINT8 InterruptType; 453*f334afcfSToomas Soome UINT8 ProcessorId; 454*f334afcfSToomas Soome UINT8 ProcessorEid; 455*f334afcfSToomas Soome UINT8 IoSapicVector; 456*f334afcfSToomas Soome UINT32 GlobalSystemInterrupt; 457*f334afcfSToomas Soome UINT32 PlatformInterruptSourceFlags; 458*f334afcfSToomas Soome } EFI_ACPI_5_1_PLATFORM_INTERRUPT_SOURCES_STRUCTURE; 459*f334afcfSToomas Soome 460*f334afcfSToomas Soome /// 461*f334afcfSToomas Soome /// Platform Interrupt Source Flags. 462*f334afcfSToomas Soome /// All other bits are reserved and must be set to 0. 463*f334afcfSToomas Soome /// 464*f334afcfSToomas Soome #define EFI_ACPI_5_1_CPEI_PROCESSOR_OVERRIDE BIT0 465*f334afcfSToomas Soome 466*f334afcfSToomas Soome /// 467*f334afcfSToomas Soome /// Processor Local x2APIC Structure Definition 468*f334afcfSToomas Soome /// 469*f334afcfSToomas Soome typedef struct { 470*f334afcfSToomas Soome UINT8 Type; 471*f334afcfSToomas Soome UINT8 Length; 472*f334afcfSToomas Soome UINT8 Reserved[2]; 473*f334afcfSToomas Soome UINT32 X2ApicId; 474*f334afcfSToomas Soome UINT32 Flags; 475*f334afcfSToomas Soome UINT32 AcpiProcessorUid; 476*f334afcfSToomas Soome } EFI_ACPI_5_1_PROCESSOR_LOCAL_X2APIC_STRUCTURE; 477*f334afcfSToomas Soome 478*f334afcfSToomas Soome /// 479*f334afcfSToomas Soome /// Local x2APIC NMI Structure 480*f334afcfSToomas Soome /// 481*f334afcfSToomas Soome typedef struct { 482*f334afcfSToomas Soome UINT8 Type; 483*f334afcfSToomas Soome UINT8 Length; 484*f334afcfSToomas Soome UINT16 Flags; 485*f334afcfSToomas Soome UINT32 AcpiProcessorUid; 486*f334afcfSToomas Soome UINT8 LocalX2ApicLint; 487*f334afcfSToomas Soome UINT8 Reserved[3]; 488*f334afcfSToomas Soome } EFI_ACPI_5_1_LOCAL_X2APIC_NMI_STRUCTURE; 489*f334afcfSToomas Soome 490*f334afcfSToomas Soome /// 491*f334afcfSToomas Soome /// GIC Structure 492*f334afcfSToomas Soome /// 493*f334afcfSToomas Soome typedef struct { 494*f334afcfSToomas Soome UINT8 Type; 495*f334afcfSToomas Soome UINT8 Length; 496*f334afcfSToomas Soome UINT16 Reserved; 497*f334afcfSToomas Soome UINT32 CPUInterfaceNumber; 498*f334afcfSToomas Soome UINT32 AcpiProcessorUid; 499*f334afcfSToomas Soome UINT32 Flags; 500*f334afcfSToomas Soome UINT32 ParkingProtocolVersion; 501*f334afcfSToomas Soome UINT32 PerformanceInterruptGsiv; 502*f334afcfSToomas Soome UINT64 ParkedAddress; 503*f334afcfSToomas Soome UINT64 PhysicalBaseAddress; 504*f334afcfSToomas Soome UINT64 GICV; 505*f334afcfSToomas Soome UINT64 GICH; 506*f334afcfSToomas Soome UINT32 VGICMaintenanceInterrupt; 507*f334afcfSToomas Soome UINT64 GICRBaseAddress; 508*f334afcfSToomas Soome UINT64 MPIDR; 509*f334afcfSToomas Soome } EFI_ACPI_5_1_GIC_STRUCTURE; 510*f334afcfSToomas Soome 511*f334afcfSToomas Soome /// 512*f334afcfSToomas Soome /// GIC Flags. All other bits are reserved and must be 0. 513*f334afcfSToomas Soome /// 514*f334afcfSToomas Soome #define EFI_ACPI_5_1_GIC_ENABLED BIT0 515*f334afcfSToomas Soome #define EFI_ACPI_5_1_PERFORMANCE_INTERRUPT_MODEL BIT1 516*f334afcfSToomas Soome #define EFI_ACPI_5_1_VGIC_MAINTENANCE_INTERRUPT_MODE_FLAGS BIT2 517*f334afcfSToomas Soome 518*f334afcfSToomas Soome /// 519*f334afcfSToomas Soome /// GIC Distributor Structure 520*f334afcfSToomas Soome /// 521*f334afcfSToomas Soome typedef struct { 522*f334afcfSToomas Soome UINT8 Type; 523*f334afcfSToomas Soome UINT8 Length; 524*f334afcfSToomas Soome UINT16 Reserved1; 525*f334afcfSToomas Soome UINT32 GicId; 526*f334afcfSToomas Soome UINT64 PhysicalBaseAddress; 527*f334afcfSToomas Soome UINT32 SystemVectorBase; 528*f334afcfSToomas Soome UINT8 GicVersion; 529*f334afcfSToomas Soome UINT8 Reserved2[3]; 530*f334afcfSToomas Soome } EFI_ACPI_5_1_GIC_DISTRIBUTOR_STRUCTURE; 531*f334afcfSToomas Soome 532*f334afcfSToomas Soome /// 533*f334afcfSToomas Soome /// GIC Version 534*f334afcfSToomas Soome /// 535*f334afcfSToomas Soome #define EFI_ACPI_5_1_GIC_V1 0x01 536*f334afcfSToomas Soome #define EFI_ACPI_5_1_GIC_V2 0x02 537*f334afcfSToomas Soome #define EFI_ACPI_5_1_GIC_V3 0x03 538*f334afcfSToomas Soome #define EFI_ACPI_5_1_GIC_V4 0x04 539*f334afcfSToomas Soome 540*f334afcfSToomas Soome /// 541*f334afcfSToomas Soome /// GIC MSI Frame Structure 542*f334afcfSToomas Soome /// 543*f334afcfSToomas Soome typedef struct { 544*f334afcfSToomas Soome UINT8 Type; 545*f334afcfSToomas Soome UINT8 Length; 546*f334afcfSToomas Soome UINT16 Reserved1; 547*f334afcfSToomas Soome UINT32 GicMsiFrameId; 548*f334afcfSToomas Soome UINT64 PhysicalBaseAddress; 549*f334afcfSToomas Soome UINT32 Flags; 550*f334afcfSToomas Soome UINT16 SPICount; 551*f334afcfSToomas Soome UINT16 SPIBase; 552*f334afcfSToomas Soome } EFI_ACPI_5_1_GIC_MSI_FRAME_STRUCTURE; 553*f334afcfSToomas Soome 554*f334afcfSToomas Soome /// 555*f334afcfSToomas Soome /// GIC MSI Frame Flags. All other bits are reserved and must be 0. 556*f334afcfSToomas Soome /// 557*f334afcfSToomas Soome #define EFI_ACPI_5_1_SPI_COUNT_BASE_SELECT BIT0 558*f334afcfSToomas Soome 559*f334afcfSToomas Soome /// 560*f334afcfSToomas Soome /// GICR Structure 561*f334afcfSToomas Soome /// 562*f334afcfSToomas Soome typedef struct { 563*f334afcfSToomas Soome UINT8 Type; 564*f334afcfSToomas Soome UINT8 Length; 565*f334afcfSToomas Soome UINT16 Reserved; 566*f334afcfSToomas Soome UINT64 DiscoveryRangeBaseAddress; 567*f334afcfSToomas Soome UINT32 DiscoveryRangeLength; 568*f334afcfSToomas Soome } EFI_ACPI_5_1_GICR_STRUCTURE; 569*f334afcfSToomas Soome 570*f334afcfSToomas Soome /// 571*f334afcfSToomas Soome /// Smart Battery Description Table (SBST) 572*f334afcfSToomas Soome /// 573*f334afcfSToomas Soome typedef struct { 574*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 575*f334afcfSToomas Soome UINT32 WarningEnergyLevel; 576*f334afcfSToomas Soome UINT32 LowEnergyLevel; 577*f334afcfSToomas Soome UINT32 CriticalEnergyLevel; 578*f334afcfSToomas Soome } EFI_ACPI_5_1_SMART_BATTERY_DESCRIPTION_TABLE; 579*f334afcfSToomas Soome 580*f334afcfSToomas Soome /// 581*f334afcfSToomas Soome /// SBST Version (as defined in ACPI 5.1 spec.) 582*f334afcfSToomas Soome /// 583*f334afcfSToomas Soome #define EFI_ACPI_5_1_SMART_BATTERY_DESCRIPTION_TABLE_REVISION 0x01 584*f334afcfSToomas Soome 585*f334afcfSToomas Soome /// 586*f334afcfSToomas Soome /// Embedded Controller Boot Resources Table (ECDT) 587*f334afcfSToomas Soome /// The table is followed by a null terminated ASCII string that contains 588*f334afcfSToomas Soome /// a fully qualified reference to the name space object. 589*f334afcfSToomas Soome /// 590*f334afcfSToomas Soome typedef struct { 591*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 592*f334afcfSToomas Soome EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE EcControl; 593*f334afcfSToomas Soome EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE EcData; 594*f334afcfSToomas Soome UINT32 Uid; 595*f334afcfSToomas Soome UINT8 GpeBit; 596*f334afcfSToomas Soome } EFI_ACPI_5_1_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE; 597*f334afcfSToomas Soome 598*f334afcfSToomas Soome /// 599*f334afcfSToomas Soome /// ECDT Version (as defined in ACPI 5.1 spec.) 600*f334afcfSToomas Soome /// 601*f334afcfSToomas Soome #define EFI_ACPI_5_1_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_REVISION 0x01 602*f334afcfSToomas Soome 603*f334afcfSToomas Soome /// 604*f334afcfSToomas Soome /// System Resource Affinity Table (SRAT). The rest of the table 605*f334afcfSToomas Soome /// must be defined in a platform specific manner. 606*f334afcfSToomas Soome /// 607*f334afcfSToomas Soome typedef struct { 608*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 609*f334afcfSToomas Soome UINT32 Reserved1; ///< Must be set to 1 610*f334afcfSToomas Soome UINT64 Reserved2; 611*f334afcfSToomas Soome } EFI_ACPI_5_1_SYSTEM_RESOURCE_AFFINITY_TABLE_HEADER; 612*f334afcfSToomas Soome 613*f334afcfSToomas Soome /// 614*f334afcfSToomas Soome /// SRAT Version (as defined in ACPI 5.1 spec.) 615*f334afcfSToomas Soome /// 616*f334afcfSToomas Soome #define EFI_ACPI_5_1_SYSTEM_RESOURCE_AFFINITY_TABLE_REVISION 0x03 617*f334afcfSToomas Soome 618*f334afcfSToomas Soome // 619*f334afcfSToomas Soome // SRAT structure types. 620*f334afcfSToomas Soome // All other values between 0x04 an 0xFF are reserved and 621*f334afcfSToomas Soome // will be ignored by OSPM. 622*f334afcfSToomas Soome // 623*f334afcfSToomas Soome #define EFI_ACPI_5_1_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY 0x00 624*f334afcfSToomas Soome #define EFI_ACPI_5_1_MEMORY_AFFINITY 0x01 625*f334afcfSToomas Soome #define EFI_ACPI_5_1_PROCESSOR_LOCAL_X2APIC_AFFINITY 0x02 626*f334afcfSToomas Soome #define EFI_ACPI_5_1_GICC_AFFINITY 0x03 627*f334afcfSToomas Soome 628*f334afcfSToomas Soome /// 629*f334afcfSToomas Soome /// Processor Local APIC/SAPIC Affinity Structure Definition 630*f334afcfSToomas Soome /// 631*f334afcfSToomas Soome typedef struct { 632*f334afcfSToomas Soome UINT8 Type; 633*f334afcfSToomas Soome UINT8 Length; 634*f334afcfSToomas Soome UINT8 ProximityDomain7To0; 635*f334afcfSToomas Soome UINT8 ApicId; 636*f334afcfSToomas Soome UINT32 Flags; 637*f334afcfSToomas Soome UINT8 LocalSapicEid; 638*f334afcfSToomas Soome UINT8 ProximityDomain31To8[3]; 639*f334afcfSToomas Soome UINT32 ClockDomain; 640*f334afcfSToomas Soome } EFI_ACPI_5_1_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY_STRUCTURE; 641*f334afcfSToomas Soome 642*f334afcfSToomas Soome /// 643*f334afcfSToomas Soome /// Local APIC/SAPIC Flags. All other bits are reserved and must be 0. 644*f334afcfSToomas Soome /// 645*f334afcfSToomas Soome #define EFI_ACPI_5_1_PROCESSOR_LOCAL_APIC_SAPIC_ENABLED (1 << 0) 646*f334afcfSToomas Soome 647*f334afcfSToomas Soome /// 648*f334afcfSToomas Soome /// Memory Affinity Structure Definition 649*f334afcfSToomas Soome /// 650*f334afcfSToomas Soome typedef struct { 651*f334afcfSToomas Soome UINT8 Type; 652*f334afcfSToomas Soome UINT8 Length; 653*f334afcfSToomas Soome UINT32 ProximityDomain; 654*f334afcfSToomas Soome UINT16 Reserved1; 655*f334afcfSToomas Soome UINT32 AddressBaseLow; 656*f334afcfSToomas Soome UINT32 AddressBaseHigh; 657*f334afcfSToomas Soome UINT32 LengthLow; 658*f334afcfSToomas Soome UINT32 LengthHigh; 659*f334afcfSToomas Soome UINT32 Reserved2; 660*f334afcfSToomas Soome UINT32 Flags; 661*f334afcfSToomas Soome UINT64 Reserved3; 662*f334afcfSToomas Soome } EFI_ACPI_5_1_MEMORY_AFFINITY_STRUCTURE; 663*f334afcfSToomas Soome 664*f334afcfSToomas Soome // 665*f334afcfSToomas Soome // Memory Flags. All other bits are reserved and must be 0. 666*f334afcfSToomas Soome // 667*f334afcfSToomas Soome #define EFI_ACPI_5_1_MEMORY_ENABLED (1 << 0) 668*f334afcfSToomas Soome #define EFI_ACPI_5_1_MEMORY_HOT_PLUGGABLE (1 << 1) 669*f334afcfSToomas Soome #define EFI_ACPI_5_1_MEMORY_NONVOLATILE (1 << 2) 670*f334afcfSToomas Soome 671*f334afcfSToomas Soome /// 672*f334afcfSToomas Soome /// Processor Local x2APIC Affinity Structure Definition 673*f334afcfSToomas Soome /// 674*f334afcfSToomas Soome typedef struct { 675*f334afcfSToomas Soome UINT8 Type; 676*f334afcfSToomas Soome UINT8 Length; 677*f334afcfSToomas Soome UINT8 Reserved1[2]; 678*f334afcfSToomas Soome UINT32 ProximityDomain; 679*f334afcfSToomas Soome UINT32 X2ApicId; 680*f334afcfSToomas Soome UINT32 Flags; 681*f334afcfSToomas Soome UINT32 ClockDomain; 682*f334afcfSToomas Soome UINT8 Reserved2[4]; 683*f334afcfSToomas Soome } EFI_ACPI_5_1_PROCESSOR_LOCAL_X2APIC_AFFINITY_STRUCTURE; 684*f334afcfSToomas Soome 685*f334afcfSToomas Soome /// 686*f334afcfSToomas Soome /// GICC Affinity Structure Definition 687*f334afcfSToomas Soome /// 688*f334afcfSToomas Soome typedef struct { 689*f334afcfSToomas Soome UINT8 Type; 690*f334afcfSToomas Soome UINT8 Length; 691*f334afcfSToomas Soome UINT32 ProximityDomain; 692*f334afcfSToomas Soome UINT32 AcpiProcessorUid; 693*f334afcfSToomas Soome UINT32 Flags; 694*f334afcfSToomas Soome UINT32 ClockDomain; 695*f334afcfSToomas Soome } EFI_ACPI_5_1_GICC_AFFINITY_STRUCTURE; 696*f334afcfSToomas Soome 697*f334afcfSToomas Soome /// 698*f334afcfSToomas Soome /// GICC Flags. All other bits are reserved and must be 0. 699*f334afcfSToomas Soome /// 700*f334afcfSToomas Soome #define EFI_ACPI_5_1_GICC_ENABLED (1 << 0) 701*f334afcfSToomas Soome 702*f334afcfSToomas Soome /// 703*f334afcfSToomas Soome /// System Locality Distance Information Table (SLIT). 704*f334afcfSToomas Soome /// The rest of the table is a matrix. 705*f334afcfSToomas Soome /// 706*f334afcfSToomas Soome typedef struct { 707*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 708*f334afcfSToomas Soome UINT64 NumberOfSystemLocalities; 709*f334afcfSToomas Soome } EFI_ACPI_5_1_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_HEADER; 710*f334afcfSToomas Soome 711*f334afcfSToomas Soome /// 712*f334afcfSToomas Soome /// SLIT Version (as defined in ACPI 5.1 spec.) 713*f334afcfSToomas Soome /// 714*f334afcfSToomas Soome #define EFI_ACPI_5_1_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_REVISION 0x01 715*f334afcfSToomas Soome 716*f334afcfSToomas Soome /// 717*f334afcfSToomas Soome /// Corrected Platform Error Polling Table (CPEP) 718*f334afcfSToomas Soome /// 719*f334afcfSToomas Soome typedef struct { 720*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 721*f334afcfSToomas Soome UINT8 Reserved[8]; 722*f334afcfSToomas Soome } EFI_ACPI_5_1_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_HEADER; 723*f334afcfSToomas Soome 724*f334afcfSToomas Soome /// 725*f334afcfSToomas Soome /// CPEP Version (as defined in ACPI 5.1 spec.) 726*f334afcfSToomas Soome /// 727*f334afcfSToomas Soome #define EFI_ACPI_5_1_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_REVISION 0x01 728*f334afcfSToomas Soome 729*f334afcfSToomas Soome // 730*f334afcfSToomas Soome // CPEP processor structure types. 731*f334afcfSToomas Soome // 732*f334afcfSToomas Soome #define EFI_ACPI_5_1_CPEP_PROCESSOR_APIC_SAPIC 0x00 733*f334afcfSToomas Soome 734*f334afcfSToomas Soome /// 735*f334afcfSToomas Soome /// Corrected Platform Error Polling Processor Structure Definition 736*f334afcfSToomas Soome /// 737*f334afcfSToomas Soome typedef struct { 738*f334afcfSToomas Soome UINT8 Type; 739*f334afcfSToomas Soome UINT8 Length; 740*f334afcfSToomas Soome UINT8 ProcessorId; 741*f334afcfSToomas Soome UINT8 ProcessorEid; 742*f334afcfSToomas Soome UINT32 PollingInterval; 743*f334afcfSToomas Soome } EFI_ACPI_5_1_CPEP_PROCESSOR_APIC_SAPIC_STRUCTURE; 744*f334afcfSToomas Soome 745*f334afcfSToomas Soome /// 746*f334afcfSToomas Soome /// Maximum System Characteristics Table (MSCT) 747*f334afcfSToomas Soome /// 748*f334afcfSToomas Soome typedef struct { 749*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 750*f334afcfSToomas Soome UINT32 OffsetProxDomInfo; 751*f334afcfSToomas Soome UINT32 MaximumNumberOfProximityDomains; 752*f334afcfSToomas Soome UINT32 MaximumNumberOfClockDomains; 753*f334afcfSToomas Soome UINT64 MaximumPhysicalAddress; 754*f334afcfSToomas Soome } EFI_ACPI_5_1_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_HEADER; 755*f334afcfSToomas Soome 756*f334afcfSToomas Soome /// 757*f334afcfSToomas Soome /// MSCT Version (as defined in ACPI 5.1 spec.) 758*f334afcfSToomas Soome /// 759*f334afcfSToomas Soome #define EFI_ACPI_5_1_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_REVISION 0x01 760*f334afcfSToomas Soome 761*f334afcfSToomas Soome /// 762*f334afcfSToomas Soome /// Maximum Proximity Domain Information Structure Definition 763*f334afcfSToomas Soome /// 764*f334afcfSToomas Soome typedef struct { 765*f334afcfSToomas Soome UINT8 Revision; 766*f334afcfSToomas Soome UINT8 Length; 767*f334afcfSToomas Soome UINT32 ProximityDomainRangeLow; 768*f334afcfSToomas Soome UINT32 ProximityDomainRangeHigh; 769*f334afcfSToomas Soome UINT32 MaximumProcessorCapacity; 770*f334afcfSToomas Soome UINT64 MaximumMemoryCapacity; 771*f334afcfSToomas Soome } EFI_ACPI_5_1_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE; 772*f334afcfSToomas Soome 773*f334afcfSToomas Soome /// 774*f334afcfSToomas Soome /// ACPI RAS Feature Table definition. 775*f334afcfSToomas Soome /// 776*f334afcfSToomas Soome typedef struct { 777*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 778*f334afcfSToomas Soome UINT8 PlatformCommunicationChannelIdentifier[12]; 779*f334afcfSToomas Soome } EFI_ACPI_5_1_RAS_FEATURE_TABLE; 780*f334afcfSToomas Soome 781*f334afcfSToomas Soome /// 782*f334afcfSToomas Soome /// RASF Version (as defined in ACPI 5.1 spec.) 783*f334afcfSToomas Soome /// 784*f334afcfSToomas Soome #define EFI_ACPI_5_1_RAS_FEATURE_TABLE_REVISION 0x01 785*f334afcfSToomas Soome 786*f334afcfSToomas Soome /// 787*f334afcfSToomas Soome /// ACPI RASF Platform Communication Channel Shared Memory Region definition. 788*f334afcfSToomas Soome /// 789*f334afcfSToomas Soome typedef struct { 790*f334afcfSToomas Soome UINT32 Signature; 791*f334afcfSToomas Soome UINT16 Command; 792*f334afcfSToomas Soome UINT16 Status; 793*f334afcfSToomas Soome UINT16 Version; 794*f334afcfSToomas Soome UINT8 RASCapabilities[16]; 795*f334afcfSToomas Soome UINT8 SetRASCapabilities[16]; 796*f334afcfSToomas Soome UINT16 NumberOfRASFParameterBlocks; 797*f334afcfSToomas Soome UINT32 SetRASCapabilitiesStatus; 798*f334afcfSToomas Soome } EFI_ACPI_5_1_RASF_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION; 799*f334afcfSToomas Soome 800*f334afcfSToomas Soome /// 801*f334afcfSToomas Soome /// ACPI RASF PCC command code 802*f334afcfSToomas Soome /// 803*f334afcfSToomas Soome #define EFI_ACPI_5_1_RASF_PCC_COMMAND_CODE_EXECUTE_RASF_COMMAND 0x01 804*f334afcfSToomas Soome 805*f334afcfSToomas Soome /// 806*f334afcfSToomas Soome /// ACPI RASF Platform RAS Capabilities 807*f334afcfSToomas Soome /// 808*f334afcfSToomas Soome #define EFI_ACPI_5_1_RASF_PLATFORM_RAS_CAPABILITY_HARDWARE_BASED_PATROL_SCRUB_SUPPOTED 0x01 809*f334afcfSToomas Soome #define EFI_ACPI_5_1_RASF_PLATFORM_RAS_CAPABILITY_HARDWARE_BASED_PATROL_SCRUB_SUPPOTED_AND_EXPOSED_TO_SOFTWARE 0x02 810*f334afcfSToomas Soome 811*f334afcfSToomas Soome /// 812*f334afcfSToomas Soome /// ACPI RASF Parameter Block structure for PATROL_SCRUB 813*f334afcfSToomas Soome /// 814*f334afcfSToomas Soome typedef struct { 815*f334afcfSToomas Soome UINT16 Type; 816*f334afcfSToomas Soome UINT16 Version; 817*f334afcfSToomas Soome UINT16 Length; 818*f334afcfSToomas Soome UINT16 PatrolScrubCommand; 819*f334afcfSToomas Soome UINT64 RequestedAddressRange[2]; 820*f334afcfSToomas Soome UINT64 ActualAddressRange[2]; 821*f334afcfSToomas Soome UINT16 Flags; 822*f334afcfSToomas Soome UINT8 RequestedSpeed; 823*f334afcfSToomas Soome } EFI_ACPI_5_1_RASF_PATROL_SCRUB_PLATFORM_BLOCK_STRUCTURE; 824*f334afcfSToomas Soome 825*f334afcfSToomas Soome /// 826*f334afcfSToomas Soome /// ACPI RASF Patrol Scrub command 827*f334afcfSToomas Soome /// 828*f334afcfSToomas Soome #define EFI_ACPI_5_1_RASF_PATROL_SCRUB_COMMAND_GET_PATROL_PARAMETERS 0x01 829*f334afcfSToomas Soome #define EFI_ACPI_5_1_RASF_PATROL_SCRUB_COMMAND_START_PATROL_SCRUBBER 0x02 830*f334afcfSToomas Soome #define EFI_ACPI_5_1_RASF_PATROL_SCRUB_COMMAND_STOP_PATROL_SCRUBBER 0x03 831*f334afcfSToomas Soome 832*f334afcfSToomas Soome /// 833*f334afcfSToomas Soome /// Memory Power State Table definition. 834*f334afcfSToomas Soome /// 835*f334afcfSToomas Soome typedef struct { 836*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 837*f334afcfSToomas Soome UINT8 PlatformCommunicationChannelIdentifier; 838*f334afcfSToomas Soome UINT8 Reserved[3]; 839*f334afcfSToomas Soome // Memory Power Node Structure 840*f334afcfSToomas Soome // Memory Power State Characteristics 841*f334afcfSToomas Soome } EFI_ACPI_5_1_MEMORY_POWER_STATUS_TABLE; 842*f334afcfSToomas Soome 843*f334afcfSToomas Soome /// 844*f334afcfSToomas Soome /// MPST Version (as defined in ACPI 5.1 spec.) 845*f334afcfSToomas Soome /// 846*f334afcfSToomas Soome #define EFI_ACPI_5_1_MEMORY_POWER_STATE_TABLE_REVISION 0x01 847*f334afcfSToomas Soome 848*f334afcfSToomas Soome /// 849*f334afcfSToomas Soome /// MPST Platform Communication Channel Shared Memory Region definition. 850*f334afcfSToomas Soome /// 851*f334afcfSToomas Soome typedef struct { 852*f334afcfSToomas Soome UINT32 Signature; 853*f334afcfSToomas Soome UINT16 Command; 854*f334afcfSToomas Soome UINT16 Status; 855*f334afcfSToomas Soome UINT32 MemoryPowerCommandRegister; 856*f334afcfSToomas Soome UINT32 MemoryPowerStatusRegister; 857*f334afcfSToomas Soome UINT32 PowerStateId; 858*f334afcfSToomas Soome UINT32 MemoryPowerNodeId; 859*f334afcfSToomas Soome UINT64 MemoryEnergyConsumed; 860*f334afcfSToomas Soome UINT64 ExpectedAveragePowerComsuned; 861*f334afcfSToomas Soome } EFI_ACPI_5_1_MPST_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION; 862*f334afcfSToomas Soome 863*f334afcfSToomas Soome /// 864*f334afcfSToomas Soome /// ACPI MPST PCC command code 865*f334afcfSToomas Soome /// 866*f334afcfSToomas Soome #define EFI_ACPI_5_1_MPST_PCC_COMMAND_CODE_EXECUTE_MPST_COMMAND 0x03 867*f334afcfSToomas Soome 868*f334afcfSToomas Soome /// 869*f334afcfSToomas Soome /// ACPI MPST Memory Power command 870*f334afcfSToomas Soome /// 871*f334afcfSToomas Soome #define EFI_ACPI_5_1_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_POWER_STATE 0x01 872*f334afcfSToomas Soome #define EFI_ACPI_5_1_MPST_MEMORY_POWER_COMMAND_SET_MEMORY_POWER_STATE 0x02 873*f334afcfSToomas Soome #define EFI_ACPI_5_1_MPST_MEMORY_POWER_COMMAND_GET_AVERAGE_POWER_CONSUMED 0x03 874*f334afcfSToomas Soome #define EFI_ACPI_5_1_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_ENERGY_CONSUMED 0x04 875*f334afcfSToomas Soome 876*f334afcfSToomas Soome /// 877*f334afcfSToomas Soome /// MPST Memory Power Node Table 878*f334afcfSToomas Soome /// 879*f334afcfSToomas Soome typedef struct { 880*f334afcfSToomas Soome UINT8 PowerStateValue; 881*f334afcfSToomas Soome UINT8 PowerStateInformationIndex; 882*f334afcfSToomas Soome } EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE; 883*f334afcfSToomas Soome 884*f334afcfSToomas Soome typedef struct { 885*f334afcfSToomas Soome UINT8 Flag; 886*f334afcfSToomas Soome UINT8 Reserved; 887*f334afcfSToomas Soome UINT16 MemoryPowerNodeId; 888*f334afcfSToomas Soome UINT32 Length; 889*f334afcfSToomas Soome UINT64 AddressBase; 890*f334afcfSToomas Soome UINT64 AddressLength; 891*f334afcfSToomas Soome UINT32 NumberOfPowerStates; 892*f334afcfSToomas Soome UINT32 NumberOfPhysicalComponents; 893*f334afcfSToomas Soome // EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE MemoryPowerState[NumberOfPowerStates]; 894*f334afcfSToomas Soome // UINT16 PhysicalComponentIdentifier[NumberOfPhysicalComponents]; 895*f334afcfSToomas Soome } EFI_ACPI_5_1_MPST_MEMORY_POWER_STRUCTURE; 896*f334afcfSToomas Soome 897*f334afcfSToomas Soome #define EFI_ACPI_5_1_MPST_MEMORY_POWER_STRUCTURE_FLAG_ENABLE 0x01 898*f334afcfSToomas Soome #define EFI_ACPI_5_1_MPST_MEMORY_POWER_STRUCTURE_FLAG_POWER_MANAGED 0x02 899*f334afcfSToomas Soome #define EFI_ACPI_5_1_MPST_MEMORY_POWER_STRUCTURE_FLAG_HOT_PLUGGABLE 0x04 900*f334afcfSToomas Soome 901*f334afcfSToomas Soome typedef struct { 902*f334afcfSToomas Soome UINT16 MemoryPowerNodeCount; 903*f334afcfSToomas Soome UINT8 Reserved[2]; 904*f334afcfSToomas Soome } EFI_ACPI_5_1_MPST_MEMORY_POWER_NODE_TABLE; 905*f334afcfSToomas Soome 906*f334afcfSToomas Soome /// 907*f334afcfSToomas Soome /// MPST Memory Power State Characteristics Table 908*f334afcfSToomas Soome /// 909*f334afcfSToomas Soome typedef struct { 910*f334afcfSToomas Soome UINT8 PowerStateStructureID; 911*f334afcfSToomas Soome UINT8 Flag; 912*f334afcfSToomas Soome UINT16 Reserved; 913*f334afcfSToomas Soome UINT32 AveragePowerConsumedInMPS0; 914*f334afcfSToomas Soome UINT32 RelativePowerSavingToMPS0; 915*f334afcfSToomas Soome UINT64 ExitLatencyToMPS0; 916*f334afcfSToomas Soome } EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE; 917*f334afcfSToomas Soome 918*f334afcfSToomas Soome #define EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_MEMORY_CONTENT_PRESERVED 0x01 919*f334afcfSToomas Soome #define EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_ENTRY 0x02 920*f334afcfSToomas Soome #define EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_EXIT 0x04 921*f334afcfSToomas Soome 922*f334afcfSToomas Soome typedef struct { 923*f334afcfSToomas Soome UINT16 MemoryPowerStateCharacteristicsCount; 924*f334afcfSToomas Soome UINT8 Reserved[2]; 925*f334afcfSToomas Soome } EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_TABLE; 926*f334afcfSToomas Soome 927*f334afcfSToomas Soome /// 928*f334afcfSToomas Soome /// Memory Topology Table definition. 929*f334afcfSToomas Soome /// 930*f334afcfSToomas Soome typedef struct { 931*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 932*f334afcfSToomas Soome UINT32 Reserved; 933*f334afcfSToomas Soome } EFI_ACPI_5_1_MEMORY_TOPOLOGY_TABLE; 934*f334afcfSToomas Soome 935*f334afcfSToomas Soome /// 936*f334afcfSToomas Soome /// PMTT Version (as defined in ACPI 5.1 spec.) 937*f334afcfSToomas Soome /// 938*f334afcfSToomas Soome #define EFI_ACPI_5_1_MEMORY_TOPOLOGY_TABLE_REVISION 0x01 939*f334afcfSToomas Soome 940*f334afcfSToomas Soome /// 941*f334afcfSToomas Soome /// Common Memory Aggregator Device Structure. 942*f334afcfSToomas Soome /// 943*f334afcfSToomas Soome typedef struct { 944*f334afcfSToomas Soome UINT8 Type; 945*f334afcfSToomas Soome UINT8 Reserved; 946*f334afcfSToomas Soome UINT16 Length; 947*f334afcfSToomas Soome UINT16 Flags; 948*f334afcfSToomas Soome UINT16 Reserved1; 949*f334afcfSToomas Soome } EFI_ACPI_5_1_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE; 950*f334afcfSToomas Soome 951*f334afcfSToomas Soome /// 952*f334afcfSToomas Soome /// Memory Aggregator Device Type 953*f334afcfSToomas Soome /// 954*f334afcfSToomas Soome #define EFI_ACPI_5_1_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_SOCKET 0x0 955*f334afcfSToomas Soome #define EFI_ACPI_5_1_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_MEMORY_CONTROLLER 0x1 956*f334afcfSToomas Soome #define EFI_ACPI_5_1_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_DIMM 0x2 957*f334afcfSToomas Soome 958*f334afcfSToomas Soome /// 959*f334afcfSToomas Soome /// Socket Memory Aggregator Device Structure. 960*f334afcfSToomas Soome /// 961*f334afcfSToomas Soome typedef struct { 962*f334afcfSToomas Soome EFI_ACPI_5_1_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE Header; 963*f334afcfSToomas Soome UINT16 SocketIdentifier; 964*f334afcfSToomas Soome UINT16 Reserved; 965*f334afcfSToomas Soome // EFI_ACPI_5_1_PMMT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE MemoryController[]; 966*f334afcfSToomas Soome } EFI_ACPI_5_1_PMMT_SOCKET_MEMORY_AGGREGATOR_DEVICE_STRUCTURE; 967*f334afcfSToomas Soome 968*f334afcfSToomas Soome /// 969*f334afcfSToomas Soome /// MemoryController Memory Aggregator Device Structure. 970*f334afcfSToomas Soome /// 971*f334afcfSToomas Soome typedef struct { 972*f334afcfSToomas Soome EFI_ACPI_5_1_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE Header; 973*f334afcfSToomas Soome UINT32 ReadLatency; 974*f334afcfSToomas Soome UINT32 WriteLatency; 975*f334afcfSToomas Soome UINT32 ReadBandwidth; 976*f334afcfSToomas Soome UINT32 WriteBandwidth; 977*f334afcfSToomas Soome UINT16 OptimalAccessUnit; 978*f334afcfSToomas Soome UINT16 OptimalAccessAlignment; 979*f334afcfSToomas Soome UINT16 Reserved; 980*f334afcfSToomas Soome UINT16 NumberOfProximityDomains; 981*f334afcfSToomas Soome // UINT32 ProximityDomain[NumberOfProximityDomains]; 982*f334afcfSToomas Soome // EFI_ACPI_5_1_PMMT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE PhysicalComponent[]; 983*f334afcfSToomas Soome } EFI_ACPI_5_1_PMMT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE; 984*f334afcfSToomas Soome 985*f334afcfSToomas Soome /// 986*f334afcfSToomas Soome /// DIMM Memory Aggregator Device Structure. 987*f334afcfSToomas Soome /// 988*f334afcfSToomas Soome typedef struct { 989*f334afcfSToomas Soome EFI_ACPI_5_1_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE Header; 990*f334afcfSToomas Soome UINT16 PhysicalComponentIdentifier; 991*f334afcfSToomas Soome UINT16 Reserved; 992*f334afcfSToomas Soome UINT32 SizeOfDimm; 993*f334afcfSToomas Soome UINT32 SmbiosHandle; 994*f334afcfSToomas Soome } EFI_ACPI_5_1_PMMT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE; 995*f334afcfSToomas Soome 996*f334afcfSToomas Soome /// 997*f334afcfSToomas Soome /// Boot Graphics Resource Table definition. 998*f334afcfSToomas Soome /// 999*f334afcfSToomas Soome typedef struct { 1000*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 1001*f334afcfSToomas Soome /// 1002*f334afcfSToomas Soome /// 2-bytes (16 bit) version ID. This value must be 1. 1003*f334afcfSToomas Soome /// 1004*f334afcfSToomas Soome UINT16 Version; 1005*f334afcfSToomas Soome /// 1006*f334afcfSToomas Soome /// 1-byte status field indicating current status about the table. 1007*f334afcfSToomas Soome /// Bits[7:1] = Reserved (must be zero) 1008*f334afcfSToomas Soome /// Bit [0] = Valid. A one indicates the boot image graphic is valid. 1009*f334afcfSToomas Soome /// 1010*f334afcfSToomas Soome UINT8 Status; 1011*f334afcfSToomas Soome /// 1012*f334afcfSToomas Soome /// 1-byte enumerated type field indicating format of the image. 1013*f334afcfSToomas Soome /// 0 = Bitmap 1014*f334afcfSToomas Soome /// 1 - 255 Reserved (for future use) 1015*f334afcfSToomas Soome /// 1016*f334afcfSToomas Soome UINT8 ImageType; 1017*f334afcfSToomas Soome /// 1018*f334afcfSToomas Soome /// 8-byte (64 bit) physical address pointing to the firmware's in-memory copy 1019*f334afcfSToomas Soome /// of the image bitmap. 1020*f334afcfSToomas Soome /// 1021*f334afcfSToomas Soome UINT64 ImageAddress; 1022*f334afcfSToomas Soome /// 1023*f334afcfSToomas Soome /// A 4-byte (32-bit) unsigned long describing the display X-offset of the boot image. 1024*f334afcfSToomas Soome /// (X, Y) display offset of the top left corner of the boot image. 1025*f334afcfSToomas Soome /// The top left corner of the display is at offset (0, 0). 1026*f334afcfSToomas Soome /// 1027*f334afcfSToomas Soome UINT32 ImageOffsetX; 1028*f334afcfSToomas Soome /// 1029*f334afcfSToomas Soome /// A 4-byte (32-bit) unsigned long describing the display Y-offset of the boot image. 1030*f334afcfSToomas Soome /// (X, Y) display offset of the top left corner of the boot image. 1031*f334afcfSToomas Soome /// The top left corner of the display is at offset (0, 0). 1032*f334afcfSToomas Soome /// 1033*f334afcfSToomas Soome UINT32 ImageOffsetY; 1034*f334afcfSToomas Soome } EFI_ACPI_5_1_BOOT_GRAPHICS_RESOURCE_TABLE; 1035*f334afcfSToomas Soome 1036*f334afcfSToomas Soome /// 1037*f334afcfSToomas Soome /// BGRT Revision 1038*f334afcfSToomas Soome /// 1039*f334afcfSToomas Soome #define EFI_ACPI_5_1_BOOT_GRAPHICS_RESOURCE_TABLE_REVISION 1 1040*f334afcfSToomas Soome 1041*f334afcfSToomas Soome /// 1042*f334afcfSToomas Soome /// BGRT Version 1043*f334afcfSToomas Soome /// 1044*f334afcfSToomas Soome #define EFI_ACPI_5_1_BGRT_VERSION 0x01 1045*f334afcfSToomas Soome 1046*f334afcfSToomas Soome /// 1047*f334afcfSToomas Soome /// BGRT Status 1048*f334afcfSToomas Soome /// 1049*f334afcfSToomas Soome #define EFI_ACPI_5_1_BGRT_STATUS_NOT_DISPLAYED 0x00 1050*f334afcfSToomas Soome #define EFI_ACPI_5_1_BGRT_STATUS_DISPLAYED 0x01 1051*f334afcfSToomas Soome 1052*f334afcfSToomas Soome /// 1053*f334afcfSToomas Soome /// BGRT Image Type 1054*f334afcfSToomas Soome /// 1055*f334afcfSToomas Soome #define EFI_ACPI_5_1_BGRT_IMAGE_TYPE_BMP 0x00 1056*f334afcfSToomas Soome 1057*f334afcfSToomas Soome /// 1058*f334afcfSToomas Soome /// FPDT Version (as defined in ACPI 5.1 spec.) 1059*f334afcfSToomas Soome /// 1060*f334afcfSToomas Soome #define EFI_ACPI_5_1_FIRMWARE_PERFORMANCE_DATA_TABLE_REVISION 0x01 1061*f334afcfSToomas Soome 1062*f334afcfSToomas Soome /// 1063*f334afcfSToomas Soome /// FPDT Performance Record Types 1064*f334afcfSToomas Soome /// 1065*f334afcfSToomas Soome #define EFI_ACPI_5_1_FPDT_RECORD_TYPE_FIRMWARE_BASIC_BOOT_POINTER 0x0000 1066*f334afcfSToomas Soome #define EFI_ACPI_5_1_FPDT_RECORD_TYPE_S3_PERFORMANCE_TABLE_POINTER 0x0001 1067*f334afcfSToomas Soome 1068*f334afcfSToomas Soome /// 1069*f334afcfSToomas Soome /// FPDT Performance Record Revision 1070*f334afcfSToomas Soome /// 1071*f334afcfSToomas Soome #define EFI_ACPI_5_1_FPDT_RECORD_REVISION_FIRMWARE_BASIC_BOOT_POINTER 0x01 1072*f334afcfSToomas Soome #define EFI_ACPI_5_1_FPDT_RECORD_REVISION_S3_PERFORMANCE_TABLE_POINTER 0x01 1073*f334afcfSToomas Soome 1074*f334afcfSToomas Soome /// 1075*f334afcfSToomas Soome /// FPDT Runtime Performance Record Types 1076*f334afcfSToomas Soome /// 1077*f334afcfSToomas Soome #define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_TYPE_S3_RESUME 0x0000 1078*f334afcfSToomas Soome #define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_TYPE_S3_SUSPEND 0x0001 1079*f334afcfSToomas Soome #define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_TYPE_FIRMWARE_BASIC_BOOT 0x0002 1080*f334afcfSToomas Soome 1081*f334afcfSToomas Soome /// 1082*f334afcfSToomas Soome /// FPDT Runtime Performance Record Revision 1083*f334afcfSToomas Soome /// 1084*f334afcfSToomas Soome #define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_REVISION_S3_RESUME 0x01 1085*f334afcfSToomas Soome #define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_REVISION_S3_SUSPEND 0x01 1086*f334afcfSToomas Soome #define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_REVISION_FIRMWARE_BASIC_BOOT 0x02 1087*f334afcfSToomas Soome 1088*f334afcfSToomas Soome /// 1089*f334afcfSToomas Soome /// FPDT Performance Record header 1090*f334afcfSToomas Soome /// 1091*f334afcfSToomas Soome typedef struct { 1092*f334afcfSToomas Soome UINT16 Type; 1093*f334afcfSToomas Soome UINT8 Length; 1094*f334afcfSToomas Soome UINT8 Revision; 1095*f334afcfSToomas Soome } EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER; 1096*f334afcfSToomas Soome 1097*f334afcfSToomas Soome /// 1098*f334afcfSToomas Soome /// FPDT Performance Table header 1099*f334afcfSToomas Soome /// 1100*f334afcfSToomas Soome typedef struct { 1101*f334afcfSToomas Soome UINT32 Signature; 1102*f334afcfSToomas Soome UINT32 Length; 1103*f334afcfSToomas Soome } EFI_ACPI_5_1_FPDT_PERFORMANCE_TABLE_HEADER; 1104*f334afcfSToomas Soome 1105*f334afcfSToomas Soome /// 1106*f334afcfSToomas Soome /// FPDT Firmware Basic Boot Performance Pointer Record Structure 1107*f334afcfSToomas Soome /// 1108*f334afcfSToomas Soome typedef struct { 1109*f334afcfSToomas Soome EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER Header; 1110*f334afcfSToomas Soome UINT32 Reserved; 1111*f334afcfSToomas Soome /// 1112*f334afcfSToomas Soome /// 64-bit processor-relative physical address of the Basic Boot Performance Table. 1113*f334afcfSToomas Soome /// 1114*f334afcfSToomas Soome UINT64 BootPerformanceTablePointer; 1115*f334afcfSToomas Soome } EFI_ACPI_5_1_FPDT_BOOT_PERFORMANCE_TABLE_POINTER_RECORD; 1116*f334afcfSToomas Soome 1117*f334afcfSToomas Soome /// 1118*f334afcfSToomas Soome /// FPDT S3 Performance Table Pointer Record Structure 1119*f334afcfSToomas Soome /// 1120*f334afcfSToomas Soome typedef struct { 1121*f334afcfSToomas Soome EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER Header; 1122*f334afcfSToomas Soome UINT32 Reserved; 1123*f334afcfSToomas Soome /// 1124*f334afcfSToomas Soome /// 64-bit processor-relative physical address of the S3 Performance Table. 1125*f334afcfSToomas Soome /// 1126*f334afcfSToomas Soome UINT64 S3PerformanceTablePointer; 1127*f334afcfSToomas Soome } EFI_ACPI_5_1_FPDT_S3_PERFORMANCE_TABLE_POINTER_RECORD; 1128*f334afcfSToomas Soome 1129*f334afcfSToomas Soome /// 1130*f334afcfSToomas Soome /// FPDT Firmware Basic Boot Performance Record Structure 1131*f334afcfSToomas Soome /// 1132*f334afcfSToomas Soome typedef struct { 1133*f334afcfSToomas Soome EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER Header; 1134*f334afcfSToomas Soome UINT32 Reserved; 1135*f334afcfSToomas Soome /// 1136*f334afcfSToomas Soome /// Timer value logged at the beginning of firmware image execution. 1137*f334afcfSToomas Soome /// This may not always be zero or near zero. 1138*f334afcfSToomas Soome /// 1139*f334afcfSToomas Soome UINT64 ResetEnd; 1140*f334afcfSToomas Soome /// 1141*f334afcfSToomas Soome /// Timer value logged just prior to loading the OS boot loader into memory. 1142*f334afcfSToomas Soome /// For non-UEFI compatible boots, this field must be zero. 1143*f334afcfSToomas Soome /// 1144*f334afcfSToomas Soome UINT64 OsLoaderLoadImageStart; 1145*f334afcfSToomas Soome /// 1146*f334afcfSToomas Soome /// Timer value logged just prior to launching the previously loaded OS boot loader image. 1147*f334afcfSToomas Soome /// For non-UEFI compatible boots, the timer value logged will be just prior 1148*f334afcfSToomas Soome /// to the INT 19h handler invocation. 1149*f334afcfSToomas Soome /// 1150*f334afcfSToomas Soome UINT64 OsLoaderStartImageStart; 1151*f334afcfSToomas Soome /// 1152*f334afcfSToomas Soome /// Timer value logged at the point when the OS loader calls the 1153*f334afcfSToomas Soome /// ExitBootServices function for UEFI compatible firmware. 1154*f334afcfSToomas Soome /// For non-UEFI compatible boots, this field must be zero. 1155*f334afcfSToomas Soome /// 1156*f334afcfSToomas Soome UINT64 ExitBootServicesEntry; 1157*f334afcfSToomas Soome /// 1158*f334afcfSToomas Soome /// Timer value logged at the point just prior to when the OS loader gaining 1159*f334afcfSToomas Soome /// control back from calls the ExitBootServices function for UEFI compatible firmware. 1160*f334afcfSToomas Soome /// For non-UEFI compatible boots, this field must be zero. 1161*f334afcfSToomas Soome /// 1162*f334afcfSToomas Soome UINT64 ExitBootServicesExit; 1163*f334afcfSToomas Soome } EFI_ACPI_5_1_FPDT_FIRMWARE_BASIC_BOOT_RECORD; 1164*f334afcfSToomas Soome 1165*f334afcfSToomas Soome /// 1166*f334afcfSToomas Soome /// FPDT Firmware Basic Boot Performance Table signature 1167*f334afcfSToomas Soome /// 1168*f334afcfSToomas Soome #define EFI_ACPI_5_1_FPDT_BOOT_PERFORMANCE_TABLE_SIGNATURE SIGNATURE_32('F', 'B', 'P', 'T') 1169*f334afcfSToomas Soome 1170*f334afcfSToomas Soome // 1171*f334afcfSToomas Soome // FPDT Firmware Basic Boot Performance Table 1172*f334afcfSToomas Soome // 1173*f334afcfSToomas Soome typedef struct { 1174*f334afcfSToomas Soome EFI_ACPI_5_1_FPDT_PERFORMANCE_TABLE_HEADER Header; 1175*f334afcfSToomas Soome // 1176*f334afcfSToomas Soome // one or more Performance Records. 1177*f334afcfSToomas Soome // 1178*f334afcfSToomas Soome } EFI_ACPI_5_1_FPDT_FIRMWARE_BASIC_BOOT_TABLE; 1179*f334afcfSToomas Soome 1180*f334afcfSToomas Soome /// 1181*f334afcfSToomas Soome /// FPDT "S3PT" S3 Performance Table 1182*f334afcfSToomas Soome /// 1183*f334afcfSToomas Soome #define EFI_ACPI_5_1_FPDT_S3_PERFORMANCE_TABLE_SIGNATURE SIGNATURE_32('S', '3', 'P', 'T') 1184*f334afcfSToomas Soome 1185*f334afcfSToomas Soome // 1186*f334afcfSToomas Soome // FPDT Firmware S3 Boot Performance Table 1187*f334afcfSToomas Soome // 1188*f334afcfSToomas Soome typedef struct { 1189*f334afcfSToomas Soome EFI_ACPI_5_1_FPDT_PERFORMANCE_TABLE_HEADER Header; 1190*f334afcfSToomas Soome // 1191*f334afcfSToomas Soome // one or more Performance Records. 1192*f334afcfSToomas Soome // 1193*f334afcfSToomas Soome } EFI_ACPI_5_1_FPDT_FIRMWARE_S3_BOOT_TABLE; 1194*f334afcfSToomas Soome 1195*f334afcfSToomas Soome /// 1196*f334afcfSToomas Soome /// FPDT Basic S3 Resume Performance Record 1197*f334afcfSToomas Soome /// 1198*f334afcfSToomas Soome typedef struct { 1199*f334afcfSToomas Soome EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER Header; 1200*f334afcfSToomas Soome /// 1201*f334afcfSToomas Soome /// A count of the number of S3 resume cycles since the last full boot sequence. 1202*f334afcfSToomas Soome /// 1203*f334afcfSToomas Soome UINT32 ResumeCount; 1204*f334afcfSToomas Soome /// 1205*f334afcfSToomas Soome /// Timer recorded at the end of BIOS S3 resume, just prior to handoff to the 1206*f334afcfSToomas Soome /// OS waking vector. Only the most recent resume cycle's time is retained. 1207*f334afcfSToomas Soome /// 1208*f334afcfSToomas Soome UINT64 FullResume; 1209*f334afcfSToomas Soome /// 1210*f334afcfSToomas Soome /// Average timer value of all resume cycles logged since the last full boot 1211*f334afcfSToomas Soome /// sequence, including the most recent resume. Note that the entire log of 1212*f334afcfSToomas Soome /// timer values does not need to be retained in order to calculate this average. 1213*f334afcfSToomas Soome /// 1214*f334afcfSToomas Soome UINT64 AverageResume; 1215*f334afcfSToomas Soome } EFI_ACPI_5_1_FPDT_S3_RESUME_RECORD; 1216*f334afcfSToomas Soome 1217*f334afcfSToomas Soome /// 1218*f334afcfSToomas Soome /// FPDT Basic S3 Suspend Performance Record 1219*f334afcfSToomas Soome /// 1220*f334afcfSToomas Soome typedef struct { 1221*f334afcfSToomas Soome EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER Header; 1222*f334afcfSToomas Soome /// 1223*f334afcfSToomas Soome /// Timer value recorded at the OS write to SLP_TYP upon entry to S3. 1224*f334afcfSToomas Soome /// Only the most recent suspend cycle's timer value is retained. 1225*f334afcfSToomas Soome /// 1226*f334afcfSToomas Soome UINT64 SuspendStart; 1227*f334afcfSToomas Soome /// 1228*f334afcfSToomas Soome /// Timer value recorded at the final firmware write to SLP_TYP (or other 1229*f334afcfSToomas Soome /// mechanism) used to trigger hardware entry to S3. 1230*f334afcfSToomas Soome /// Only the most recent suspend cycle's timer value is retained. 1231*f334afcfSToomas Soome /// 1232*f334afcfSToomas Soome UINT64 SuspendEnd; 1233*f334afcfSToomas Soome } EFI_ACPI_5_1_FPDT_S3_SUSPEND_RECORD; 1234*f334afcfSToomas Soome 1235*f334afcfSToomas Soome /// 1236*f334afcfSToomas Soome /// Firmware Performance Record Table definition. 1237*f334afcfSToomas Soome /// 1238*f334afcfSToomas Soome typedef struct { 1239*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 1240*f334afcfSToomas Soome } EFI_ACPI_5_1_FIRMWARE_PERFORMANCE_RECORD_TABLE; 1241*f334afcfSToomas Soome 1242*f334afcfSToomas Soome /// 1243*f334afcfSToomas Soome /// Generic Timer Description Table definition. 1244*f334afcfSToomas Soome /// 1245*f334afcfSToomas Soome typedef struct { 1246*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 1247*f334afcfSToomas Soome UINT64 CntControlBasePhysicalAddress; 1248*f334afcfSToomas Soome UINT32 Reserved; 1249*f334afcfSToomas Soome UINT32 SecurePL1TimerGSIV; 1250*f334afcfSToomas Soome UINT32 SecurePL1TimerFlags; 1251*f334afcfSToomas Soome UINT32 NonSecurePL1TimerGSIV; 1252*f334afcfSToomas Soome UINT32 NonSecurePL1TimerFlags; 1253*f334afcfSToomas Soome UINT32 VirtualTimerGSIV; 1254*f334afcfSToomas Soome UINT32 VirtualTimerFlags; 1255*f334afcfSToomas Soome UINT32 NonSecurePL2TimerGSIV; 1256*f334afcfSToomas Soome UINT32 NonSecurePL2TimerFlags; 1257*f334afcfSToomas Soome UINT64 CntReadBasePhysicalAddress; 1258*f334afcfSToomas Soome UINT32 PlatformTimerCount; 1259*f334afcfSToomas Soome UINT32 PlatformTimerOffset; 1260*f334afcfSToomas Soome } EFI_ACPI_5_1_GENERIC_TIMER_DESCRIPTION_TABLE; 1261*f334afcfSToomas Soome 1262*f334afcfSToomas Soome /// 1263*f334afcfSToomas Soome /// GTDT Version (as defined in ACPI 5.1 spec.) 1264*f334afcfSToomas Soome /// 1265*f334afcfSToomas Soome #define EFI_ACPI_5_1_GENERIC_TIMER_DESCRIPTION_TABLE_REVISION 0x02 1266*f334afcfSToomas Soome 1267*f334afcfSToomas Soome /// 1268*f334afcfSToomas Soome /// Timer Flags. All other bits are reserved and must be 0. 1269*f334afcfSToomas Soome /// 1270*f334afcfSToomas Soome #define EFI_ACPI_5_1_GTDT_TIMER_FLAG_TIMER_INTERRUPT_MODE BIT0 1271*f334afcfSToomas Soome #define EFI_ACPI_5_1_GTDT_TIMER_FLAG_TIMER_INTERRUPT_POLARITY BIT1 1272*f334afcfSToomas Soome #define EFI_ACPI_5_1_GTDT_TIMER_FLAG_ALWAYS_ON_CAPABILITY BIT2 1273*f334afcfSToomas Soome 1274*f334afcfSToomas Soome /// 1275*f334afcfSToomas Soome /// Platform Timer Type 1276*f334afcfSToomas Soome /// 1277*f334afcfSToomas Soome #define EFI_ACPI_5_1_GTDT_GT_BLOCK 0 1278*f334afcfSToomas Soome #define EFI_ACPI_5_1_GTDT_SBSA_GENERIC_WATCHDOG 1 1279*f334afcfSToomas Soome 1280*f334afcfSToomas Soome /// 1281*f334afcfSToomas Soome /// GT Block Structure 1282*f334afcfSToomas Soome /// 1283*f334afcfSToomas Soome typedef struct { 1284*f334afcfSToomas Soome UINT8 Type; 1285*f334afcfSToomas Soome UINT16 Length; 1286*f334afcfSToomas Soome UINT8 Reserved; 1287*f334afcfSToomas Soome UINT64 CntCtlBase; 1288*f334afcfSToomas Soome UINT32 GTBlockTimerCount; 1289*f334afcfSToomas Soome UINT32 GTBlockTimerOffset; 1290*f334afcfSToomas Soome } EFI_ACPI_5_1_GTDT_GT_BLOCK_STRUCTURE; 1291*f334afcfSToomas Soome 1292*f334afcfSToomas Soome /// 1293*f334afcfSToomas Soome /// GT Block Timer Structure 1294*f334afcfSToomas Soome /// 1295*f334afcfSToomas Soome typedef struct { 1296*f334afcfSToomas Soome UINT8 GTFrameNumber; 1297*f334afcfSToomas Soome UINT8 Reserved[3]; 1298*f334afcfSToomas Soome UINT64 CntBaseX; 1299*f334afcfSToomas Soome UINT64 CntEL0BaseX; 1300*f334afcfSToomas Soome UINT32 GTxPhysicalTimerGSIV; 1301*f334afcfSToomas Soome UINT32 GTxPhysicalTimerFlags; 1302*f334afcfSToomas Soome UINT32 GTxVirtualTimerGSIV; 1303*f334afcfSToomas Soome UINT32 GTxVirtualTimerFlags; 1304*f334afcfSToomas Soome UINT32 GTxCommonFlags; 1305*f334afcfSToomas Soome } EFI_ACPI_5_1_GTDT_GT_BLOCK_TIMER_STRUCTURE; 1306*f334afcfSToomas Soome 1307*f334afcfSToomas Soome /// 1308*f334afcfSToomas Soome /// GT Block Physical Timers and Virtual Timers Flags. All other bits are reserved and must be 0. 1309*f334afcfSToomas Soome /// 1310*f334afcfSToomas Soome #define EFI_ACPI_5_1_GTDT_GT_BLOCK_TIMER_FLAG_TIMER_INTERRUPT_MODE BIT0 1311*f334afcfSToomas Soome #define EFI_ACPI_5_1_GTDT_GT_BLOCK_TIMER_FLAG_TIMER_INTERRUPT_POLARITY BIT1 1312*f334afcfSToomas Soome 1313*f334afcfSToomas Soome /// 1314*f334afcfSToomas Soome /// Common Flags Flags. All other bits are reserved and must be 0. 1315*f334afcfSToomas Soome /// 1316*f334afcfSToomas Soome #define EFI_ACPI_5_1_GTDT_GT_BLOCK_COMMON_FLAG_SECURE_TIMER BIT0 1317*f334afcfSToomas Soome #define EFI_ACPI_5_1_GTDT_GT_BLOCK_COMMON_FLAG_ALWAYS_ON_CAPABILITY BIT1 1318*f334afcfSToomas Soome 1319*f334afcfSToomas Soome /// 1320*f334afcfSToomas Soome /// SBSA Generic Watchdog Structure 1321*f334afcfSToomas Soome /// 1322*f334afcfSToomas Soome typedef struct { 1323*f334afcfSToomas Soome UINT8 Type; 1324*f334afcfSToomas Soome UINT16 Length; 1325*f334afcfSToomas Soome UINT8 Reserved; 1326*f334afcfSToomas Soome UINT64 RefreshFramePhysicalAddress; 1327*f334afcfSToomas Soome UINT64 WatchdogControlFramePhysicalAddress; 1328*f334afcfSToomas Soome UINT32 WatchdogTimerGSIV; 1329*f334afcfSToomas Soome UINT32 WatchdogTimerFlags; 1330*f334afcfSToomas Soome } EFI_ACPI_5_1_GTDT_SBSA_GENERIC_WATCHDOG_STRUCTURE; 1331*f334afcfSToomas Soome 1332*f334afcfSToomas Soome /// 1333*f334afcfSToomas Soome /// SBSA Generic Watchdog Timer Flags. All other bits are reserved and must be 0. 1334*f334afcfSToomas Soome /// 1335*f334afcfSToomas Soome #define EFI_ACPI_5_1_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_MODE BIT0 1336*f334afcfSToomas Soome #define EFI_ACPI_5_1_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_POLARITY BIT1 1337*f334afcfSToomas Soome #define EFI_ACPI_5_1_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_SECURE_TIMER BIT2 1338*f334afcfSToomas Soome 1339*f334afcfSToomas Soome /// 1340*f334afcfSToomas Soome /// Boot Error Record Table (BERT) 1341*f334afcfSToomas Soome /// 1342*f334afcfSToomas Soome typedef struct { 1343*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 1344*f334afcfSToomas Soome UINT32 BootErrorRegionLength; 1345*f334afcfSToomas Soome UINT64 BootErrorRegion; 1346*f334afcfSToomas Soome } EFI_ACPI_5_1_BOOT_ERROR_RECORD_TABLE_HEADER; 1347*f334afcfSToomas Soome 1348*f334afcfSToomas Soome /// 1349*f334afcfSToomas Soome /// BERT Version (as defined in ACPI 5.1 spec.) 1350*f334afcfSToomas Soome /// 1351*f334afcfSToomas Soome #define EFI_ACPI_5_1_BOOT_ERROR_RECORD_TABLE_REVISION 0x01 1352*f334afcfSToomas Soome 1353*f334afcfSToomas Soome /// 1354*f334afcfSToomas Soome /// Boot Error Region Block Status Definition 1355*f334afcfSToomas Soome /// 1356*f334afcfSToomas Soome typedef struct { 1357*f334afcfSToomas Soome UINT32 UncorrectableErrorValid : 1; 1358*f334afcfSToomas Soome UINT32 CorrectableErrorValid : 1; 1359*f334afcfSToomas Soome UINT32 MultipleUncorrectableErrors : 1; 1360*f334afcfSToomas Soome UINT32 MultipleCorrectableErrors : 1; 1361*f334afcfSToomas Soome UINT32 ErrorDataEntryCount : 10; 1362*f334afcfSToomas Soome UINT32 Reserved : 18; 1363*f334afcfSToomas Soome } EFI_ACPI_5_1_ERROR_BLOCK_STATUS; 1364*f334afcfSToomas Soome 1365*f334afcfSToomas Soome /// 1366*f334afcfSToomas Soome /// Boot Error Region Definition 1367*f334afcfSToomas Soome /// 1368*f334afcfSToomas Soome typedef struct { 1369*f334afcfSToomas Soome EFI_ACPI_5_1_ERROR_BLOCK_STATUS BlockStatus; 1370*f334afcfSToomas Soome UINT32 RawDataOffset; 1371*f334afcfSToomas Soome UINT32 RawDataLength; 1372*f334afcfSToomas Soome UINT32 DataLength; 1373*f334afcfSToomas Soome UINT32 ErrorSeverity; 1374*f334afcfSToomas Soome } EFI_ACPI_5_1_BOOT_ERROR_REGION_STRUCTURE; 1375*f334afcfSToomas Soome 1376*f334afcfSToomas Soome // 1377*f334afcfSToomas Soome // Boot Error Severity types 1378*f334afcfSToomas Soome // 1379*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERROR_SEVERITY_RECOVERABLE 0x00 1380*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERROR_SEVERITY_FATAL 0x01 1381*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERROR_SEVERITY_CORRECTED 0x02 1382*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERROR_SEVERITY_NONE 0x03 1383*f334afcfSToomas Soome // 1384*f334afcfSToomas Soome // The term 'Correctable' is no longer being used as an error severity of the 1385*f334afcfSToomas Soome // reported error since ACPI Specification Version 5.1 Errata B. 1386*f334afcfSToomas Soome // The below macro is considered as deprecated and should no longer be used. 1387*f334afcfSToomas Soome // 1388*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERROR_SEVERITY_CORRECTABLE 0x00 1389*f334afcfSToomas Soome 1390*f334afcfSToomas Soome /// 1391*f334afcfSToomas Soome /// Generic Error Data Entry Definition 1392*f334afcfSToomas Soome /// 1393*f334afcfSToomas Soome typedef struct { 1394*f334afcfSToomas Soome UINT8 SectionType[16]; 1395*f334afcfSToomas Soome UINT32 ErrorSeverity; 1396*f334afcfSToomas Soome UINT16 Revision; 1397*f334afcfSToomas Soome UINT8 ValidationBits; 1398*f334afcfSToomas Soome UINT8 Flags; 1399*f334afcfSToomas Soome UINT32 ErrorDataLength; 1400*f334afcfSToomas Soome UINT8 FruId[16]; 1401*f334afcfSToomas Soome UINT8 FruText[20]; 1402*f334afcfSToomas Soome } EFI_ACPI_5_1_GENERIC_ERROR_DATA_ENTRY_STRUCTURE; 1403*f334afcfSToomas Soome 1404*f334afcfSToomas Soome /// 1405*f334afcfSToomas Soome /// Generic Error Data Entry Version (as defined in ACPI 5.1 spec.) 1406*f334afcfSToomas Soome /// 1407*f334afcfSToomas Soome #define EFI_ACPI_5_1_GENERIC_ERROR_DATA_ENTRY_REVISION 0x0201 1408*f334afcfSToomas Soome 1409*f334afcfSToomas Soome /// 1410*f334afcfSToomas Soome /// HEST - Hardware Error Source Table 1411*f334afcfSToomas Soome /// 1412*f334afcfSToomas Soome typedef struct { 1413*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 1414*f334afcfSToomas Soome UINT32 ErrorSourceCount; 1415*f334afcfSToomas Soome } EFI_ACPI_5_1_HARDWARE_ERROR_SOURCE_TABLE_HEADER; 1416*f334afcfSToomas Soome 1417*f334afcfSToomas Soome /// 1418*f334afcfSToomas Soome /// HEST Version (as defined in ACPI 5.1 spec.) 1419*f334afcfSToomas Soome /// 1420*f334afcfSToomas Soome #define EFI_ACPI_5_1_HARDWARE_ERROR_SOURCE_TABLE_REVISION 0x01 1421*f334afcfSToomas Soome 1422*f334afcfSToomas Soome // 1423*f334afcfSToomas Soome // Error Source structure types. 1424*f334afcfSToomas Soome // 1425*f334afcfSToomas Soome #define EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION 0x00 1426*f334afcfSToomas Soome #define EFI_ACPI_5_1_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK 0x01 1427*f334afcfSToomas Soome #define EFI_ACPI_5_1_IA32_ARCHITECTURE_NMI_ERROR 0x02 1428*f334afcfSToomas Soome #define EFI_ACPI_5_1_PCI_EXPRESS_ROOT_PORT_AER 0x06 1429*f334afcfSToomas Soome #define EFI_ACPI_5_1_PCI_EXPRESS_DEVICE_AER 0x07 1430*f334afcfSToomas Soome #define EFI_ACPI_5_1_PCI_EXPRESS_BRIDGE_AER 0x08 1431*f334afcfSToomas Soome #define EFI_ACPI_5_1_GENERIC_HARDWARE_ERROR 0x09 1432*f334afcfSToomas Soome 1433*f334afcfSToomas Soome // 1434*f334afcfSToomas Soome // Error Source structure flags. 1435*f334afcfSToomas Soome // 1436*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERROR_SOURCE_FLAG_FIRMWARE_FIRST (1 << 0) 1437*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERROR_SOURCE_FLAG_GLOBAL (1 << 1) 1438*f334afcfSToomas Soome 1439*f334afcfSToomas Soome /// 1440*f334afcfSToomas Soome /// IA-32 Architecture Machine Check Exception Structure Definition 1441*f334afcfSToomas Soome /// 1442*f334afcfSToomas Soome typedef struct { 1443*f334afcfSToomas Soome UINT16 Type; 1444*f334afcfSToomas Soome UINT16 SourceId; 1445*f334afcfSToomas Soome UINT8 Reserved0[2]; 1446*f334afcfSToomas Soome UINT8 Flags; 1447*f334afcfSToomas Soome UINT8 Enabled; 1448*f334afcfSToomas Soome UINT32 NumberOfRecordsToPreAllocate; 1449*f334afcfSToomas Soome UINT32 MaxSectionsPerRecord; 1450*f334afcfSToomas Soome UINT64 GlobalCapabilityInitData; 1451*f334afcfSToomas Soome UINT64 GlobalControlInitData; 1452*f334afcfSToomas Soome UINT8 NumberOfHardwareBanks; 1453*f334afcfSToomas Soome UINT8 Reserved1[7]; 1454*f334afcfSToomas Soome } EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION_STRUCTURE; 1455*f334afcfSToomas Soome 1456*f334afcfSToomas Soome /// 1457*f334afcfSToomas Soome /// IA-32 Architecture Machine Check Bank Structure Definition 1458*f334afcfSToomas Soome /// 1459*f334afcfSToomas Soome typedef struct { 1460*f334afcfSToomas Soome UINT8 BankNumber; 1461*f334afcfSToomas Soome UINT8 ClearStatusOnInitialization; 1462*f334afcfSToomas Soome UINT8 StatusDataFormat; 1463*f334afcfSToomas Soome UINT8 Reserved0; 1464*f334afcfSToomas Soome UINT32 ControlRegisterMsrAddress; 1465*f334afcfSToomas Soome UINT64 ControlInitData; 1466*f334afcfSToomas Soome UINT32 StatusRegisterMsrAddress; 1467*f334afcfSToomas Soome UINT32 AddressRegisterMsrAddress; 1468*f334afcfSToomas Soome UINT32 MiscRegisterMsrAddress; 1469*f334afcfSToomas Soome } EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_BANK_STRUCTURE; 1470*f334afcfSToomas Soome 1471*f334afcfSToomas Soome /// 1472*f334afcfSToomas Soome /// IA-32 Architecture Machine Check Bank Structure MCA data format 1473*f334afcfSToomas Soome /// 1474*f334afcfSToomas Soome #define EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_IA32 0x00 1475*f334afcfSToomas Soome #define EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_INTEL64 0x01 1476*f334afcfSToomas Soome #define EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_AMD64 0x02 1477*f334afcfSToomas Soome 1478*f334afcfSToomas Soome // 1479*f334afcfSToomas Soome // Hardware Error Notification types. All other values are reserved 1480*f334afcfSToomas Soome // 1481*f334afcfSToomas Soome #define EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_POLLED 0x00 1482*f334afcfSToomas Soome #define EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_EXTERNAL_INTERRUPT 0x01 1483*f334afcfSToomas Soome #define EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_LOCAL_INTERRUPT 0x02 1484*f334afcfSToomas Soome #define EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_SCI 0x03 1485*f334afcfSToomas Soome #define EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_NMI 0x04 1486*f334afcfSToomas Soome 1487*f334afcfSToomas Soome /// 1488*f334afcfSToomas Soome /// Hardware Error Notification Configuration Write Enable Structure Definition 1489*f334afcfSToomas Soome /// 1490*f334afcfSToomas Soome typedef struct { 1491*f334afcfSToomas Soome UINT16 Type : 1; 1492*f334afcfSToomas Soome UINT16 PollInterval : 1; 1493*f334afcfSToomas Soome UINT16 SwitchToPollingThresholdValue : 1; 1494*f334afcfSToomas Soome UINT16 SwitchToPollingThresholdWindow : 1; 1495*f334afcfSToomas Soome UINT16 ErrorThresholdValue : 1; 1496*f334afcfSToomas Soome UINT16 ErrorThresholdWindow : 1; 1497*f334afcfSToomas Soome UINT16 Reserved : 10; 1498*f334afcfSToomas Soome } EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE; 1499*f334afcfSToomas Soome 1500*f334afcfSToomas Soome /// 1501*f334afcfSToomas Soome /// Hardware Error Notification Structure Definition 1502*f334afcfSToomas Soome /// 1503*f334afcfSToomas Soome typedef struct { 1504*f334afcfSToomas Soome UINT8 Type; 1505*f334afcfSToomas Soome UINT8 Length; 1506*f334afcfSToomas Soome EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE ConfigurationWriteEnable; 1507*f334afcfSToomas Soome UINT32 PollInterval; 1508*f334afcfSToomas Soome UINT32 Vector; 1509*f334afcfSToomas Soome UINT32 SwitchToPollingThresholdValue; 1510*f334afcfSToomas Soome UINT32 SwitchToPollingThresholdWindow; 1511*f334afcfSToomas Soome UINT32 ErrorThresholdValue; 1512*f334afcfSToomas Soome UINT32 ErrorThresholdWindow; 1513*f334afcfSToomas Soome } EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_STRUCTURE; 1514*f334afcfSToomas Soome 1515*f334afcfSToomas Soome /// 1516*f334afcfSToomas Soome /// IA-32 Architecture Corrected Machine Check Structure Definition 1517*f334afcfSToomas Soome /// 1518*f334afcfSToomas Soome typedef struct { 1519*f334afcfSToomas Soome UINT16 Type; 1520*f334afcfSToomas Soome UINT16 SourceId; 1521*f334afcfSToomas Soome UINT8 Reserved0[2]; 1522*f334afcfSToomas Soome UINT8 Flags; 1523*f334afcfSToomas Soome UINT8 Enabled; 1524*f334afcfSToomas Soome UINT32 NumberOfRecordsToPreAllocate; 1525*f334afcfSToomas Soome UINT32 MaxSectionsPerRecord; 1526*f334afcfSToomas Soome EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure; 1527*f334afcfSToomas Soome UINT8 NumberOfHardwareBanks; 1528*f334afcfSToomas Soome UINT8 Reserved1[3]; 1529*f334afcfSToomas Soome } EFI_ACPI_5_1_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK_STRUCTURE; 1530*f334afcfSToomas Soome 1531*f334afcfSToomas Soome /// 1532*f334afcfSToomas Soome /// IA-32 Architecture NMI Error Structure Definition 1533*f334afcfSToomas Soome /// 1534*f334afcfSToomas Soome typedef struct { 1535*f334afcfSToomas Soome UINT16 Type; 1536*f334afcfSToomas Soome UINT16 SourceId; 1537*f334afcfSToomas Soome UINT8 Reserved0[2]; 1538*f334afcfSToomas Soome UINT32 NumberOfRecordsToPreAllocate; 1539*f334afcfSToomas Soome UINT32 MaxSectionsPerRecord; 1540*f334afcfSToomas Soome UINT32 MaxRawDataLength; 1541*f334afcfSToomas Soome } EFI_ACPI_5_1_IA32_ARCHITECTURE_NMI_ERROR_STRUCTURE; 1542*f334afcfSToomas Soome 1543*f334afcfSToomas Soome /// 1544*f334afcfSToomas Soome /// PCI Express Root Port AER Structure Definition 1545*f334afcfSToomas Soome /// 1546*f334afcfSToomas Soome typedef struct { 1547*f334afcfSToomas Soome UINT16 Type; 1548*f334afcfSToomas Soome UINT16 SourceId; 1549*f334afcfSToomas Soome UINT8 Reserved0[2]; 1550*f334afcfSToomas Soome UINT8 Flags; 1551*f334afcfSToomas Soome UINT8 Enabled; 1552*f334afcfSToomas Soome UINT32 NumberOfRecordsToPreAllocate; 1553*f334afcfSToomas Soome UINT32 MaxSectionsPerRecord; 1554*f334afcfSToomas Soome UINT32 Bus; 1555*f334afcfSToomas Soome UINT16 Device; 1556*f334afcfSToomas Soome UINT16 Function; 1557*f334afcfSToomas Soome UINT16 DeviceControl; 1558*f334afcfSToomas Soome UINT8 Reserved1[2]; 1559*f334afcfSToomas Soome UINT32 UncorrectableErrorMask; 1560*f334afcfSToomas Soome UINT32 UncorrectableErrorSeverity; 1561*f334afcfSToomas Soome UINT32 CorrectableErrorMask; 1562*f334afcfSToomas Soome UINT32 AdvancedErrorCapabilitiesAndControl; 1563*f334afcfSToomas Soome UINT32 RootErrorCommand; 1564*f334afcfSToomas Soome } EFI_ACPI_5_1_PCI_EXPRESS_ROOT_PORT_AER_STRUCTURE; 1565*f334afcfSToomas Soome 1566*f334afcfSToomas Soome /// 1567*f334afcfSToomas Soome /// PCI Express Device AER Structure Definition 1568*f334afcfSToomas Soome /// 1569*f334afcfSToomas Soome typedef struct { 1570*f334afcfSToomas Soome UINT16 Type; 1571*f334afcfSToomas Soome UINT16 SourceId; 1572*f334afcfSToomas Soome UINT8 Reserved0[2]; 1573*f334afcfSToomas Soome UINT8 Flags; 1574*f334afcfSToomas Soome UINT8 Enabled; 1575*f334afcfSToomas Soome UINT32 NumberOfRecordsToPreAllocate; 1576*f334afcfSToomas Soome UINT32 MaxSectionsPerRecord; 1577*f334afcfSToomas Soome UINT32 Bus; 1578*f334afcfSToomas Soome UINT16 Device; 1579*f334afcfSToomas Soome UINT16 Function; 1580*f334afcfSToomas Soome UINT16 DeviceControl; 1581*f334afcfSToomas Soome UINT8 Reserved1[2]; 1582*f334afcfSToomas Soome UINT32 UncorrectableErrorMask; 1583*f334afcfSToomas Soome UINT32 UncorrectableErrorSeverity; 1584*f334afcfSToomas Soome UINT32 CorrectableErrorMask; 1585*f334afcfSToomas Soome UINT32 AdvancedErrorCapabilitiesAndControl; 1586*f334afcfSToomas Soome } EFI_ACPI_5_1_PCI_EXPRESS_DEVICE_AER_STRUCTURE; 1587*f334afcfSToomas Soome 1588*f334afcfSToomas Soome /// 1589*f334afcfSToomas Soome /// PCI Express Bridge AER Structure Definition 1590*f334afcfSToomas Soome /// 1591*f334afcfSToomas Soome typedef struct { 1592*f334afcfSToomas Soome UINT16 Type; 1593*f334afcfSToomas Soome UINT16 SourceId; 1594*f334afcfSToomas Soome UINT8 Reserved0[2]; 1595*f334afcfSToomas Soome UINT8 Flags; 1596*f334afcfSToomas Soome UINT8 Enabled; 1597*f334afcfSToomas Soome UINT32 NumberOfRecordsToPreAllocate; 1598*f334afcfSToomas Soome UINT32 MaxSectionsPerRecord; 1599*f334afcfSToomas Soome UINT32 Bus; 1600*f334afcfSToomas Soome UINT16 Device; 1601*f334afcfSToomas Soome UINT16 Function; 1602*f334afcfSToomas Soome UINT16 DeviceControl; 1603*f334afcfSToomas Soome UINT8 Reserved1[2]; 1604*f334afcfSToomas Soome UINT32 UncorrectableErrorMask; 1605*f334afcfSToomas Soome UINT32 UncorrectableErrorSeverity; 1606*f334afcfSToomas Soome UINT32 CorrectableErrorMask; 1607*f334afcfSToomas Soome UINT32 AdvancedErrorCapabilitiesAndControl; 1608*f334afcfSToomas Soome UINT32 SecondaryUncorrectableErrorMask; 1609*f334afcfSToomas Soome UINT32 SecondaryUncorrectableErrorSeverity; 1610*f334afcfSToomas Soome UINT32 SecondaryAdvancedErrorCapabilitiesAndControl; 1611*f334afcfSToomas Soome } EFI_ACPI_5_1_PCI_EXPRESS_BRIDGE_AER_STRUCTURE; 1612*f334afcfSToomas Soome 1613*f334afcfSToomas Soome /// 1614*f334afcfSToomas Soome /// Generic Hardware Error Source Structure Definition 1615*f334afcfSToomas Soome /// 1616*f334afcfSToomas Soome typedef struct { 1617*f334afcfSToomas Soome UINT16 Type; 1618*f334afcfSToomas Soome UINT16 SourceId; 1619*f334afcfSToomas Soome UINT16 RelatedSourceId; 1620*f334afcfSToomas Soome UINT8 Flags; 1621*f334afcfSToomas Soome UINT8 Enabled; 1622*f334afcfSToomas Soome UINT32 NumberOfRecordsToPreAllocate; 1623*f334afcfSToomas Soome UINT32 MaxSectionsPerRecord; 1624*f334afcfSToomas Soome UINT32 MaxRawDataLength; 1625*f334afcfSToomas Soome EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE ErrorStatusAddress; 1626*f334afcfSToomas Soome EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure; 1627*f334afcfSToomas Soome UINT32 ErrorStatusBlockLength; 1628*f334afcfSToomas Soome } EFI_ACPI_5_1_GENERIC_HARDWARE_ERROR_SOURCE_STRUCTURE; 1629*f334afcfSToomas Soome 1630*f334afcfSToomas Soome /// 1631*f334afcfSToomas Soome /// Generic Error Status Definition 1632*f334afcfSToomas Soome /// 1633*f334afcfSToomas Soome typedef struct { 1634*f334afcfSToomas Soome EFI_ACPI_5_1_ERROR_BLOCK_STATUS BlockStatus; 1635*f334afcfSToomas Soome UINT32 RawDataOffset; 1636*f334afcfSToomas Soome UINT32 RawDataLength; 1637*f334afcfSToomas Soome UINT32 DataLength; 1638*f334afcfSToomas Soome UINT32 ErrorSeverity; 1639*f334afcfSToomas Soome } EFI_ACPI_5_1_GENERIC_ERROR_STATUS_STRUCTURE; 1640*f334afcfSToomas Soome 1641*f334afcfSToomas Soome /// 1642*f334afcfSToomas Soome /// ERST - Error Record Serialization Table 1643*f334afcfSToomas Soome /// 1644*f334afcfSToomas Soome typedef struct { 1645*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 1646*f334afcfSToomas Soome UINT32 SerializationHeaderSize; 1647*f334afcfSToomas Soome UINT8 Reserved0[4]; 1648*f334afcfSToomas Soome UINT32 InstructionEntryCount; 1649*f334afcfSToomas Soome } EFI_ACPI_5_1_ERROR_RECORD_SERIALIZATION_TABLE_HEADER; 1650*f334afcfSToomas Soome 1651*f334afcfSToomas Soome /// 1652*f334afcfSToomas Soome /// ERST Version (as defined in ACPI 5.1 spec.) 1653*f334afcfSToomas Soome /// 1654*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERROR_RECORD_SERIALIZATION_TABLE_REVISION 0x01 1655*f334afcfSToomas Soome 1656*f334afcfSToomas Soome /// 1657*f334afcfSToomas Soome /// ERST Serialization Actions 1658*f334afcfSToomas Soome /// 1659*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERST_BEGIN_WRITE_OPERATION 0x00 1660*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERST_BEGIN_READ_OPERATION 0x01 1661*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERST_BEGIN_CLEAR_OPERATION 0x02 1662*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERST_END_OPERATION 0x03 1663*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERST_SET_RECORD_OFFSET 0x04 1664*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERST_EXECUTE_OPERATION 0x05 1665*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERST_CHECK_BUSY_STATUS 0x06 1666*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERST_GET_COMMAND_STATUS 0x07 1667*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERST_GET_RECORD_IDENTIFIER 0x08 1668*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERST_SET_RECORD_IDENTIFIER 0x09 1669*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERST_GET_RECORD_COUNT 0x0A 1670*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERST_BEGIN_DUMMY_WRITE_OPERATION 0x0B 1671*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERST_GET_ERROR_LOG_ADDRESS_RANGE 0x0D 1672*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERST_GET_ERROR_LOG_ADDRESS_RANGE_LENGTH 0x0E 1673*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERST_GET_ERROR_LOG_ADDRESS_RANGE_ATTRIBUTES 0x0F 1674*f334afcfSToomas Soome 1675*f334afcfSToomas Soome /// 1676*f334afcfSToomas Soome /// ERST Action Command Status 1677*f334afcfSToomas Soome /// 1678*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERST_STATUS_SUCCESS 0x00 1679*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERST_STATUS_NOT_ENOUGH_SPACE 0x01 1680*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERST_STATUS_HARDWARE_NOT_AVAILABLE 0x02 1681*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERST_STATUS_FAILED 0x03 1682*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERST_STATUS_RECORD_STORE_EMPTY 0x04 1683*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERST_STATUS_RECORD_NOT_FOUND 0x05 1684*f334afcfSToomas Soome 1685*f334afcfSToomas Soome /// 1686*f334afcfSToomas Soome /// ERST Serialization Instructions 1687*f334afcfSToomas Soome /// 1688*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERST_READ_REGISTER 0x00 1689*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERST_READ_REGISTER_VALUE 0x01 1690*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERST_WRITE_REGISTER 0x02 1691*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERST_WRITE_REGISTER_VALUE 0x03 1692*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERST_NOOP 0x04 1693*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERST_LOAD_VAR1 0x05 1694*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERST_LOAD_VAR2 0x06 1695*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERST_STORE_VAR1 0x07 1696*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERST_ADD 0x08 1697*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERST_SUBTRACT 0x09 1698*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERST_ADD_VALUE 0x0A 1699*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERST_SUBTRACT_VALUE 0x0B 1700*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERST_STALL 0x0C 1701*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERST_STALL_WHILE_TRUE 0x0D 1702*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERST_SKIP_NEXT_INSTRUCTION_IF_TRUE 0x0E 1703*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERST_GOTO 0x0F 1704*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERST_SET_SRC_ADDRESS_BASE 0x10 1705*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERST_SET_DST_ADDRESS_BASE 0x11 1706*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERST_MOVE_DATA 0x12 1707*f334afcfSToomas Soome 1708*f334afcfSToomas Soome /// 1709*f334afcfSToomas Soome /// ERST Instruction Flags 1710*f334afcfSToomas Soome /// 1711*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERST_PRESERVE_REGISTER 0x01 1712*f334afcfSToomas Soome 1713*f334afcfSToomas Soome /// 1714*f334afcfSToomas Soome /// ERST Serialization Instruction Entry 1715*f334afcfSToomas Soome /// 1716*f334afcfSToomas Soome typedef struct { 1717*f334afcfSToomas Soome UINT8 SerializationAction; 1718*f334afcfSToomas Soome UINT8 Instruction; 1719*f334afcfSToomas Soome UINT8 Flags; 1720*f334afcfSToomas Soome UINT8 Reserved0; 1721*f334afcfSToomas Soome EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE RegisterRegion; 1722*f334afcfSToomas Soome UINT64 Value; 1723*f334afcfSToomas Soome UINT64 Mask; 1724*f334afcfSToomas Soome } EFI_ACPI_5_1_ERST_SERIALIZATION_INSTRUCTION_ENTRY; 1725*f334afcfSToomas Soome 1726*f334afcfSToomas Soome /// 1727*f334afcfSToomas Soome /// EINJ - Error Injection Table 1728*f334afcfSToomas Soome /// 1729*f334afcfSToomas Soome typedef struct { 1730*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 1731*f334afcfSToomas Soome UINT32 InjectionHeaderSize; 1732*f334afcfSToomas Soome UINT8 InjectionFlags; 1733*f334afcfSToomas Soome UINT8 Reserved0[3]; 1734*f334afcfSToomas Soome UINT32 InjectionEntryCount; 1735*f334afcfSToomas Soome } EFI_ACPI_5_1_ERROR_INJECTION_TABLE_HEADER; 1736*f334afcfSToomas Soome 1737*f334afcfSToomas Soome /// 1738*f334afcfSToomas Soome /// EINJ Version (as defined in ACPI 5.1 spec.) 1739*f334afcfSToomas Soome /// 1740*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERROR_INJECTION_TABLE_REVISION 0x01 1741*f334afcfSToomas Soome 1742*f334afcfSToomas Soome /// 1743*f334afcfSToomas Soome /// EINJ Error Injection Actions 1744*f334afcfSToomas Soome /// 1745*f334afcfSToomas Soome #define EFI_ACPI_5_1_EINJ_BEGIN_INJECTION_OPERATION 0x00 1746*f334afcfSToomas Soome #define EFI_ACPI_5_1_EINJ_GET_TRIGGER_ERROR_ACTION_TABLE 0x01 1747*f334afcfSToomas Soome #define EFI_ACPI_5_1_EINJ_SET_ERROR_TYPE 0x02 1748*f334afcfSToomas Soome #define EFI_ACPI_5_1_EINJ_GET_ERROR_TYPE 0x03 1749*f334afcfSToomas Soome #define EFI_ACPI_5_1_EINJ_END_OPERATION 0x04 1750*f334afcfSToomas Soome #define EFI_ACPI_5_1_EINJ_EXECUTE_OPERATION 0x05 1751*f334afcfSToomas Soome #define EFI_ACPI_5_1_EINJ_CHECK_BUSY_STATUS 0x06 1752*f334afcfSToomas Soome #define EFI_ACPI_5_1_EINJ_GET_COMMAND_STATUS 0x07 1753*f334afcfSToomas Soome #define EFI_ACPI_5_1_EINJ_TRIGGER_ERROR 0xFF 1754*f334afcfSToomas Soome 1755*f334afcfSToomas Soome /// 1756*f334afcfSToomas Soome /// EINJ Action Command Status 1757*f334afcfSToomas Soome /// 1758*f334afcfSToomas Soome #define EFI_ACPI_5_1_EINJ_STATUS_SUCCESS 0x00 1759*f334afcfSToomas Soome #define EFI_ACPI_5_1_EINJ_STATUS_UNKNOWN_FAILURE 0x01 1760*f334afcfSToomas Soome #define EFI_ACPI_5_1_EINJ_STATUS_INVALID_ACCESS 0x02 1761*f334afcfSToomas Soome 1762*f334afcfSToomas Soome /// 1763*f334afcfSToomas Soome /// EINJ Error Type Definition 1764*f334afcfSToomas Soome /// 1765*f334afcfSToomas Soome #define EFI_ACPI_5_1_EINJ_ERROR_PROCESSOR_CORRECTABLE (1 << 0) 1766*f334afcfSToomas Soome #define EFI_ACPI_5_1_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_NONFATAL (1 << 1) 1767*f334afcfSToomas Soome #define EFI_ACPI_5_1_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_FATAL (1 << 2) 1768*f334afcfSToomas Soome #define EFI_ACPI_5_1_EINJ_ERROR_MEMORY_CORRECTABLE (1 << 3) 1769*f334afcfSToomas Soome #define EFI_ACPI_5_1_EINJ_ERROR_MEMORY_UNCORRECTABLE_NONFATAL (1 << 4) 1770*f334afcfSToomas Soome #define EFI_ACPI_5_1_EINJ_ERROR_MEMORY_UNCORRECTABLE_FATAL (1 << 5) 1771*f334afcfSToomas Soome #define EFI_ACPI_5_1_EINJ_ERROR_PCI_EXPRESS_CORRECTABLE (1 << 6) 1772*f334afcfSToomas Soome #define EFI_ACPI_5_1_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_NONFATAL (1 << 7) 1773*f334afcfSToomas Soome #define EFI_ACPI_5_1_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_FATAL (1 << 8) 1774*f334afcfSToomas Soome #define EFI_ACPI_5_1_EINJ_ERROR_PLATFORM_CORRECTABLE (1 << 9) 1775*f334afcfSToomas Soome #define EFI_ACPI_5_1_EINJ_ERROR_PLATFORM_UNCORRECTABLE_NONFATAL (1 << 10) 1776*f334afcfSToomas Soome #define EFI_ACPI_5_1_EINJ_ERROR_PLATFORM_UNCORRECTABLE_FATAL (1 << 11) 1777*f334afcfSToomas Soome 1778*f334afcfSToomas Soome /// 1779*f334afcfSToomas Soome /// EINJ Injection Instructions 1780*f334afcfSToomas Soome /// 1781*f334afcfSToomas Soome #define EFI_ACPI_5_1_EINJ_READ_REGISTER 0x00 1782*f334afcfSToomas Soome #define EFI_ACPI_5_1_EINJ_READ_REGISTER_VALUE 0x01 1783*f334afcfSToomas Soome #define EFI_ACPI_5_1_EINJ_WRITE_REGISTER 0x02 1784*f334afcfSToomas Soome #define EFI_ACPI_5_1_EINJ_WRITE_REGISTER_VALUE 0x03 1785*f334afcfSToomas Soome #define EFI_ACPI_5_1_EINJ_NOOP 0x04 1786*f334afcfSToomas Soome 1787*f334afcfSToomas Soome /// 1788*f334afcfSToomas Soome /// EINJ Instruction Flags 1789*f334afcfSToomas Soome /// 1790*f334afcfSToomas Soome #define EFI_ACPI_5_1_EINJ_PRESERVE_REGISTER 0x01 1791*f334afcfSToomas Soome 1792*f334afcfSToomas Soome /// 1793*f334afcfSToomas Soome /// EINJ Injection Instruction Entry 1794*f334afcfSToomas Soome /// 1795*f334afcfSToomas Soome typedef struct { 1796*f334afcfSToomas Soome UINT8 InjectionAction; 1797*f334afcfSToomas Soome UINT8 Instruction; 1798*f334afcfSToomas Soome UINT8 Flags; 1799*f334afcfSToomas Soome UINT8 Reserved0; 1800*f334afcfSToomas Soome EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE RegisterRegion; 1801*f334afcfSToomas Soome UINT64 Value; 1802*f334afcfSToomas Soome UINT64 Mask; 1803*f334afcfSToomas Soome } EFI_ACPI_5_1_EINJ_INJECTION_INSTRUCTION_ENTRY; 1804*f334afcfSToomas Soome 1805*f334afcfSToomas Soome /// 1806*f334afcfSToomas Soome /// EINJ Trigger Action Table 1807*f334afcfSToomas Soome /// 1808*f334afcfSToomas Soome typedef struct { 1809*f334afcfSToomas Soome UINT32 HeaderSize; 1810*f334afcfSToomas Soome UINT32 Revision; 1811*f334afcfSToomas Soome UINT32 TableSize; 1812*f334afcfSToomas Soome UINT32 EntryCount; 1813*f334afcfSToomas Soome } EFI_ACPI_5_1_EINJ_TRIGGER_ACTION_TABLE; 1814*f334afcfSToomas Soome 1815*f334afcfSToomas Soome /// 1816*f334afcfSToomas Soome /// Platform Communications Channel Table (PCCT) 1817*f334afcfSToomas Soome /// 1818*f334afcfSToomas Soome typedef struct { 1819*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 1820*f334afcfSToomas Soome UINT32 Flags; 1821*f334afcfSToomas Soome UINT64 Reserved; 1822*f334afcfSToomas Soome } EFI_ACPI_5_1_PLATFORM_COMMUNICATION_CHANNEL_TABLE_HEADER; 1823*f334afcfSToomas Soome 1824*f334afcfSToomas Soome /// 1825*f334afcfSToomas Soome /// PCCT Version (as defined in ACPI 5.1 spec.) 1826*f334afcfSToomas Soome /// 1827*f334afcfSToomas Soome #define EFI_ACPI_5_1_PLATFORM_COMMUNICATION_CHANNEL_TABLE_REVISION 0x01 1828*f334afcfSToomas Soome 1829*f334afcfSToomas Soome /// 1830*f334afcfSToomas Soome /// PCCT Global Flags 1831*f334afcfSToomas Soome /// 1832*f334afcfSToomas Soome #define EFI_ACPI_5_1_PCCT_FLAGS_SCI_DOORBELL BIT0 1833*f334afcfSToomas Soome 1834*f334afcfSToomas Soome // 1835*f334afcfSToomas Soome // PCCT Subspace type 1836*f334afcfSToomas Soome // 1837*f334afcfSToomas Soome #define EFI_ACPI_5_1_PCCT_SUBSPACE_TYPE_GENERIC 0x00 1838*f334afcfSToomas Soome 1839*f334afcfSToomas Soome /// 1840*f334afcfSToomas Soome /// PCC Subspace Structure Header 1841*f334afcfSToomas Soome /// 1842*f334afcfSToomas Soome typedef struct { 1843*f334afcfSToomas Soome UINT8 Type; 1844*f334afcfSToomas Soome UINT8 Length; 1845*f334afcfSToomas Soome } EFI_ACPI_5_1_PCCT_SUBSPACE_HEADER; 1846*f334afcfSToomas Soome 1847*f334afcfSToomas Soome /// 1848*f334afcfSToomas Soome /// Generic Communications Subspace Structure 1849*f334afcfSToomas Soome /// 1850*f334afcfSToomas Soome typedef struct { 1851*f334afcfSToomas Soome UINT8 Type; 1852*f334afcfSToomas Soome UINT8 Length; 1853*f334afcfSToomas Soome UINT8 Reserved[6]; 1854*f334afcfSToomas Soome UINT64 BaseAddress; 1855*f334afcfSToomas Soome UINT64 AddressLength; 1856*f334afcfSToomas Soome EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE DoorbellRegister; 1857*f334afcfSToomas Soome UINT64 DoorbellPreserve; 1858*f334afcfSToomas Soome UINT64 DoorbellWrite; 1859*f334afcfSToomas Soome UINT32 NominalLatency; 1860*f334afcfSToomas Soome UINT32 MaximumPeriodicAccessRate; 1861*f334afcfSToomas Soome UINT16 MinimumRequestTurnaroundTime; 1862*f334afcfSToomas Soome } EFI_ACPI_5_1_PCCT_SUBSPACE_GENERIC; 1863*f334afcfSToomas Soome 1864*f334afcfSToomas Soome /// 1865*f334afcfSToomas Soome /// Generic Communications Channel Shared Memory Region 1866*f334afcfSToomas Soome /// 1867*f334afcfSToomas Soome 1868*f334afcfSToomas Soome typedef struct { 1869*f334afcfSToomas Soome UINT8 Command; 1870*f334afcfSToomas Soome UINT8 Reserved : 7; 1871*f334afcfSToomas Soome UINT8 GenerateSci : 1; 1872*f334afcfSToomas Soome } EFI_ACPI_5_1_PCCT_GENERIC_SHARED_MEMORY_REGION_COMMAND; 1873*f334afcfSToomas Soome 1874*f334afcfSToomas Soome typedef struct { 1875*f334afcfSToomas Soome UINT8 CommandComplete : 1; 1876*f334afcfSToomas Soome UINT8 SciDoorbell : 1; 1877*f334afcfSToomas Soome UINT8 Error : 1; 1878*f334afcfSToomas Soome UINT8 PlatformNotification : 1; 1879*f334afcfSToomas Soome UINT8 Reserved : 4; 1880*f334afcfSToomas Soome UINT8 Reserved1; 1881*f334afcfSToomas Soome } EFI_ACPI_5_1_PCCT_GENERIC_SHARED_MEMORY_REGION_STATUS; 1882*f334afcfSToomas Soome 1883*f334afcfSToomas Soome typedef struct { 1884*f334afcfSToomas Soome UINT32 Signature; 1885*f334afcfSToomas Soome EFI_ACPI_5_1_PCCT_GENERIC_SHARED_MEMORY_REGION_COMMAND Command; 1886*f334afcfSToomas Soome EFI_ACPI_5_1_PCCT_GENERIC_SHARED_MEMORY_REGION_STATUS Status; 1887*f334afcfSToomas Soome } EFI_ACPI_5_1_PCCT_GENERIC_SHARED_MEMORY_REGION_HEADER; 1888*f334afcfSToomas Soome 1889*f334afcfSToomas Soome // 1890*f334afcfSToomas Soome // Known table signatures 1891*f334afcfSToomas Soome // 1892*f334afcfSToomas Soome 1893*f334afcfSToomas Soome /// 1894*f334afcfSToomas Soome /// "RSD PTR " Root System Description Pointer 1895*f334afcfSToomas Soome /// 1896*f334afcfSToomas Soome #define EFI_ACPI_5_1_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ') 1897*f334afcfSToomas Soome 1898*f334afcfSToomas Soome /// 1899*f334afcfSToomas Soome /// "APIC" Multiple APIC Description Table 1900*f334afcfSToomas Soome /// 1901*f334afcfSToomas Soome #define EFI_ACPI_5_1_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('A', 'P', 'I', 'C') 1902*f334afcfSToomas Soome 1903*f334afcfSToomas Soome /// 1904*f334afcfSToomas Soome /// "BERT" Boot Error Record Table 1905*f334afcfSToomas Soome /// 1906*f334afcfSToomas Soome #define EFI_ACPI_5_1_BOOT_ERROR_RECORD_TABLE_SIGNATURE SIGNATURE_32('B', 'E', 'R', 'T') 1907*f334afcfSToomas Soome 1908*f334afcfSToomas Soome /// 1909*f334afcfSToomas Soome /// "BGRT" Boot Graphics Resource Table 1910*f334afcfSToomas Soome /// 1911*f334afcfSToomas Soome #define EFI_ACPI_5_1_BOOT_GRAPHICS_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('B', 'G', 'R', 'T') 1912*f334afcfSToomas Soome 1913*f334afcfSToomas Soome /// 1914*f334afcfSToomas Soome /// "CPEP" Corrected Platform Error Polling Table 1915*f334afcfSToomas Soome /// 1916*f334afcfSToomas Soome #define EFI_ACPI_5_1_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_SIGNATURE SIGNATURE_32('C', 'P', 'E', 'P') 1917*f334afcfSToomas Soome 1918*f334afcfSToomas Soome /// 1919*f334afcfSToomas Soome /// "DSDT" Differentiated System Description Table 1920*f334afcfSToomas Soome /// 1921*f334afcfSToomas Soome #define EFI_ACPI_5_1_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('D', 'S', 'D', 'T') 1922*f334afcfSToomas Soome 1923*f334afcfSToomas Soome /// 1924*f334afcfSToomas Soome /// "ECDT" Embedded Controller Boot Resources Table 1925*f334afcfSToomas Soome /// 1926*f334afcfSToomas Soome #define EFI_ACPI_5_1_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_SIGNATURE SIGNATURE_32('E', 'C', 'D', 'T') 1927*f334afcfSToomas Soome 1928*f334afcfSToomas Soome /// 1929*f334afcfSToomas Soome /// "EINJ" Error Injection Table 1930*f334afcfSToomas Soome /// 1931*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERROR_INJECTION_TABLE_SIGNATURE SIGNATURE_32('E', 'I', 'N', 'J') 1932*f334afcfSToomas Soome 1933*f334afcfSToomas Soome /// 1934*f334afcfSToomas Soome /// "ERST" Error Record Serialization Table 1935*f334afcfSToomas Soome /// 1936*f334afcfSToomas Soome #define EFI_ACPI_5_1_ERROR_RECORD_SERIALIZATION_TABLE_SIGNATURE SIGNATURE_32('E', 'R', 'S', 'T') 1937*f334afcfSToomas Soome 1938*f334afcfSToomas Soome /// 1939*f334afcfSToomas Soome /// "FACP" Fixed ACPI Description Table 1940*f334afcfSToomas Soome /// 1941*f334afcfSToomas Soome #define EFI_ACPI_5_1_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'P') 1942*f334afcfSToomas Soome 1943*f334afcfSToomas Soome /// 1944*f334afcfSToomas Soome /// "FACS" Firmware ACPI Control Structure 1945*f334afcfSToomas Soome /// 1946*f334afcfSToomas Soome #define EFI_ACPI_5_1_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'S') 1947*f334afcfSToomas Soome 1948*f334afcfSToomas Soome /// 1949*f334afcfSToomas Soome /// "FPDT" Firmware Performance Data Table 1950*f334afcfSToomas Soome /// 1951*f334afcfSToomas Soome #define EFI_ACPI_5_1_FIRMWARE_PERFORMANCE_DATA_TABLE_SIGNATURE SIGNATURE_32('F', 'P', 'D', 'T') 1952*f334afcfSToomas Soome 1953*f334afcfSToomas Soome /// 1954*f334afcfSToomas Soome /// "GTDT" Generic Timer Description Table 1955*f334afcfSToomas Soome /// 1956*f334afcfSToomas Soome #define EFI_ACPI_5_1_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('G', 'T', 'D', 'T') 1957*f334afcfSToomas Soome 1958*f334afcfSToomas Soome /// 1959*f334afcfSToomas Soome /// "HEST" Hardware Error Source Table 1960*f334afcfSToomas Soome /// 1961*f334afcfSToomas Soome #define EFI_ACPI_5_1_HARDWARE_ERROR_SOURCE_TABLE_SIGNATURE SIGNATURE_32('H', 'E', 'S', 'T') 1962*f334afcfSToomas Soome 1963*f334afcfSToomas Soome /// 1964*f334afcfSToomas Soome /// "MPST" Memory Power State Table 1965*f334afcfSToomas Soome /// 1966*f334afcfSToomas Soome #define EFI_ACPI_5_1_MEMORY_POWER_STATE_TABLE_SIGNATURE SIGNATURE_32('M', 'P', 'S', 'T') 1967*f334afcfSToomas Soome 1968*f334afcfSToomas Soome /// 1969*f334afcfSToomas Soome /// "MSCT" Maximum System Characteristics Table 1970*f334afcfSToomas Soome /// 1971*f334afcfSToomas Soome #define EFI_ACPI_5_1_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_SIGNATURE SIGNATURE_32('M', 'S', 'C', 'T') 1972*f334afcfSToomas Soome 1973*f334afcfSToomas Soome /// 1974*f334afcfSToomas Soome /// "PMTT" Platform Memory Topology Table 1975*f334afcfSToomas Soome /// 1976*f334afcfSToomas Soome #define EFI_ACPI_5_1_PLATFORM_MEMORY_TOPOLOGY_TABLE_SIGNATURE SIGNATURE_32('P', 'M', 'T', 'T') 1977*f334afcfSToomas Soome 1978*f334afcfSToomas Soome /// 1979*f334afcfSToomas Soome /// "PSDT" Persistent System Description Table 1980*f334afcfSToomas Soome /// 1981*f334afcfSToomas Soome #define EFI_ACPI_5_1_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('P', 'S', 'D', 'T') 1982*f334afcfSToomas Soome 1983*f334afcfSToomas Soome /// 1984*f334afcfSToomas Soome /// "RASF" ACPI RAS Feature Table 1985*f334afcfSToomas Soome /// 1986*f334afcfSToomas Soome #define EFI_ACPI_5_1_ACPI_RAS_FEATURE_TABLE_SIGNATURE SIGNATURE_32('R', 'A', 'S', 'F') 1987*f334afcfSToomas Soome 1988*f334afcfSToomas Soome /// 1989*f334afcfSToomas Soome /// "RSDT" Root System Description Table 1990*f334afcfSToomas Soome /// 1991*f334afcfSToomas Soome #define EFI_ACPI_5_1_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('R', 'S', 'D', 'T') 1992*f334afcfSToomas Soome 1993*f334afcfSToomas Soome /// 1994*f334afcfSToomas Soome /// "SBST" Smart Battery Specification Table 1995*f334afcfSToomas Soome /// 1996*f334afcfSToomas Soome #define EFI_ACPI_5_1_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE SIGNATURE_32('S', 'B', 'S', 'T') 1997*f334afcfSToomas Soome 1998*f334afcfSToomas Soome /// 1999*f334afcfSToomas Soome /// "SLIT" System Locality Information Table 2000*f334afcfSToomas Soome /// 2001*f334afcfSToomas Soome #define EFI_ACPI_5_1_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'T') 2002*f334afcfSToomas Soome 2003*f334afcfSToomas Soome /// 2004*f334afcfSToomas Soome /// "SRAT" System Resource Affinity Table 2005*f334afcfSToomas Soome /// 2006*f334afcfSToomas Soome #define EFI_ACPI_5_1_SYSTEM_RESOURCE_AFFINITY_TABLE_SIGNATURE SIGNATURE_32('S', 'R', 'A', 'T') 2007*f334afcfSToomas Soome 2008*f334afcfSToomas Soome /// 2009*f334afcfSToomas Soome /// "SSDT" Secondary System Description Table 2010*f334afcfSToomas Soome /// 2011*f334afcfSToomas Soome #define EFI_ACPI_5_1_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('S', 'S', 'D', 'T') 2012*f334afcfSToomas Soome 2013*f334afcfSToomas Soome /// 2014*f334afcfSToomas Soome /// "XSDT" Extended System Description Table 2015*f334afcfSToomas Soome /// 2016*f334afcfSToomas Soome #define EFI_ACPI_5_1_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('X', 'S', 'D', 'T') 2017*f334afcfSToomas Soome 2018*f334afcfSToomas Soome /// 2019*f334afcfSToomas Soome /// "BOOT" MS Simple Boot Spec 2020*f334afcfSToomas Soome /// 2021*f334afcfSToomas Soome #define EFI_ACPI_5_1_SIMPLE_BOOT_FLAG_TABLE_SIGNATURE SIGNATURE_32('B', 'O', 'O', 'T') 2022*f334afcfSToomas Soome 2023*f334afcfSToomas Soome /// 2024*f334afcfSToomas Soome /// "CSRT" MS Core System Resource Table 2025*f334afcfSToomas Soome /// 2026*f334afcfSToomas Soome #define EFI_ACPI_5_1_CORE_SYSTEM_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('C', 'S', 'R', 'T') 2027*f334afcfSToomas Soome 2028*f334afcfSToomas Soome /// 2029*f334afcfSToomas Soome /// "DBG2" MS Debug Port 2 Spec 2030*f334afcfSToomas Soome /// 2031*f334afcfSToomas Soome #define EFI_ACPI_5_1_DEBUG_PORT_2_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', '2') 2032*f334afcfSToomas Soome 2033*f334afcfSToomas Soome /// 2034*f334afcfSToomas Soome /// "DBGP" MS Debug Port Spec 2035*f334afcfSToomas Soome /// 2036*f334afcfSToomas Soome #define EFI_ACPI_5_1_DEBUG_PORT_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', 'P') 2037*f334afcfSToomas Soome 2038*f334afcfSToomas Soome /// 2039*f334afcfSToomas Soome /// "DMAR" DMA Remapping Table 2040*f334afcfSToomas Soome /// 2041*f334afcfSToomas Soome #define EFI_ACPI_5_1_DMA_REMAPPING_TABLE_SIGNATURE SIGNATURE_32('D', 'M', 'A', 'R') 2042*f334afcfSToomas Soome 2043*f334afcfSToomas Soome /// 2044*f334afcfSToomas Soome /// "DRTM" Dynamic Root of Trust for Measurement Table 2045*f334afcfSToomas Soome /// 2046*f334afcfSToomas Soome #define EFI_ACPI_5_1_DYNAMIC_ROOT_OF_TRUST_FOR_MEASUREMENT_TABLE_SIGNATURE SIGNATURE_32('D', 'R', 'T', 'M') 2047*f334afcfSToomas Soome 2048*f334afcfSToomas Soome /// 2049*f334afcfSToomas Soome /// "ETDT" Event Timer Description Table 2050*f334afcfSToomas Soome /// 2051*f334afcfSToomas Soome #define EFI_ACPI_5_1_EVENT_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('E', 'T', 'D', 'T') 2052*f334afcfSToomas Soome 2053*f334afcfSToomas Soome /// 2054*f334afcfSToomas Soome /// "HPET" IA-PC High Precision Event Timer Table 2055*f334afcfSToomas Soome /// 2056*f334afcfSToomas Soome #define EFI_ACPI_5_1_HIGH_PRECISION_EVENT_TIMER_TABLE_SIGNATURE SIGNATURE_32('H', 'P', 'E', 'T') 2057*f334afcfSToomas Soome 2058*f334afcfSToomas Soome /// 2059*f334afcfSToomas Soome /// "iBFT" iSCSI Boot Firmware Table 2060*f334afcfSToomas Soome /// 2061*f334afcfSToomas Soome #define EFI_ACPI_5_1_ISCSI_BOOT_FIRMWARE_TABLE_SIGNATURE SIGNATURE_32('i', 'B', 'F', 'T') 2062*f334afcfSToomas Soome 2063*f334afcfSToomas Soome /// 2064*f334afcfSToomas Soome /// "IVRS" I/O Virtualization Reporting Structure 2065*f334afcfSToomas Soome /// 2066*f334afcfSToomas Soome #define EFI_ACPI_5_1_IO_VIRTUALIZATION_REPORTING_STRUCTURE_SIGNATURE SIGNATURE_32('I', 'V', 'R', 'S') 2067*f334afcfSToomas Soome 2068*f334afcfSToomas Soome /// 2069*f334afcfSToomas Soome /// "LPIT" Low Power Idle Table 2070*f334afcfSToomas Soome /// 2071*f334afcfSToomas Soome #define EFI_ACPI_5_1_IO_LOW_POWER_IDLE_TABLE_STRUCTURE_SIGNATURE SIGNATURE_32('L', 'P', 'I', 'T') 2072*f334afcfSToomas Soome 2073*f334afcfSToomas Soome /// 2074*f334afcfSToomas Soome /// "MCFG" PCI Express Memory Mapped Configuration Space Base Address Description Table 2075*f334afcfSToomas Soome /// 2076*f334afcfSToomas Soome #define EFI_ACPI_5_1_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'F', 'G') 2077*f334afcfSToomas Soome 2078*f334afcfSToomas Soome /// 2079*f334afcfSToomas Soome /// "MCHI" Management Controller Host Interface Table 2080*f334afcfSToomas Soome /// 2081*f334afcfSToomas Soome #define EFI_ACPI_5_1_MANAGEMENT_CONTROLLER_HOST_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'H', 'I') 2082*f334afcfSToomas Soome 2083*f334afcfSToomas Soome /// 2084*f334afcfSToomas Soome /// "MSDM" MS Data Management Table 2085*f334afcfSToomas Soome /// 2086*f334afcfSToomas Soome #define EFI_ACPI_5_1_DATA_MANAGEMENT_TABLE_SIGNATURE SIGNATURE_32('M', 'S', 'D', 'M') 2087*f334afcfSToomas Soome 2088*f334afcfSToomas Soome /// 2089*f334afcfSToomas Soome /// "PCCT" Platform Communications Channel Table 2090*f334afcfSToomas Soome /// 2091*f334afcfSToomas Soome #define EFI_ACPI_5_1_PLATFORM_COMMUNICATIONS_CHANNEL_TABLE_SIGNATURE SIGNATURE_32('P', 'C', 'C', 'T') 2092*f334afcfSToomas Soome 2093*f334afcfSToomas Soome /// 2094*f334afcfSToomas Soome /// "SLIC" MS Software Licensing Table Specification 2095*f334afcfSToomas Soome /// 2096*f334afcfSToomas Soome #define EFI_ACPI_5_1_SOFTWARE_LICENSING_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'C') 2097*f334afcfSToomas Soome 2098*f334afcfSToomas Soome /// 2099*f334afcfSToomas Soome /// "SPCR" Serial Port Console Redirection Table 2100*f334afcfSToomas Soome /// 2101*f334afcfSToomas Soome #define EFI_ACPI_5_1_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'C', 'R') 2102*f334afcfSToomas Soome 2103*f334afcfSToomas Soome /// 2104*f334afcfSToomas Soome /// "SPMI" Server Platform Management Interface Table 2105*f334afcfSToomas Soome /// 2106*f334afcfSToomas Soome #define EFI_ACPI_5_1_SERVER_PLATFORM_MANAGEMENT_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'M', 'I') 2107*f334afcfSToomas Soome 2108*f334afcfSToomas Soome /// 2109*f334afcfSToomas Soome /// "TCPA" Trusted Computing Platform Alliance Capabilities Table 2110*f334afcfSToomas Soome /// 2111*f334afcfSToomas Soome #define EFI_ACPI_5_1_TRUSTED_COMPUTING_PLATFORM_ALLIANCE_CAPABILITIES_TABLE_SIGNATURE SIGNATURE_32('T', 'C', 'P', 'A') 2112*f334afcfSToomas Soome 2113*f334afcfSToomas Soome /// 2114*f334afcfSToomas Soome /// "TPM2" Trusted Computing Platform 1 Table 2115*f334afcfSToomas Soome /// 2116*f334afcfSToomas Soome #define EFI_ACPI_5_1_TRUSTED_COMPUTING_PLATFORM_2_TABLE_SIGNATURE SIGNATURE_32('T', 'P', 'M', '2') 2117*f334afcfSToomas Soome 2118*f334afcfSToomas Soome /// 2119*f334afcfSToomas Soome /// "UEFI" UEFI ACPI Data Table 2120*f334afcfSToomas Soome /// 2121*f334afcfSToomas Soome #define EFI_ACPI_5_1_UEFI_ACPI_DATA_TABLE_SIGNATURE SIGNATURE_32('U', 'E', 'F', 'I') 2122*f334afcfSToomas Soome 2123*f334afcfSToomas Soome /// 2124*f334afcfSToomas Soome /// "WAET" Windows ACPI Emulated Devices Table 2125*f334afcfSToomas Soome /// 2126*f334afcfSToomas Soome #define EFI_ACPI_5_1_WINDOWS_ACPI_EMULATED_DEVICES_TABLE_SIGNATURE SIGNATURE_32('W', 'A', 'E', 'T') 2127*f334afcfSToomas Soome 2128*f334afcfSToomas Soome /// 2129*f334afcfSToomas Soome /// "WDAT" Watchdog Action Table 2130*f334afcfSToomas Soome /// 2131*f334afcfSToomas Soome #define EFI_ACPI_5_1_WATCHDOG_ACTION_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'A', 'T') 2132*f334afcfSToomas Soome 2133*f334afcfSToomas Soome /// 2134*f334afcfSToomas Soome /// "WDRT" Watchdog Resource Table 2135*f334afcfSToomas Soome /// 2136*f334afcfSToomas Soome #define EFI_ACPI_5_1_WATCHDOG_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'R', 'T') 2137*f334afcfSToomas Soome 2138*f334afcfSToomas Soome /// 2139*f334afcfSToomas Soome /// "WPBT" MS Platform Binary Table 2140*f334afcfSToomas Soome /// 2141*f334afcfSToomas Soome #define EFI_ACPI_5_1_PLATFORM_BINARY_TABLE_SIGNATURE SIGNATURE_32('W', 'P', 'B', 'T') 2142*f334afcfSToomas Soome 2143*f334afcfSToomas Soome #pragma pack() 2144*f334afcfSToomas Soome 2145*f334afcfSToomas Soome #endif 2146