]> git.saurik.com Git - apple/xnu.git/blob - EXTERNAL_HEADERS/acpi/Acpi_v1.h
xnu-7195.60.75.tar.gz
[apple/xnu.git] / EXTERNAL_HEADERS / acpi / Acpi_v1.h
1 /******************************************************************************
2 *
3 * Name: actbl1.h - Additional ACPI table definitions
4 * $Revision: 1.6 $
5 *
6 *****************************************************************************/
7
8 /******************************************************************************
9 *
10 * 1. Copyright Notice
11 *
12 * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp.
13 * All rights reserved.
14 *
15 * 2. License
16 *
17 * 2.1. This is your license from Intel Corp. under its intellectual property
18 * rights. You may have additional license terms from the party that provided
19 * you this software, covering your right to use that party's intellectual
20 * property rights.
21 *
22 * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
23 * copy of the source code appearing in this file ("Covered Code") an
24 * irrevocable, perpetual, worldwide license under Intel's copyrights in the
25 * base code distributed originally by Intel ("Original Intel Code") to copy,
26 * make derivatives, distribute, use and display any portion of the Covered
27 * Code in any form, with the right to sublicense such rights; and
28 *
29 * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
30 * license (with the right to sublicense), under only those claims of Intel
31 * patents that are infringed by the Original Intel Code, to make, use, sell,
32 * offer to sell, and import the Covered Code and derivative works thereof
33 * solely to the minimum extent necessary to exercise the above copyright
34 * license, and in no event shall the patent license extend to any additions
35 * to or modifications of the Original Intel Code. No other license or right
36 * is granted directly or by implication, estoppel or otherwise;
37 *
38 * The above copyright and patent license is granted only if the following
39 * conditions are met:
40 *
41 * 3. Conditions
42 *
43 * 3.1. Redistribution of Source with Rights to Further Distribute Source.
44 * Redistribution of source code of any substantial portion of the Covered
45 * Code or modification with rights to further distribute source must include
46 * the above Copyright Notice, the above License, this list of Conditions,
47 * and the following Disclaimer and Export Compliance provision. In addition,
48 * Licensee must cause all Covered Code to which Licensee contributes to
49 * contain a file documenting the changes Licensee made to create that Covered
50 * Code and the date of any change. Licensee must include in that file the
51 * documentation of any changes made by any predecessor Licensee. Licensee
52 * must include a prominent statement that the modification is derived,
53 * directly or indirectly, from Original Intel Code.
54 *
55 * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
56 * Redistribution of source code of any substantial portion of the Covered
57 * Code or modification without rights to further distribute source must
58 * include the following Disclaimer and Export Compliance provision in the
59 * documentation and/or other materials provided with distribution. In
60 * addition, Licensee may not authorize further sublicense of source of any
61 * portion of the Covered Code, and must include terms to the effect that the
62 * license from Licensee to its licensee is limited to the intellectual
63 * property embodied in the software Licensee provides to its licensee, and
64 * not to intellectual property embodied in modifications its licensee may
65 * make.
66 *
67 * 3.3. Redistribution of Executable. Redistribution in executable form of any
68 * substantial portion of the Covered Code or modification must reproduce the
69 * above Copyright Notice, and the following Disclaimer and Export Compliance
70 * provision in the documentation and/or other materials provided with the
71 * distribution.
72 *
73 * 3.4. Intel retains all right, title, and interest in and to the Original
74 * Intel Code.
75 *
76 * 3.5. Neither the name Intel nor any other trademark owned or controlled by
77 * Intel shall be used in advertising or otherwise to promote the sale, use or
78 * other dealings in products derived from or relating to the Covered Code
79 * without prior written authorization from Intel.
80 *
81 * 4. Disclaimer and Export Compliance
82 *
83 * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
84 * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
85 * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
86 * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
87 * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
88 * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
89 * PARTICULAR PURPOSE.
90 *
91 * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
92 * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
93 * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
94 * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
95 * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
96 * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
97 * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
98 * LIMITED REMEDY.
99 *
100 * 4.3. Licensee shall not export, either directly or indirectly, any of this
101 * software or system incorporating such software without first obtaining any
102 * required license or other approval from the U. S. Department of Commerce or
103 * any other agency or department of the United States Government. In the
104 * event Licensee exports any such software from the United States or
105 * re-exports any such software from a foreign destination, Licensee shall
106 * ensure that the distribution and export/re-export of the software is in
107 * compliance with all laws, regulations, orders, or other restrictions of the
108 * U.S. Export Administration Regulations. Licensee agrees that neither it nor
109 * any of its subsidiaries will export/re-export any technical data, process,
110 * software, or service, directly or indirectly, to any country for which the
111 * United States government or any agency thereof requires an export license,
112 * other governmental approval, or letter of assurance, without first obtaining
113 * such license, approval or letter.
114 *
115 *****************************************************************************/
116
117 #ifndef __ACTBL1_H__
118 #define __ACTBL1_H__
119
120
121 /*******************************************************************************
122 *
123 * Additional ACPI Tables
124 *
125 * These tables are not consumed directly by the ACPICA subsystem, but are
126 * included here to support device drivers and the AML disassembler.
127 *
128 ******************************************************************************/
129
130
131 /*
132 * Values for description table header signatures. Useful because they make
133 * it more difficult to inadvertently type in the wrong signature.
134 */
135 #define ACPI_SIG_ASF "ASF!" /* Alert Standard Format table */
136 #define ACPI_SIG_BOOT "BOOT" /* Simple Boot Flag Table */
137 #define ACPI_SIG_CPEP "CPEP" /* Corrected Platform Error Polling table */
138 #define ACPI_SIG_DBGP "DBGP" /* Debug Port table */
139 #define ACPI_SIG_ECDT "ECDT" /* Embedded Controller Boot Resources Table */
140 #define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */
141 #define ACPI_SIG_MADT "APIC" /* Multiple APIC Description Table */
142 #define ACPI_SIG_MCFG "MCFG" /* PCI Memory Mapped Configuration table */
143 #define ACPI_SIG_SBST "SBST" /* Smart Battery Specification Table */
144 #define ACPI_SIG_SLIT "SLIT" /* System Locality Distance Information Table */
145 #define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */
146 #define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */
147 #define ACPI_SIG_SRAT "SRAT" /* System Resource Affinity Table */
148 #define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */
149 #define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */
150
151 /* Legacy names */
152
153 #define APIC_SIG "APIC" /* Multiple APIC Description Table */
154 #define BOOT_SIG "BOOT" /* Simple Boot Flag Table */
155 #define SBST_SIG "SBST" /* Smart Battery Specification Table */
156
157
158 /*
159 * All tables must be byte-packed to match the ACPI specification, since
160 * the tables are provided by the system BIOS.
161 */
162 #pragma pack(1)
163
164 /*
165 * Note about bitfields: The UINT8 type is used for bitfields in ACPI tables.
166 * This is the only type that is even remotely portable. Anything else is not
167 * portable, so do not use any other bitfield types.
168 */
169
170
171 /*******************************************************************************
172 *
173 * ASF - Alert Standard Format table (Signature "ASF!")
174 *
175 ******************************************************************************/
176
177 typedef struct acpi_table_asf {
178 ACPI_TABLE_HEADER_DEF
179 } ACPI_TABLE_ASF;
180
181 #define ACPI_ASF_HEADER_DEF \
182 UINT8 Type; \
183 UINT8 Reserved; \
184 UINT16 Length;
185
186 typedef struct acpi_asf_header {
187 ACPI_ASF_HEADER_DEF
188 } ACPI_ASF_HEADER;
189
190
191 /* Values for Type field */
192
193 #define ASF_INFO 0
194 #define ASF_ALERT 1
195 #define ASF_CONTROL 2
196 #define ASF_BOOT 3
197 #define ASF_ADDRESS 4
198 #define ASF_RESERVED 5
199
200 /*
201 * ASF subtables
202 */
203
204 /* 0: ASF Information */
205
206 typedef struct acpi_asf_info {
207 ACPI_ASF_HEADER_DEF
208 UINT8 MinResetValue;
209 UINT8 MinPollInterval;
210 UINT16 SystemId;
211 UINT32 MfgId;
212 UINT8 Flags;
213 UINT8 Reserved2[3];
214 } ACPI_ASF_INFO;
215
216 /* 1: ASF Alerts */
217
218 typedef struct acpi_asf_alert {
219 ACPI_ASF_HEADER_DEF
220 UINT8 AssertMask;
221 UINT8 DeassertMask;
222 UINT8 Alerts;
223 UINT8 DataLength;
224 UINT8 Array[1];
225 } ACPI_ASF_ALERT;
226
227 /* 2: ASF Remote Control */
228
229 typedef struct acpi_asf_remote {
230 ACPI_ASF_HEADER_DEF
231 UINT8 Controls;
232 UINT8 DataLength;
233 UINT16 Reserved2;
234 UINT8 Array[1];
235 } ACPI_ASF_REMOTE;
236
237 /* 3: ASF RMCP Boot Options */
238
239 typedef struct acpi_asf_rmcp {
240 ACPI_ASF_HEADER_DEF
241 UINT8 Capabilities[7];
242 UINT8 CompletionCode;
243 UINT32 EnterpriseId;
244 UINT8 Command;
245 UINT16 Parameter;
246 UINT16 BootOptions;
247 UINT16 OemParameters;
248 } ACPI_ASF_RMCP;
249
250 /* 4: ASF Address */
251
252 typedef struct acpi_asf_address {
253 ACPI_ASF_HEADER_DEF
254 UINT8 EpromAddress;
255 UINT8 Devices;
256 UINT8 SmbusAddresses[1];
257 } ACPI_ASF_ADDRESS;
258
259
260 /*******************************************************************************
261 *
262 * BOOT - Simple Boot Flag Table
263 *
264 ******************************************************************************/
265
266 typedef struct acpi_table_boot {
267 ACPI_TABLE_HEADER_DEF
268 UINT8 CmosIndex; /* Index in CMOS RAM for the boot register */
269 UINT8 Reserved[3];
270 } ACPI_TABLE_BOOT;
271
272
273 /*******************************************************************************
274 *
275 * CPEP - Corrected Platform Error Polling table
276 *
277 ******************************************************************************/
278
279 typedef struct acpi_table_cpep {
280 ACPI_TABLE_HEADER_DEF
281 UINT64 Reserved;
282 } ACPI_TABLE_CPEP;
283
284 /* Subtable */
285
286 typedef struct acpi_cpep_polling {
287 UINT8 Type;
288 UINT8 Length;
289 UINT8 ProcessorId; /* Processor ID */
290 UINT8 ProcessorEid; /* Processor EID */
291 UINT32 PollingInterval;/* Polling interval (msec) */
292 } ACPI_CPEP_POLLING;
293
294
295 /*******************************************************************************
296 *
297 * DBGP - Debug Port table
298 *
299 ******************************************************************************/
300
301 typedef struct acpi_table_dbgp {
302 ACPI_TABLE_HEADER_DEF
303 UINT8 InterfaceType; /* 0=full 16550, 1=subset of 16550 */
304 UINT8 Reserved[3];
305 ACPI_GENERIC_ADDRESS DebugPort;
306 } ACPI_TABLE_DBGP;
307
308
309 /*******************************************************************************
310 *
311 * ECDT - Embedded Controller Boot Resources Table
312 *
313 ******************************************************************************/
314
315 typedef struct ec_boot_resources {
316 ACPI_TABLE_HEADER_DEF
317 ACPI_GENERIC_ADDRESS EcControl; /* Address of EC command/status register */
318 ACPI_GENERIC_ADDRESS EcData; /* Address of EC data register */
319 UINT32 Uid; /* Unique ID - must be same as the EC _UID method */
320 UINT8 GpeBit; /* The GPE for the EC */
321 UINT8 EcId[1]; /* Full namepath of the EC in the ACPI namespace */
322 } EC_BOOT_RESOURCES;
323
324
325 /*******************************************************************************
326 *
327 * HPET - High Precision Event Timer table
328 *
329 ******************************************************************************/
330
331 typedef struct acpi_hpet_table {
332 ACPI_TABLE_HEADER_DEF
333 UINT32 HardwareId; /* Hardware ID of event timer block */
334 ACPI_GENERIC_ADDRESS BaseAddress; /* Address of event timer block */
335 UINT8 HpetNumber; /* HPET sequence number */
336 UINT16 ClockTick; /* Main counter min tick, periodic mode */
337 UINT8 Attributes;
338 } HPET_TABLE;
339
340 #if 0 /* HPET flags to be converted to macros */
341 struct /* Flags (8 bits) */
342 {
343 UINT8 PageProtect :1;/* 00: No page protection */
344 UINT8 PageProtect4 :1;/* 01: 4KB page protected */
345 UINT8 PageProtect64 :1;/* 02: 64KB page protected */
346 UINT8 :5;/* 03-07: Reserved, must be zero */
347 } Flags;
348 #endif
349
350
351 /*******************************************************************************
352 *
353 * MADT - Multiple APIC Description Table
354 *
355 ******************************************************************************/
356
357 typedef struct multiple_apic_table {
358 ACPI_TABLE_HEADER_DEF
359 UINT32 LocalApicAddress;/* Physical address of local APIC */
360
361 /* Flags (32 bits) */
362
363 UINT8 PCATCompat : 1;/* 00: System also has dual 8259s */
364 UINT8 : 7;/* 01-07: Reserved, must be zero */
365 UINT8 Reserved1[3]; /* 08-31: Reserved, must be zero */
366 } MULTIPLE_APIC_TABLE;
367
368 /* Values for MADT PCATCompat */
369
370 #define DUAL_PIC 0
371 #define MULTIPLE_APIC 1
372
373
374 /* Common MADT Sub-table header */
375
376 #define APIC_HEADER_DEF \
377 UINT8 Type; \
378 UINT8 Length;
379
380 typedef struct apic_header {
381 APIC_HEADER_DEF
382 } APIC_HEADER;
383
384 /* Values for Type in APIC_HEADER */
385
386 #define APIC_PROCESSOR 0
387 #define APIC_IO 1
388 #define APIC_XRUPT_OVERRIDE 2
389 #define APIC_NMI 3
390 #define APIC_LOCAL_NMI 4
391 #define APIC_ADDRESS_OVERRIDE 5
392 #define APIC_IO_SAPIC 6
393 #define APIC_LOCAL_SAPIC 7
394 #define APIC_XRUPT_SOURCE 8
395 #define APIC_RESERVED 9 /* 9 and greater are reserved */
396
397
398 /* Flag definitions for MADT sub-tables */
399
400 #define ACPI_MADT_IFLAGS /* INTI flags (16 bits) */ \
401 UINT8 Polarity : 2; /* 00-01: Polarity of APIC I/O input signals */ \
402 UINT8 TriggerMode : 2; /* 02-03: Trigger mode of APIC input signals */ \
403 UINT8 : 4; /* 04-07: Reserved, must be zero */ \
404 UINT8 Reserved1; /* 08-15: Reserved, must be zero */
405
406 #define ACPI_MADT_LFLAGS /* Local Sapic flags (32 bits) */ \
407 UINT8 ProcessorEnabled: 1; /* 00: Processor is usable if set */ \
408 UINT8 : 7; /* 01-07: Reserved, must be zero */ \
409 UINT8 Reserved2[3]; /* 08-31: Reserved, must be zero */
410
411
412 /* Values for MPS INTI flags */
413
414 #define POLARITY_CONFORMS 0
415 #define POLARITY_ACTIVE_HIGH 1
416 #define POLARITY_RESERVED 2
417 #define POLARITY_ACTIVE_LOW 3
418
419 #define TRIGGER_CONFORMS 0
420 #define TRIGGER_EDGE 1
421 #define TRIGGER_RESERVED 2
422 #define TRIGGER_LEVEL 3
423
424
425 /*
426 * MADT Sub-tables, correspond to Type in APIC_HEADER
427 */
428
429 /* 0: processor APIC */
430
431 typedef struct madt_processor_apic {
432 APIC_HEADER_DEF
433 UINT8 ProcessorId; /* ACPI processor id */
434 UINT8 LocalApicId; /* Processor's local APIC id */
435 ACPI_MADT_LFLAGS
436 } MADT_PROCESSOR_APIC;
437
438 /* 1: IO APIC */
439
440 typedef struct madt_io_apic {
441 APIC_HEADER_DEF
442 UINT8 IoApicId; /* I/O APIC ID */
443 UINT8 Reserved; /* Reserved - must be zero */
444 UINT32 Address; /* APIC physical address */
445 UINT32 Interrupt; /* Global system interrupt where INTI lines start */
446 } MADT_IO_APIC;
447
448 /* 2: Interrupt Override */
449
450 typedef struct madt_interrupt_override {
451 APIC_HEADER_DEF
452 UINT8 Bus; /* 0 - ISA */
453 UINT8 Source; /* Interrupt source (IRQ) */
454 UINT32 Interrupt; /* Global system interrupt */
455 ACPI_MADT_IFLAGS
456 } MADT_INTERRUPT_OVERRIDE;
457
458 /* 3: NMI Sources */
459
460 typedef struct madt_nmi_source {
461 APIC_HEADER_DEF
462 ACPI_MADT_IFLAGS
463 UINT32 Interrupt; /* Global system interrupt */
464 } MADT_NMI_SOURCE;
465
466 /* 4: Local APIC NMI */
467
468 typedef struct madt_local_apic_nmi {
469 APIC_HEADER_DEF
470 UINT8 ProcessorId; /* ACPI processor id */
471 ACPI_MADT_IFLAGS
472 UINT8 Lint; /* LINTn to which NMI is connected */
473 } MADT_LOCAL_APIC_NMI;
474
475 /* 5: Address Override */
476
477 typedef struct madt_address_override {
478 APIC_HEADER_DEF
479 UINT16 Reserved; /* Reserved, must be zero */
480 UINT64 Address; /* APIC physical address */
481 } MADT_ADDRESS_OVERRIDE;
482
483 /* 6: I/O Sapic */
484
485 typedef struct madt_io_sapic {
486 APIC_HEADER_DEF
487 UINT8 IoSapicId; /* I/O SAPIC ID */
488 UINT8 Reserved; /* Reserved, must be zero */
489 UINT32 InterruptBase; /* Glocal interrupt for SAPIC start */
490 UINT64 Address; /* SAPIC physical address */
491 } MADT_IO_SAPIC;
492
493 /* 7: Local Sapic */
494
495 typedef struct madt_local_sapic {
496 APIC_HEADER_DEF
497 UINT8 ProcessorId; /* ACPI processor id */
498 UINT8 LocalSapicId; /* SAPIC ID */
499 UINT8 LocalSapicEid; /* SAPIC EID */
500 UINT8 Reserved[3]; /* Reserved, must be zero */
501 ACPI_MADT_LFLAGS
502 UINT32 ProcessorUID; /* Numeric UID - ACPI 3.0 */
503 char ProcessorUIDString[1];/* String UID - ACPI 3.0 */
504 } MADT_LOCAL_SAPIC;
505
506 /* 8: Platform Interrupt Source */
507
508 typedef struct madt_interrupt_source {
509 APIC_HEADER_DEF
510 ACPI_MADT_IFLAGS
511 UINT8 InterruptType; /* 1=PMI, 2=INIT, 3=corrected */
512 UINT8 ProcessorId; /* Processor ID */
513 UINT8 ProcessorEid; /* Processor EID */
514 UINT8 IoSapicVector; /* Vector value for PMI interrupts */
515 UINT32 Interrupt; /* Global system interrupt */
516 UINT32 Flags; /* Interrupt Source Flags */
517 } MADT_INTERRUPT_SOURCE;
518
519
520 /*******************************************************************************
521 *
522 * MCFG - PCI Memory Mapped Configuration table and sub-table
523 *
524 ******************************************************************************/
525
526 typedef struct acpi_table_mcfg {
527 ACPI_TABLE_HEADER_DEF
528 UINT8 Reserved[8];
529 } ACPI_TABLE_MCFG;
530
531 typedef struct acpi_mcfg_allocation {
532 UINT64 BaseAddress; /* Base address, processor-relative */
533 UINT16 PciSegment; /* PCI segment group number */
534 UINT8 StartBusNumber; /* Starting PCI Bus number */
535 UINT8 EndBusNumber; /* Final PCI Bus number */
536 UINT32 Reserved;
537 } ACPI_MCFG_ALLOCATION;
538
539
540 /*******************************************************************************
541 *
542 * SBST - Smart Battery Specification Table
543 *
544 ******************************************************************************/
545
546 typedef struct smart_battery_table {
547 ACPI_TABLE_HEADER_DEF
548 UINT32 WarningLevel;
549 UINT32 LowLevel;
550 UINT32 CriticalLevel;
551 } SMART_BATTERY_TABLE;
552
553
554 /*******************************************************************************
555 *
556 * SLIT - System Locality Distance Information Table
557 *
558 ******************************************************************************/
559
560 typedef struct system_locality_info {
561 ACPI_TABLE_HEADER_DEF
562 UINT64 LocalityCount;
563 UINT8 Entry[1][1];
564 } SYSTEM_LOCALITY_INFO;
565
566
567 /*******************************************************************************
568 *
569 * SPCR - Serial Port Console Redirection table
570 *
571 ******************************************************************************/
572
573 typedef struct acpi_table_spcr {
574 ACPI_TABLE_HEADER_DEF
575 UINT8 InterfaceType; /* 0=full 16550, 1=subset of 16550 */
576 UINT8 Reserved[3];
577 ACPI_GENERIC_ADDRESS SerialPort;
578 UINT8 InterruptType;
579 UINT8 PcInterrupt;
580 UINT32 Interrupt;
581 UINT8 BaudRate;
582 UINT8 Parity;
583 UINT8 StopBits;
584 UINT8 FlowControl;
585 UINT8 TerminalType;
586 UINT8 Reserved2;
587 UINT16 PciDeviceId;
588 UINT16 PciVendorId;
589 UINT8 PciBus;
590 UINT8 PciDevice;
591 UINT8 PciFunction;
592 UINT32 PciFlags;
593 UINT8 PciSegment;
594 UINT32 Reserved3;
595 } ACPI_TABLE_SPCR;
596
597
598 /*******************************************************************************
599 *
600 * SPMI - Server Platform Management Interface table
601 *
602 ******************************************************************************/
603
604 typedef struct acpi_table_spmi {
605 ACPI_TABLE_HEADER_DEF
606 UINT8 Reserved;
607 UINT8 InterfaceType;
608 UINT16 SpecRevision; /* Version of IPMI */
609 UINT8 InterruptType;
610 UINT8 GpeNumber; /* GPE assigned */
611 UINT8 Reserved2;
612 UINT8 PciDeviceFlag;
613 UINT32 Interrupt;
614 ACPI_GENERIC_ADDRESS IpmiRegister;
615 UINT8 PciSegment;
616 UINT8 PciBus;
617 UINT8 PciDevice;
618 UINT8 PciFunction;
619 } ACPI_TABLE_SPMI;
620
621
622 /*******************************************************************************
623 *
624 * SRAT - System Resource Affinity Table
625 *
626 ******************************************************************************/
627
628 typedef struct system_resource_affinity {
629 ACPI_TABLE_HEADER_DEF
630 UINT32 Reserved1; /* Must be value '1' */
631 UINT64 Reserved2; /* Reserved, must be zero */
632 } SYSTEM_RESOURCE_AFFINITY;
633
634
635 /* SRAT common sub-table header */
636
637 #define SRAT_SUBTABLE_HEADER \
638 UINT8 Type; \
639 UINT8 Length;
640
641 /* Values for Type above */
642
643 #define SRAT_CPU_AFFINITY 0
644 #define SRAT_MEMORY_AFFINITY 1
645 #define SRAT_RESERVED 2
646
647
648 /* SRAT sub-tables */
649
650 typedef struct static_resource_alloc {
651 SRAT_SUBTABLE_HEADER
652 UINT8 ProximityDomainLo;
653 UINT8 ApicId;
654
655 /* Flags (32 bits) */
656
657 UINT8 Enabled :1;/* 00: Use affinity structure */
658 UINT8 :7;/* 01-07: Reserved, must be zero */
659 UINT8 Reserved3[3]; /* 08-31: Reserved, must be zero */
660
661 UINT8 LocalSapicEid;
662 UINT8 ProximityDomainHi[3];
663 UINT32 Reserved4; /* Reserved, must be zero */
664 } STATIC_RESOURCE_ALLOC;
665
666 typedef struct memory_affinity {
667 SRAT_SUBTABLE_HEADER
668 UINT32 ProximityDomain;
669 UINT16 Reserved3;
670 UINT64 BaseAddress;
671 UINT64 AddressLength;
672 UINT32 Reserved4;
673
674 /* Flags (32 bits) */
675
676 UINT8 Enabled :1;/* 00: Use affinity structure */
677 UINT8 HotPluggable :1;/* 01: Memory region is hot pluggable */
678 UINT8 NonVolatile :1;/* 02: Memory is non-volatile */
679 UINT8 :5;/* 03-07: Reserved, must be zero */
680 UINT8 Reserved5[3]; /* 08-31: Reserved, must be zero */
681
682 UINT64 Reserved6; /* Reserved, must be zero */
683 } MEMORY_AFFINITY;
684
685
686 /*******************************************************************************
687 *
688 * TCPA - Trusted Computing Platform Alliance table
689 *
690 ******************************************************************************/
691
692 typedef struct acpi_table_tcpa {
693 ACPI_TABLE_HEADER_DEF
694 UINT16 Reserved;
695 UINT32 MaxLogLength; /* Maximum length for the event log area */
696 UINT64 LogAddress; /* Address of the event log area */
697 } ACPI_TABLE_TCPA;
698
699
700 /*******************************************************************************
701 *
702 * WDRT - Watchdog Resource Table
703 *
704 ******************************************************************************/
705
706 typedef struct acpi_table_wdrt {
707 ACPI_TABLE_HEADER_DEF
708 UINT32 HeaderLength; /* Watchdog Header Length */
709 UINT8 PciSegment; /* PCI Segment number */
710 UINT8 PciBus; /* PCI Bus number */
711 UINT8 PciDevice; /* PCI Device number */
712 UINT8 PciFunction; /* PCI Function number */
713 UINT32 TimerPeriod; /* Period of one timer count (msec) */
714 UINT32 MaxCount; /* Maximum counter value supported */
715 UINT32 MinCount; /* Minimum counter value */
716 UINT8 Flags;
717 UINT8 Reserved[3];
718 UINT32 Entries; /* Number of watchdog entries that follow */
719 } ACPI_TABLE_WDRT;
720
721 #if 0 /* Flags, will be converted to macros */
722 UINT8 Enabled :1; /* 00: Timer enabled */
723 UINT8 :6; /* 01-06: Reserved */
724 UINT8 SleepStop :1; /* 07: Timer stopped in sleep state */
725 #endif
726
727
728 /* Macros used to generate offsets to specific table fields */
729
730 #define ACPI_ASF0_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_ASF_INFO,f)
731 #define ACPI_ASF1_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_ASF_ALERT,f)
732 #define ACPI_ASF2_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_ASF_REMOTE,f)
733 #define ACPI_ASF3_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_ASF_RMCP,f)
734 #define ACPI_ASF4_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_ASF_ADDRESS,f)
735 #define ACPI_BOOT_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_BOOT,f)
736 #define ACPI_CPEP_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_CPEP,f)
737 #define ACPI_CPEP0_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_CPEP_POLLING,f)
738 #define ACPI_DBGP_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_DBGP,f)
739 #define ACPI_ECDT_OFFSET(f) (UINT8) ACPI_OFFSET (EC_BOOT_RESOURCES,f)
740 #define ACPI_HPET_OFFSET(f) (UINT8) ACPI_OFFSET (HPET_TABLE,f)
741 #define ACPI_MADT_OFFSET(f) (UINT8) ACPI_OFFSET (MULTIPLE_APIC_TABLE,f)
742 #define ACPI_MADT0_OFFSET(f) (UINT8) ACPI_OFFSET (MADT_PROCESSOR_APIC,f)
743 #define ACPI_MADT1_OFFSET(f) (UINT8) ACPI_OFFSET (MADT_IO_APIC,f)
744 #define ACPI_MADT2_OFFSET(f) (UINT8) ACPI_OFFSET (MADT_INTERRUPT_OVERRIDE,f)
745 #define ACPI_MADT3_OFFSET(f) (UINT8) ACPI_OFFSET (MADT_NMI_SOURCE,f)
746 #define ACPI_MADT4_OFFSET(f) (UINT8) ACPI_OFFSET (MADT_LOCAL_APIC_NMI,f)
747 #define ACPI_MADT5_OFFSET(f) (UINT8) ACPI_OFFSET (MADT_ADDRESS_OVERRIDE,f)
748 #define ACPI_MADT6_OFFSET(f) (UINT8) ACPI_OFFSET (MADT_IO_SAPIC,f)
749 #define ACPI_MADT7_OFFSET(f) (UINT8) ACPI_OFFSET (MADT_LOCAL_SAPIC,f)
750 #define ACPI_MADT8_OFFSET(f) (UINT8) ACPI_OFFSET (MADT_INTERRUPT_SOURCE,f)
751 #define ACPI_MADTH_OFFSET(f) (UINT8) ACPI_OFFSET (APIC_HEADER,f)
752 #define ACPI_MCFG_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_MCFG,f)
753 #define ACPI_MCFG0_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_MCFG_ALLOCATION,f)
754 #define ACPI_SBST_OFFSET(f) (UINT8) ACPI_OFFSET (SMART_BATTERY_TABLE,f)
755 #define ACPI_SLIT_OFFSET(f) (UINT8) ACPI_OFFSET (SYSTEM_LOCALITY_INFO,f)
756 #define ACPI_SPCR_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_SPCR,f)
757 #define ACPI_SPMI_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_SPMI,f)
758 #define ACPI_SRAT_OFFSET(f) (UINT8) ACPI_OFFSET (SYSTEM_RESOURCE_AFFINITY,f)
759 #define ACPI_SRAT0_OFFSET(f) (UINT8) ACPI_OFFSET (STATIC_RESOURCE_ALLOC,f)
760 #define ACPI_SRAT1_OFFSET(f) (UINT8) ACPI_OFFSET (MEMORY_AFFINITY,f)
761 #define ACPI_TCPA_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_TCPA,f)
762 #define ACPI_WDRT_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_WDRT,f)
763
764
765 #define ACPI_HPET_FLAG_OFFSET(f, o) ACPI_FLAG_OFFSET (HPET_TABLE,f,o)
766 #define ACPI_SRAT0_FLAG_OFFSET(f, o) ACPI_FLAG_OFFSET (STATIC_RESOURCE_ALLOC,f,o)
767 #define ACPI_SRAT1_FLAG_OFFSET(f, o) ACPI_FLAG_OFFSET (MEMORY_AFFINITY,f,o)
768 #define ACPI_MADT_FLAG_OFFSET(f, o) ACPI_FLAG_OFFSET (MULTIPLE_APIC_TABLE,f,o)
769 #define ACPI_MADT0_FLAG_OFFSET(f, o) ACPI_FLAG_OFFSET (MADT_PROCESSOR_APIC,f,o)
770 #define ACPI_MADT2_FLAG_OFFSET(f, o) ACPI_FLAG_OFFSET (MADT_INTERRUPT_OVERRIDE,f,o)
771 #define ACPI_MADT3_FLAG_OFFSET(f, o) ACPI_FLAG_OFFSET (MADT_NMI_SOURCE,f,o)
772 #define ACPI_MADT4_FLAG_OFFSET(f, o) ACPI_FLAG_OFFSET (MADT_LOCAL_APIC_NMI,f,o)
773 #define ACPI_MADT7_FLAG_OFFSET(f, o) ACPI_FLAG_OFFSET (MADT_LOCAL_SAPIC,f,o)
774 #define ACPI_MADT8_FLAG_OFFSET(f, o) ACPI_FLAG_OFFSET (MADT_INTERRUPT_SOURCE,f,o)
775
776
777 /* Reset to default packing */
778
779 #pragma pack()
780
781 #endif /* __ACTBL1_H__ */