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