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