1314879Simp/** @file
2314879Simp  ACPI 1.0b definitions from the ACPI Specification, revision 1.0b
3314879Simp
4314879SimpCopyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
5314879SimpThis program and the accompanying materials are licensed and made available under
6314879Simpthe terms and conditions of the BSD License that accompanies this distribution.
7314879SimpThe full text of the license may be found at
8314879Simphttp://opensource.org/licenses/bsd-license.php.
9314879Simp
10314879SimpTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11314879SimpWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12314879Simp**/
13314879Simp
14314879Simp#ifndef _ACPI_1_0_H_
15314879Simp#define _ACPI_1_0_H_
16314879Simp
17314879Simp#include <IndustryStandard/AcpiAml.h>
18314879Simp
19314879Simp///
20314879Simp/// Common table header, this prefaces all ACPI tables, including FACS, but
21314879Simp/// excluding the RSD PTR structure.
22314879Simp///
23314879Simptypedef struct {
24314879Simp  UINT32  Signature;
25314879Simp  UINT32  Length;
26314879Simp} EFI_ACPI_COMMON_HEADER;
27314879Simp
28314879Simp#pragma pack(1)
29314879Simp///
30314879Simp/// The common ACPI description table header.  This structure prefaces most ACPI tables.
31314879Simp///
32314879Simptypedef struct {
33314879Simp  UINT32  Signature;
34314879Simp  UINT32  Length;
35314879Simp  UINT8   Revision;
36314879Simp  UINT8   Checksum;
37314879Simp  UINT8   OemId[6];
38314879Simp  UINT64  OemTableId;
39314879Simp  UINT32  OemRevision;
40314879Simp  UINT32  CreatorId;
41314879Simp  UINT32  CreatorRevision;
42314879Simp} EFI_ACPI_DESCRIPTION_HEADER;
43314879Simp#pragma pack()
44314879Simp
45314879Simp//
46314879Simp// Define for Desriptor
47314879Simp//
48314879Simp#define ACPI_SMALL_ITEM_FLAG                   0x00
49314879Simp#define ACPI_LARGE_ITEM_FLAG                   0x01
50314879Simp
51314879Simp//
52314879Simp// Small Item Descriptor Name
53314879Simp//
54314879Simp#define ACPI_SMALL_IRQ_DESCRIPTOR_NAME                       0x04
55314879Simp#define ACPI_SMALL_DMA_DESCRIPTOR_NAME                       0x05
56314879Simp#define ACPI_SMALL_START_DEPENDENT_DESCRIPTOR_NAME           0x06
57314879Simp#define ACPI_SMALL_END_DEPENDENT_DESCRIPTOR_NAME             0x07
58314879Simp#define ACPI_SMALL_IO_PORT_DESCRIPTOR_NAME                   0x08
59314879Simp#define ACPI_SMALL_FIXED_IO_PORT_DESCRIPTOR_NAME             0x09
60314879Simp#define ACPI_SMALL_VENDOR_DEFINED_DESCRIPTOR_NAME            0x0E
61314879Simp#define ACPI_SMALL_END_TAG_DESCRIPTOR_NAME                   0x0F
62314879Simp
63314879Simp//
64314879Simp// Large Item Descriptor Name
65314879Simp//
66314879Simp#define ACPI_LARGE_24_BIT_MEMORY_RANGE_DESCRIPTOR_NAME       0x01
67314879Simp#define ACPI_LARGE_VENDOR_DEFINED_DESCRIPTOR_NAME            0x04
68314879Simp#define ACPI_LARGE_32_BIT_MEMORY_RANGE_DESCRIPTOR_NAME       0x05
69314879Simp#define ACPI_LARGE_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR_NAME 0x06
70314879Simp#define ACPI_LARGE_DWORD_ADDRESS_SPACE_DESCRIPTOR_NAME       0x07
71314879Simp#define ACPI_LARGE_WORD_ADDRESS_SPACE_DESCRIPTOR_NAME        0x08
72314879Simp#define ACPI_LARGE_EXTENDED_IRQ_DESCRIPTOR_NAME              0x09
73314879Simp#define ACPI_LARGE_QWORD_ADDRESS_SPACE_DESCRIPTOR_NAME       0x0A
74314879Simp
75314879Simp//
76314879Simp// Small Item Descriptor Value
77314879Simp//
78314879Simp#define ACPI_IRQ_NOFLAG_DESCRIPTOR                0x22
79314879Simp#define ACPI_IRQ_DESCRIPTOR                       0x23
80314879Simp#define ACPI_DMA_DESCRIPTOR                       0x2A
81314879Simp#define ACPI_START_DEPENDENT_DESCRIPTOR           0x30
82314879Simp#define ACPI_START_DEPENDENT_EX_DESCRIPTOR        0x31
83314879Simp#define ACPI_END_DEPENDENT_DESCRIPTOR             0x38
84314879Simp#define ACPI_IO_PORT_DESCRIPTOR                   0x47
85314879Simp#define ACPI_FIXED_LOCATION_IO_PORT_DESCRIPTOR    0x4B
86314879Simp#define ACPI_END_TAG_DESCRIPTOR                   0x79
87314879Simp
88314879Simp//
89314879Simp// Large Item Descriptor Value
90314879Simp//
91314879Simp#define ACPI_24_BIT_MEMORY_RANGE_DESCRIPTOR       0x81
92314879Simp#define ACPI_32_BIT_MEMORY_RANGE_DESCRIPTOR       0x85
93314879Simp#define ACPI_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR 0x86
94314879Simp#define ACPI_DWORD_ADDRESS_SPACE_DESCRIPTOR       0x87
95314879Simp#define ACPI_WORD_ADDRESS_SPACE_DESCRIPTOR        0x88
96314879Simp#define ACPI_EXTENDED_INTERRUPT_DESCRIPTOR        0x89
97314879Simp#define ACPI_QWORD_ADDRESS_SPACE_DESCRIPTOR       0x8A
98314879Simp#define ACPI_ADDRESS_SPACE_DESCRIPTOR             0x8A
99314879Simp
100314879Simp//
101314879Simp// Resource Type
102314879Simp//
103314879Simp#define ACPI_ADDRESS_SPACE_TYPE_MEM   0x00
104314879Simp#define ACPI_ADDRESS_SPACE_TYPE_IO    0x01
105314879Simp#define ACPI_ADDRESS_SPACE_TYPE_BUS   0x02
106314879Simp
107314879Simp///
108314879Simp/// Power Management Timer frequency is fixed at 3.579545MHz.
109314879Simp///
110314879Simp#define ACPI_TIMER_FREQUENCY       3579545
111314879Simp
112314879Simp//
113314879Simp// Ensure proper structure formats
114314879Simp//
115314879Simp#pragma pack(1)
116314879Simp
117314879Simp///
118314879Simp/// The commond definition of QWORD, DWORD, and WORD
119314879Simp/// Address Space Descriptors.
120314879Simp///
121314879Simptypedef PACKED struct {
122314879Simp  UINT8   Desc;
123314879Simp  UINT16  Len;
124314879Simp  UINT8   ResType;
125314879Simp  UINT8   GenFlag;
126314879Simp  UINT8   SpecificFlag;
127314879Simp  UINT64  AddrSpaceGranularity;
128314879Simp  UINT64  AddrRangeMin;
129314879Simp  UINT64  AddrRangeMax;
130314879Simp  UINT64  AddrTranslationOffset;
131314879Simp  UINT64  AddrLen;
132314879Simp} EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR;
133314879Simp
134314879Simptypedef PACKED union {
135314879Simp  UINT8     Byte;
136314879Simp  PACKED struct {
137314879Simp    UINT8 Length : 3;
138314879Simp    UINT8 Name : 4;
139314879Simp    UINT8 Type : 1;
140314879Simp  } Bits;
141314879Simp} ACPI_SMALL_RESOURCE_HEADER;
142314879Simp
143314879Simptypedef PACKED struct {
144314879Simp  PACKED union {
145314879Simp    UINT8 Byte;
146314879Simp    PACKED struct {
147314879Simp      UINT8 Name : 7;
148314879Simp      UINT8 Type : 1;
149314879Simp    }Bits;
150314879Simp  } Header;
151314879Simp  UINT16 Length;
152314879Simp} ACPI_LARGE_RESOURCE_HEADER;
153314879Simp
154314879Simp///
155314879Simp/// IRQ Descriptor.
156314879Simp///
157314879Simptypedef PACKED struct {
158314879Simp  ACPI_SMALL_RESOURCE_HEADER   Header;
159314879Simp  UINT16                       Mask;
160314879Simp} EFI_ACPI_IRQ_NOFLAG_DESCRIPTOR;
161314879Simp
162314879Simp///
163314879Simp/// IRQ Descriptor.
164314879Simp///
165314879Simptypedef PACKED struct {
166314879Simp  ACPI_SMALL_RESOURCE_HEADER   Header;
167314879Simp  UINT16                       Mask;
168314879Simp  UINT8                        Information;
169314879Simp} EFI_ACPI_IRQ_DESCRIPTOR;
170314879Simp
171314879Simp///
172314879Simp/// DMA Descriptor.
173314879Simp///
174314879Simptypedef PACKED struct {
175314879Simp  ACPI_SMALL_RESOURCE_HEADER   Header;
176314879Simp  UINT8                        ChannelMask;
177314879Simp  UINT8                        Information;
178314879Simp} EFI_ACPI_DMA_DESCRIPTOR;
179314879Simp
180314879Simp///
181314879Simp/// I/O Port Descriptor
182314879Simp///
183314879Simptypedef PACKED struct {
184314879Simp  ACPI_SMALL_RESOURCE_HEADER   Header;
185314879Simp  UINT8                        Information;
186314879Simp  UINT16                       BaseAddressMin;
187314879Simp  UINT16                       BaseAddressMax;
188314879Simp  UINT8                        Alignment;
189314879Simp  UINT8                        Length;
190314879Simp} EFI_ACPI_IO_PORT_DESCRIPTOR;
191314879Simp
192314879Simp///
193314879Simp/// Fixed Location I/O Port Descriptor.
194314879Simp///
195314879Simptypedef PACKED struct {
196314879Simp  ACPI_SMALL_RESOURCE_HEADER   Header;
197314879Simp  UINT16                       BaseAddress;
198314879Simp  UINT8                        Length;
199314879Simp} EFI_ACPI_FIXED_LOCATION_IO_PORT_DESCRIPTOR;
200314879Simp
201314879Simp///
202314879Simp/// 24-Bit Memory Range Descriptor
203314879Simp///
204314879Simptypedef PACKED struct {
205314879Simp  ACPI_LARGE_RESOURCE_HEADER    Header;
206314879Simp  UINT8                         Information;
207314879Simp  UINT16                        BaseAddressMin;
208314879Simp  UINT16                        BaseAddressMax;
209314879Simp  UINT16                        Alignment;
210314879Simp  UINT16                        Length;
211314879Simp} EFI_ACPI_24_BIT_MEMORY_RANGE_DESCRIPTOR;
212314879Simp
213314879Simp///
214314879Simp/// 32-Bit Memory Range Descriptor
215314879Simp///
216314879Simptypedef PACKED struct {
217314879Simp  ACPI_LARGE_RESOURCE_HEADER    Header;
218314879Simp  UINT8                         Information;
219314879Simp  UINT32                        BaseAddressMin;
220314879Simp  UINT32                        BaseAddressMax;
221314879Simp  UINT32                        Alignment;
222314879Simp  UINT32                        Length;
223314879Simp} EFI_ACPI_32_BIT_MEMORY_RANGE_DESCRIPTOR;
224314879Simp
225314879Simp///
226314879Simp/// Fixed 32-Bit Fixed Memory Range Descriptor
227314879Simp///
228314879Simptypedef PACKED struct {
229314879Simp  ACPI_LARGE_RESOURCE_HEADER    Header;
230314879Simp  UINT8                         Information;
231314879Simp  UINT32                        BaseAddress;
232314879Simp  UINT32                        Length;
233314879Simp} EFI_ACPI_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR;
234314879Simp
235314879Simp///
236314879Simp/// QWORD Address Space Descriptor
237314879Simp///
238314879Simptypedef PACKED struct {
239314879Simp  ACPI_LARGE_RESOURCE_HEADER    Header;
240314879Simp  UINT8                         ResType;
241314879Simp  UINT8                         GenFlag;
242314879Simp  UINT8                         SpecificFlag;
243314879Simp  UINT64                        AddrSpaceGranularity;
244314879Simp  UINT64                        AddrRangeMin;
245314879Simp  UINT64                        AddrRangeMax;
246314879Simp  UINT64                        AddrTranslationOffset;
247314879Simp  UINT64                        AddrLen;
248314879Simp} EFI_ACPI_QWORD_ADDRESS_SPACE_DESCRIPTOR;
249314879Simp
250314879Simp///
251314879Simp/// DWORD Address Space Descriptor
252314879Simp///
253314879Simptypedef PACKED struct {
254314879Simp  ACPI_LARGE_RESOURCE_HEADER    Header;
255314879Simp  UINT8                         ResType;
256314879Simp  UINT8                         GenFlag;
257314879Simp  UINT8                         SpecificFlag;
258314879Simp  UINT32                        AddrSpaceGranularity;
259314879Simp  UINT32                        AddrRangeMin;
260314879Simp  UINT32                        AddrRangeMax;
261314879Simp  UINT32                        AddrTranslationOffset;
262314879Simp  UINT32                        AddrLen;
263314879Simp} EFI_ACPI_DWORD_ADDRESS_SPACE_DESCRIPTOR;
264314879Simp
265314879Simp///
266314879Simp/// WORD Address Space Descriptor
267314879Simp///
268314879Simptypedef PACKED struct {
269314879Simp  ACPI_LARGE_RESOURCE_HEADER    Header;
270314879Simp  UINT8                         ResType;
271314879Simp  UINT8                         GenFlag;
272314879Simp  UINT8                         SpecificFlag;
273314879Simp  UINT16                        AddrSpaceGranularity;
274314879Simp  UINT16                        AddrRangeMin;
275314879Simp  UINT16                        AddrRangeMax;
276314879Simp  UINT16                        AddrTranslationOffset;
277314879Simp  UINT16                        AddrLen;
278314879Simp} EFI_ACPI_WORD_ADDRESS_SPACE_DESCRIPTOR;
279314879Simp
280314879Simp///
281314879Simp/// Extended Interrupt Descriptor
282314879Simp///
283314879Simptypedef PACKED struct {
284314879Simp  ACPI_LARGE_RESOURCE_HEADER    Header;
285314879Simp  UINT8                         InterruptVectorFlags;
286314879Simp  UINT8                         InterruptTableLength;
287314879Simp  UINT32                        InterruptNumber[1];
288314879Simp} EFI_ACPI_EXTENDED_INTERRUPT_DESCRIPTOR;
289314879Simp
290314879Simp#pragma pack()
291314879Simp
292314879Simp///
293314879Simp/// The End tag identifies an end of resource data.
294314879Simp///
295314879Simptypedef struct {
296314879Simp  UINT8 Desc;
297314879Simp  UINT8 Checksum;
298314879Simp} EFI_ACPI_END_TAG_DESCRIPTOR;
299314879Simp
300314879Simp//
301314879Simp// General use definitions
302314879Simp//
303314879Simp#define EFI_ACPI_RESERVED_BYTE  0x00
304314879Simp#define EFI_ACPI_RESERVED_WORD  0x0000
305314879Simp#define EFI_ACPI_RESERVED_DWORD 0x00000000
306314879Simp#define EFI_ACPI_RESERVED_QWORD 0x0000000000000000
307314879Simp
308314879Simp//
309314879Simp// Resource Type Specific Flags
310314879Simp// Ref ACPI specification 6.4.3.5.5
311314879Simp//
312314879Simp// Bit [0]    : Write Status, _RW
313314879Simp//
314314879Simp#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_READ_WRITE                (1 << 0)
315314879Simp#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_READ_ONLY                 (0 << 0)
316314879Simp//
317314879Simp// Bit [2:1]  : Memory Attributes, _MEM
318314879Simp//
319314879Simp#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_NON_CACHEABLE             (0 << 1)
320314879Simp#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE                 (1 << 1)
321314879Simp#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE_WRITE_COMBINING (2 << 1)
322314879Simp#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE_PREFETCHABLE    (3 << 1)
323314879Simp//
324314879Simp// Bit [4:3]  : Memory Attributes, _MTP
325314879Simp//
326314879Simp#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_MEMORY      (0 << 3)
327314879Simp#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_RESERVED    (1 << 3)
328314879Simp#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_ACPI        (2 << 3)
329314879Simp#define EFI_APCI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_NVS         (3 << 3)
330314879Simp//
331314879Simp// Bit [5]    : Memory to I/O Translation, _TTP
332314879Simp//
333314879Simp#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_TYPE_TRANSLATION          (1 << 5)
334314879Simp#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_TYPE_STATIC               (0 << 5)
335314879Simp
336314879Simp//
337314879Simp// IRQ Information
338314879Simp// Ref ACPI specification 6.4.2.1
339314879Simp//
340314879Simp#define EFI_ACPI_IRQ_SHARABLE_MASK                      0x10
341314879Simp#define   EFI_ACPI_IRQ_SHARABLE                         0x10
342314879Simp
343314879Simp#define EFI_ACPI_IRQ_POLARITY_MASK                      0x08
344314879Simp#define   EFI_ACPI_IRQ_HIGH_TRUE                        0x00
345314879Simp#define   EFI_ACPI_IRQ_LOW_FALSE                        0x08
346314879Simp
347314879Simp#define EFI_ACPI_IRQ_MODE                               0x01
348314879Simp#define   EFI_ACPI_IRQ_LEVEL_TRIGGERED                  0x00
349314879Simp#define   EFI_ACPI_IRQ_EDGE_TRIGGERED                   0x01
350314879Simp
351314879Simp//
352314879Simp// DMA Information
353314879Simp// Ref ACPI specification 6.4.2.2
354314879Simp//
355314879Simp#define EFI_ACPI_DMA_SPEED_TYPE_MASK                    0x60
356314879Simp#define   EFI_ACPI_DMA_SPEED_TYPE_COMPATIBILITY         0x00
357314879Simp#define   EFI_ACPI_DMA_SPEED_TYPE_A                     0x20
358314879Simp#define   EFI_ACPI_DMA_SPEED_TYPE_B                     0x40
359314879Simp#define   EFI_ACPI_DMA_SPEED_TYPE_F                     0x60
360314879Simp
361314879Simp#define EFI_ACPI_DMA_BUS_MASTER_MASK                    0x04
362314879Simp#define   EFI_ACPI_DMA_BUS_MASTER                       0x04
363314879Simp
364314879Simp#define EFI_ACPI_DMA_TRANSFER_TYPE_MASK                 0x03
365314879Simp#define   EFI_ACPI_DMA_TRANSFER_TYPE_8_BIT              0x00
366314879Simp#define   EFI_ACPI_DMA_TRANSFER_TYPE_8_BIT_AND_16_BIT   0x01
367314879Simp#define   EFI_ACPI_DMA_TRANSFER_TYPE_16_BIT             0x10
368314879Simp
369314879Simp//
370314879Simp// IO Information
371314879Simp// Ref ACPI specification 6.4.2.5
372314879Simp//
373314879Simp#define EFI_ACPI_IO_DECODE_MASK                         0x01
374314879Simp#define   EFI_ACPI_IO_DECODE_16_BIT                     0x01
375314879Simp#define   EFI_ACPI_IO_DECODE_10_BIT                     0x00
376314879Simp
377314879Simp//
378314879Simp// Memory Information
379314879Simp// Ref ACPI specification 6.4.3.4
380314879Simp//
381314879Simp#define EFI_ACPI_MEMORY_WRITE_STATUS_MASK               0x01
382314879Simp#define   EFI_ACPI_MEMORY_WRITABLE                      0x01
383314879Simp#define   EFI_ACPI_MEMORY_NON_WRITABLE                  0x00
384314879Simp
385314879Simp//
386314879Simp// Ensure proper structure formats
387314879Simp//
388314879Simp#pragma pack(1)
389314879Simp//
390314879Simp// ACPI 1.0b table structures
391314879Simp//
392314879Simp
393314879Simp///
394314879Simp/// Root System Description Pointer Structure.
395314879Simp///
396314879Simptypedef struct {
397314879Simp  UINT64  Signature;
398314879Simp  UINT8   Checksum;
399314879Simp  UINT8   OemId[6];
400314879Simp  UINT8   Reserved;
401314879Simp  UINT32  RsdtAddress;
402314879Simp} EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_POINTER;
403314879Simp
404314879Simp//
405314879Simp// Root System Description Table
406314879Simp// No definition needed as it is a common description table header, the same with
407314879Simp// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32 table pointers.
408314879Simp//
409314879Simp
410314879Simp///
411314879Simp/// RSDT Revision (as defined in ACPI 1.0b specification).
412314879Simp///
413314879Simp#define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
414314879Simp
415314879Simp///
416314879Simp/// Fixed ACPI Description Table Structure (FADT).
417314879Simp///
418314879Simptypedef struct {
419314879Simp  EFI_ACPI_DESCRIPTION_HEADER Header;
420314879Simp  UINT32                      FirmwareCtrl;
421314879Simp  UINT32                      Dsdt;
422314879Simp  UINT8                       IntModel;
423314879Simp  UINT8                       Reserved1;
424314879Simp  UINT16                      SciInt;
425314879Simp  UINT32                      SmiCmd;
426314879Simp  UINT8                       AcpiEnable;
427314879Simp  UINT8                       AcpiDisable;
428314879Simp  UINT8                       S4BiosReq;
429314879Simp  UINT8                       Reserved2;
430314879Simp  UINT32                      Pm1aEvtBlk;
431314879Simp  UINT32                      Pm1bEvtBlk;
432314879Simp  UINT32                      Pm1aCntBlk;
433314879Simp  UINT32                      Pm1bCntBlk;
434314879Simp  UINT32                      Pm2CntBlk;
435314879Simp  UINT32                      PmTmrBlk;
436314879Simp  UINT32                      Gpe0Blk;
437314879Simp  UINT32                      Gpe1Blk;
438314879Simp  UINT8                       Pm1EvtLen;
439314879Simp  UINT8                       Pm1CntLen;
440314879Simp  UINT8                       Pm2CntLen;
441314879Simp  UINT8                       PmTmLen;
442314879Simp  UINT8                       Gpe0BlkLen;
443314879Simp  UINT8                       Gpe1BlkLen;
444314879Simp  UINT8                       Gpe1Base;
445314879Simp  UINT8                       Reserved3;
446314879Simp  UINT16                      PLvl2Lat;
447314879Simp  UINT16                      PLvl3Lat;
448314879Simp  UINT16                      FlushSize;
449314879Simp  UINT16                      FlushStride;
450314879Simp  UINT8                       DutyOffset;
451314879Simp  UINT8                       DutyWidth;
452314879Simp  UINT8                       DayAlrm;
453314879Simp  UINT8                       MonAlrm;
454314879Simp  UINT8                       Century;
455314879Simp  UINT8                       Reserved4;
456314879Simp  UINT8                       Reserved5;
457314879Simp  UINT8                       Reserved6;
458314879Simp  UINT32                      Flags;
459314879Simp} EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE;
460314879Simp
461314879Simp///
462314879Simp/// FADT Version (as defined in ACPI 1.0b specification).
463314879Simp///
464314879Simp#define EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION  0x01
465314879Simp
466314879Simp#define EFI_ACPI_1_0_INT_MODE_DUAL_PIC         0
467314879Simp#define EFI_ACPI_1_0_INT_MODE_MULTIPLE_APIC    1
468314879Simp
469314879Simp//
470314879Simp// Fixed ACPI Description Table Fixed Feature Flags
471314879Simp// All other bits are reserved and must be set to 0.
472314879Simp//
473314879Simp#define EFI_ACPI_1_0_WBINVD               BIT0
474314879Simp#define EFI_ACPI_1_0_WBINVD_FLUSH         BIT1
475314879Simp#define EFI_ACPI_1_0_PROC_C1              BIT2
476314879Simp#define EFI_ACPI_1_0_P_LVL2_UP            BIT3
477314879Simp#define EFI_ACPI_1_0_PWR_BUTTON           BIT4
478314879Simp#define EFI_ACPI_1_0_SLP_BUTTON           BIT5
479314879Simp#define EFI_ACPI_1_0_FIX_RTC              BIT6
480314879Simp#define EFI_ACPI_1_0_RTC_S4               BIT7
481314879Simp#define EFI_ACPI_1_0_TMR_VAL_EXT          BIT8
482314879Simp#define EFI_ACPI_1_0_DCK_CAP              BIT9
483314879Simp
484314879Simp///
485314879Simp/// Firmware ACPI Control Structure.
486314879Simp///
487314879Simptypedef struct {
488314879Simp  UINT32  Signature;
489314879Simp  UINT32  Length;
490314879Simp  UINT32  HardwareSignature;
491314879Simp  UINT32  FirmwareWakingVector;
492314879Simp  UINT32  GlobalLock;
493314879Simp  UINT32  Flags;
494314879Simp  UINT8   Reserved[40];
495314879Simp} EFI_ACPI_1_0_FIRMWARE_ACPI_CONTROL_STRUCTURE;
496314879Simp
497314879Simp///
498314879Simp/// Firmware Control Structure Feature Flags.
499314879Simp/// All other bits are reserved and must be set to 0.
500314879Simp///
501314879Simp#define EFI_ACPI_1_0_S4BIOS_F             BIT0
502314879Simp
503314879Simp///
504314879Simp/// Multiple APIC Description Table header definition.  The rest of the table
505314879Simp/// must be defined in a platform-specific manner.
506314879Simp///
507314879Simptypedef struct {
508314879Simp  EFI_ACPI_DESCRIPTION_HEADER Header;
509314879Simp  UINT32                      LocalApicAddress;
510314879Simp  UINT32                      Flags;
511314879Simp} EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER;
512314879Simp
513314879Simp///
514314879Simp/// MADT Revision (as defined in ACPI 1.0b specification).
515314879Simp///
516314879Simp#define EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x01
517314879Simp
518314879Simp///
519314879Simp/// Multiple APIC Flags
520314879Simp/// All other bits are reserved and must be set to 0.
521314879Simp///
522314879Simp#define EFI_ACPI_1_0_PCAT_COMPAT           BIT0
523314879Simp
524314879Simp//
525314879Simp// Multiple APIC Description Table APIC structure types
526314879Simp// All other values between 0x05 an 0xFF are reserved and
527314879Simp// will be ignored by OSPM.
528314879Simp//
529314879Simp#define EFI_ACPI_1_0_PROCESSOR_LOCAL_APIC           0x00
530314879Simp#define EFI_ACPI_1_0_IO_APIC                        0x01
531314879Simp#define EFI_ACPI_1_0_INTERRUPT_SOURCE_OVERRIDE      0x02
532314879Simp#define EFI_ACPI_1_0_NON_MASKABLE_INTERRUPT_SOURCE  0x03
533314879Simp#define EFI_ACPI_1_0_LOCAL_APIC_NMI                 0x04
534314879Simp
535314879Simp//
536314879Simp// APIC Structure Definitions
537314879Simp//
538314879Simp
539314879Simp///
540314879Simp/// Processor Local APIC Structure Definition.
541314879Simp///
542314879Simptypedef struct {
543314879Simp  UINT8   Type;
544314879Simp  UINT8   Length;
545314879Simp  UINT8   AcpiProcessorId;
546314879Simp  UINT8   ApicId;
547314879Simp  UINT32  Flags;
548314879Simp} EFI_ACPI_1_0_PROCESSOR_LOCAL_APIC_STRUCTURE;
549314879Simp
550314879Simp///
551314879Simp/// Local APIC Flags.  All other bits are reserved and must be 0.
552314879Simp///
553314879Simp#define EFI_ACPI_1_0_LOCAL_APIC_ENABLED      BIT0
554314879Simp
555314879Simp///
556314879Simp/// IO APIC Structure.
557314879Simp///
558314879Simptypedef struct {
559314879Simp  UINT8   Type;
560314879Simp  UINT8   Length;
561314879Simp  UINT8   IoApicId;
562314879Simp  UINT8   Reserved;
563314879Simp  UINT32  IoApicAddress;
564314879Simp  UINT32  SystemVectorBase;
565314879Simp} EFI_ACPI_1_0_IO_APIC_STRUCTURE;
566314879Simp
567314879Simp///
568314879Simp/// Interrupt Source Override Structure.
569314879Simp///
570314879Simptypedef struct {
571314879Simp  UINT8   Type;
572314879Simp  UINT8   Length;
573314879Simp  UINT8   Bus;
574314879Simp  UINT8   Source;
575314879Simp  UINT32  GlobalSystemInterruptVector;
576314879Simp  UINT16  Flags;
577314879Simp} EFI_ACPI_1_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE;
578314879Simp
579314879Simp///
580314879Simp/// Non-Maskable Interrupt Source Structure.
581314879Simp///
582314879Simptypedef struct {
583314879Simp  UINT8   Type;
584314879Simp  UINT8   Length;
585314879Simp  UINT16  Flags;
586314879Simp  UINT32  GlobalSystemInterruptVector;
587314879Simp} EFI_ACPI_1_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE;
588314879Simp
589314879Simp///
590314879Simp/// Local APIC NMI Structure.
591314879Simp///
592314879Simptypedef struct {
593314879Simp  UINT8   Type;
594314879Simp  UINT8   Length;
595314879Simp  UINT8   AcpiProcessorId;
596314879Simp  UINT16  Flags;
597314879Simp  UINT8   LocalApicInti;
598314879Simp} EFI_ACPI_1_0_LOCAL_APIC_NMI_STRUCTURE;
599314879Simp
600314879Simp///
601314879Simp/// Smart Battery Description Table (SBST)
602314879Simp///
603314879Simptypedef struct {
604314879Simp  EFI_ACPI_DESCRIPTION_HEADER Header;
605314879Simp  UINT32                      WarningEnergyLevel;
606314879Simp  UINT32                      LowEnergyLevel;
607314879Simp  UINT32                      CriticalEnergyLevel;
608314879Simp} EFI_ACPI_1_0_SMART_BATTERY_DESCRIPTION_TABLE;
609314879Simp
610314879Simp//
611314879Simp// Known table signatures
612314879Simp//
613314879Simp
614314879Simp///
615314879Simp/// "RSD PTR " Root System Description Pointer.
616314879Simp///
617314879Simp#define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE  SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ')
618314879Simp
619314879Simp///
620314879Simp/// "APIC" Multiple APIC Description Table.
621314879Simp///
622314879Simp#define EFI_ACPI_1_0_APIC_SIGNATURE  SIGNATURE_32('A', 'P', 'I', 'C')
623314879Simp
624314879Simp///
625314879Simp/// "DSDT" Differentiated System Description Table.
626314879Simp///
627314879Simp#define EFI_ACPI_1_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('D', 'S', 'D', 'T')
628314879Simp
629314879Simp///
630314879Simp/// "FACS" Firmware ACPI Control Structure.
631314879Simp///
632314879Simp#define EFI_ACPI_1_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE  SIGNATURE_32('F', 'A', 'C', 'S')
633314879Simp
634314879Simp///
635314879Simp/// "FACP" Fixed ACPI Description Table.
636314879Simp///
637314879Simp#define EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('F', 'A', 'C', 'P')
638314879Simp
639314879Simp///
640314879Simp/// "PSDT" Persistent System Description Table.
641314879Simp///
642314879Simp#define EFI_ACPI_1_0_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('P', 'S', 'D', 'T')
643314879Simp
644314879Simp///
645314879Simp/// "RSDT" Root System Description Table.
646314879Simp///
647314879Simp#define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('R', 'S', 'D', 'T')
648314879Simp
649314879Simp///
650314879Simp/// "SBST" Smart Battery Specification Table.
651314879Simp///
652314879Simp#define EFI_ACPI_1_0_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE  SIGNATURE_32('S', 'B', 'S', 'T')
653314879Simp
654314879Simp///
655314879Simp/// "SSDT" Secondary System Description Table.
656314879Simp///
657314879Simp#define EFI_ACPI_1_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('S', 'S', 'D', 'T')
658314879Simp
659314879Simp#pragma pack()
660314879Simp
661314879Simp#endif
662