]> git.proxmox.com Git - mirror_edk2.git/blame - BaseTools/Source/C/Include/IndustryStandard/Acpi1_0.h
Check In tool source code based on Build tool project revision r1655.
[mirror_edk2.git] / BaseTools / Source / C / Include / IndustryStandard / Acpi1_0.h
CommitLineData
30fdf114
LG
1/** @file\r
2 ACPI 1.0b definitions from the ACPI Specification, revision 1.0b\r
3\r
4 Copyright (c) 2006 - 2007 Intel Corporation. All rights reserved. \r
5\r
6 This program and the accompanying materials are licensed and made available\r
7 under the terms and conditions of the BSD License which accompanies this\r
8 distribution. The full text of the license may be found at:\r
9 http://opensource.org/licenses/bsd-license.php\r
10\r
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
13\r
14 File Name: Acpi1_0.h\r
15\r
16**/\r
17\r
18#ifndef _ACPI_1_0_H_\r
19#define _ACPI_1_0_H_\r
20\r
21#include "IndustryStandard/Acpi.h"\r
22\r
23//\r
24// Ensure proper structure formats\r
25//\r
26#pragma pack(1)\r
27//\r
28// ACPI 1.0b table structures\r
29//\r
30//\r
31// Root System Description Pointer Structure\r
32//\r
33typedef struct {\r
34 UINT64 Signature;\r
35 UINT8 Checksum;\r
36 UINT8 OemId[6];\r
37 UINT8 Reserved;\r
38 UINT32 RsdtAddress;\r
39} EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_POINTER;\r
40\r
41//\r
42// Root System Description Table\r
43// No definition needed as it is a common description table header followed by a\r
44// variable number of UINT32 table pointers.\r
45//\r
46//\r
47// RSDT Revision (as defined in ACPI 1.0b spec.)\r
48//\r
49#define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01\r
50\r
51//\r
52// Fixed ACPI Description Table Structure (FADT)\r
53//\r
54typedef struct {\r
55 EFI_ACPI_DESCRIPTION_HEADER Header;\r
56 UINT32 FirmwareCtrl;\r
57 UINT32 Dsdt;\r
58 UINT8 IntModel;\r
59 UINT8 Reserved1;\r
60 UINT16 SciInt;\r
61 UINT32 SmiCmd;\r
62 UINT8 AcpiEnable;\r
63 UINT8 AcpiDisable;\r
64 UINT8 S4BiosReq;\r
65 UINT8 Reserved2;\r
66 UINT32 Pm1aEvtBlk;\r
67 UINT32 Pm1bEvtBlk;\r
68 UINT32 Pm1aCntBlk;\r
69 UINT32 Pm1bCntBlk;\r
70 UINT32 Pm2CntBlk;\r
71 UINT32 PmTmrBlk;\r
72 UINT32 Gpe0Blk;\r
73 UINT32 Gpe1Blk;\r
74 UINT8 Pm1EvtLen;\r
75 UINT8 Pm1CntLen;\r
76 UINT8 Pm2CntLen;\r
77 UINT8 PmTmLen;\r
78 UINT8 Gpe0BlkLen;\r
79 UINT8 Gpe1BlkLen;\r
80 UINT8 Gpe1Base;\r
81 UINT8 Reserved3;\r
82 UINT16 PLvl2Lat;\r
83 UINT16 PLvl3Lat;\r
84 UINT16 FlushSize;\r
85 UINT16 FlushStride;\r
86 UINT8 DutyOffset;\r
87 UINT8 DutyWidth;\r
88 UINT8 DayAlrm;\r
89 UINT8 MonAlrm;\r
90 UINT8 Century;\r
91 UINT8 Reserved4;\r
92 UINT8 Reserved5;\r
93 UINT8 Reserved6;\r
94 UINT32 Flags;\r
95} EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE;\r
96\r
97//\r
98// FADT Version (as defined in ACPI 1.0b spec.)\r
99//\r
100#define EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 0x01\r
101\r
102//\r
103// Fixed ACPI Description Table Fixed Feature Flags\r
104// All other bits are reserved and must be set to 0.\r
105//\r
106#define EFI_ACPI_1_0_WBINVD (1 << 0)\r
107#define EFI_ACPI_1_0_WBINVD_FLUSH (1 << 1)\r
108#define EFI_ACPI_1_0_PROC_C1 (1 << 2)\r
109#define EFI_ACPI_1_0_P_LVL2_UP (1 << 3)\r
110#define EFI_ACPI_1_0_PWR_BUTTON (1 << 4)\r
111#define EFI_ACPI_1_0_SLP_BUTTON (1 << 5)\r
112#define EFI_ACPI_1_0_FIX_RTC (1 << 6)\r
113#define EFI_ACPI_1_0_RTC_S4 (1 << 7)\r
114#define EFI_ACPI_1_0_TMR_VAL_EXT (1 << 8)\r
115#define EFI_ACPI_1_0_DCK_CAP (1 << 9)\r
116\r
117//\r
118// Firmware ACPI Control Structure\r
119//\r
120typedef struct {\r
121 UINT32 Signature;\r
122 UINT32 Length;\r
123 UINT32 HardwareSignature;\r
124 UINT32 FirmwareWakingVector;\r
125 UINT32 GlobalLock;\r
126 UINT32 Flags;\r
127 UINT8 Reserved[40];\r
128} EFI_ACPI_1_0_FIRMWARE_ACPI_CONTROL_STRUCTURE;\r
129\r
130//\r
131// Firmware Control Structure Feature Flags\r
132// All other bits are reserved and must be set to 0.\r
133//\r
134#define EFI_ACPI_1_0_S4BIOS_F (1 << 0)\r
135\r
136//\r
137// Multiple APIC Description Table header definition. The rest of the table\r
138// must be defined in a platform specific manner.\r
139//\r
140typedef struct {\r
141 EFI_ACPI_DESCRIPTION_HEADER Header;\r
142 UINT32 LocalApicAddress;\r
143 UINT32 Flags;\r
144} EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER;\r
145\r
146//\r
147// MADT Revision (as defined in ACPI 1.0b spec.)\r
148//\r
149#define EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x01\r
150\r
151//\r
152// Multiple APIC Flags\r
153// All other bits are reserved and must be set to 0.\r
154//\r
155#define EFI_ACPI_1_0_PCAT_COMPAT (1 << 0)\r
156\r
157//\r
158// Multiple APIC Description Table APIC structure types\r
159// All other values between 0x09 an 0xFF are reserved and\r
160// will be ignored by OSPM.\r
161//\r
162#define EFI_ACPI_1_0_PROCESSOR_LOCAL_APIC 0x00\r
163#define EFI_ACPI_1_0_IO_APIC 0x01\r
164#define EFI_ACPI_1_0_INTERRUPT_SOURCE_OVERRIDE 0x02\r
165#define EFI_ACPI_1_0_NON_MASKABLE_INTERRUPT_SOURCE 0x03\r
166#define EFI_ACPI_1_0_LOCAL_APIC_NMI 0x04\r
167\r
168//\r
169// APIC Structure Definitions\r
170//\r
171//\r
172// Processor Local APIC Structure Definition\r
173//\r
174typedef struct {\r
175 UINT8 Type;\r
176 UINT8 Length;\r
177 UINT8 AcpiProcessorId;\r
178 UINT8 ApicId;\r
179 UINT32 Flags;\r
180} EFI_ACPI_1_0_PROCESSOR_LOCAL_APIC_STRUCTURE;\r
181\r
182//\r
183// Local APIC Flags. All other bits are reserved and must be 0.\r
184//\r
185#define EFI_ACPI_1_0_LOCAL_APIC_ENABLED (1 << 0)\r
186\r
187//\r
188// IO APIC Structure\r
189//\r
190typedef struct {\r
191 UINT8 Type;\r
192 UINT8 Length;\r
193 UINT8 IoApicId;\r
194 UINT8 Reserved;\r
195 UINT32 IoApicAddress;\r
196 UINT32 SystemVectorBase;\r
197} EFI_ACPI_1_0_IO_APIC_STRUCTURE;\r
198\r
199//\r
200// Interrupt Source Override Structure\r
201//\r
202typedef struct {\r
203 UINT8 Type;\r
204 UINT8 Length;\r
205 UINT8 Bus;\r
206 UINT8 Source;\r
207 UINT32 GlobalSystemInterruptVector;\r
208 UINT16 Flags;\r
209} EFI_ACPI_1_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE;\r
210\r
211//\r
212// Non-Maskable Interrupt Source Structure\r
213//\r
214typedef struct {\r
215 UINT8 Type;\r
216 UINT8 Length;\r
217 UINT16 Flags;\r
218 UINT32 GlobalSystemInterruptVector;\r
219} EFI_ACPI_1_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE;\r
220\r
221//\r
222// Local APIC NMI Structure\r
223//\r
224typedef struct {\r
225 UINT8 Type;\r
226 UINT8 Length;\r
227 UINT8 AcpiProcessorId;\r
228 UINT16 Flags;\r
229 UINT8 LocalApicInti;\r
230} EFI_ACPI_1_0_LOCAL_APIC_NMI_STRUCTURE;\r
231\r
232//\r
233// Smart Battery Description Table (SBST)\r
234//\r
235typedef struct {\r
236 EFI_ACPI_DESCRIPTION_HEADER Header;\r
237 UINT32 WarningEnergyLevel;\r
238 UINT32 LowEnergyLevel;\r
239 UINT32 CriticalEnergyLevel;\r
240} EFI_ACPI_1_0_SMART_BATTERY_DESCRIPTION_TABLE;\r
241\r
242//\r
243// Known table signatures\r
244//\r
245//\r
246// "RSD PTR " Root System Description Pointer\r
247//\r
248#define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE 0x2052545020445352ULL\r
249\r
250//\r
251// "APIC" Multiple APIC Description Table\r
252//\r
253#define EFI_ACPI_1_0_APIC_SIGNATURE 0x43495041\r
254\r
255//\r
256// "DSDT" Differentiated System Description Table\r
257//\r
258#define EFI_ACPI_1_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE 0x54445344\r
259\r
260//\r
261// "FACS" Firmware ACPI Control Structure\r
262//\r
263#define EFI_ACPI_1_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE 0x53434146\r
264\r
265//\r
266// "FACP" Fixed ACPI Description Table\r
267//\r
268#define EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE 0x50434146\r
269\r
270//\r
271// "PSDT" Persistent System Description Table\r
272//\r
273#define EFI_ACPI_1_0_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE 0x54445350\r
274\r
275//\r
276// "RSDT" Root System Description Table\r
277//\r
278#define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE 0x54445352\r
279\r
280//\r
281// "SBST" Smart Battery Specification Table\r
282//\r
283#define EFI_ACPI_1_0_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE 0x54534253\r
284\r
285//\r
286// "SSDT" Secondary System Description Table\r
287//\r
288#define EFI_ACPI_1_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE 0x54445353\r
289\r
290#pragma pack()\r
291\r
292#endif\r