Path: blob/main/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h
48291 views
/** @file1ACPI 2.0 definitions from the ACPI Specification, revision 2.023Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>4SPDX-License-Identifier: BSD-2-Clause-Patent5**/67#ifndef _ACPI_2_0_H_8#define _ACPI_2_0_H_910#include <IndustryStandard/Acpi10.h>1112//13// Define for Descriptor14//15#define ACPI_LARGE_GENERIC_REGISTER_DESCRIPTOR_NAME 0x021617#define ACPI_GENERIC_REGISTER_DESCRIPTOR 0x821819//20// Ensure proper structure formats21//22#pragma pack(1)2324///25/// Generic Register Descriptor26///27typedef PACKED struct {28ACPI_LARGE_RESOURCE_HEADER Header;29UINT8 AddressSpaceId;30UINT8 RegisterBitWidth;31UINT8 RegisterBitOffset;32UINT8 AddressSize;33UINT64 RegisterAddress;34} EFI_ACPI_GENERIC_REGISTER_DESCRIPTOR;3536#pragma pack()3738//39// Ensure proper structure formats40//41#pragma pack(1)4243///44/// ACPI 2.0 Generic Address Space definition45///46typedef struct {47UINT8 AddressSpaceId;48UINT8 RegisterBitWidth;49UINT8 RegisterBitOffset;50UINT8 Reserved;51UINT64 Address;52} EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE;5354//55// Generic Address Space Address IDs56//57#define EFI_ACPI_2_0_SYSTEM_MEMORY 058#define EFI_ACPI_2_0_SYSTEM_IO 159#define EFI_ACPI_2_0_PCI_CONFIGURATION_SPACE 260#define EFI_ACPI_2_0_EMBEDDED_CONTROLLER 361#define EFI_ACPI_2_0_SMBUS 462#define EFI_ACPI_2_0_FUNCTIONAL_FIXED_HARDWARE 0x7F6364//65// ACPI 2.0 table structures66//6768///69/// Root System Description Pointer Structure70///71typedef struct {72UINT64 Signature;73UINT8 Checksum;74UINT8 OemId[6];75UINT8 Revision;76UINT32 RsdtAddress;77UINT32 Length;78UINT64 XsdtAddress;79UINT8 ExtendedChecksum;80UINT8 Reserved[3];81} EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_POINTER;8283///84/// RSD_PTR Revision (as defined in ACPI 2.0 spec.)85///86#define EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x028788///89/// Common table header, this prefaces all ACPI tables, including FACS, but90/// excluding the RSD PTR structure91///92typedef struct {93UINT32 Signature;94UINT32 Length;95} EFI_ACPI_2_0_COMMON_HEADER;9697//98// Root System Description Table99// No definition needed as it is a common description table header, the same with100// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32 table pointers.101//102103///104/// RSDT Revision (as defined in ACPI 2.0 spec.)105///106#define EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01107108//109// Extended System Description Table110// No definition needed as it is a common description table header, the same with111// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT64 table pointers.112//113114///115/// XSDT Revision (as defined in ACPI 2.0 spec.)116///117#define EFI_ACPI_2_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01118119///120/// Fixed ACPI Description Table Structure (FADT)121///122typedef struct {123EFI_ACPI_DESCRIPTION_HEADER Header;124UINT32 FirmwareCtrl;125UINT32 Dsdt;126UINT8 Reserved0;127UINT8 PreferredPmProfile;128UINT16 SciInt;129UINT32 SmiCmd;130UINT8 AcpiEnable;131UINT8 AcpiDisable;132UINT8 S4BiosReq;133UINT8 PstateCnt;134UINT32 Pm1aEvtBlk;135UINT32 Pm1bEvtBlk;136UINT32 Pm1aCntBlk;137UINT32 Pm1bCntBlk;138UINT32 Pm2CntBlk;139UINT32 PmTmrBlk;140UINT32 Gpe0Blk;141UINT32 Gpe1Blk;142UINT8 Pm1EvtLen;143UINT8 Pm1CntLen;144UINT8 Pm2CntLen;145UINT8 PmTmrLen;146UINT8 Gpe0BlkLen;147UINT8 Gpe1BlkLen;148UINT8 Gpe1Base;149UINT8 CstCnt;150UINT16 PLvl2Lat;151UINT16 PLvl3Lat;152UINT16 FlushSize;153UINT16 FlushStride;154UINT8 DutyOffset;155UINT8 DutyWidth;156UINT8 DayAlrm;157UINT8 MonAlrm;158UINT8 Century;159UINT16 IaPcBootArch;160UINT8 Reserved1;161UINT32 Flags;162EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE ResetReg;163UINT8 ResetValue;164UINT8 Reserved2[3];165UINT64 XFirmwareCtrl;166UINT64 XDsdt;167EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XPm1aEvtBlk;168EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XPm1bEvtBlk;169EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XPm1aCntBlk;170EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XPm1bCntBlk;171EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XPm2CntBlk;172EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XPmTmrBlk;173EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XGpe0Blk;174EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XGpe1Blk;175} EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE;176177///178/// FADT Version (as defined in ACPI 2.0 spec.)179///180#define EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 0x03181182//183// Fixed ACPI Description Table Preferred Power Management Profile184//185#define EFI_ACPI_2_0_PM_PROFILE_UNSPECIFIED 0186#define EFI_ACPI_2_0_PM_PROFILE_DESKTOP 1187#define EFI_ACPI_2_0_PM_PROFILE_MOBILE 2188#define EFI_ACPI_2_0_PM_PROFILE_WORKSTATION 3189#define EFI_ACPI_2_0_PM_PROFILE_ENTERPRISE_SERVER 4190#define EFI_ACPI_2_0_PM_PROFILE_SOHO_SERVER 5191#define EFI_ACPI_2_0_PM_PROFILE_APPLIANCE_PC 6192193//194// Fixed ACPI Description Table Boot Architecture Flags195// All other bits are reserved and must be set to 0.196//197#define EFI_ACPI_2_0_LEGACY_DEVICES BIT0198#define EFI_ACPI_2_0_8042 BIT1199200//201// Fixed ACPI Description Table Fixed Feature Flags202// All other bits are reserved and must be set to 0.203//204#define EFI_ACPI_2_0_WBINVD BIT0205#define EFI_ACPI_2_0_WBINVD_FLUSH BIT1206#define EFI_ACPI_2_0_PROC_C1 BIT2207#define EFI_ACPI_2_0_P_LVL2_UP BIT3208#define EFI_ACPI_2_0_PWR_BUTTON BIT4209#define EFI_ACPI_2_0_SLP_BUTTON BIT5210#define EFI_ACPI_2_0_FIX_RTC BIT6211#define EFI_ACPI_2_0_RTC_S4 BIT7212#define EFI_ACPI_2_0_TMR_VAL_EXT BIT8213#define EFI_ACPI_2_0_DCK_CAP BIT9214#define EFI_ACPI_2_0_RESET_REG_SUP BIT10215#define EFI_ACPI_2_0_SEALED_CASE BIT11216#define EFI_ACPI_2_0_HEADLESS BIT12217#define EFI_ACPI_2_0_CPU_SW_SLP BIT13218219///220/// Firmware ACPI Control Structure221///222typedef struct {223UINT32 Signature;224UINT32 Length;225UINT32 HardwareSignature;226UINT32 FirmwareWakingVector;227UINT32 GlobalLock;228UINT32 Flags;229UINT64 XFirmwareWakingVector;230UINT8 Version;231UINT8 Reserved[31];232} EFI_ACPI_2_0_FIRMWARE_ACPI_CONTROL_STRUCTURE;233234///235/// FACS Version (as defined in ACPI 2.0 spec.)236///237#define EFI_ACPI_2_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION 0x01238239///240/// Firmware Control Structure Feature Flags241/// All other bits are reserved and must be set to 0.242///243#define EFI_ACPI_2_0_S4BIOS_F BIT0244245///246/// Multiple APIC Description Table header definition. The rest of the table247/// must be defined in a platform specific manner.248///249typedef struct {250EFI_ACPI_DESCRIPTION_HEADER Header;251UINT32 LocalApicAddress;252UINT32 Flags;253} EFI_ACPI_2_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER;254255///256/// MADT Revision (as defined in ACPI 2.0 spec.)257///258#define EFI_ACPI_2_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x01259260///261/// Multiple APIC Flags262/// All other bits are reserved and must be set to 0.263///264#define EFI_ACPI_2_0_PCAT_COMPAT BIT0265266//267// Multiple APIC Description Table APIC structure types268// All other values between 0x09 an 0xFF are reserved and269// will be ignored by OSPM.270//271#define EFI_ACPI_2_0_PROCESSOR_LOCAL_APIC 0x00272#define EFI_ACPI_2_0_IO_APIC 0x01273#define EFI_ACPI_2_0_INTERRUPT_SOURCE_OVERRIDE 0x02274#define EFI_ACPI_2_0_NON_MASKABLE_INTERRUPT_SOURCE 0x03275#define EFI_ACPI_2_0_LOCAL_APIC_NMI 0x04276#define EFI_ACPI_2_0_LOCAL_APIC_ADDRESS_OVERRIDE 0x05277#define EFI_ACPI_2_0_IO_SAPIC 0x06278#define EFI_ACPI_2_0_PROCESSOR_LOCAL_SAPIC 0x07279#define EFI_ACPI_2_0_PLATFORM_INTERRUPT_SOURCES 0x08280281//282// APIC Structure Definitions283//284285///286/// Processor Local APIC Structure Definition287///288typedef struct {289UINT8 Type;290UINT8 Length;291UINT8 AcpiProcessorId;292UINT8 ApicId;293UINT32 Flags;294} EFI_ACPI_2_0_PROCESSOR_LOCAL_APIC_STRUCTURE;295296///297/// Local APIC Flags. All other bits are reserved and must be 0.298///299#define EFI_ACPI_2_0_LOCAL_APIC_ENABLED BIT0300301///302/// IO APIC Structure303///304typedef struct {305UINT8 Type;306UINT8 Length;307UINT8 IoApicId;308UINT8 Reserved;309UINT32 IoApicAddress;310UINT32 GlobalSystemInterruptBase;311} EFI_ACPI_2_0_IO_APIC_STRUCTURE;312313///314/// Interrupt Source Override Structure315///316typedef struct {317UINT8 Type;318UINT8 Length;319UINT8 Bus;320UINT8 Source;321UINT32 GlobalSystemInterrupt;322UINT16 Flags;323} EFI_ACPI_2_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE;324325///326/// Non-Maskable Interrupt Source Structure327///328typedef struct {329UINT8 Type;330UINT8 Length;331UINT16 Flags;332UINT32 GlobalSystemInterrupt;333} EFI_ACPI_2_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE;334335///336/// Local APIC NMI Structure337///338typedef struct {339UINT8 Type;340UINT8 Length;341UINT8 AcpiProcessorId;342UINT16 Flags;343UINT8 LocalApicLint;344} EFI_ACPI_2_0_LOCAL_APIC_NMI_STRUCTURE;345346///347/// Local APIC Address Override Structure348///349typedef struct {350UINT8 Type;351UINT8 Length;352UINT16 Reserved;353UINT64 LocalApicAddress;354} EFI_ACPI_2_0_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE;355356///357/// IO SAPIC Structure358///359typedef struct {360UINT8 Type;361UINT8 Length;362UINT8 IoApicId;363UINT8 Reserved;364UINT32 GlobalSystemInterruptBase;365UINT64 IoSapicAddress;366} EFI_ACPI_2_0_IO_SAPIC_STRUCTURE;367368///369/// Local SAPIC Structure370///371typedef struct {372UINT8 Type;373UINT8 Length;374UINT8 AcpiProcessorId;375UINT8 LocalSapicId;376UINT8 LocalSapicEid;377UINT8 Reserved[3];378UINT32 Flags;379} EFI_ACPI_2_0_PROCESSOR_LOCAL_SAPIC_STRUCTURE;380381///382/// Platform Interrupt Sources Structure383///384typedef struct {385UINT8 Type;386UINT8 Length;387UINT16 Flags;388UINT8 InterruptType;389UINT8 ProcessorId;390UINT8 ProcessorEid;391UINT8 IoSapicVector;392UINT32 GlobalSystemInterrupt;393UINT32 Reserved;394} EFI_ACPI_2_0_PLATFORM_INTERRUPT_SOURCES_STRUCTURE;395396///397/// Smart Battery Description Table (SBST)398///399typedef struct {400EFI_ACPI_DESCRIPTION_HEADER Header;401UINT32 WarningEnergyLevel;402UINT32 LowEnergyLevel;403UINT32 CriticalEnergyLevel;404} EFI_ACPI_2_0_SMART_BATTERY_DESCRIPTION_TABLE;405406///407/// SBST Version (as defined in ACPI 2.0 spec.)408///409#define EFI_ACPI_2_0_SMART_BATTERY_DESCRIPTION_TABLE_REVISION 0x01410411///412/// Embedded Controller Boot Resources Table (ECDT)413/// The table is followed by a null terminated ASCII string that contains414/// a fully qualified reference to the name space object.415///416typedef struct {417EFI_ACPI_DESCRIPTION_HEADER Header;418EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE EcControl;419EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE EcData;420UINT32 Uid;421UINT8 GpeBit;422} EFI_ACPI_2_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE;423424///425/// ECDT Version (as defined in ACPI 2.0 spec.)426///427#define EFI_ACPI_2_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_REVISION 0x01428429//430// Known table signatures431//432433///434/// "RSD PTR " Root System Description Pointer435///436#define EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ')437438///439/// "SPIC" Multiple SAPIC Description Table440///441/// BUGBUG: Don't know where this came from except SR870BN4 uses it.442/// #define EFI_ACPI_2_0_MULTIPLE_SAPIC_DESCRIPTION_TABLE_SIGNATURE 0x43495053443///444#define EFI_ACPI_2_0_MULTIPLE_SAPIC_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('A', 'P', 'I', 'C')445446///447/// "BOOT" MS Simple Boot Spec448///449#define EFI_ACPI_2_0_SIMPLE_BOOT_FLAG_TABLE_SIGNATURE SIGNATURE_32('B', 'O', 'O', 'T')450451///452/// "DBGP" MS Bebug Port Spec453///454#define EFI_ACPI_2_0_DEBUG_PORT_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', 'P')455456///457/// "DSDT" Differentiated System Description Table458///459#define EFI_ACPI_2_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('D', 'S', 'D', 'T')460461///462/// "ECDT" Embedded Controller Boot Resources Table463///464#define EFI_ACPI_2_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_SIGNATURE SIGNATURE_32('E', 'C', 'D', 'T')465466///467/// "ETDT" Event Timer Description Table468///469#define EFI_ACPI_2_0_EVENT_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('E', 'T', 'D', 'T')470471///472/// "FACS" Firmware ACPI Control Structure473///474#define EFI_ACPI_2_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'S')475476///477/// "FACP" Fixed ACPI Description Table478///479#define EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'P')480481///482/// "APIC" Multiple APIC Description Table483///484#define EFI_ACPI_2_0_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('A', 'P', 'I', 'C')485486///487/// "PSDT" Persistent System Description Table488///489#define EFI_ACPI_2_0_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('P', 'S', 'D', 'T')490491///492/// "RSDT" Root System Description Table493///494#define EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('R', 'S', 'D', 'T')495496///497/// "SBST" Smart Battery Specification Table498///499#define EFI_ACPI_2_0_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE SIGNATURE_32('S', 'B', 'S', 'T')500501///502/// "SLIT" System Locality Information Table503///504#define EFI_ACPI_2_0_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'T')505506///507/// "SPCR" Serial Port Console Redirection Table508///509#define EFI_ACPI_2_0_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'C', 'R')510511///512/// "SRAT" Static Resource Affinity Table513///514#define EFI_ACPI_2_0_STATIC_RESOURCE_AFFINITY_TABLE_SIGNATURE SIGNATURE_32('S', 'R', 'A', 'T')515516///517/// "SSDT" Secondary System Description Table518///519#define EFI_ACPI_2_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('S', 'S', 'D', 'T')520521///522/// "SPMI" Server Platform Management Interface Table523///524#define EFI_ACPI_2_0_SERVER_PLATFORM_MANAGEMENT_INTERFACE_SIGNATURE SIGNATURE_32('S', 'P', 'M', 'I')525526///527/// "XSDT" Extended System Description Table528///529#define EFI_ACPI_2_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('X', 'S', 'D', 'T')530531///532/// "MCFG" PCI Express Memory Mapped Configuration Space Base Address Description Table533///534#define EFI_ACPI_2_0_MEMORY_MAPPED_CONFIGURATION_BASE_ADDRESS_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'F', 'G')535536#pragma pack()537538#endif539540541