1 /******************************************************************************
3 * Name: actbl2.h - ACPI Table Definitions (tables not in ACPI spec)
5 *****************************************************************************/
7 /******************************************************************************
11 * Some or all of this work - Copyright (c) 1999 - 2017, Intel Corp.
12 * All rights reserved.
16 * 2.1. This is your license from Intel Corp. under its intellectual property
17 * rights. You may have additional license terms from the party that provided
18 * you this software, covering your right to use that party's intellectual
21 * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
22 * copy of the source code appearing in this file ("Covered Code") an
23 * irrevocable, perpetual, worldwide license under Intel's copyrights in the
24 * base code distributed originally by Intel ("Original Intel Code") to copy,
25 * make derivatives, distribute, use and display any portion of the Covered
26 * Code in any form, with the right to sublicense such rights; and
28 * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
29 * license (with the right to sublicense), under only those claims of Intel
30 * patents that are infringed by the Original Intel Code, to make, use, sell,
31 * offer to sell, and import the Covered Code and derivative works thereof
32 * solely to the minimum extent necessary to exercise the above copyright
33 * license, and in no event shall the patent license extend to any additions
34 * to or modifications of the Original Intel Code. No other license or right
35 * is granted directly or by implication, estoppel or otherwise;
37 * The above copyright and patent license is granted only if the following
42 * 3.1. Redistribution of Source with Rights to Further Distribute Source.
43 * Redistribution of source code of any substantial portion of the Covered
44 * Code or modification with rights to further distribute source must include
45 * the above Copyright Notice, the above License, this list of Conditions,
46 * and the following Disclaimer and Export Compliance provision. In addition,
47 * Licensee must cause all Covered Code to which Licensee contributes to
48 * contain a file documenting the changes Licensee made to create that Covered
49 * Code and the date of any change. Licensee must include in that file the
50 * documentation of any changes made by any predecessor Licensee. Licensee
51 * must include a prominent statement that the modification is derived,
52 * directly or indirectly, from Original Intel Code.
54 * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
55 * Redistribution of source code of any substantial portion of the Covered
56 * Code or modification without rights to further distribute source must
57 * include the following Disclaimer and Export Compliance provision in the
58 * documentation and/or other materials provided with distribution. In
59 * addition, Licensee may not authorize further sublicense of source of any
60 * portion of the Covered Code, and must include terms to the effect that the
61 * license from Licensee to its licensee is limited to the intellectual
62 * property embodied in the software Licensee provides to its licensee, and
63 * not to intellectual property embodied in modifications its licensee may
66 * 3.3. Redistribution of Executable. Redistribution in executable form of any
67 * substantial portion of the Covered Code or modification must reproduce the
68 * above Copyright Notice, and the following Disclaimer and Export Compliance
69 * provision in the documentation and/or other materials provided with the
72 * 3.4. Intel retains all right, title, and interest in and to the Original
75 * 3.5. Neither the name Intel nor any other trademark owned or controlled by
76 * Intel shall be used in advertising or otherwise to promote the sale, use or
77 * other dealings in products derived from or relating to the Covered Code
78 * without prior written authorization from Intel.
80 * 4. Disclaimer and Export Compliance
82 * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
83 * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
84 * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
85 * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
86 * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
87 * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
90 * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
91 * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
92 * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
93 * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
94 * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
95 * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
96 * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
99 * 4.3. Licensee shall not export, either directly or indirectly, any of this
100 * software or system incorporating such software without first obtaining any
101 * required license or other approval from the U. S. Department of Commerce or
102 * any other agency or department of the United States Government. In the
103 * event Licensee exports any such software from the United States or
104 * re-exports any such software from a foreign destination, Licensee shall
105 * ensure that the distribution and export/re-export of the software is in
106 * compliance with all laws, regulations, orders, or other restrictions of the
107 * U.S. Export Administration Regulations. Licensee agrees that neither it nor
108 * any of its subsidiaries will export/re-export any technical data, process,
109 * software, or service, directly or indirectly, to any country for which the
110 * United States government or any agency thereof requires an export license,
111 * other governmental approval, or letter of assurance, without first obtaining
112 * such license, approval or letter.
114 *****************************************************************************
116 * Alternatively, you may choose to be licensed under the terms of the
119 * Redistribution and use in source and binary forms, with or without
120 * modification, are permitted provided that the following conditions
122 * 1. Redistributions of source code must retain the above copyright
123 * notice, this list of conditions, and the following disclaimer,
124 * without modification.
125 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
126 * substantially similar to the "NO WARRANTY" disclaimer below
127 * ("Disclaimer") and any redistribution must be conditioned upon
128 * including a substantially similar Disclaimer requirement for further
129 * binary redistribution.
130 * 3. Neither the names of the above-listed copyright holders nor the names
131 * of any contributors may be used to endorse or promote products derived
132 * from this software without specific prior written permission.
134 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
135 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
136 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
137 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
138 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
139 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
140 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
141 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
142 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
143 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
144 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
146 * Alternatively, you may choose to be licensed under the terms of the
147 * GNU General Public License ("GPL") version 2 as published by the Free
148 * Software Foundation.
150 *****************************************************************************/
156 /*******************************************************************************
158 * Additional ACPI Tables (2)
160 * These tables are not consumed directly by the ACPICA subsystem, but are
161 * included here to support device drivers and the AML disassembler.
163 * Generally, the tables in this file are defined by third-party specifications,
164 * and are not defined directly by the ACPI specification itself.
166 ******************************************************************************/
170 * Values for description table header signatures for tables defined in this
171 * file. Useful because they make it more difficult to inadvertently type in
172 * the wrong signature.
174 #define ACPI_SIG_ASF "ASF!" /* Alert Standard Format table */
175 #define ACPI_SIG_BOOT "BOOT" /* Simple Boot Flag Table */
176 #define ACPI_SIG_CSRT "CSRT" /* Core System Resource Table */
177 #define ACPI_SIG_DBG2 "DBG2" /* Debug Port table type 2 */
178 #define ACPI_SIG_DBGP "DBGP" /* Debug Port table */
179 #define ACPI_SIG_DMAR "DMAR" /* DMA Remapping table */
180 #define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */
181 #define ACPI_SIG_IBFT "IBFT" /* iSCSI Boot Firmware Table */
182 #define ACPI_SIG_IORT "IORT" /* IO Remapping Table */
183 #define ACPI_SIG_IVRS "IVRS" /* I/O Virtualization Reporting Structure */
184 #define ACPI_SIG_LPIT "LPIT" /* Low Power Idle Table */
185 #define ACPI_SIG_MCFG "MCFG" /* PCI Memory Mapped Configuration table */
186 #define ACPI_SIG_MCHI "MCHI" /* Management Controller Host Interface table */
187 #define ACPI_SIG_MSDM "MSDM" /* Microsoft Data Management Table */
188 #define ACPI_SIG_MTMR "MTMR" /* MID Timer table */
189 #define ACPI_SIG_SLIC "SLIC" /* Software Licensing Description Table */
190 #define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */
191 #define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */
192 #define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */
193 #define ACPI_SIG_TPM2 "TPM2" /* Trusted Platform Module 2.0 H/W interface table */
194 #define ACPI_SIG_UEFI "UEFI" /* Uefi Boot Optimization Table */
195 #define ACPI_SIG_VRTC "VRTC" /* Virtual Real Time Clock Table */
196 #define ACPI_SIG_WAET "WAET" /* Windows ACPI Emulated devices Table */
197 #define ACPI_SIG_WDAT "WDAT" /* Watchdog Action Table */
198 #define ACPI_SIG_WDDT "WDDT" /* Watchdog Timer Description Table */
199 #define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */
200 #define ACPI_SIG_WSMT "WSMT" /* Windows SMM Security Migrations Table */
201 #define ACPI_SIG_XXXX "XXXX" /* Intermediate AML header for ASL/ASL+ converter */
203 #ifdef ACPI_UNDEFINED_TABLES
205 * These tables have been seen in the field, but no definition has been found
207 #define ACPI_SIG_ATKG "ATKG"
208 #define ACPI_SIG_GSCI "GSCI" /* GMCH SCI table */
209 #define ACPI_SIG_IEIT "IEIT"
213 * All tables must be byte-packed to match the ACPI specification, since
214 * the tables are provided by the system BIOS.
219 * Note: C bitfields are not used for this reason:
221 * "Bitfields are great and easy to read, but unfortunately the C language
222 * does not specify the layout of bitfields in memory, which means they are
223 * essentially useless for dealing with packed data in on-disk formats or
224 * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me,
225 * this decision was a design error in C. Ritchie could have picked an order
226 * and stuck with it." Norman Ramsey.
227 * See http://stackoverflow.com/a/1053662/41661
231 /*******************************************************************************
233 * ASF - Alert Standard Format table (Signature "ASF!")
236 * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003
238 ******************************************************************************/
240 typedef struct acpi_table_asf
242 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
247 /* ASF subtable header */
249 typedef struct acpi_asf_header
258 /* Values for Type field above */
262 ACPI_ASF_TYPE_INFO = 0,
263 ACPI_ASF_TYPE_ALERT = 1,
264 ACPI_ASF_TYPE_CONTROL = 2,
265 ACPI_ASF_TYPE_BOOT = 3,
266 ACPI_ASF_TYPE_ADDRESS = 4,
267 ACPI_ASF_TYPE_RESERVED = 5
274 /* 0: ASF Information */
276 typedef struct acpi_asf_info
278 ACPI_ASF_HEADER Header;
280 UINT8 MinPollInterval;
288 /* Masks for Flags field above */
290 #define ACPI_ASF_SMBUS_PROTOCOLS (1)
295 typedef struct acpi_asf_alert
297 ACPI_ASF_HEADER Header;
305 typedef struct acpi_asf_alert_data
320 } ACPI_ASF_ALERT_DATA;
323 /* 2: ASF Remote Control */
325 typedef struct acpi_asf_remote
327 ACPI_ASF_HEADER Header;
334 typedef struct acpi_asf_control_data
341 } ACPI_ASF_CONTROL_DATA;
344 /* 3: ASF RMCP Boot Options */
346 typedef struct acpi_asf_rmcp
348 ACPI_ASF_HEADER Header;
349 UINT8 Capabilities[7];
350 UINT8 CompletionCode;
355 UINT16 OemParameters;
362 typedef struct acpi_asf_address
364 ACPI_ASF_HEADER Header;
371 /*******************************************************************************
373 * BOOT - Simple Boot Flag Table
376 * Conforms to the "Simple Boot Flag Specification", Version 2.1
378 ******************************************************************************/
380 typedef struct acpi_table_boot
382 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
383 UINT8 CmosIndex; /* Index in CMOS RAM for the boot register */
389 /*******************************************************************************
391 * CSRT - Core System Resource Table
394 * Conforms to the "Core System Resource Table (CSRT)", November 14, 2011
396 ******************************************************************************/
398 typedef struct acpi_table_csrt
400 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
405 /* Resource Group subtable */
407 typedef struct acpi_csrt_group
416 UINT32 SharedInfoLength;
418 /* Shared data immediately follows (Length = SharedInfoLength) */
422 /* Shared Info subtable */
424 typedef struct acpi_csrt_shared_info
431 UINT8 InterruptPolarity;
434 UINT8 DmaAddressWidth;
435 UINT16 BaseRequestLine;
436 UINT16 NumHandshakeSignals;
439 /* Resource descriptors immediately follow (Length = Group Length - SharedInfoLength) */
441 } ACPI_CSRT_SHARED_INFO;
443 /* Resource Descriptor subtable */
445 typedef struct acpi_csrt_descriptor
452 /* Resource-specific information immediately follows */
454 } ACPI_CSRT_DESCRIPTOR;
459 #define ACPI_CSRT_TYPE_INTERRUPT 0x0001
460 #define ACPI_CSRT_TYPE_TIMER 0x0002
461 #define ACPI_CSRT_TYPE_DMA 0x0003
463 /* Resource Subtypes */
465 #define ACPI_CSRT_XRUPT_LINE 0x0000
466 #define ACPI_CSRT_XRUPT_CONTROLLER 0x0001
467 #define ACPI_CSRT_TIMER 0x0000
468 #define ACPI_CSRT_DMA_CHANNEL 0x0000
469 #define ACPI_CSRT_DMA_CONTROLLER 0x0001
472 /*******************************************************************************
474 * DBG2 - Debug Port Table 2
475 * Version 0 (Both main table and subtables)
477 * Conforms to "Microsoft Debug Port Table 2 (DBG2)", December 10, 2015
479 ******************************************************************************/
481 typedef struct acpi_table_dbg2
483 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
490 typedef struct acpi_dbg2_header
498 /* Debug Device Information Subtable */
500 typedef struct acpi_dbg2_device
504 UINT8 RegisterCount; /* Number of BaseAddress registers */
505 UINT16 NamepathLength;
506 UINT16 NamepathOffset;
507 UINT16 OemDataLength;
508 UINT16 OemDataOffset;
512 UINT16 BaseAddressOffset;
513 UINT16 AddressSizeOffset;
516 * BaseAddress (required) - Each in 12-byte Generic Address Structure format.
517 * AddressSize (required) - Array of UINT32 sizes corresponding to each BaseAddress register.
518 * Namepath (required) - Null terminated string. Single dot if not supported.
519 * OemData (optional) - Length is OemDataLength.
523 /* Types for PortType field above */
525 #define ACPI_DBG2_SERIAL_PORT 0x8000
526 #define ACPI_DBG2_1394_PORT 0x8001
527 #define ACPI_DBG2_USB_PORT 0x8002
528 #define ACPI_DBG2_NET_PORT 0x8003
530 /* Subtypes for PortSubtype field above */
532 #define ACPI_DBG2_16550_COMPATIBLE 0x0000
533 #define ACPI_DBG2_16550_SUBSET 0x0001
534 #define ACPI_DBG2_ARM_PL011 0x0003
535 #define ACPI_DBG2_ARM_SBSA_32BIT 0x000D
536 #define ACPI_DBG2_ARM_SBSA_GENERIC 0x000E
537 #define ACPI_DBG2_ARM_DCC 0x000F
538 #define ACPI_DBG2_BCM2835 0x0010
540 #define ACPI_DBG2_1394_STANDARD 0x0000
542 #define ACPI_DBG2_USB_XHCI 0x0000
543 #define ACPI_DBG2_USB_EHCI 0x0001
546 /*******************************************************************************
548 * DBGP - Debug Port table
551 * Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000
553 ******************************************************************************/
555 typedef struct acpi_table_dbgp
557 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
558 UINT8 Type; /* 0=full 16550, 1=subset of 16550 */
560 ACPI_GENERIC_ADDRESS DebugPort;
565 /*******************************************************************************
567 * DMAR - DMA Remapping table
570 * Conforms to "Intel Virtualization Technology for Directed I/O",
571 * Version 2.3, October 2014
573 ******************************************************************************/
575 typedef struct acpi_table_dmar
577 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
578 UINT8 Width; /* Host Address Width */
584 /* Masks for Flags field above */
586 #define ACPI_DMAR_INTR_REMAP (1)
587 #define ACPI_DMAR_X2APIC_OPT_OUT (1<<1)
588 #define ACPI_DMAR_X2APIC_MODE (1<<2)
591 /* DMAR subtable header */
593 typedef struct acpi_dmar_header
600 /* Values for subtable type in ACPI_DMAR_HEADER */
604 ACPI_DMAR_TYPE_HARDWARE_UNIT = 0,
605 ACPI_DMAR_TYPE_RESERVED_MEMORY = 1,
606 ACPI_DMAR_TYPE_ROOT_ATS = 2,
607 ACPI_DMAR_TYPE_HARDWARE_AFFINITY = 3,
608 ACPI_DMAR_TYPE_NAMESPACE = 4,
609 ACPI_DMAR_TYPE_RESERVED = 5 /* 5 and greater are reserved */
613 /* DMAR Device Scope structure */
615 typedef struct acpi_dmar_device_scope
623 } ACPI_DMAR_DEVICE_SCOPE;
625 /* Values for EntryType in ACPI_DMAR_DEVICE_SCOPE - device types */
627 enum AcpiDmarScopeType
629 ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0,
630 ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1,
631 ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2,
632 ACPI_DMAR_SCOPE_TYPE_IOAPIC = 3,
633 ACPI_DMAR_SCOPE_TYPE_HPET = 4,
634 ACPI_DMAR_SCOPE_TYPE_NAMESPACE = 5,
635 ACPI_DMAR_SCOPE_TYPE_RESERVED = 6 /* 6 and greater are reserved */
638 typedef struct acpi_dmar_pci_path
643 } ACPI_DMAR_PCI_PATH;
647 * DMAR Subtables, correspond to Type in ACPI_DMAR_HEADER
650 /* 0: Hardware Unit Definition */
652 typedef struct acpi_dmar_hardware_unit
654 ACPI_DMAR_HEADER Header;
658 UINT64 Address; /* Register Base Address */
660 } ACPI_DMAR_HARDWARE_UNIT;
662 /* Masks for Flags field above */
664 #define ACPI_DMAR_INCLUDE_ALL (1)
667 /* 1: Reserved Memory Defininition */
669 typedef struct acpi_dmar_reserved_memory
671 ACPI_DMAR_HEADER Header;
674 UINT64 BaseAddress; /* 4K aligned base address */
675 UINT64 EndAddress; /* 4K aligned limit address */
677 } ACPI_DMAR_RESERVED_MEMORY;
679 /* Masks for Flags field above */
681 #define ACPI_DMAR_ALLOW_ALL (1)
684 /* 2: Root Port ATS Capability Reporting Structure */
686 typedef struct acpi_dmar_atsr
688 ACPI_DMAR_HEADER Header;
695 /* Masks for Flags field above */
697 #define ACPI_DMAR_ALL_PORTS (1)
700 /* 3: Remapping Hardware Static Affinity Structure */
702 typedef struct acpi_dmar_rhsa
704 ACPI_DMAR_HEADER Header;
707 UINT32 ProximityDomain;
712 /* 4: ACPI Namespace Device Declaration Structure */
714 typedef struct acpi_dmar_andd
716 ACPI_DMAR_HEADER Header;
724 /*******************************************************************************
726 * HPET - High Precision Event Timer table
729 * Conforms to "IA-PC HPET (High Precision Event Timers) Specification",
730 * Version 1.0a, October 2004
732 ******************************************************************************/
734 typedef struct acpi_table_hpet
736 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
737 UINT32 Id; /* Hardware ID of event timer block */
738 ACPI_GENERIC_ADDRESS Address; /* Address of event timer block */
739 UINT8 Sequence; /* HPET sequence number */
740 UINT16 MinimumTick; /* Main counter min tick, periodic mode */
745 /* Masks for Flags field above */
747 #define ACPI_HPET_PAGE_PROTECT_MASK (3)
749 /* Values for Page Protect flags */
751 enum AcpiHpetPageProtect
753 ACPI_HPET_NO_PAGE_PROTECT = 0,
754 ACPI_HPET_PAGE_PROTECT4 = 1,
755 ACPI_HPET_PAGE_PROTECT64 = 2
759 /*******************************************************************************
761 * IBFT - Boot Firmware Table
764 * Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b
765 * Specification", Version 1.01, March 1, 2007
767 * Note: It appears that this table is not intended to appear in the RSDT/XSDT.
768 * Therefore, it is not currently supported by the disassembler.
770 ******************************************************************************/
772 typedef struct acpi_table_ibft
774 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
780 /* IBFT common subtable header */
782 typedef struct acpi_ibft_header
792 /* Values for Type field above */
796 ACPI_IBFT_TYPE_NOT_USED = 0,
797 ACPI_IBFT_TYPE_CONTROL = 1,
798 ACPI_IBFT_TYPE_INITIATOR = 2,
799 ACPI_IBFT_TYPE_NIC = 3,
800 ACPI_IBFT_TYPE_TARGET = 4,
801 ACPI_IBFT_TYPE_EXTENSIONS = 5,
802 ACPI_IBFT_TYPE_RESERVED = 6 /* 6 and greater are reserved */
808 typedef struct acpi_ibft_control
810 ACPI_IBFT_HEADER Header;
812 UINT16 InitiatorOffset;
814 UINT16 Target0Offset;
816 UINT16 Target1Offset;
820 typedef struct acpi_ibft_initiator
822 ACPI_IBFT_HEADER Header;
825 UINT8 PrimaryServer[16];
826 UINT8 SecondaryServer[16];
830 } ACPI_IBFT_INITIATOR;
832 typedef struct acpi_ibft_nic
834 ACPI_IBFT_HEADER Header;
836 UINT8 SubnetMaskPrefix;
839 UINT8 PrimaryDns[16];
840 UINT8 SecondaryDns[16];
850 typedef struct acpi_ibft_target
852 ACPI_IBFT_HEADER Header;
853 UINT8 TargetIpAddress[16];
854 UINT16 TargetIpSocket;
855 UINT8 TargetBootLun[8];
857 UINT8 NicAssociation;
858 UINT16 TargetNameLength;
859 UINT16 TargetNameOffset;
860 UINT16 ChapNameLength;
861 UINT16 ChapNameOffset;
862 UINT16 ChapSecretLength;
863 UINT16 ChapSecretOffset;
864 UINT16 ReverseChapNameLength;
865 UINT16 ReverseChapNameOffset;
866 UINT16 ReverseChapSecretLength;
867 UINT16 ReverseChapSecretOffset;
872 /*******************************************************************************
874 * IORT - IO Remapping Table
876 * Conforms to "IO Remapping Table System Software on ARM Platforms",
877 * Document number: ARM DEN 0049B, October 2015
879 ******************************************************************************/
881 typedef struct acpi_table_iort
883 ACPI_TABLE_HEADER Header;
894 typedef struct acpi_iort_node
901 UINT32 MappingOffset;
906 /* Values for subtable Type above */
908 enum AcpiIortNodeType
910 ACPI_IORT_NODE_ITS_GROUP = 0x00,
911 ACPI_IORT_NODE_NAMED_COMPONENT = 0x01,
912 ACPI_IORT_NODE_PCI_ROOT_COMPLEX = 0x02,
913 ACPI_IORT_NODE_SMMU = 0x03,
914 ACPI_IORT_NODE_SMMU_V3 = 0x04
918 typedef struct acpi_iort_id_mapping
920 UINT32 InputBase; /* Lowest value in input range */
921 UINT32 IdCount; /* Number of IDs */
922 UINT32 OutputBase; /* Lowest value in output range */
923 UINT32 OutputReference; /* A reference to the output node */
926 } ACPI_IORT_ID_MAPPING;
928 /* Masks for Flags field above for IORT subtable */
930 #define ACPI_IORT_ID_SINGLE_MAPPING (1)
933 typedef struct acpi_iort_memory_access
935 UINT32 CacheCoherency;
940 } ACPI_IORT_MEMORY_ACCESS;
942 /* Values for CacheCoherency field above */
944 #define ACPI_IORT_NODE_COHERENT 0x00000001 /* The device node is fully coherent */
945 #define ACPI_IORT_NODE_NOT_COHERENT 0x00000000 /* The device node is not coherent */
947 /* Masks for Hints field above */
949 #define ACPI_IORT_HT_TRANSIENT (1)
950 #define ACPI_IORT_HT_WRITE (1<<1)
951 #define ACPI_IORT_HT_READ (1<<2)
952 #define ACPI_IORT_HT_OVERRIDE (1<<3)
954 /* Masks for MemoryFlags field above */
956 #define ACPI_IORT_MF_COHERENCY (1)
957 #define ACPI_IORT_MF_ATTRIBUTES (1<<1)
961 * IORT node specific subtables
963 typedef struct acpi_iort_its_group
966 UINT32 Identifiers[1]; /* GIC ITS identifier arrary */
968 } ACPI_IORT_ITS_GROUP;
971 typedef struct acpi_iort_named_component
974 UINT64 MemoryProperties; /* Memory access properties */
975 UINT8 MemoryAddressLimit; /* Memory address size limit */
976 char DeviceName[1]; /* Path of namespace object */
978 } ACPI_IORT_NAMED_COMPONENT;
981 typedef struct acpi_iort_root_complex
983 UINT64 MemoryProperties; /* Memory access properties */
985 UINT32 PciSegmentNumber;
987 } ACPI_IORT_ROOT_COMPLEX;
989 /* Values for AtsAttribute field above */
991 #define ACPI_IORT_ATS_SUPPORTED 0x00000001 /* The root complex supports ATS */
992 #define ACPI_IORT_ATS_UNSUPPORTED 0x00000000 /* The root complex doesn't support ATS */
995 typedef struct acpi_iort_smmu
997 UINT64 BaseAddress; /* SMMU base address */
998 UINT64 Span; /* Length of memory range */
1001 UINT32 GlobalInterruptOffset;
1002 UINT32 ContextInterruptCount;
1003 UINT32 ContextInterruptOffset;
1004 UINT32 PmuInterruptCount;
1005 UINT32 PmuInterruptOffset;
1006 UINT64 Interrupts[1]; /* Interrupt array */
1010 /* Values for Model field above */
1012 #define ACPI_IORT_SMMU_V1 0x00000000 /* Generic SMMUv1 */
1013 #define ACPI_IORT_SMMU_V2 0x00000001 /* Generic SMMUv2 */
1014 #define ACPI_IORT_SMMU_CORELINK_MMU400 0x00000002 /* ARM Corelink MMU-400 */
1015 #define ACPI_IORT_SMMU_CORELINK_MMU500 0x00000003 /* ARM Corelink MMU-500 */
1017 /* Masks for Flags field above */
1019 #define ACPI_IORT_SMMU_DVM_SUPPORTED (1)
1020 #define ACPI_IORT_SMMU_COHERENT_WALK (1<<1)
1022 /* Global interrupt format */
1024 typedef struct acpi_iort_smmu_gsi
1027 UINT32 NSgIrptFlags;
1029 UINT32 NSgCfgIrptFlags;
1030 } ACPI_IORT_SMMU_GSI;
1033 typedef struct acpi_iort_smmu_v3
1035 UINT64 BaseAddress; /* SMMUv3 base address */
1038 UINT64 VatosAddress;
1039 UINT32 Model; /* O: generic SMMUv3 */
1045 } ACPI_IORT_SMMU_V3;
1047 /* Masks for Flags field above */
1049 #define ACPI_IORT_SMMU_V3_COHACC_OVERRIDE (1)
1050 #define ACPI_IORT_SMMU_V3_HTTU_OVERRIDE (1<<1)
1053 /*******************************************************************************
1055 * IVRS - I/O Virtualization Reporting Structure
1058 * Conforms to "AMD I/O Virtualization Technology (IOMMU) Specification",
1059 * Revision 1.26, February 2009.
1061 ******************************************************************************/
1063 typedef struct acpi_table_ivrs
1065 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1066 UINT32 Info; /* Common virtualization info */
1071 /* Values for Info field above */
1073 #define ACPI_IVRS_PHYSICAL_SIZE 0x00007F00 /* 7 bits, physical address size */
1074 #define ACPI_IVRS_VIRTUAL_SIZE 0x003F8000 /* 7 bits, virtual address size */
1075 #define ACPI_IVRS_ATS_RESERVED 0x00400000 /* ATS address translation range reserved */
1078 /* IVRS subtable header */
1080 typedef struct acpi_ivrs_header
1082 UINT8 Type; /* Subtable type */
1084 UINT16 Length; /* Subtable length */
1085 UINT16 DeviceId; /* ID of IOMMU */
1089 /* Values for subtable Type above */
1093 ACPI_IVRS_TYPE_HARDWARE = 0x10,
1094 ACPI_IVRS_TYPE_MEMORY1 = 0x20,
1095 ACPI_IVRS_TYPE_MEMORY2 = 0x21,
1096 ACPI_IVRS_TYPE_MEMORY3 = 0x22
1099 /* Masks for Flags field above for IVHD subtable */
1101 #define ACPI_IVHD_TT_ENABLE (1)
1102 #define ACPI_IVHD_PASS_PW (1<<1)
1103 #define ACPI_IVHD_RES_PASS_PW (1<<2)
1104 #define ACPI_IVHD_ISOC (1<<3)
1105 #define ACPI_IVHD_IOTLB (1<<4)
1107 /* Masks for Flags field above for IVMD subtable */
1109 #define ACPI_IVMD_UNITY (1)
1110 #define ACPI_IVMD_READ (1<<1)
1111 #define ACPI_IVMD_WRITE (1<<2)
1112 #define ACPI_IVMD_EXCLUSION_RANGE (1<<3)
1116 * IVRS subtables, correspond to Type in ACPI_IVRS_HEADER
1119 /* 0x10: I/O Virtualization Hardware Definition Block (IVHD) */
1121 typedef struct acpi_ivrs_hardware
1123 ACPI_IVRS_HEADER Header;
1124 UINT16 CapabilityOffset; /* Offset for IOMMU control fields */
1125 UINT64 BaseAddress; /* IOMMU control registers */
1126 UINT16 PciSegmentGroup;
1127 UINT16 Info; /* MSI number and unit ID */
1130 } ACPI_IVRS_HARDWARE;
1132 /* Masks for Info field above */
1134 #define ACPI_IVHD_MSI_NUMBER_MASK 0x001F /* 5 bits, MSI message number */
1135 #define ACPI_IVHD_UNIT_ID_MASK 0x1F00 /* 5 bits, UnitID */
1139 * Device Entries for IVHD subtable, appear after ACPI_IVRS_HARDWARE structure.
1140 * Upper two bits of the Type field are the (encoded) length of the structure.
1141 * Currently, only 4 and 8 byte entries are defined. 16 and 32 byte entries
1142 * are reserved for future use but not defined.
1144 typedef struct acpi_ivrs_de_header
1150 } ACPI_IVRS_DE_HEADER;
1152 /* Length of device entry is in the top two bits of Type field above */
1154 #define ACPI_IVHD_ENTRY_LENGTH 0xC0
1156 /* Values for device entry Type field above */
1158 enum AcpiIvrsDeviceEntryType
1160 /* 4-byte device entries, all use ACPI_IVRS_DEVICE4 */
1162 ACPI_IVRS_TYPE_PAD4 = 0,
1163 ACPI_IVRS_TYPE_ALL = 1,
1164 ACPI_IVRS_TYPE_SELECT = 2,
1165 ACPI_IVRS_TYPE_START = 3,
1166 ACPI_IVRS_TYPE_END = 4,
1168 /* 8-byte device entries */
1170 ACPI_IVRS_TYPE_PAD8 = 64,
1171 ACPI_IVRS_TYPE_NOT_USED = 65,
1172 ACPI_IVRS_TYPE_ALIAS_SELECT = 66, /* Uses ACPI_IVRS_DEVICE8A */
1173 ACPI_IVRS_TYPE_ALIAS_START = 67, /* Uses ACPI_IVRS_DEVICE8A */
1174 ACPI_IVRS_TYPE_EXT_SELECT = 70, /* Uses ACPI_IVRS_DEVICE8B */
1175 ACPI_IVRS_TYPE_EXT_START = 71, /* Uses ACPI_IVRS_DEVICE8B */
1176 ACPI_IVRS_TYPE_SPECIAL = 72 /* Uses ACPI_IVRS_DEVICE8C */
1179 /* Values for Data field above */
1181 #define ACPI_IVHD_INIT_PASS (1)
1182 #define ACPI_IVHD_EINT_PASS (1<<1)
1183 #define ACPI_IVHD_NMI_PASS (1<<2)
1184 #define ACPI_IVHD_SYSTEM_MGMT (3<<4)
1185 #define ACPI_IVHD_LINT0_PASS (1<<6)
1186 #define ACPI_IVHD_LINT1_PASS (1<<7)
1189 /* Types 0-4: 4-byte device entry */
1191 typedef struct acpi_ivrs_device4
1193 ACPI_IVRS_DE_HEADER Header;
1195 } ACPI_IVRS_DEVICE4;
1197 /* Types 66-67: 8-byte device entry */
1199 typedef struct acpi_ivrs_device8a
1201 ACPI_IVRS_DE_HEADER Header;
1206 } ACPI_IVRS_DEVICE8A;
1208 /* Types 70-71: 8-byte device entry */
1210 typedef struct acpi_ivrs_device8b
1212 ACPI_IVRS_DE_HEADER Header;
1213 UINT32 ExtendedData;
1215 } ACPI_IVRS_DEVICE8B;
1217 /* Values for ExtendedData above */
1219 #define ACPI_IVHD_ATS_DISABLED (1<<31)
1221 /* Type 72: 8-byte device entry */
1223 typedef struct acpi_ivrs_device8c
1225 ACPI_IVRS_DE_HEADER Header;
1230 } ACPI_IVRS_DEVICE8C;
1232 /* Values for Variety field above */
1234 #define ACPI_IVHD_IOAPIC 1
1235 #define ACPI_IVHD_HPET 2
1238 /* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition Block (IVMD) */
1240 typedef struct acpi_ivrs_memory
1242 ACPI_IVRS_HEADER Header;
1245 UINT64 StartAddress;
1246 UINT64 MemoryLength;
1251 /*******************************************************************************
1253 * LPIT - Low Power Idle Table
1255 * Conforms to "ACPI Low Power Idle Table (LPIT)" July 2014.
1257 ******************************************************************************/
1259 typedef struct acpi_table_lpit
1261 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1266 /* LPIT subtable header */
1268 typedef struct acpi_lpit_header
1270 UINT32 Type; /* Subtable type */
1271 UINT32 Length; /* Subtable length */
1278 /* Values for subtable Type above */
1282 ACPI_LPIT_TYPE_NATIVE_CSTATE = 0x00,
1283 ACPI_LPIT_TYPE_RESERVED = 0x01 /* 1 and above are reserved */
1286 /* Masks for Flags field above */
1288 #define ACPI_LPIT_STATE_DISABLED (1)
1289 #define ACPI_LPIT_NO_COUNTER (1<<1)
1292 * LPIT subtables, correspond to Type in ACPI_LPIT_HEADER
1295 /* 0x00: Native C-state instruction based LPI structure */
1297 typedef struct acpi_lpit_native
1299 ACPI_LPIT_HEADER Header;
1300 ACPI_GENERIC_ADDRESS EntryTrigger;
1303 ACPI_GENERIC_ADDRESS ResidencyCounter;
1304 UINT64 CounterFrequency;
1309 /*******************************************************************************
1311 * MCFG - PCI Memory Mapped Configuration table and subtable
1314 * Conforms to "PCI Firmware Specification", Revision 3.0, June 20, 2005
1316 ******************************************************************************/
1318 typedef struct acpi_table_mcfg
1320 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1328 typedef struct acpi_mcfg_allocation
1330 UINT64 Address; /* Base address, processor-relative */
1331 UINT16 PciSegment; /* PCI segment group number */
1332 UINT8 StartBusNumber; /* Starting PCI Bus number */
1333 UINT8 EndBusNumber; /* Final PCI Bus number */
1336 } ACPI_MCFG_ALLOCATION;
1339 /*******************************************************************************
1341 * MCHI - Management Controller Host Interface Table
1344 * Conforms to "Management Component Transport Protocol (MCTP) Host
1345 * Interface Specification", Revision 1.0.0a, October 13, 2009
1347 ******************************************************************************/
1349 typedef struct acpi_table_mchi
1351 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1352 UINT8 InterfaceType;
1354 UINT64 ProtocolData;
1355 UINT8 InterruptType;
1357 UINT8 PciDeviceFlag;
1358 UINT32 GlobalInterrupt;
1359 ACPI_GENERIC_ADDRESS ControlRegister;
1368 /*******************************************************************************
1370 * MSDM - Microsoft Data Management table
1372 * Conforms to "Microsoft Software Licensing Tables (SLIC and MSDM)",
1373 * November 29, 2011. Copyright 2011 Microsoft
1375 ******************************************************************************/
1377 /* Basic MSDM table is only the common ACPI header */
1379 typedef struct acpi_table_msdm
1381 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1386 /*******************************************************************************
1388 * MTMR - MID Timer Table
1391 * Conforms to "Simple Firmware Interface Specification",
1392 * Draft 0.8.2, Oct 19, 2010
1393 * NOTE: The ACPI MTMR is equivalent to the SFI MTMR table.
1395 ******************************************************************************/
1397 typedef struct acpi_table_mtmr
1399 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1405 typedef struct acpi_mtmr_entry
1407 ACPI_GENERIC_ADDRESS PhysicalAddress;
1414 /*******************************************************************************
1416 * SLIC - Software Licensing Description Table
1418 * Conforms to "Microsoft Software Licensing Tables (SLIC and MSDM)",
1419 * November 29, 2011. Copyright 2011 Microsoft
1421 ******************************************************************************/
1423 /* Basic SLIC table is only the common ACPI header */
1425 typedef struct acpi_table_slic
1427 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1432 /*******************************************************************************
1434 * SPCR - Serial Port Console Redirection table
1437 * Conforms to "Serial Port Console Redirection Table",
1438 * Version 1.03, August 10, 2015
1440 ******************************************************************************/
1442 typedef struct acpi_table_spcr
1444 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1445 UINT8 InterfaceType; /* 0=full 16550, 1=subset of 16550 */
1447 ACPI_GENERIC_ADDRESS SerialPort;
1448 UINT8 InterruptType;
1468 /* Masks for PciFlags field above */
1470 #define ACPI_SPCR_DO_NOT_DISABLE (1)
1472 /* Values for Interface Type: See the definition of the DBG2 table */
1475 /*******************************************************************************
1477 * SPMI - Server Platform Management Interface table
1480 * Conforms to "Intelligent Platform Management Interface Specification
1481 * Second Generation v2.0", Document Revision 1.0, February 12, 2004 with
1482 * June 12, 2009 markup.
1484 ******************************************************************************/
1486 typedef struct acpi_table_spmi
1488 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1489 UINT8 InterfaceType;
1490 UINT8 Reserved; /* Must be 1 */
1491 UINT16 SpecRevision; /* Version of IPMI */
1492 UINT8 InterruptType;
1493 UINT8 GpeNumber; /* GPE assigned */
1495 UINT8 PciDeviceFlag;
1497 ACPI_GENERIC_ADDRESS IpmiRegister;
1506 /* Values for InterfaceType above */
1508 enum AcpiSpmiInterfaceTypes
1510 ACPI_SPMI_NOT_USED = 0,
1511 ACPI_SPMI_KEYBOARD = 1,
1513 ACPI_SPMI_BLOCK_TRANSFER = 3,
1514 ACPI_SPMI_SMBUS = 4,
1515 ACPI_SPMI_RESERVED = 5 /* 5 and above are reserved */
1519 /*******************************************************************************
1521 * TCPA - Trusted Computing Platform Alliance table
1524 * Conforms to "TCG ACPI Specification, Family 1.2 and 2.0",
1525 * Version 1.2, Revision 8
1528 * NOTE: There are two versions of the table with the same signature --
1529 * the client version and the server version. The common PlatformClass
1530 * field is used to differentiate the two types of tables.
1532 ******************************************************************************/
1534 typedef struct acpi_table_tcpa_hdr
1536 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1537 UINT16 PlatformClass;
1539 } ACPI_TABLE_TCPA_HDR;
1542 * Values for PlatformClass above.
1543 * This is how the client and server subtables are differentiated
1545 #define ACPI_TCPA_CLIENT_TABLE 0
1546 #define ACPI_TCPA_SERVER_TABLE 1
1549 typedef struct acpi_table_tcpa_client
1551 UINT32 MinimumLogLength; /* Minimum length for the event log area */
1552 UINT64 LogAddress; /* Address of the event log area */
1554 } ACPI_TABLE_TCPA_CLIENT;
1556 typedef struct acpi_table_tcpa_server
1559 UINT64 MinimumLogLength; /* Minimum length for the event log area */
1560 UINT64 LogAddress; /* Address of the event log area */
1561 UINT16 SpecRevision;
1563 UINT8 InterruptFlags;
1566 UINT32 GlobalInterrupt;
1567 ACPI_GENERIC_ADDRESS Address;
1569 ACPI_GENERIC_ADDRESS ConfigAddress;
1571 UINT8 Bus; /* PCI Bus/Segment/Function numbers */
1575 } ACPI_TABLE_TCPA_SERVER;
1577 /* Values for DeviceFlags above */
1579 #define ACPI_TCPA_PCI_DEVICE (1)
1580 #define ACPI_TCPA_BUS_PNP (1<<1)
1581 #define ACPI_TCPA_ADDRESS_VALID (1<<2)
1583 /* Values for InterruptFlags above */
1585 #define ACPI_TCPA_INTERRUPT_MODE (1)
1586 #define ACPI_TCPA_INTERRUPT_POLARITY (1<<1)
1587 #define ACPI_TCPA_SCI_VIA_GPE (1<<2)
1588 #define ACPI_TCPA_GLOBAL_INTERRUPT (1<<3)
1591 /*******************************************************************************
1593 * TPM2 - Trusted Platform Module (TPM) 2.0 Hardware Interface Table
1596 * Conforms to "TCG ACPI Specification, Family 1.2 and 2.0",
1597 * Version 1.2, Revision 8
1600 ******************************************************************************/
1602 typedef struct acpi_table_tpm2
1604 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1605 UINT16 PlatformClass;
1607 UINT64 ControlAddress;
1610 /* Platform-specific data follows */
1614 /* Values for StartMethod above */
1616 #define ACPI_TPM2_NOT_ALLOWED 0
1617 #define ACPI_TPM2_START_METHOD 2
1618 #define ACPI_TPM2_MEMORY_MAPPED 6
1619 #define ACPI_TPM2_COMMAND_BUFFER 7
1620 #define ACPI_TPM2_COMMAND_BUFFER_WITH_START_METHOD 8
1621 #define ACPI_TPM2_COMMAND_BUFFER_WITH_ARM_SMC 11 /* V1.2 Rev 8 */
1624 /* Trailer appears after any StartMethod subtables */
1626 typedef struct acpi_tpm2_trailer
1628 UINT32 MinimumLogLength; /* Minimum length for the event log area */
1629 UINT64 LogAddress; /* Address of the event log area */
1631 } ACPI_TPM2_TRAILER;
1635 * Subtables (StartMethod-specific)
1638 /* 11: Start Method for ARM SMC (V1.2 Rev 8) */
1640 typedef struct acpi_tpm2_arm_smc
1642 UINT32 GlobalInterrupt;
1643 UINT8 InterruptFlags;
1644 UINT8 OperationFlags;
1648 } ACPI_TPM2_ARM_SMC;
1650 /* Values for InterruptFlags above */
1652 #define ACPI_TPM2_INTERRUPT_SUPPORT (1)
1654 /* Values for OperationFlags above */
1656 #define ACPI_TPM2_IDLE_SUPPORT (1)
1659 /*******************************************************************************
1661 * UEFI - UEFI Boot optimization Table
1664 * Conforms to "Unified Extensible Firmware Interface Specification",
1665 * Version 2.3, May 8, 2009
1667 ******************************************************************************/
1669 typedef struct acpi_table_uefi
1671 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1672 UINT8 Identifier[16]; /* UUID identifier */
1673 UINT16 DataOffset; /* Offset of remaining data in table */
1678 /*******************************************************************************
1680 * VRTC - Virtual Real Time Clock Table
1683 * Conforms to "Simple Firmware Interface Specification",
1684 * Draft 0.8.2, Oct 19, 2010
1685 * NOTE: The ACPI VRTC is equivalent to The SFI MRTC table.
1687 ******************************************************************************/
1689 typedef struct acpi_table_vrtc
1691 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1697 typedef struct acpi_vrtc_entry
1699 ACPI_GENERIC_ADDRESS PhysicalAddress;
1705 /*******************************************************************************
1707 * WAET - Windows ACPI Emulated devices Table
1710 * Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009
1712 ******************************************************************************/
1714 typedef struct acpi_table_waet
1716 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1721 /* Masks for Flags field above */
1723 #define ACPI_WAET_RTC_NO_ACK (1) /* RTC requires no int acknowledge */
1724 #define ACPI_WAET_TIMER_ONE_READ (1<<1) /* PM timer requires only one read */
1727 /*******************************************************************************
1729 * WDAT - Watchdog Action Table
1732 * Conforms to "Hardware Watchdog Timers Design Specification",
1733 * Copyright 2006 Microsoft Corporation.
1735 ******************************************************************************/
1737 typedef struct acpi_table_wdat
1739 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1740 UINT32 HeaderLength; /* Watchdog Header Length */
1741 UINT16 PciSegment; /* PCI Segment number */
1742 UINT8 PciBus; /* PCI Bus number */
1743 UINT8 PciDevice; /* PCI Device number */
1744 UINT8 PciFunction; /* PCI Function number */
1746 UINT32 TimerPeriod; /* Period of one timer count (msec) */
1747 UINT32 MaxCount; /* Maximum counter value supported */
1748 UINT32 MinCount; /* Minimum counter value */
1751 UINT32 Entries; /* Number of watchdog entries that follow */
1755 /* Masks for Flags field above */
1757 #define ACPI_WDAT_ENABLED (1)
1758 #define ACPI_WDAT_STOPPED 0x80
1761 /* WDAT Instruction Entries (actions) */
1763 typedef struct acpi_wdat_entry
1768 ACPI_GENERIC_ADDRESS RegisterRegion;
1769 UINT32 Value; /* Value used with Read/Write register */
1770 UINT32 Mask; /* Bitmask required for this register instruction */
1774 /* Values for Action field above */
1776 enum AcpiWdatActions
1778 ACPI_WDAT_RESET = 1,
1779 ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4,
1780 ACPI_WDAT_GET_COUNTDOWN = 5,
1781 ACPI_WDAT_SET_COUNTDOWN = 6,
1782 ACPI_WDAT_GET_RUNNING_STATE = 8,
1783 ACPI_WDAT_SET_RUNNING_STATE = 9,
1784 ACPI_WDAT_GET_STOPPED_STATE = 10,
1785 ACPI_WDAT_SET_STOPPED_STATE = 11,
1786 ACPI_WDAT_GET_REBOOT = 16,
1787 ACPI_WDAT_SET_REBOOT = 17,
1788 ACPI_WDAT_GET_SHUTDOWN = 18,
1789 ACPI_WDAT_SET_SHUTDOWN = 19,
1790 ACPI_WDAT_GET_STATUS = 32,
1791 ACPI_WDAT_SET_STATUS = 33,
1792 ACPI_WDAT_ACTION_RESERVED = 34 /* 34 and greater are reserved */
1795 /* Values for Instruction field above */
1797 enum AcpiWdatInstructions
1799 ACPI_WDAT_READ_VALUE = 0,
1800 ACPI_WDAT_READ_COUNTDOWN = 1,
1801 ACPI_WDAT_WRITE_VALUE = 2,
1802 ACPI_WDAT_WRITE_COUNTDOWN = 3,
1803 ACPI_WDAT_INSTRUCTION_RESERVED = 4, /* 4 and greater are reserved */
1804 ACPI_WDAT_PRESERVE_REGISTER = 0x80 /* Except for this value */
1808 /*******************************************************************************
1810 * WDDT - Watchdog Descriptor Table
1813 * Conforms to "Using the Intel ICH Family Watchdog Timer (WDT)",
1814 * Version 001, September 2002
1816 ******************************************************************************/
1818 typedef struct acpi_table_wddt
1820 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1822 UINT16 TableVersion;
1824 ACPI_GENERIC_ADDRESS Address;
1825 UINT16 MaxCount; /* Maximum counter value supported */
1826 UINT16 MinCount; /* Minimum counter value supported */
1833 /* Flags for Status field above */
1835 #define ACPI_WDDT_AVAILABLE (1)
1836 #define ACPI_WDDT_ACTIVE (1<<1)
1837 #define ACPI_WDDT_TCO_OS_OWNED (1<<2)
1838 #define ACPI_WDDT_USER_RESET (1<<11)
1839 #define ACPI_WDDT_WDT_RESET (1<<12)
1840 #define ACPI_WDDT_POWER_FAIL (1<<13)
1841 #define ACPI_WDDT_UNKNOWN_RESET (1<<14)
1843 /* Flags for Capability field above */
1845 #define ACPI_WDDT_AUTO_RESET (1)
1846 #define ACPI_WDDT_ALERT_SUPPORT (1<<1)
1849 /*******************************************************************************
1851 * WDRT - Watchdog Resource Table
1854 * Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003",
1855 * Version 1.01, August 28, 2006
1857 ******************************************************************************/
1859 typedef struct acpi_table_wdrt
1861 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1862 ACPI_GENERIC_ADDRESS ControlRegister;
1863 ACPI_GENERIC_ADDRESS CountRegister;
1866 UINT8 PciBus; /* PCI Bus number */
1867 UINT8 PciDevice; /* PCI Device number */
1868 UINT8 PciFunction; /* PCI Function number */
1869 UINT8 PciSegment; /* PCI Segment number */
1870 UINT16 MaxCount; /* Maximum counter value supported */
1876 /*******************************************************************************
1878 * WSMT - Windows SMM Security Migrations Table
1881 * Conforms to "Windows SMM Security Migrations Table",
1882 * Version 1.0, April 18, 2016
1884 ******************************************************************************/
1886 typedef struct acpi_table_wsmt
1888 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1889 UINT32 ProtectionFlags;
1893 /* Flags for ProtectionFlags field above */
1895 #define ACPI_WSMT_FIXED_COMM_BUFFERS (1)
1896 #define ACPI_WSMT_COMM_BUFFER_NESTED_PTR_PROTECTION (2)
1897 #define ACPI_WSMT_SYSTEM_RESOURCE_PROTECTION (4)
1900 /* Reset to default packing */
1904 #endif /* __ACTBL2_H__ */