]> git.proxmox.com Git - mirror_edk2.git/blame - MdePkg/Include/IndustryStandard/Acpi10.h
BaseTools: Update the FV Space Information to display decimal and Hex
[mirror_edk2.git] / MdePkg / Include / IndustryStandard / Acpi10.h
CommitLineData
9095d37b 1/** @file\r
ee6c452c 2 ACPI 1.0b definitions from the ACPI Specification, revision 1.0b\r
568eb0cb 3\r
9095d37b 4Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
9344f092 5SPDX-License-Identifier: BSD-2-Clause-Patent\r
568eb0cb 6**/\r
7\r
8#ifndef _ACPI_1_0_H_\r
9#define _ACPI_1_0_H_\r
10\r
4a18b92c
JY
11#include <IndustryStandard/AcpiAml.h>\r
12\r
1bc5d021 13///\r
14/// Common table header, this prefaces all ACPI tables, including FACS, but\r
af2dc6a7 15/// excluding the RSD PTR structure.\r
1bc5d021 16///\r
ecc40942 17typedef struct {\r
18 UINT32 Signature;\r
19 UINT32 Length;\r
20} EFI_ACPI_COMMON_HEADER;\r
21\r
4f1afaac 22#pragma pack(1)\r
a2461f6b 23///\r
af2dc6a7 24/// The common ACPI description table header. This structure prefaces most ACPI tables.\r
a2461f6b 25///\r
ecc40942 26typedef struct {\r
27 UINT32 Signature;\r
28 UINT32 Length;\r
29 UINT8 Revision;\r
30 UINT8 Checksum;\r
31 UINT8 OemId[6];\r
32 UINT64 OemTableId;\r
33 UINT32 OemRevision;\r
34 UINT32 CreatorId;\r
35 UINT32 CreatorRevision;\r
36} EFI_ACPI_DESCRIPTION_HEADER;\r
766f4bc1 37#pragma pack()\r
a2461f6b 38\r
ecc40942 39//\r
b219e2cd 40// Define for Descriptor\r
ecc40942 41//\r
4a18b92c
JY
42#define ACPI_SMALL_ITEM_FLAG 0x00\r
43#define ACPI_LARGE_ITEM_FLAG 0x01\r
44\r
45//\r
46// Small Item Descriptor Name\r
47//\r
48#define ACPI_SMALL_IRQ_DESCRIPTOR_NAME 0x04\r
49#define ACPI_SMALL_DMA_DESCRIPTOR_NAME 0x05\r
50#define ACPI_SMALL_START_DEPENDENT_DESCRIPTOR_NAME 0x06\r
51#define ACPI_SMALL_END_DEPENDENT_DESCRIPTOR_NAME 0x07\r
52#define ACPI_SMALL_IO_PORT_DESCRIPTOR_NAME 0x08\r
53#define ACPI_SMALL_FIXED_IO_PORT_DESCRIPTOR_NAME 0x09\r
54#define ACPI_SMALL_VENDOR_DEFINED_DESCRIPTOR_NAME 0x0E\r
55#define ACPI_SMALL_END_TAG_DESCRIPTOR_NAME 0x0F\r
56\r
57//\r
58// Large Item Descriptor Name\r
59//\r
60#define ACPI_LARGE_24_BIT_MEMORY_RANGE_DESCRIPTOR_NAME 0x01\r
61#define ACPI_LARGE_VENDOR_DEFINED_DESCRIPTOR_NAME 0x04\r
62#define ACPI_LARGE_32_BIT_MEMORY_RANGE_DESCRIPTOR_NAME 0x05\r
63#define ACPI_LARGE_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR_NAME 0x06\r
64#define ACPI_LARGE_DWORD_ADDRESS_SPACE_DESCRIPTOR_NAME 0x07\r
65#define ACPI_LARGE_WORD_ADDRESS_SPACE_DESCRIPTOR_NAME 0x08\r
66#define ACPI_LARGE_EXTENDED_IRQ_DESCRIPTOR_NAME 0x09\r
67#define ACPI_LARGE_QWORD_ADDRESS_SPACE_DESCRIPTOR_NAME 0x0A\r
68\r
69//\r
70// Small Item Descriptor Value\r
71//\r
72#define ACPI_IRQ_NOFLAG_DESCRIPTOR 0x22\r
73#define ACPI_IRQ_DESCRIPTOR 0x23\r
2186f2a1 74#define ACPI_DMA_DESCRIPTOR 0x2A\r
4a18b92c
JY
75#define ACPI_START_DEPENDENT_DESCRIPTOR 0x30\r
76#define ACPI_START_DEPENDENT_EX_DESCRIPTOR 0x31\r
77#define ACPI_END_DEPENDENT_DESCRIPTOR 0x38\r
2186f2a1
RN
78#define ACPI_IO_PORT_DESCRIPTOR 0x47\r
79#define ACPI_FIXED_LOCATION_IO_PORT_DESCRIPTOR 0x4B\r
4a18b92c
JY
80#define ACPI_END_TAG_DESCRIPTOR 0x79\r
81\r
82//\r
83// Large Item Descriptor Value\r
84//\r
85#define ACPI_24_BIT_MEMORY_RANGE_DESCRIPTOR 0x81\r
2186f2a1
RN
86#define ACPI_32_BIT_MEMORY_RANGE_DESCRIPTOR 0x85\r
87#define ACPI_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR 0x86\r
4a18b92c
JY
88#define ACPI_DWORD_ADDRESS_SPACE_DESCRIPTOR 0x87\r
89#define ACPI_WORD_ADDRESS_SPACE_DESCRIPTOR 0x88\r
90#define ACPI_EXTENDED_INTERRUPT_DESCRIPTOR 0x89\r
91#define ACPI_QWORD_ADDRESS_SPACE_DESCRIPTOR 0x8A\r
2186f2a1 92#define ACPI_ADDRESS_SPACE_DESCRIPTOR 0x8A\r
ecc40942 93\r
2b1cf49a 94//\r
95// Resource Type\r
96//\r
ecc40942 97#define ACPI_ADDRESS_SPACE_TYPE_MEM 0x00\r
98#define ACPI_ADDRESS_SPACE_TYPE_IO 0x01\r
99#define ACPI_ADDRESS_SPACE_TYPE_BUS 0x02\r
100\r
1bc5d021 101///\r
af2dc6a7 102/// Power Management Timer frequency is fixed at 3.579545MHz.\r
1bc5d021 103///\r
ecc40942 104#define ACPI_TIMER_FREQUENCY 3579545\r
105\r
98a33bf4 106//\r
107// Ensure proper structure formats\r
108//\r
109#pragma pack(1)\r
a2461f6b 110\r
111///\r
b219e2cd 112/// The common definition of QWORD, DWORD, and WORD\r
af2dc6a7 113/// Address Space Descriptors.\r
a2461f6b 114///\r
0b61020a 115typedef PACKED struct {\r
ecc40942 116 UINT8 Desc;\r
117 UINT16 Len;\r
118 UINT8 ResType;\r
119 UINT8 GenFlag;\r
120 UINT8 SpecificFlag;\r
121 UINT64 AddrSpaceGranularity;\r
122 UINT64 AddrRangeMin;\r
123 UINT64 AddrRangeMax;\r
124 UINT64 AddrTranslationOffset;\r
125 UINT64 AddrLen;\r
126} EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR;\r
127\r
605466ae 128typedef PACKED union {\r
2186f2a1 129 UINT8 Byte;\r
605466ae 130 PACKED struct {\r
2186f2a1
RN
131 UINT8 Length : 3;\r
132 UINT8 Name : 4;\r
133 UINT8 Type : 1;\r
134 } Bits;\r
135} ACPI_SMALL_RESOURCE_HEADER;\r
136\r
605466ae 137typedef PACKED struct {\r
138 PACKED union {\r
2186f2a1 139 UINT8 Byte;\r
605466ae 140 PACKED struct {\r
2186f2a1
RN
141 UINT8 Name : 7;\r
142 UINT8 Type : 1;\r
143 }Bits;\r
144 } Header;\r
145 UINT16 Length;\r
146} ACPI_LARGE_RESOURCE_HEADER;\r
147\r
148///\r
149/// IRQ Descriptor.\r
150///\r
151typedef PACKED struct {\r
152 ACPI_SMALL_RESOURCE_HEADER Header;\r
153 UINT16 Mask;\r
154} EFI_ACPI_IRQ_NOFLAG_DESCRIPTOR;\r
155\r
156///\r
157/// IRQ Descriptor.\r
158///\r
159typedef PACKED struct {\r
160 ACPI_SMALL_RESOURCE_HEADER Header;\r
161 UINT16 Mask;\r
162 UINT8 Information;\r
163} EFI_ACPI_IRQ_DESCRIPTOR;\r
164\r
165///\r
166/// DMA Descriptor.\r
167///\r
168typedef PACKED struct {\r
169 ACPI_SMALL_RESOURCE_HEADER Header;\r
170 UINT8 ChannelMask;\r
171 UINT8 Information;\r
172} EFI_ACPI_DMA_DESCRIPTOR;\r
173\r
174///\r
175/// I/O Port Descriptor\r
176///\r
177typedef PACKED struct {\r
178 ACPI_SMALL_RESOURCE_HEADER Header;\r
179 UINT8 Information;\r
180 UINT16 BaseAddressMin;\r
181 UINT16 BaseAddressMax;\r
182 UINT8 Alignment;\r
183 UINT8 Length;\r
184} EFI_ACPI_IO_PORT_DESCRIPTOR;\r
185\r
186///\r
187/// Fixed Location I/O Port Descriptor.\r
188///\r
189typedef PACKED struct {\r
190 ACPI_SMALL_RESOURCE_HEADER Header;\r
191 UINT16 BaseAddress;\r
192 UINT8 Length;\r
193} EFI_ACPI_FIXED_LOCATION_IO_PORT_DESCRIPTOR;\r
194\r
4a18b92c
JY
195///\r
196/// 24-Bit Memory Range Descriptor\r
197///\r
198typedef PACKED struct {\r
199 ACPI_LARGE_RESOURCE_HEADER Header;\r
200 UINT8 Information;\r
201 UINT16 BaseAddressMin;\r
202 UINT16 BaseAddressMax;\r
203 UINT16 Alignment;\r
204 UINT16 Length;\r
205} EFI_ACPI_24_BIT_MEMORY_RANGE_DESCRIPTOR;\r
206\r
2186f2a1
RN
207///\r
208/// 32-Bit Memory Range Descriptor\r
209///\r
210typedef PACKED struct {\r
211 ACPI_LARGE_RESOURCE_HEADER Header;\r
212 UINT8 Information;\r
213 UINT32 BaseAddressMin;\r
214 UINT32 BaseAddressMax;\r
215 UINT32 Alignment;\r
216 UINT32 Length;\r
217} EFI_ACPI_32_BIT_MEMORY_RANGE_DESCRIPTOR;\r
218\r
219///\r
220/// Fixed 32-Bit Fixed Memory Range Descriptor\r
221///\r
222typedef PACKED struct {\r
223 ACPI_LARGE_RESOURCE_HEADER Header;\r
224 UINT8 Information;\r
225 UINT32 BaseAddress;\r
226 UINT32 Length;\r
227} EFI_ACPI_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR;\r
4a18b92c
JY
228\r
229///\r
230/// QWORD Address Space Descriptor\r
231///\r
232typedef PACKED struct {\r
233 ACPI_LARGE_RESOURCE_HEADER Header;\r
234 UINT8 ResType;\r
235 UINT8 GenFlag;\r
236 UINT8 SpecificFlag;\r
237 UINT64 AddrSpaceGranularity;\r
238 UINT64 AddrRangeMin;\r
239 UINT64 AddrRangeMax;\r
240 UINT64 AddrTranslationOffset;\r
241 UINT64 AddrLen;\r
242} EFI_ACPI_QWORD_ADDRESS_SPACE_DESCRIPTOR;\r
243\r
244///\r
245/// DWORD Address Space Descriptor\r
246///\r
247typedef PACKED struct {\r
248 ACPI_LARGE_RESOURCE_HEADER Header;\r
249 UINT8 ResType;\r
250 UINT8 GenFlag;\r
251 UINT8 SpecificFlag;\r
252 UINT32 AddrSpaceGranularity;\r
253 UINT32 AddrRangeMin;\r
254 UINT32 AddrRangeMax;\r
255 UINT32 AddrTranslationOffset;\r
256 UINT32 AddrLen;\r
257} EFI_ACPI_DWORD_ADDRESS_SPACE_DESCRIPTOR;\r
258\r
259///\r
260/// WORD Address Space Descriptor\r
261///\r
262typedef PACKED struct {\r
263 ACPI_LARGE_RESOURCE_HEADER Header;\r
264 UINT8 ResType;\r
265 UINT8 GenFlag;\r
266 UINT8 SpecificFlag;\r
267 UINT16 AddrSpaceGranularity;\r
268 UINT16 AddrRangeMin;\r
269 UINT16 AddrRangeMax;\r
270 UINT16 AddrTranslationOffset;\r
271 UINT16 AddrLen;\r
272} EFI_ACPI_WORD_ADDRESS_SPACE_DESCRIPTOR;\r
273\r
274///\r
275/// Extended Interrupt Descriptor\r
276///\r
277typedef PACKED struct {\r
278 ACPI_LARGE_RESOURCE_HEADER Header;\r
279 UINT8 InterruptVectorFlags;\r
280 UINT8 InterruptTableLength;\r
281 UINT32 InterruptNumber[1];\r
282} EFI_ACPI_EXTENDED_INTERRUPT_DESCRIPTOR;\r
283\r
98a33bf4 284#pragma pack()\r
285\r
427987f5 286///\r
af2dc6a7 287/// The End tag identifies an end of resource data.\r
427987f5 288///\r
ecc40942 289typedef struct {\r
290 UINT8 Desc;\r
291 UINT8 Checksum;\r
292} EFI_ACPI_END_TAG_DESCRIPTOR;\r
293\r
294//\r
295// General use definitions\r
296//\r
297#define EFI_ACPI_RESERVED_BYTE 0x00\r
298#define EFI_ACPI_RESERVED_WORD 0x0000\r
299#define EFI_ACPI_RESERVED_DWORD 0x00000000\r
300#define EFI_ACPI_RESERVED_QWORD 0x0000000000000000\r
301\r
302//\r
303// Resource Type Specific Flags\r
304// Ref ACPI specification 6.4.3.5.5\r
305//\r
306// Bit [0] : Write Status, _RW\r
307//\r
308#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_READ_WRITE (1 << 0)\r
309#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_READ_ONLY (0 << 0)\r
310//\r
311// Bit [2:1] : Memory Attributes, _MEM\r
312//\r
313#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_NON_CACHEABLE (0 << 1)\r
314#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE (1 << 1)\r
315#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE_WRITE_COMBINING (2 << 1)\r
316#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE_PREFETCHABLE (3 << 1)\r
317//\r
318// Bit [4:3] : Memory Attributes, _MTP\r
319//\r
320#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_MEMORY (0 << 3)\r
321#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_RESERVED (1 << 3)\r
322#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_ACPI (2 << 3)\r
323#define EFI_APCI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_NVS (3 << 3)\r
324//\r
325// Bit [5] : Memory to I/O Translation, _TTP\r
326//\r
327#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_TYPE_TRANSLATION (1 << 5)\r
328#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_TYPE_STATIC (0 << 5)\r
329\r
2186f2a1
RN
330//\r
331// IRQ Information\r
332// Ref ACPI specification 6.4.2.1\r
333//\r
334#define EFI_ACPI_IRQ_SHARABLE_MASK 0x10\r
335#define EFI_ACPI_IRQ_SHARABLE 0x10\r
336\r
337#define EFI_ACPI_IRQ_POLARITY_MASK 0x08\r
338#define EFI_ACPI_IRQ_HIGH_TRUE 0x00\r
339#define EFI_ACPI_IRQ_LOW_FALSE 0x08\r
340\r
341#define EFI_ACPI_IRQ_MODE 0x01\r
342#define EFI_ACPI_IRQ_LEVEL_TRIGGERED 0x00\r
343#define EFI_ACPI_IRQ_EDGE_TRIGGERED 0x01\r
344\r
345//\r
346// DMA Information\r
347// Ref ACPI specification 6.4.2.2\r
348//\r
349#define EFI_ACPI_DMA_SPEED_TYPE_MASK 0x60\r
350#define EFI_ACPI_DMA_SPEED_TYPE_COMPATIBILITY 0x00\r
351#define EFI_ACPI_DMA_SPEED_TYPE_A 0x20\r
352#define EFI_ACPI_DMA_SPEED_TYPE_B 0x40\r
353#define EFI_ACPI_DMA_SPEED_TYPE_F 0x60\r
9095d37b 354\r
2186f2a1
RN
355#define EFI_ACPI_DMA_BUS_MASTER_MASK 0x04\r
356#define EFI_ACPI_DMA_BUS_MASTER 0x04\r
357\r
358#define EFI_ACPI_DMA_TRANSFER_TYPE_MASK 0x03\r
359#define EFI_ACPI_DMA_TRANSFER_TYPE_8_BIT 0x00\r
360#define EFI_ACPI_DMA_TRANSFER_TYPE_8_BIT_AND_16_BIT 0x01\r
5ffcbc46 361#define EFI_ACPI_DMA_TRANSFER_TYPE_16_BIT 0x02\r
2186f2a1
RN
362\r
363//\r
364// IO Information\r
365// Ref ACPI specification 6.4.2.5\r
366//\r
367#define EFI_ACPI_IO_DECODE_MASK 0x01\r
368#define EFI_ACPI_IO_DECODE_16_BIT 0x01\r
369#define EFI_ACPI_IO_DECODE_10_BIT 0x00\r
370\r
371//\r
372// Memory Information\r
373// Ref ACPI specification 6.4.3.4\r
374//\r
375#define EFI_ACPI_MEMORY_WRITE_STATUS_MASK 0x01\r
376#define EFI_ACPI_MEMORY_WRITABLE 0x01\r
377#define EFI_ACPI_MEMORY_NON_WRITABLE 0x00\r
378\r
766f4bc1 379//\r
380// Ensure proper structure formats\r
381//\r
382#pragma pack(1)\r
568eb0cb 383//\r
384// ACPI 1.0b table structures\r
385//\r
1bc5d021 386\r
387///\r
af2dc6a7 388/// Root System Description Pointer Structure.\r
1bc5d021 389///\r
568eb0cb 390typedef struct {\r
391 UINT64 Signature;\r
392 UINT8 Checksum;\r
393 UINT8 OemId[6];\r
394 UINT8 Reserved;\r
395 UINT32 RsdtAddress;\r
396} EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_POINTER;\r
397\r
398//\r
399// Root System Description Table\r
9095d37b 400// No definition needed as it is a common description table header, the same with\r
2b1cf49a 401// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32 table pointers.\r
568eb0cb 402//\r
1bc5d021 403\r
404///\r
af2dc6a7 405/// RSDT Revision (as defined in ACPI 1.0b specification).\r
1bc5d021 406///\r
568eb0cb 407#define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01\r
408\r
1bc5d021 409///\r
af2dc6a7 410/// Fixed ACPI Description Table Structure (FADT).\r
1bc5d021 411///\r
568eb0cb 412typedef struct {\r
413 EFI_ACPI_DESCRIPTION_HEADER Header;\r
414 UINT32 FirmwareCtrl;\r
415 UINT32 Dsdt;\r
416 UINT8 IntModel;\r
417 UINT8 Reserved1;\r
418 UINT16 SciInt;\r
419 UINT32 SmiCmd;\r
420 UINT8 AcpiEnable;\r
421 UINT8 AcpiDisable;\r
422 UINT8 S4BiosReq;\r
423 UINT8 Reserved2;\r
424 UINT32 Pm1aEvtBlk;\r
425 UINT32 Pm1bEvtBlk;\r
426 UINT32 Pm1aCntBlk;\r
427 UINT32 Pm1bCntBlk;\r
428 UINT32 Pm2CntBlk;\r
429 UINT32 PmTmrBlk;\r
430 UINT32 Gpe0Blk;\r
431 UINT32 Gpe1Blk;\r
432 UINT8 Pm1EvtLen;\r
433 UINT8 Pm1CntLen;\r
434 UINT8 Pm2CntLen;\r
435 UINT8 PmTmLen;\r
436 UINT8 Gpe0BlkLen;\r
437 UINT8 Gpe1BlkLen;\r
438 UINT8 Gpe1Base;\r
439 UINT8 Reserved3;\r
440 UINT16 PLvl2Lat;\r
441 UINT16 PLvl3Lat;\r
442 UINT16 FlushSize;\r
443 UINT16 FlushStride;\r
444 UINT8 DutyOffset;\r
445 UINT8 DutyWidth;\r
446 UINT8 DayAlrm;\r
447 UINT8 MonAlrm;\r
448 UINT8 Century;\r
449 UINT8 Reserved4;\r
450 UINT8 Reserved5;\r
451 UINT8 Reserved6;\r
452 UINT32 Flags;\r
453} EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE;\r
454\r
1bc5d021 455///\r
af2dc6a7 456/// FADT Version (as defined in ACPI 1.0b specification).\r
1bc5d021 457///\r
568eb0cb 458#define EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 0x01\r
459\r
4a18b92c
JY
460#define EFI_ACPI_1_0_INT_MODE_DUAL_PIC 0\r
461#define EFI_ACPI_1_0_INT_MODE_MULTIPLE_APIC 1\r
462\r
568eb0cb 463//\r
464// Fixed ACPI Description Table Fixed Feature Flags\r
465// All other bits are reserved and must be set to 0.\r
466//\r
a2461f6b 467#define EFI_ACPI_1_0_WBINVD BIT0\r
468#define EFI_ACPI_1_0_WBINVD_FLUSH BIT1\r
469#define EFI_ACPI_1_0_PROC_C1 BIT2\r
470#define EFI_ACPI_1_0_P_LVL2_UP BIT3\r
471#define EFI_ACPI_1_0_PWR_BUTTON BIT4\r
472#define EFI_ACPI_1_0_SLP_BUTTON BIT5\r
473#define EFI_ACPI_1_0_FIX_RTC BIT6\r
474#define EFI_ACPI_1_0_RTC_S4 BIT7\r
475#define EFI_ACPI_1_0_TMR_VAL_EXT BIT8\r
476#define EFI_ACPI_1_0_DCK_CAP BIT9\r
568eb0cb 477\r
1bc5d021 478///\r
af2dc6a7 479/// Firmware ACPI Control Structure.\r
1bc5d021 480///\r
568eb0cb 481typedef struct {\r
482 UINT32 Signature;\r
483 UINT32 Length;\r
484 UINT32 HardwareSignature;\r
485 UINT32 FirmwareWakingVector;\r
486 UINT32 GlobalLock;\r
487 UINT32 Flags;\r
488 UINT8 Reserved[40];\r
489} EFI_ACPI_1_0_FIRMWARE_ACPI_CONTROL_STRUCTURE;\r
490\r
1bc5d021 491///\r
af2dc6a7 492/// Firmware Control Structure Feature Flags.\r
1bc5d021 493/// All other bits are reserved and must be set to 0.\r
494///\r
a2461f6b 495#define EFI_ACPI_1_0_S4BIOS_F BIT0\r
568eb0cb 496\r
1bc5d021 497///\r
498/// Multiple APIC Description Table header definition. The rest of the table\r
af2dc6a7 499/// must be defined in a platform-specific manner.\r
1bc5d021 500///\r
568eb0cb 501typedef struct {\r
502 EFI_ACPI_DESCRIPTION_HEADER Header;\r
503 UINT32 LocalApicAddress;\r
504 UINT32 Flags;\r
505} EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER;\r
506\r
1bc5d021 507///\r
af2dc6a7 508/// MADT Revision (as defined in ACPI 1.0b specification).\r
1bc5d021 509///\r
568eb0cb 510#define EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x01\r
511\r
1bc5d021 512///\r
513/// Multiple APIC Flags\r
514/// All other bits are reserved and must be set to 0.\r
515///\r
a2461f6b 516#define EFI_ACPI_1_0_PCAT_COMPAT BIT0\r
568eb0cb 517\r
518//\r
519// Multiple APIC Description Table APIC structure types\r
2b1cf49a 520// All other values between 0x05 an 0xFF are reserved and\r
568eb0cb 521// will be ignored by OSPM.\r
522//\r
523#define EFI_ACPI_1_0_PROCESSOR_LOCAL_APIC 0x00\r
524#define EFI_ACPI_1_0_IO_APIC 0x01\r
525#define EFI_ACPI_1_0_INTERRUPT_SOURCE_OVERRIDE 0x02\r
526#define EFI_ACPI_1_0_NON_MASKABLE_INTERRUPT_SOURCE 0x03\r
527#define EFI_ACPI_1_0_LOCAL_APIC_NMI 0x04\r
528\r
529//\r
530// APIC Structure Definitions\r
531//\r
1bc5d021 532\r
533///\r
af2dc6a7 534/// Processor Local APIC Structure Definition.\r
1bc5d021 535///\r
568eb0cb 536typedef struct {\r
537 UINT8 Type;\r
538 UINT8 Length;\r
539 UINT8 AcpiProcessorId;\r
540 UINT8 ApicId;\r
541 UINT32 Flags;\r
542} EFI_ACPI_1_0_PROCESSOR_LOCAL_APIC_STRUCTURE;\r
543\r
1bc5d021 544///\r
545/// Local APIC Flags. All other bits are reserved and must be 0.\r
546///\r
a2461f6b 547#define EFI_ACPI_1_0_LOCAL_APIC_ENABLED BIT0\r
568eb0cb 548\r
1bc5d021 549///\r
af2dc6a7 550/// IO APIC Structure.\r
1bc5d021 551///\r
568eb0cb 552typedef struct {\r
553 UINT8 Type;\r
554 UINT8 Length;\r
555 UINT8 IoApicId;\r
556 UINT8 Reserved;\r
557 UINT32 IoApicAddress;\r
558 UINT32 SystemVectorBase;\r
559} EFI_ACPI_1_0_IO_APIC_STRUCTURE;\r
560\r
1bc5d021 561///\r
af2dc6a7 562/// Interrupt Source Override Structure.\r
1bc5d021 563///\r
568eb0cb 564typedef struct {\r
565 UINT8 Type;\r
566 UINT8 Length;\r
567 UINT8 Bus;\r
568 UINT8 Source;\r
569 UINT32 GlobalSystemInterruptVector;\r
570 UINT16 Flags;\r
571} EFI_ACPI_1_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE;\r
572\r
1bc5d021 573///\r
af2dc6a7 574/// Non-Maskable Interrupt Source Structure.\r
1bc5d021 575///\r
568eb0cb 576typedef struct {\r
577 UINT8 Type;\r
578 UINT8 Length;\r
579 UINT16 Flags;\r
580 UINT32 GlobalSystemInterruptVector;\r
581} EFI_ACPI_1_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE;\r
582\r
1bc5d021 583///\r
af2dc6a7 584/// Local APIC NMI Structure.\r
1bc5d021 585///\r
568eb0cb 586typedef struct {\r
587 UINT8 Type;\r
588 UINT8 Length;\r
589 UINT8 AcpiProcessorId;\r
590 UINT16 Flags;\r
591 UINT8 LocalApicInti;\r
592} EFI_ACPI_1_0_LOCAL_APIC_NMI_STRUCTURE;\r
593\r
1bc5d021 594///\r
595/// Smart Battery Description Table (SBST)\r
596///\r
568eb0cb 597typedef struct {\r
598 EFI_ACPI_DESCRIPTION_HEADER Header;\r
599 UINT32 WarningEnergyLevel;\r
600 UINT32 LowEnergyLevel;\r
601 UINT32 CriticalEnergyLevel;\r
602} EFI_ACPI_1_0_SMART_BATTERY_DESCRIPTION_TABLE;\r
603\r
604//\r
605// Known table signatures\r
606//\r
1bc5d021 607\r
608///\r
af2dc6a7 609/// "RSD PTR " Root System Description Pointer.\r
1bc5d021 610///\r
13c31065 611#define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ')\r
568eb0cb 612\r
1bc5d021 613///\r
af2dc6a7 614/// "APIC" Multiple APIC Description Table.\r
1bc5d021 615///\r
13c31065 616#define EFI_ACPI_1_0_APIC_SIGNATURE SIGNATURE_32('A', 'P', 'I', 'C')\r
568eb0cb 617\r
1bc5d021 618///\r
af2dc6a7 619/// "DSDT" Differentiated System Description Table.\r
1bc5d021 620///\r
13c31065 621#define EFI_ACPI_1_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('D', 'S', 'D', 'T')\r
568eb0cb 622\r
1bc5d021 623///\r
af2dc6a7 624/// "FACS" Firmware ACPI Control Structure.\r
1bc5d021 625///\r
13c31065 626#define EFI_ACPI_1_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'S')\r
568eb0cb 627\r
1bc5d021 628///\r
af2dc6a7 629/// "FACP" Fixed ACPI Description Table.\r
1bc5d021 630///\r
13c31065 631#define EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'P')\r
568eb0cb 632\r
1bc5d021 633///\r
af2dc6a7 634/// "PSDT" Persistent System Description Table.\r
1bc5d021 635///\r
13c31065 636#define EFI_ACPI_1_0_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('P', 'S', 'D', 'T')\r
568eb0cb 637\r
1bc5d021 638///\r
af2dc6a7 639/// "RSDT" Root System Description Table.\r
1bc5d021 640///\r
13c31065 641#define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('R', 'S', 'D', 'T')\r
568eb0cb 642\r
1bc5d021 643///\r
af2dc6a7 644/// "SBST" Smart Battery Specification Table.\r
1bc5d021 645///\r
13c31065 646#define EFI_ACPI_1_0_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE SIGNATURE_32('S', 'B', 'S', 'T')\r
568eb0cb 647\r
1bc5d021 648///\r
af2dc6a7 649/// "SSDT" Secondary System Description Table.\r
1bc5d021 650///\r
13c31065 651#define EFI_ACPI_1_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('S', 'S', 'D', 'T')\r
568eb0cb 652\r
766f4bc1 653#pragma pack()\r
654\r
568eb0cb 655#endif\r