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__ */ |