TianoCore EDK2 master
Loading...
Searching...
No Matches
Acpi30.h
Go to the documentation of this file.
1
9#ifndef _ACPI_3_0_H_
10#define _ACPI_3_0_H_
11
13
17#define EFI_ACPI_3_0_AML_CSD_REVISION 0
18
22#define EFI_ACPI_3_0_AML_CSD_NUM_ENTRIES 6
23
24//
25// Define for Descriptor
26//
27#define ACPI_LARGE_EXTENDED_ADDRESS_SPACE_DESCRIPTOR_NAME 0x0B
28
29#define ACPI_EXTENDED_ADDRESS_SPACE_DESCRIPTOR 0x8B
30
35#define ACPI_AML_COORD_TYPE_SW_ALL 0xFC
36#define ACPI_AML_COORD_TYPE_SW_ANY 0xFD
37#define ACPI_AML_COORD_TYPE_HW_ALL 0xFE
38
41// See s8.4.4.5 _PSD (P-State Dependency)
43#define EFI_ACPI_3_0_AML_PSD_REVISION 0
44
45//
46// Ensure proper structure formats
47//
48#pragma pack(1)
49
53typedef PACKED struct {
54 ACPI_LARGE_RESOURCE_HEADER Header;
55 UINT8 ResType;
56 UINT8 GenFlag;
57 UINT8 SpecificFlag;
58 UINT8 RevisionId;
59 UINT8 Reserved;
60 UINT64 AddrSpaceGranularity;
61 UINT64 AddrRangeMin;
62 UINT64 AddrRangeMax;
63 UINT64 AddrTranslationOffset;
64 UINT64 AddrLen;
65 UINT64 TypeSpecificAttribute;
67
68#pragma pack()
69
70//
71// Memory Type Specific Flags
72//
73#define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_UC 0x0000000000000001
74#define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_WC 0x0000000000000002
75#define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_WT 0x0000000000000004
76#define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_WB 0x0000000000000008
77#define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_UCE 0x0000000000000010
78#define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_NV 0x0000000000008000
79
80//
81// Ensure proper structure formats
82//
83#pragma pack(1)
84
88typedef struct {
89 UINT8 AddressSpaceId;
90 UINT8 RegisterBitWidth;
91 UINT8 RegisterBitOffset;
92 UINT8 AccessSize;
93 UINT64 Address;
95
96//
97// Generic Address Space Address IDs
98//
99#define EFI_ACPI_3_0_SYSTEM_MEMORY 0
100#define EFI_ACPI_3_0_SYSTEM_IO 1
101#define EFI_ACPI_3_0_PCI_CONFIGURATION_SPACE 2
102#define EFI_ACPI_3_0_EMBEDDED_CONTROLLER 3
103#define EFI_ACPI_3_0_SMBUS 4
104#define EFI_ACPI_3_0_FUNCTIONAL_FIXED_HARDWARE 0x7F
105
106//
107// Generic Address Space Access Sizes
108//
109#define EFI_ACPI_3_0_UNDEFINED 0
110#define EFI_ACPI_3_0_BYTE 1
111#define EFI_ACPI_3_0_WORD 2
112#define EFI_ACPI_3_0_DWORD 3
113#define EFI_ACPI_3_0_QWORD 4
114
115//
116// ACPI 3.0 table structures
117//
118
122typedef struct {
123 UINT64 Signature;
124 UINT8 Checksum;
125 UINT8 OemId[6];
126 UINT8 Revision;
127 UINT32 RsdtAddress;
128 UINT32 Length;
129 UINT64 XsdtAddress;
130 UINT8 ExtendedChecksum;
131 UINT8 Reserved[3];
133
137#define EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02
138
143typedef struct {
144 UINT32 Signature;
145 UINT32 Length;
147
148//
149// Root System Description Table
150// No definition needed as it is a common description table header, the same with
151// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32 table pointers.
152//
153
157#define EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
158
159//
160// Extended System Description Table
161// No definition needed as it is a common description table header, the same with
162// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT64 table pointers.
163//
164
168#define EFI_ACPI_3_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
169
173typedef struct {
175 UINT32 FirmwareCtrl;
176 UINT32 Dsdt;
177 UINT8 Reserved0;
178 UINT8 PreferredPmProfile;
179 UINT16 SciInt;
180 UINT32 SmiCmd;
181 UINT8 AcpiEnable;
182 UINT8 AcpiDisable;
183 UINT8 S4BiosReq;
184 UINT8 PstateCnt;
185 UINT32 Pm1aEvtBlk;
186 UINT32 Pm1bEvtBlk;
187 UINT32 Pm1aCntBlk;
188 UINT32 Pm1bCntBlk;
189 UINT32 Pm2CntBlk;
190 UINT32 PmTmrBlk;
191 UINT32 Gpe0Blk;
192 UINT32 Gpe1Blk;
193 UINT8 Pm1EvtLen;
194 UINT8 Pm1CntLen;
195 UINT8 Pm2CntLen;
196 UINT8 PmTmrLen;
197 UINT8 Gpe0BlkLen;
198 UINT8 Gpe1BlkLen;
199 UINT8 Gpe1Base;
200 UINT8 CstCnt;
201 UINT16 PLvl2Lat;
202 UINT16 PLvl3Lat;
203 UINT16 FlushSize;
204 UINT16 FlushStride;
205 UINT8 DutyOffset;
206 UINT8 DutyWidth;
207 UINT8 DayAlrm;
208 UINT8 MonAlrm;
209 UINT8 Century;
210 UINT16 IaPcBootArch;
211 UINT8 Reserved1;
212 UINT32 Flags;
214 UINT8 ResetValue;
215 UINT8 Reserved2[3];
216 UINT64 XFirmwareCtrl;
217 UINT64 XDsdt;
227
231#define EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 0x04
232
233//
234// Fixed ACPI Description Table Preferred Power Management Profile
235//
236#define EFI_ACPI_3_0_PM_PROFILE_UNSPECIFIED 0
237#define EFI_ACPI_3_0_PM_PROFILE_DESKTOP 1
238#define EFI_ACPI_3_0_PM_PROFILE_MOBILE 2
239#define EFI_ACPI_3_0_PM_PROFILE_WORKSTATION 3
240#define EFI_ACPI_3_0_PM_PROFILE_ENTERPRISE_SERVER 4
241#define EFI_ACPI_3_0_PM_PROFILE_SOHO_SERVER 5
242#define EFI_ACPI_3_0_PM_PROFILE_APPLIANCE_PC 6
243#define EFI_ACPI_3_0_PM_PROFILE_PERFORMANCE_SERVER 7
244
245//
246// Fixed ACPI Description Table Boot Architecture Flags
247// All other bits are reserved and must be set to 0.
248//
249#define EFI_ACPI_3_0_LEGACY_DEVICES BIT0
250#define EFI_ACPI_3_0_8042 BIT1
251#define EFI_ACPI_3_0_VGA_NOT_PRESENT BIT2
252#define EFI_ACPI_3_0_MSI_NOT_SUPPORTED BIT3
253#define EFI_ACPI_3_0_PCIE_ASPM_CONTROLS BIT4
254
255//
256// Fixed ACPI Description Table Fixed Feature Flags
257// All other bits are reserved and must be set to 0.
258//
259#define EFI_ACPI_3_0_WBINVD BIT0
260#define EFI_ACPI_3_0_WBINVD_FLUSH BIT1
261#define EFI_ACPI_3_0_PROC_C1 BIT2
262#define EFI_ACPI_3_0_P_LVL2_UP BIT3
263#define EFI_ACPI_3_0_PWR_BUTTON BIT4
264#define EFI_ACPI_3_0_SLP_BUTTON BIT5
265#define EFI_ACPI_3_0_FIX_RTC BIT6
266#define EFI_ACPI_3_0_RTC_S4 BIT7
267#define EFI_ACPI_3_0_TMR_VAL_EXT BIT8
268#define EFI_ACPI_3_0_DCK_CAP BIT9
269#define EFI_ACPI_3_0_RESET_REG_SUP BIT10
270#define EFI_ACPI_3_0_SEALED_CASE BIT11
271#define EFI_ACPI_3_0_HEADLESS BIT12
272#define EFI_ACPI_3_0_CPU_SW_SLP BIT13
273#define EFI_ACPI_3_0_PCI_EXP_WAK BIT14
274#define EFI_ACPI_3_0_USE_PLATFORM_CLOCK BIT15
275#define EFI_ACPI_3_0_S4_RTC_STS_VALID BIT16
276#define EFI_ACPI_3_0_REMOTE_POWER_ON_CAPABLE BIT17
277#define EFI_ACPI_3_0_FORCE_APIC_CLUSTER_MODEL BIT18
278#define EFI_ACPI_3_0_FORCE_APIC_PHYSICAL_DESTINATION_MODE BIT19
279
283typedef struct {
284 UINT32 Signature;
285 UINT32 Length;
286 UINT32 HardwareSignature;
287 UINT32 FirmwareWakingVector;
288 UINT32 GlobalLock;
289 UINT32 Flags;
290 UINT64 XFirmwareWakingVector;
291 UINT8 Version;
292 UINT8 Reserved[31];
294
298#define EFI_ACPI_3_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION 0x01
299
304#define EFI_ACPI_3_0_S4BIOS_F BIT0
305
306//
307// Differentiated System Description Table,
308// Secondary System Description Table
309// and Persistent System Description Table,
310// no definition needed as they are common description table header, the same with
311// EFI_ACPI_DESCRIPTION_HEADER, followed by a definition block.
312//
313#define EFI_ACPI_3_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x02
314#define EFI_ACPI_3_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_REVISION 0x02
315
320typedef struct {
322 UINT32 LocalApicAddress;
323 UINT32 Flags;
325
329#define EFI_ACPI_3_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x02
330
335#define EFI_ACPI_3_0_PCAT_COMPAT BIT0
336
337//
338// Multiple APIC Description Table APIC structure types
339// All other values between 0x09 an 0xFF are reserved and
340// will be ignored by OSPM.
341//
342#define EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC 0x00
343#define EFI_ACPI_3_0_IO_APIC 0x01
344#define EFI_ACPI_3_0_INTERRUPT_SOURCE_OVERRIDE 0x02
345#define EFI_ACPI_3_0_NON_MASKABLE_INTERRUPT_SOURCE 0x03
346#define EFI_ACPI_3_0_LOCAL_APIC_NMI 0x04
347#define EFI_ACPI_3_0_LOCAL_APIC_ADDRESS_OVERRIDE 0x05
348#define EFI_ACPI_3_0_IO_SAPIC 0x06
349#define EFI_ACPI_3_0_LOCAL_SAPIC 0x07
350#define EFI_ACPI_3_0_PLATFORM_INTERRUPT_SOURCES 0x08
351
352//
353// APIC Structure Definitions
354//
355
359typedef struct {
360 UINT8 Type;
361 UINT8 Length;
362 UINT8 AcpiProcessorId;
363 UINT8 ApicId;
364 UINT32 Flags;
366
370#define EFI_ACPI_3_0_LOCAL_APIC_ENABLED BIT0
371
375typedef struct {
376 UINT8 Type;
377 UINT8 Length;
378 UINT8 IoApicId;
379 UINT8 Reserved;
380 UINT32 IoApicAddress;
381 UINT32 GlobalSystemInterruptBase;
383
387typedef struct {
388 UINT8 Type;
389 UINT8 Length;
390 UINT8 Bus;
391 UINT8 Source;
392 UINT32 GlobalSystemInterrupt;
393 UINT16 Flags;
395
399typedef struct {
400 UINT8 Type;
401 UINT8 Length;
402 UINT16 Flags;
403 UINT8 InterruptType;
404 UINT8 ProcessorId;
405 UINT8 ProcessorEid;
406 UINT8 IoSapicVector;
407 UINT32 GlobalSystemInterrupt;
408 UINT32 PlatformInterruptSourceFlags;
409 UINT8 CpeiProcessorOverride;
410 UINT8 Reserved[31];
412
413//
414// MPS INTI flags.
415// All other bits are reserved and must be set to 0.
416//
417#define EFI_ACPI_3_0_POLARITY (3 << 0)
418#define EFI_ACPI_3_0_TRIGGER_MODE (3 << 2)
419
423typedef struct {
424 UINT8 Type;
425 UINT8 Length;
426 UINT16 Flags;
427 UINT32 GlobalSystemInterrupt;
429
433typedef struct {
434 UINT8 Type;
435 UINT8 Length;
436 UINT8 AcpiProcessorId;
437 UINT16 Flags;
438 UINT8 LocalApicLint;
440
444typedef struct {
445 UINT8 Type;
446 UINT8 Length;
447 UINT16 Reserved;
448 UINT64 LocalApicAddress;
450
454typedef struct {
455 UINT8 Type;
456 UINT8 Length;
457 UINT8 IoApicId;
458 UINT8 Reserved;
459 UINT32 GlobalSystemInterruptBase;
460 UINT64 IoSapicAddress;
462
467typedef struct {
468 UINT8 Type;
469 UINT8 Length;
470 UINT8 AcpiProcessorId;
471 UINT8 LocalSapicId;
472 UINT8 LocalSapicEid;
473 UINT8 Reserved[3];
474 UINT32 Flags;
475 UINT32 ACPIProcessorUIDValue;
477
481typedef struct {
482 UINT8 Type;
483 UINT8 Length;
484 UINT16 Flags;
485 UINT8 InterruptType;
486 UINT8 ProcessorId;
487 UINT8 ProcessorEid;
488 UINT8 IoSapicVector;
489 UINT32 GlobalSystemInterrupt;
490 UINT32 PlatformInterruptSourceFlags;
492
497#define EFI_ACPI_3_0_CPEI_PROCESSOR_OVERRIDE BIT0
498
502typedef struct {
504 UINT32 WarningEnergyLevel;
505 UINT32 LowEnergyLevel;
506 UINT32 CriticalEnergyLevel;
508
512#define EFI_ACPI_3_0_SMART_BATTERY_DESCRIPTION_TABLE_REVISION 0x01
513
519typedef struct {
523 UINT32 Uid;
524 UINT8 GpeBit;
526
530#define EFI_ACPI_3_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_REVISION 0x01
531
536typedef struct {
538 UINT32 Reserved1;
539 UINT64 Reserved2;
541
545#define EFI_ACPI_3_0_SYSTEM_RESOURCE_AFFINITY_TABLE_REVISION 0x02
546
547//
548// SRAT structure types.
549// All other values between 0x02 an 0xFF are reserved and
550// will be ignored by OSPM.
551//
552#define EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY 0x00
553#define EFI_ACPI_3_0_MEMORY_AFFINITY 0x01
554
558typedef struct {
559 UINT8 Type;
560 UINT8 Length;
561 UINT8 ProximityDomain7To0;
562 UINT8 ApicId;
563 UINT32 Flags;
564 UINT8 LocalSapicEid;
565 UINT8 ProximityDomain31To8[3];
566 UINT8 Reserved[4];
568
572#define EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC_SAPIC_ENABLED (1 << 0)
573
577typedef struct {
578 UINT8 Type;
579 UINT8 Length;
580 UINT32 ProximityDomain;
581 UINT16 Reserved1;
582 UINT32 AddressBaseLow;
583 UINT32 AddressBaseHigh;
584 UINT32 LengthLow;
585 UINT32 LengthHigh;
586 UINT32 Reserved2;
587 UINT32 Flags;
588 UINT64 Reserved3;
590
591//
592// Memory Flags. All other bits are reserved and must be 0.
593//
594#define EFI_ACPI_3_0_MEMORY_ENABLED (1 << 0)
595#define EFI_ACPI_3_0_MEMORY_HOT_PLUGGABLE (1 << 1)
596#define EFI_ACPI_3_0_MEMORY_NONVOLATILE (1 << 2)
597
602typedef struct {
604 UINT64 NumberOfSystemLocalities;
606
610#define EFI_ACPI_3_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_REVISION 0x01
611
612//
613// Known table signatures
614//
615
619#define EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ')
620
624#define EFI_ACPI_3_0_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('A', 'P', 'I', 'C')
625
629#define EFI_ACPI_3_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('D', 'S', 'D', 'T')
630
634#define EFI_ACPI_3_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_SIGNATURE SIGNATURE_32('E', 'C', 'D', 'T')
635
639#define EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'P')
640
644#define EFI_ACPI_3_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'S')
645
649#define EFI_ACPI_3_0_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('P', 'S', 'D', 'T')
650
654#define EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('R', 'S', 'D', 'T')
655
659#define EFI_ACPI_3_0_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE SIGNATURE_32('S', 'B', 'S', 'T')
660
664#define EFI_ACPI_3_0_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'T')
665
669#define EFI_ACPI_3_0_SYSTEM_RESOURCE_AFFINITY_TABLE_SIGNATURE SIGNATURE_32('S', 'R', 'A', 'T')
670
674#define EFI_ACPI_3_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('S', 'S', 'D', 'T')
675
679#define EFI_ACPI_3_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('X', 'S', 'D', 'T')
680
684#define EFI_ACPI_3_0_SIMPLE_BOOT_FLAG_TABLE_SIGNATURE SIGNATURE_32('B', 'O', 'O', 'T')
685
689#define EFI_ACPI_3_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_SIGNATURE SIGNATURE_32('C', 'P', 'E', 'P')
690
694#define EFI_ACPI_3_0_DEBUG_PORT_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', 'P')
695
699#define EFI_ACPI_3_0_EVENT_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('E', 'T', 'D', 'T')
700
704#define EFI_ACPI_3_0_HIGH_PRECISION_EVENT_TIMER_TABLE_SIGNATURE SIGNATURE_32('H', 'P', 'E', 'T')
705
709#define EFI_ACPI_3_0_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'F', 'G')
710
714#define EFI_ACPI_3_0_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'C', 'R')
715
719#define EFI_ACPI_3_0_SERVER_PLATFORM_MANAGEMENT_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'M', 'I')
720
724#define EFI_ACPI_3_0_TRUSTED_COMPUTING_PLATFORM_ALLIANCE_CAPABILITIES_TABLE_SIGNATURE SIGNATURE_32('T', 'C', 'P', 'A')
725
729#define EFI_ACPI_3_0_WATCHDOG_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'R', 'T')
730
734#define EFI_ACPI_3_0_WATCHDOG_ACTION_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'A', 'T')
735
739#define EFI_ACPI_3_0_WINDOWS_SPECIFIC_PROPERTIES_TABLE_SIGNATURE SIGNATURE_32('W', 'S', 'P', 'T')
740
744#define EFI_ACPI_3_0_ISCSI_BOOT_FIRMWARE_TABLE_SIGNATURE SIGNATURE_32('i', 'B', 'F', 'T')
745
746#pragma pack()
747
748#endif
PACKED struct @119 EFI_ACPI_EXTENDED_ADDRESS_SPACE_DESCRIPTOR