actbl.h (30082d0c) actbl.h (27f7c583)
1/******************************************************************************
2 *
1/******************************************************************************
2 *
3 * Name: actbl.h - Table data structures defined in ACPI specification
4 * $Revision: 1.74 $
3 * Name: actbl.h - Basic ACPI Table Definitions
4 * $Revision: 1.80 $
5 *
6 *****************************************************************************/
7
8/******************************************************************************
9 *
10 * 1. Copyright Notice
11 *
12 * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp.

--- 99 unchanged lines hidden (view full) ---

112 * other governmental approval, or letter of assurance, without first obtaining
113 * such license, approval or letter.
114 *
115 *****************************************************************************/
116
117#ifndef __ACTBL_H__
118#define __ACTBL_H__
119
5 *
6 *****************************************************************************/
7
8/******************************************************************************
9 *
10 * 1. Copyright Notice
11 *
12 * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp.

--- 99 unchanged lines hidden (view full) ---

112 * other governmental approval, or letter of assurance, without first obtaining
113 * such license, approval or letter.
114 *
115 *****************************************************************************/
116
117#ifndef __ACTBL_H__
118#define __ACTBL_H__
119
120
121/*
120/*
122 * Note about bitfields: The UINT8 type is used for bitfields in ACPI tables.
123 * This is the only type that is even remotely portable. Anything else is not
124 * portable, so do not use any other bitfield types.
121 * Values for description table header signatures. Useful because they make
122 * it more difficult to inadvertently type in the wrong signature.
125 */
123 */
126
127
128/*
129 * Values for description table header signatures
130 */
131#define RSDP_NAME "RSDP"
132#define RSDP_SIG "RSD PTR " /* RSDT Pointer signature */
133#define APIC_SIG "APIC" /* Multiple APIC Description Table */
134#define DSDT_SIG "DSDT" /* Differentiated System Description Table */
135#define FADT_SIG "FACP" /* Fixed ACPI Description Table */
136#define FACS_SIG "FACS" /* Firmware ACPI Control Structure */
137#define PSDT_SIG "PSDT" /* Persistent System Description Table */
124#define DSDT_SIG "DSDT" /* Differentiated System Description Table */
125#define FADT_SIG "FACP" /* Fixed ACPI Description Table */
126#define FACS_SIG "FACS" /* Firmware ACPI Control Structure */
127#define PSDT_SIG "PSDT" /* Persistent System Description Table */
128#define RSDP_SIG "RSD PTR " /* Root System Description Pointer */
138#define RSDT_SIG "RSDT" /* Root System Description Table */
139#define XSDT_SIG "XSDT" /* Extended System Description Table */
140#define SSDT_SIG "SSDT" /* Secondary System Description Table */
129#define RSDT_SIG "RSDT" /* Root System Description Table */
130#define XSDT_SIG "XSDT" /* Extended System Description Table */
131#define SSDT_SIG "SSDT" /* Secondary System Description Table */
141#define SBST_SIG "SBST" /* Smart Battery Specification Table */
142#define SPIC_SIG "SPIC" /* IOSAPIC table */
143#define BOOT_SIG "BOOT" /* Boot table */
132#define RSDP_NAME "RSDP"
144
145
133
134
146#define GL_OWNED 0x02 /* Ownership of global lock is bit 1 */
147
148
149/*
135/*
150 * Common table types. The base code can remain
151 * constant if the underlying tables are changed
136 * All tables and structures must be byte-packed to match the ACPI
137 * specification, since the tables are provided by the system BIOS
152 */
138 */
153#define RSDT_DESCRIPTOR RSDT_DESCRIPTOR_REV2
154#define XSDT_DESCRIPTOR XSDT_DESCRIPTOR_REV2
155#define FACS_DESCRIPTOR FACS_DESCRIPTOR_REV2
156#define FADT_DESCRIPTOR FADT_DESCRIPTOR_REV2
157
158
159#pragma pack(1)
160
139#pragma pack(1)
140
141
161/*
142/*
162 * ACPI Version-independent tables
143 * These are the ACPI tables that are directly consumed by the subsystem.
163 *
144 *
164 * NOTE: The tables that are specific to ACPI versions (1.0, 2.0, etc.)
165 * are in separate files.
145 * The RSDP and FACS do not use the common ACPI table header. All other ACPI
146 * tables use the header.
147 *
148 * Note about bitfields: The UINT8 type is used for bitfields in ACPI tables.
149 * This is the only type that is even remotely portable. Anything else is not
150 * portable, so do not use any other bitfield types.
166 */
151 */
167typedef struct rsdp_descriptor /* Root System Descriptor Pointer */
168{
169 char Signature[8]; /* ACPI signature, contains "RSD PTR " */
170 UINT8 Checksum; /* ACPI 1.0 checksum */
171 char OemId[6]; /* OEM identification */
172 UINT8 Revision; /* Must be (0) for ACPI 1.0 or (2) for ACPI 2.0+ */
173 UINT32 RsdtPhysicalAddress; /* 32-bit physical address of the RSDT */
174 UINT32 Length; /* XSDT Length in bytes, including header */
175 UINT64 XsdtPhysicalAddress; /* 64-bit physical address of the XSDT */
176 UINT8 ExtendedChecksum; /* Checksum of entire table (ACPI 2.0) */
177 char Reserved[3]; /* Reserved, must be zero */
178
152
179} RSDP_DESCRIPTOR;
153/*******************************************************************************
154 *
155 * ACPI Table Header. This common header is used by all tables except the
156 * RSDP and FACS. The define is used for direct inclusion of header into
157 * other ACPI tables
158 *
159 ******************************************************************************/
180
160
181
182typedef struct acpi_common_facs /* Common FACS for internal use */
183{
184 UINT32 *GlobalLock;
185 UINT64 *FirmwareWakingVector;
186 UINT8 VectorWidth;
187
188} ACPI_COMMON_FACS;
189
190
191#define ACPI_TABLE_HEADER_DEF /* ACPI common table header */ \
161#define ACPI_TABLE_HEADER_DEF \
192 char Signature[4]; /* ASCII table signature */\
193 UINT32 Length; /* Length of table in bytes, including this header */\
194 UINT8 Revision; /* ACPI Specification minor version # */\
195 UINT8 Checksum; /* To make sum of entire table == 0 */\
196 char OemId[6]; /* ASCII OEM identification */\
197 char OemTableId[8]; /* ASCII OEM table identification */\
198 UINT32 OemRevision; /* OEM revision number */\
162 char Signature[4]; /* ASCII table signature */\
163 UINT32 Length; /* Length of table in bytes, including this header */\
164 UINT8 Revision; /* ACPI Specification minor version # */\
165 UINT8 Checksum; /* To make sum of entire table == 0 */\
166 char OemId[6]; /* ASCII OEM identification */\
167 char OemTableId[8]; /* ASCII OEM table identification */\
168 UINT32 OemRevision; /* OEM revision number */\
199 char AslCompilerId [4]; /* ASCII ASL compiler vendor ID */\
169 char AslCompilerId[4]; /* ASCII ASL compiler vendor ID */\
200 UINT32 AslCompilerRevision; /* ASL compiler version */
201
170 UINT32 AslCompilerRevision; /* ASL compiler version */
171
202
203typedef struct acpi_table_header /* ACPI common table header */
172typedef struct acpi_table_header
204{
205 ACPI_TABLE_HEADER_DEF
206
207} ACPI_TABLE_HEADER;
208
209
210/*
173{
174 ACPI_TABLE_HEADER_DEF
175
176} ACPI_TABLE_HEADER;
177
178
179/*
211 * MADT values and structures
180 * GAS - Generic Address Structure (ACPI 2.0+)
212 */
181 */
182typedef struct acpi_generic_address
183{
184 UINT8 AddressSpaceId; /* Address space where struct or register exists */
185 UINT8 RegisterBitWidth; /* Size in bits of given register */
186 UINT8 RegisterBitOffset; /* Bit offset within the register */
187 UINT8 AccessWidth; /* Minimum Access size (ACPI 3.0) */
188 UINT64 Address; /* 64-bit address of struct or register */
213
189
214/* Values for MADT PCATCompat */
190} ACPI_GENERIC_ADDRESS;
215
191
216#define DUAL_PIC 0
217#define MULTIPLE_APIC 1
218
192
219/* Master MADT */
193/*******************************************************************************
194 *
195 * RSDP - Root System Description Pointer (Signature is "RSD PTR ")
196 *
197 ******************************************************************************/
220
198
221typedef struct multiple_apic_table
199typedef struct rsdp_descriptor
222{
200{
223 ACPI_TABLE_HEADER_DEF /* ACPI common table header */
224 UINT32 LocalApicAddress; /* Physical address of local APIC */
201 char Signature[8]; /* ACPI signature, contains "RSD PTR " */
202 UINT8 Checksum; /* ACPI 1.0 checksum */
203 char OemId[6]; /* OEM identification */
204 UINT8 Revision; /* Must be (0) for ACPI 1.0 or (2) for ACPI 2.0+ */
205 UINT32 RsdtPhysicalAddress; /* 32-bit physical address of the RSDT */
206 UINT32 Length; /* Table length in bytes, including header (ACPI 2.0+) */
207 UINT64 XsdtPhysicalAddress; /* 64-bit physical address of the XSDT (ACPI 2.0+) */
208 UINT8 ExtendedChecksum; /* Checksum of entire table (ACPI 2.0+) */
209 UINT8 Reserved[3]; /* Reserved, must be zero */
225
210
226 /* Flags (32 bits) */
211} RSDP_DESCRIPTOR;
227
212
228 UINT8 PCATCompat : 1; /* 00: System also has dual 8259s */
229 UINT8 : 7; /* 01-07: Reserved, must be zero */
230 UINT8 Reserved1[3]; /* 08-31: Reserved, must be zero */
213#define ACPI_RSDP_REV0_SIZE 20 /* Size of original ACPI 1.0 RSDP */
231
214
232} MULTIPLE_APIC_TABLE;
233
215
234/* Values for Type in APIC_HEADER_DEF */
216/*******************************************************************************
217 *
218 * RSDT/XSDT - Root System Description Tables
219 *
220 ******************************************************************************/
235
221
236#define APIC_PROCESSOR 0
237#define APIC_IO 1
238#define APIC_XRUPT_OVERRIDE 2
239#define APIC_NMI 3
240#define APIC_LOCAL_NMI 4
241#define APIC_ADDRESS_OVERRIDE 5
242#define APIC_IO_SAPIC 6
243#define APIC_LOCAL_SAPIC 7
244#define APIC_XRUPT_SOURCE 8
245#define APIC_RESERVED 9 /* 9 and greater are reserved */
222typedef struct rsdt_descriptor
223{
224 ACPI_TABLE_HEADER_DEF
225 UINT32 TableOffsetEntry[1]; /* Array of pointers to ACPI tables */
246
226
247/*
248 * MADT sub-structures (Follow MULTIPLE_APIC_DESCRIPTION_TABLE)
249 */
250#define APIC_HEADER_DEF /* Common APIC sub-structure header */\
251 UINT8 Type; \
252 UINT8 Length;
227} RSDT_DESCRIPTOR;
253
228
254typedef struct apic_header
229typedef struct xsdt_descriptor
255{
230{
256 APIC_HEADER_DEF
231 ACPI_TABLE_HEADER_DEF
232 UINT64 TableOffsetEntry[1]; /* Array of pointers to ACPI tables */
257
233
258} APIC_HEADER;
234} XSDT_DESCRIPTOR;
259
235
260/* Values for MPS INTI flags */
261
236
262#define POLARITY_CONFORMS 0
263#define POLARITY_ACTIVE_HIGH 1
264#define POLARITY_RESERVED 2
265#define POLARITY_ACTIVE_LOW 3
237/*******************************************************************************
238 *
239 * FACS - Firmware ACPI Control Structure (FACS)
240 *
241 ******************************************************************************/
266
242
267#define TRIGGER_CONFORMS 0
268#define TRIGGER_EDGE 1
269#define TRIGGER_RESERVED 2
270#define TRIGGER_LEVEL 3
243typedef struct facs_descriptor
244{
245 char Signature[4]; /* ASCII table signature */
246 UINT32 Length; /* Length of structure, in bytes */
247 UINT32 HardwareSignature; /* Hardware configuration signature */
248 UINT32 FirmwareWakingVector; /* 32-bit physical address of the Firmware Waking Vector */
249 UINT32 GlobalLock; /* Global Lock for shared hardware resources */
271
250
272/* Common flag definitions (16 bits each) */
251 /* Flags (32 bits) */
273
252
274#define MPS_INTI_FLAGS \
275 UINT8 Polarity : 2; /* 00-01: Polarity of APIC I/O input signals */\
276 UINT8 TriggerMode : 2; /* 02-03: Trigger mode of APIC input signals */\
277 UINT8 : 4; /* 04-07: Reserved, must be zero */\
278 UINT8 Reserved1; /* 08-15: Reserved, must be zero */
253 UINT8 S4Bios_f : 1; /* 00: S4BIOS support is present */
254 UINT8 : 7; /* 01-07: Reserved, must be zero */
255 UINT8 Reserved1[3]; /* 08-31: Reserved, must be zero */
279
256
280#define LOCAL_APIC_FLAGS \
281 UINT8 ProcessorEnabled: 1; /* 00: Processor is usable if set */\
282 UINT8 : 7; /* 01-07: Reserved, must be zero */\
283 UINT8 Reserved2; /* 08-15: Reserved, must be zero */
257 UINT64 XFirmwareWakingVector; /* 64-bit version of the Firmware Waking Vector (ACPI 2.0+) */
258 UINT8 Version; /* Version of this table (ACPI 2.0+) */
259 UINT8 Reserved[31]; /* Reserved, must be zero */
284
260
285/* Sub-structures for MADT */
261} FACS_DESCRIPTOR;
286
262
287typedef struct madt_processor_apic
288{
289 APIC_HEADER_DEF
290 UINT8 ProcessorId; /* ACPI processor id */
291 UINT8 LocalApicId; /* Processor's local APIC id */
292 LOCAL_APIC_FLAGS
263#define ACPI_GLOCK_PENDING 0x01 /* 00: Pending global lock ownership */
264#define ACPI_GLOCK_OWNED 0x02 /* 01: Global lock is owned */
293
265
294} MADT_PROCESSOR_APIC;
295
266
296typedef struct madt_io_apic
267/*
268 * Common FACS - This is a version-independent FACS structure used for internal use only
269 */
270typedef struct acpi_common_facs
297{
271{
298 APIC_HEADER_DEF
299 UINT8 IoApicId; /* I/O APIC ID */
300 UINT8 Reserved; /* Reserved - must be zero */
301 UINT32 Address; /* APIC physical address */
302 UINT32 Interrupt; /* Global system interrupt where INTI
303 * lines start */
304} MADT_IO_APIC;
272 UINT32 *GlobalLock;
273 UINT64 *FirmwareWakingVector;
274 UINT8 VectorWidth;
305
275
306typedef struct madt_interrupt_override
307{
308 APIC_HEADER_DEF
309 UINT8 Bus; /* 0 - ISA */
310 UINT8 Source; /* Interrupt source (IRQ) */
311 UINT32 Interrupt; /* Global system interrupt */
312 MPS_INTI_FLAGS
276} ACPI_COMMON_FACS;
313
277
314} MADT_INTERRUPT_OVERRIDE;
315
278
316typedef struct madt_nmi_source
317{
318 APIC_HEADER_DEF
319 MPS_INTI_FLAGS
320 UINT32 Interrupt; /* Global system interrupt */
279/*******************************************************************************
280 *
281 * FADT - Fixed ACPI Description Table (Signature "FACP")
282 *
283 ******************************************************************************/
321
284
322} MADT_NMI_SOURCE;
285/* Fields common to all versions of the FADT */
323
286
324typedef struct madt_local_apic_nmi
325{
326 APIC_HEADER_DEF
327 UINT8 ProcessorId; /* ACPI processor id */
328 MPS_INTI_FLAGS
329 UINT8 Lint; /* LINTn to which NMI is connected */
287#define ACPI_FADT_COMMON \
288 ACPI_TABLE_HEADER_DEF \
289 UINT32 V1_FirmwareCtrl; /* 32-bit physical address of FACS */ \
290 UINT32 V1_Dsdt; /* 32-bit physical address of DSDT */ \
291 UINT8 Reserved1; /* System Interrupt Model isn't used in ACPI 2.0*/ \
292 UINT8 Prefer_PM_Profile; /* Conveys preferred power management profile to OSPM. */ \
293 UINT16 SciInt; /* System vector of SCI interrupt */ \
294 UINT32 SmiCmd; /* Port address of SMI command port */ \
295 UINT8 AcpiEnable; /* Value to write to smi_cmd to enable ACPI */ \
296 UINT8 AcpiDisable; /* Value to write to smi_cmd to disable ACPI */ \
297 UINT8 S4BiosReq; /* Value to write to SMI CMD to enter S4BIOS state */ \
298 UINT8 PstateCnt; /* Processor performance state control*/ \
299 UINT32 V1_Pm1aEvtBlk; /* Port address of Power Mgt 1a Event Reg Blk */ \
300 UINT32 V1_Pm1bEvtBlk; /* Port address of Power Mgt 1b Event Reg Blk */ \
301 UINT32 V1_Pm1aCntBlk; /* Port address of Power Mgt 1a Control Reg Blk */ \
302 UINT32 V1_Pm1bCntBlk; /* Port address of Power Mgt 1b Control Reg Blk */ \
303 UINT32 V1_Pm2CntBlk; /* Port address of Power Mgt 2 Control Reg Blk */ \
304 UINT32 V1_PmTmrBlk; /* Port address of Power Mgt Timer Ctrl Reg Blk */ \
305 UINT32 V1_Gpe0Blk; /* Port addr of General Purpose AcpiEvent 0 Reg Blk */ \
306 UINT32 V1_Gpe1Blk; /* Port addr of General Purpose AcpiEvent 1 Reg Blk */ \
307 UINT8 Pm1EvtLen; /* Byte Length of ports at pm1X_evt_blk */ \
308 UINT8 Pm1CntLen; /* Byte Length of ports at pm1X_cnt_blk */ \
309 UINT8 Pm2CntLen; /* Byte Length of ports at pm2_cnt_blk */ \
310 UINT8 PmTmLen; /* Byte Length of ports at pm_tm_blk */ \
311 UINT8 Gpe0BlkLen; /* Byte Length of ports at gpe0_blk */ \
312 UINT8 Gpe1BlkLen; /* Byte Length of ports at gpe1_blk */ \
313 UINT8 Gpe1Base; /* Offset in gpe model where gpe1 events start */ \
314 UINT8 CstCnt; /* Support for the _CST object and C States change notification.*/ \
315 UINT16 Plvl2Lat; /* Worst case HW latency to enter/exit C2 state */ \
316 UINT16 Plvl3Lat; /* Worst case HW latency to enter/exit C3 state */ \
317 UINT16 FlushSize; /* Processor's memory cache line width, in bytes */ \
318 UINT16 FlushStride; /* Number of flush strides that need to be read */ \
319 UINT8 DutyOffset; /* Processor's duty cycle index in processor's P_CNT reg*/ \
320 UINT8 DutyWidth; /* Processor's duty cycle value bit width in P_CNT register.*/ \
321 UINT8 DayAlrm; /* Index to day-of-month alarm in RTC CMOS RAM */ \
322 UINT8 MonAlrm; /* Index to month-of-year alarm in RTC CMOS RAM */ \
323 UINT8 Century; /* Index to century in RTC CMOS RAM */ \
324 UINT16 IapcBootArch; /* IA-PC Boot Architecture Flags. See Table 5-10 for description*/ \
325 UINT8 Reserved2; /* Reserved, must be zero */
330
326
331} MADT_LOCAL_APIC_NMI;
332
327
333typedef struct madt_address_override
328/*
329 * ACPI 2.0+ FADT
330 */
331typedef struct fadt_descriptor
334{
332{
335 APIC_HEADER_DEF
336 UINT16 Reserved; /* Reserved, must be zero */
337 UINT64 Address; /* APIC physical address */
333 ACPI_FADT_COMMON
338
334
339} MADT_ADDRESS_OVERRIDE;
335 /* Flags (32 bits) */
340
336
341typedef struct madt_io_sapic
342{
343 APIC_HEADER_DEF
344 UINT8 IoSapicId; /* I/O SAPIC ID */
345 UINT8 Reserved; /* Reserved, must be zero */
346 UINT32 InterruptBase; /* Glocal interrupt for SAPIC start */
347 UINT64 Address; /* SAPIC physical address */
337 UINT8 WbInvd : 1; /* 00: The wbinvd instruction works properly */
338 UINT8 WbInvdFlush : 1; /* 01: The wbinvd flushes but does not invalidate */
339 UINT8 ProcC1 : 1; /* 02: All processors support C1 state */
340 UINT8 Plvl2Up : 1; /* 03: C2 state works on MP system */
341 UINT8 PwrButton : 1; /* 04: Power button is handled as a generic feature */
342 UINT8 SleepButton : 1; /* 05: Sleep button is handled as a generic feature, or not present */
343 UINT8 FixedRTC : 1; /* 06: RTC wakeup stat not in fixed register space */
344 UINT8 Rtcs4 : 1; /* 07: RTC wakeup stat not possible from S4 */
345 UINT8 TmrValExt : 1; /* 08: tmr_val is 32 bits 0=24-bits */
346 UINT8 DockCap : 1; /* 09: Docking supported */
347 UINT8 ResetRegSup : 1; /* 10: System reset via the FADT RESET_REG supported */
348 UINT8 SealedCase : 1; /* 11: No internal expansion capabilities and case is sealed */
349 UINT8 Headless : 1; /* 12: No local video capabilities or local input devices */
350 UINT8 CpuSwSleep : 1; /* 13: Must execute native instruction after writing SLP_TYPx register */
348
351
349} MADT_IO_SAPIC;
352 UINT8 PciExpWak : 1; /* 14: System supports PCIEXP_WAKE (STS/EN) bits (ACPI 3.0) */
353 UINT8 UsePlatformClock : 1; /* 15: OSPM should use platform-provided timer (ACPI 3.0) */
354 UINT8 S4RtcStsValid : 1; /* 16: Contents of RTC_STS valid after S4 wake (ACPI 3.0) */
355 UINT8 RemotePowerOnCapable : 1; /* 17: System is compatible with remote power on (ACPI 3.0) */
356 UINT8 ForceApicClusterModel : 1; /* 18: All local APICs must use cluster model (ACPI 3.0) */
357 UINT8 ForceApicPhysicalDestinationMode : 1; /* 19: All local xAPICs must use physical dest mode (ACPI 3.0) */
358 UINT8 : 4; /* 20-23: Reserved, must be zero */
359 UINT8 Reserved3; /* 24-31: Reserved, must be zero */
350
360
351typedef struct madt_local_sapic
352{
353 APIC_HEADER_DEF
354 UINT8 ProcessorId; /* ACPI processor id */
355 UINT8 LocalSapicId; /* SAPIC ID */
356 UINT8 LocalSapicEid; /* SAPIC EID */
357 UINT8 Reserved[3]; /* Reserved, must be zero */
358 LOCAL_APIC_FLAGS
359 UINT32 ProcessorUID; /* Numeric UID - ACPI 3.0 */
360 char ProcessorUIDString[1]; /* String UID - ACPI 3.0 */
361 ACPI_GENERIC_ADDRESS ResetRegister; /* Reset register address in GAS format */
362 UINT8 ResetValue; /* Value to write to the ResetRegister port to reset the system */
363 UINT8 Reserved4[3]; /* These three bytes must be zero */
364 UINT64 XFirmwareCtrl; /* 64-bit physical address of FACS */
365 UINT64 XDsdt; /* 64-bit physical address of DSDT */
366 ACPI_GENERIC_ADDRESS XPm1aEvtBlk; /* Extended Power Mgt 1a AcpiEvent Reg Blk address */
367 ACPI_GENERIC_ADDRESS XPm1bEvtBlk; /* Extended Power Mgt 1b AcpiEvent Reg Blk address */
368 ACPI_GENERIC_ADDRESS XPm1aCntBlk; /* Extended Power Mgt 1a Control Reg Blk address */
369 ACPI_GENERIC_ADDRESS XPm1bCntBlk; /* Extended Power Mgt 1b Control Reg Blk address */
370 ACPI_GENERIC_ADDRESS XPm2CntBlk; /* Extended Power Mgt 2 Control Reg Blk address */
371 ACPI_GENERIC_ADDRESS XPmTmrBlk; /* Extended Power Mgt Timer Ctrl Reg Blk address */
372 ACPI_GENERIC_ADDRESS XGpe0Blk; /* Extended General Purpose AcpiEvent 0 Reg Blk address */
373 ACPI_GENERIC_ADDRESS XGpe1Blk; /* Extended General Purpose AcpiEvent 1 Reg Blk address */
361
374
362} MADT_LOCAL_SAPIC;
375} FADT_DESCRIPTOR;
363
376
364typedef struct madt_interrupt_source
377
378/*
379 * "Down-revved" ACPI 2.0 FADT descriptor
380 * Defined here to allow compiler to generate the length of the struct
381 */
382typedef struct fadt_descriptor_rev2_minus
365{
383{
366 APIC_HEADER_DEF
367 MPS_INTI_FLAGS
368 UINT8 InterruptType; /* 1=PMI, 2=INIT, 3=corrected */
369 UINT8 ProcessorId; /* Processor ID */
370 UINT8 ProcessorEid; /* Processor EID */
371 UINT8 IoSapicVector; /* Vector value for PMI interrupts */
372 UINT32 Interrupt; /* Global system interrupt */
373 UINT32 Flags; /* Interrupt Source Flags */
384 ACPI_FADT_COMMON
385 UINT32 Flags;
386 ACPI_GENERIC_ADDRESS ResetRegister; /* Reset register address in GAS format */
387 UINT8 ResetValue; /* Value to write to the ResetRegister port to reset the system. */
388 UINT8 Reserved7[3]; /* Reserved, must be zero */
374
389
375} MADT_INTERRUPT_SOURCE;
390} FADT_DESCRIPTOR_REV2_MINUS;
376
377
378/*
391
392
393/*
379 * Smart Battery
394 * ACPI 1.0 FADT
395 * Defined here to allow compiler to generate the length of the struct
380 */
396 */
381typedef struct smart_battery_table
397typedef struct fadt_descriptor_rev1
382{
398{
383 ACPI_TABLE_HEADER_DEF
384 UINT32 WarningLevel;
385 UINT32 LowLevel;
386 UINT32 CriticalLevel;
399 ACPI_FADT_COMMON
400 UINT32 Flags;
387
401
388} SMART_BATTERY_TABLE;
402} FADT_DESCRIPTOR_REV1;
389
390
403
404
405/* FADT: Prefered Power Management Profiles */
406
407#define PM_UNSPECIFIED 0
408#define PM_DESKTOP 1
409#define PM_MOBILE 2
410#define PM_WORKSTATION 3
411#define PM_ENTERPRISE_SERVER 4
412#define PM_SOHO_SERVER 5
413#define PM_APPLIANCE_PC 6
414
415/* FADT: Boot Arch Flags */
416
417#define BAF_LEGACY_DEVICES 0x0001
418#define BAF_8042_KEYBOARD_CONTROLLER 0x0002
419
420#define FADT2_REVISION_ID 3
421#define FADT2_MINUS_REVISION_ID 2
422
423
424/* Reset to default packing */
425
391#pragma pack()
392
426#pragma pack()
427
428/*
429 * This macro is temporary until the table bitfield flag definitions
430 * are removed and replaced by a Flags field.
431 */
432#define ACPI_FLAG_OFFSET(d,f,o) (UINT8) (ACPI_OFFSET (d,f) + \
433 sizeof(((d *)0)->f) + o)
434/*
435 * Get the remaining ACPI tables
436 */
437#include "actbl1.h"
393
394/*
395 * ACPI Table information. We save the table address, length,
396 * and type of memory allocation (mapped or allocated) for each
397 * table for 1) when we exit, and 2) if a new table is installed
398 */
399#define ACPI_MEM_NOT_ALLOCATED 0
400#define ACPI_MEM_ALLOCATED 1

--- 19 unchanged lines hidden (view full) ---

420 char *Signature;
421 void **GlobalPtr;
422 UINT8 SigLength;
423 UINT8 Flags;
424
425} ACPI_TABLE_SUPPORT;
426
427
438
439/*
440 * ACPI Table information. We save the table address, length,
441 * and type of memory allocation (mapped or allocated) for each
442 * table for 1) when we exit, and 2) if a new table is installed
443 */
444#define ACPI_MEM_NOT_ALLOCATED 0
445#define ACPI_MEM_ALLOCATED 1

--- 19 unchanged lines hidden (view full) ---

465 char *Signature;
466 void **GlobalPtr;
467 UINT8 SigLength;
468 UINT8 Flags;
469
470} ACPI_TABLE_SUPPORT;
471
472
428/*
429 * Get the ACPI version-specific tables
430 */
431#include "actbl1.h" /* Acpi 1.0 table definitions */
432#include "actbl2.h" /* Acpi 2.0 table definitions */
473/* Macros used to generate offsets to specific table fields */
433
474
475#define ACPI_FACS_OFFSET(f) (UINT8) ACPI_OFFSET (FACS_DESCRIPTOR,f)
476#define ACPI_FADT_OFFSET(f) (UINT8) ACPI_OFFSET (FADT_DESCRIPTOR, f)
477#define ACPI_GAS_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_GENERIC_ADDRESS,f)
478#define ACPI_HDR_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_HEADER,f)
479#define ACPI_RSDP_OFFSET(f) (UINT8) ACPI_OFFSET (RSDP_DESCRIPTOR,f)
434
480
435#pragma pack(1)
436/*
437 * High performance timer
438 */
439typedef struct hpet_table
440{
441 ACPI_TABLE_HEADER_DEF
442 UINT32 HardwareId;
443 ACPI_GENERIC_ADDRESS BaseAddress;
444 UINT8 HpetNumber;
445 UINT16 ClockTick;
446 UINT8 Attributes;
481#define ACPI_FADT_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (FADT_DESCRIPTOR,f,o)
482#define ACPI_FACS_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (FACS_DESCRIPTOR,f,o)
447
483
448} HPET_TABLE;
449
450#pragma pack()
451
452#endif /* __ACTBL_H__ */
484#endif /* __ACTBL_H__ */