1/******************************************************************************
2 *
3 * Name: actbl2.h - ACPI Table Definitions (tables not in ACPI spec)
4 *
5 *****************************************************************************/
6
7/******************************************************************************
8 *
9 * 1. Copyright Notice
10 *
11 * Some or all of this work - Copyright (c) 1999 - 2017, Intel Corp.
12 * All rights reserved.
13 *
14 * 2. License
15 *
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
19 * property rights.
20 *
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
27 *
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;
36 *
37 * The above copyright and patent license is granted only if the following
38 * conditions are met:
39 *
40 * 3. Conditions
41 *
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.
53 *
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
64 * make.
65 *
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
70 * distribution.
71 *
72 * 3.4. Intel retains all right, title, and interest in and to the Original
73 * Intel Code.
74 *
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.
79 *
80 * 4. Disclaimer and Export Compliance
81 *
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
88 * PARTICULAR PURPOSE.
89 *
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
97 * LIMITED REMEDY.
98 *
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.
113 *
114 *****************************************************************************
115 *
116 * Alternatively, you may choose to be licensed under the terms of the
117 * following license:
118 *
119 * Redistribution and use in source and binary forms, with or without
120 * modification, are permitted provided that the following conditions
121 * are met:
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.
133 *
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.
145 *
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.
149 *
150 *****************************************************************************/
151
152#ifndef __ACTBL2_H__
153#define __ACTBL2_H__
154
155
156/*******************************************************************************
157 *
158 * Additional ACPI Tables (2)
159 *
160 * These tables are not consumed directly by the ACPICA subsystem, but are
161 * included here to support device drivers and the AML disassembler.
162 *
163 * Generally, the tables in this file are defined by third-party specifications,
164 * and are not defined directly by the ACPI specification itself.
165 *
166 ******************************************************************************/
167
168
169/*
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.
173 */
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_SDEI           "SDEI"      /* Software Delegated Exception Interface Table */
190#define ACPI_SIG_SLIC           "SLIC"      /* Software Licensing Description Table */
191#define ACPI_SIG_SPCR           "SPCR"      /* Serial Port Console Redirection table */
192#define ACPI_SIG_SPMI           "SPMI"      /* Server Platform Management Interface table */
193#define ACPI_SIG_TCPA           "TCPA"      /* Trusted Computing Platform Alliance table */
194#define ACPI_SIG_TPM2           "TPM2"      /* Trusted Platform Module 2.0 H/W interface table */
195#define ACPI_SIG_UEFI           "UEFI"      /* Uefi Boot Optimization Table */
196#define ACPI_SIG_VRTC           "VRTC"      /* Virtual Real Time Clock Table */
197#define ACPI_SIG_WAET           "WAET"      /* Windows ACPI Emulated devices Table */
198#define ACPI_SIG_WDAT           "WDAT"      /* Watchdog Action Table */
199#define ACPI_SIG_WDDT           "WDDT"      /* Watchdog Timer Description Table */
200#define ACPI_SIG_WDRT           "WDRT"      /* Watchdog Resource Table */
201#define ACPI_SIG_WSMT           "WSMT"      /* Windows SMM Security Migrations Table */
202#define ACPI_SIG_XXXX           "XXXX"      /* Intermediate AML header for ASL/ASL+ converter */
203
204#ifdef ACPI_UNDEFINED_TABLES
205/*
206 * These tables have been seen in the field, but no definition has been found
207 */
208#define ACPI_SIG_ATKG           "ATKG"
209#define ACPI_SIG_GSCI           "GSCI"      /* GMCH SCI table */
210#define ACPI_SIG_IEIT           "IEIT"
211#endif
212
213/*
214 * All tables must be byte-packed to match the ACPI specification, since
215 * the tables are provided by the system BIOS.
216 */
217#pragma pack(1)
218
219/*
220 * Note: C bitfields are not used for this reason:
221 *
222 * "Bitfields are great and easy to read, but unfortunately the C language
223 * does not specify the layout of bitfields in memory, which means they are
224 * essentially useless for dealing with packed data in on-disk formats or
225 * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me,
226 * this decision was a design error in C. Ritchie could have picked an order
227 * and stuck with it." Norman Ramsey.
228 * See http://stackoverflow.com/a/1053662/41661
229 */
230
231
232/*******************************************************************************
233 *
234 * ASF - Alert Standard Format table (Signature "ASF!")
235 *       Revision 0x10
236 *
237 * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003
238 *
239 ******************************************************************************/
240
241typedef struct acpi_table_asf
242{
243    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
244
245} ACPI_TABLE_ASF;
246
247
248/* ASF subtable header */
249
250typedef struct acpi_asf_header
251{
252    UINT8                   Type;
253    UINT8                   Reserved;
254    UINT16                  Length;
255
256} ACPI_ASF_HEADER;
257
258
259/* Values for Type field above */
260
261enum AcpiAsfType
262{
263    ACPI_ASF_TYPE_INFO          = 0,
264    ACPI_ASF_TYPE_ALERT         = 1,
265    ACPI_ASF_TYPE_CONTROL       = 2,
266    ACPI_ASF_TYPE_BOOT          = 3,
267    ACPI_ASF_TYPE_ADDRESS       = 4,
268    ACPI_ASF_TYPE_RESERVED      = 5
269};
270
271/*
272 * ASF subtables
273 */
274
275/* 0: ASF Information */
276
277typedef struct acpi_asf_info
278{
279    ACPI_ASF_HEADER         Header;
280    UINT8                   MinResetValue;
281    UINT8                   MinPollInterval;
282    UINT16                  SystemId;
283    UINT32                  MfgId;
284    UINT8                   Flags;
285    UINT8                   Reserved2[3];
286
287} ACPI_ASF_INFO;
288
289/* Masks for Flags field above */
290
291#define ACPI_ASF_SMBUS_PROTOCOLS    (1)
292
293
294/* 1: ASF Alerts */
295
296typedef struct acpi_asf_alert
297{
298    ACPI_ASF_HEADER         Header;
299    UINT8                   AssertMask;
300    UINT8                   DeassertMask;
301    UINT8                   Alerts;
302    UINT8                   DataLength;
303
304} ACPI_ASF_ALERT;
305
306typedef struct acpi_asf_alert_data
307{
308    UINT8                   Address;
309    UINT8                   Command;
310    UINT8                   Mask;
311    UINT8                   Value;
312    UINT8                   SensorType;
313    UINT8                   Type;
314    UINT8                   Offset;
315    UINT8                   SourceType;
316    UINT8                   Severity;
317    UINT8                   SensorNumber;
318    UINT8                   Entity;
319    UINT8                   Instance;
320
321} ACPI_ASF_ALERT_DATA;
322
323
324/* 2: ASF Remote Control */
325
326typedef struct acpi_asf_remote
327{
328    ACPI_ASF_HEADER         Header;
329    UINT8                   Controls;
330    UINT8                   DataLength;
331    UINT16                  Reserved2;
332
333} ACPI_ASF_REMOTE;
334
335typedef struct acpi_asf_control_data
336{
337    UINT8                   Function;
338    UINT8                   Address;
339    UINT8                   Command;
340    UINT8                   Value;
341
342} ACPI_ASF_CONTROL_DATA;
343
344
345/* 3: ASF RMCP Boot Options */
346
347typedef struct acpi_asf_rmcp
348{
349    ACPI_ASF_HEADER         Header;
350    UINT8                   Capabilities[7];
351    UINT8                   CompletionCode;
352    UINT32                  EnterpriseId;
353    UINT8                   Command;
354    UINT16                  Parameter;
355    UINT16                  BootOptions;
356    UINT16                  OemParameters;
357
358} ACPI_ASF_RMCP;
359
360
361/* 4: ASF Address */
362
363typedef struct acpi_asf_address
364{
365    ACPI_ASF_HEADER         Header;
366    UINT8                   EpromAddress;
367    UINT8                   Devices;
368
369} ACPI_ASF_ADDRESS;
370
371
372/*******************************************************************************
373 *
374 * BOOT - Simple Boot Flag Table
375 *        Version 1
376 *
377 * Conforms to the "Simple Boot Flag Specification", Version 2.1
378 *
379 ******************************************************************************/
380
381typedef struct acpi_table_boot
382{
383    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
384    UINT8                   CmosIndex;          /* Index in CMOS RAM for the boot register */
385    UINT8                   Reserved[3];
386
387} ACPI_TABLE_BOOT;
388
389
390/*******************************************************************************
391 *
392 * CSRT - Core System Resource Table
393 *        Version 0
394 *
395 * Conforms to the "Core System Resource Table (CSRT)", November 14, 2011
396 *
397 ******************************************************************************/
398
399typedef struct acpi_table_csrt
400{
401    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
402
403} ACPI_TABLE_CSRT;
404
405
406/* Resource Group subtable */
407
408typedef struct acpi_csrt_group
409{
410    UINT32                  Length;
411    UINT32                  VendorId;
412    UINT32                  SubvendorId;
413    UINT16                  DeviceId;
414    UINT16                  SubdeviceId;
415    UINT16                  Revision;
416    UINT16                  Reserved;
417    UINT32                  SharedInfoLength;
418
419    /* Shared data immediately follows (Length = SharedInfoLength) */
420
421} ACPI_CSRT_GROUP;
422
423/* Shared Info subtable */
424
425typedef struct acpi_csrt_shared_info
426{
427    UINT16                  MajorVersion;
428    UINT16                  MinorVersion;
429    UINT32                  MmioBaseLow;
430    UINT32                  MmioBaseHigh;
431    UINT32                  GsiInterrupt;
432    UINT8                   InterruptPolarity;
433    UINT8                   InterruptMode;
434    UINT8                   NumChannels;
435    UINT8                   DmaAddressWidth;
436    UINT16                  BaseRequestLine;
437    UINT16                  NumHandshakeSignals;
438    UINT32                  MaxBlockSize;
439
440    /* Resource descriptors immediately follow (Length = Group Length - SharedInfoLength) */
441
442} ACPI_CSRT_SHARED_INFO;
443
444/* Resource Descriptor subtable */
445
446typedef struct acpi_csrt_descriptor
447{
448    UINT32                  Length;
449    UINT16                  Type;
450    UINT16                  Subtype;
451    UINT32                  Uid;
452
453    /* Resource-specific information immediately follows */
454
455} ACPI_CSRT_DESCRIPTOR;
456
457
458/* Resource Types */
459
460#define ACPI_CSRT_TYPE_INTERRUPT    0x0001
461#define ACPI_CSRT_TYPE_TIMER        0x0002
462#define ACPI_CSRT_TYPE_DMA          0x0003
463
464/* Resource Subtypes */
465
466#define ACPI_CSRT_XRUPT_LINE        0x0000
467#define ACPI_CSRT_XRUPT_CONTROLLER  0x0001
468#define ACPI_CSRT_TIMER             0x0000
469#define ACPI_CSRT_DMA_CHANNEL       0x0000
470#define ACPI_CSRT_DMA_CONTROLLER    0x0001
471
472
473/*******************************************************************************
474 *
475 * DBG2 - Debug Port Table 2
476 *        Version 0 (Both main table and subtables)
477 *
478 * Conforms to "Microsoft Debug Port Table 2 (DBG2)", December 10, 2015
479 *
480 ******************************************************************************/
481
482typedef struct acpi_table_dbg2
483{
484    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
485    UINT32                  InfoOffset;
486    UINT32                  InfoCount;
487
488} ACPI_TABLE_DBG2;
489
490
491typedef struct acpi_dbg2_header
492{
493    UINT32                  InfoOffset;
494    UINT32                  InfoCount;
495
496} ACPI_DBG2_HEADER;
497
498
499/* Debug Device Information Subtable */
500
501typedef struct acpi_dbg2_device
502{
503    UINT8                   Revision;
504    UINT16                  Length;
505    UINT8                   RegisterCount;      /* Number of BaseAddress registers */
506    UINT16                  NamepathLength;
507    UINT16                  NamepathOffset;
508    UINT16                  OemDataLength;
509    UINT16                  OemDataOffset;
510    UINT16                  PortType;
511    UINT16                  PortSubtype;
512    UINT16                  Reserved;
513    UINT16                  BaseAddressOffset;
514    UINT16                  AddressSizeOffset;
515    /*
516     * Data that follows:
517     *    BaseAddress (required) - Each in 12-byte Generic Address Structure format.
518     *    AddressSize (required) - Array of UINT32 sizes corresponding to each BaseAddress register.
519     *    Namepath    (required) - Null terminated string. Single dot if not supported.
520     *    OemData     (optional) - Length is OemDataLength.
521     */
522} ACPI_DBG2_DEVICE;
523
524/* Types for PortType field above */
525
526#define ACPI_DBG2_SERIAL_PORT       0x8000
527#define ACPI_DBG2_1394_PORT         0x8001
528#define ACPI_DBG2_USB_PORT          0x8002
529#define ACPI_DBG2_NET_PORT          0x8003
530
531/* Subtypes for PortSubtype field above */
532
533#define ACPI_DBG2_16550_COMPATIBLE  0x0000
534#define ACPI_DBG2_16550_SUBSET      0x0001
535#define ACPI_DBG2_ARM_PL011         0x0003
536#define ACPI_DBG2_ARM_SBSA_32BIT    0x000D
537#define ACPI_DBG2_ARM_SBSA_GENERIC  0x000E
538#define ACPI_DBG2_ARM_DCC           0x000F
539#define ACPI_DBG2_BCM2835           0x0010
540
541#define ACPI_DBG2_1394_STANDARD     0x0000
542
543#define ACPI_DBG2_USB_XHCI          0x0000
544#define ACPI_DBG2_USB_EHCI          0x0001
545
546
547/*******************************************************************************
548 *
549 * DBGP - Debug Port table
550 *        Version 1
551 *
552 * Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000
553 *
554 ******************************************************************************/
555
556typedef struct acpi_table_dbgp
557{
558    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
559    UINT8                   Type;               /* 0=full 16550, 1=subset of 16550 */
560    UINT8                   Reserved[3];
561    ACPI_GENERIC_ADDRESS    DebugPort;
562
563} ACPI_TABLE_DBGP;
564
565
566/*******************************************************************************
567 *
568 * DMAR - DMA Remapping table
569 *        Version 1
570 *
571 * Conforms to "Intel Virtualization Technology for Directed I/O",
572 * Version 2.3, October 2014
573 *
574 ******************************************************************************/
575
576typedef struct acpi_table_dmar
577{
578    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
579    UINT8                   Width;              /* Host Address Width */
580    UINT8                   Flags;
581    UINT8                   Reserved[10];
582
583} ACPI_TABLE_DMAR;
584
585/* Masks for Flags field above */
586
587#define ACPI_DMAR_INTR_REMAP        (1)
588#define ACPI_DMAR_X2APIC_OPT_OUT    (1<<1)
589#define ACPI_DMAR_X2APIC_MODE       (1<<2)
590
591
592/* DMAR subtable header */
593
594typedef struct acpi_dmar_header
595{
596    UINT16                  Type;
597    UINT16                  Length;
598
599} ACPI_DMAR_HEADER;
600
601/* Values for subtable type in ACPI_DMAR_HEADER */
602
603enum AcpiDmarType
604{
605    ACPI_DMAR_TYPE_HARDWARE_UNIT        = 0,
606    ACPI_DMAR_TYPE_RESERVED_MEMORY      = 1,
607    ACPI_DMAR_TYPE_ROOT_ATS             = 2,
608    ACPI_DMAR_TYPE_HARDWARE_AFFINITY    = 3,
609    ACPI_DMAR_TYPE_NAMESPACE            = 4,
610    ACPI_DMAR_TYPE_RESERVED             = 5     /* 5 and greater are reserved */
611};
612
613
614/* DMAR Device Scope structure */
615
616typedef struct acpi_dmar_device_scope
617{
618    UINT8                   EntryType;
619    UINT8                   Length;
620    UINT16                  Reserved;
621    UINT8                   EnumerationId;
622    UINT8                   Bus;
623
624} ACPI_DMAR_DEVICE_SCOPE;
625
626/* Values for EntryType in ACPI_DMAR_DEVICE_SCOPE - device types */
627
628enum AcpiDmarScopeType
629{
630    ACPI_DMAR_SCOPE_TYPE_NOT_USED       = 0,
631    ACPI_DMAR_SCOPE_TYPE_ENDPOINT       = 1,
632    ACPI_DMAR_SCOPE_TYPE_BRIDGE         = 2,
633    ACPI_DMAR_SCOPE_TYPE_IOAPIC         = 3,
634    ACPI_DMAR_SCOPE_TYPE_HPET           = 4,
635    ACPI_DMAR_SCOPE_TYPE_NAMESPACE      = 5,
636    ACPI_DMAR_SCOPE_TYPE_RESERVED       = 6     /* 6 and greater are reserved */
637};
638
639typedef struct acpi_dmar_pci_path
640{
641    UINT8                   Device;
642    UINT8                   Function;
643
644} ACPI_DMAR_PCI_PATH;
645
646
647/*
648 * DMAR Subtables, correspond to Type in ACPI_DMAR_HEADER
649 */
650
651/* 0: Hardware Unit Definition */
652
653typedef struct acpi_dmar_hardware_unit
654{
655    ACPI_DMAR_HEADER        Header;
656    UINT8                   Flags;
657    UINT8                   Reserved;
658    UINT16                  Segment;
659    UINT64                  Address;            /* Register Base Address */
660
661} ACPI_DMAR_HARDWARE_UNIT;
662
663/* Masks for Flags field above */
664
665#define ACPI_DMAR_INCLUDE_ALL       (1)
666
667
668/* 1: Reserved Memory Defininition */
669
670typedef struct acpi_dmar_reserved_memory
671{
672    ACPI_DMAR_HEADER        Header;
673    UINT16                  Reserved;
674    UINT16                  Segment;
675    UINT64                  BaseAddress;        /* 4K aligned base address */
676    UINT64                  EndAddress;         /* 4K aligned limit address */
677
678} ACPI_DMAR_RESERVED_MEMORY;
679
680/* Masks for Flags field above */
681
682#define ACPI_DMAR_ALLOW_ALL         (1)
683
684
685/* 2: Root Port ATS Capability Reporting Structure */
686
687typedef struct acpi_dmar_atsr
688{
689    ACPI_DMAR_HEADER        Header;
690    UINT8                   Flags;
691    UINT8                   Reserved;
692    UINT16                  Segment;
693
694} ACPI_DMAR_ATSR;
695
696/* Masks for Flags field above */
697
698#define ACPI_DMAR_ALL_PORTS         (1)
699
700
701/* 3: Remapping Hardware Static Affinity Structure */
702
703typedef struct acpi_dmar_rhsa
704{
705    ACPI_DMAR_HEADER        Header;
706    UINT32                  Reserved;
707    UINT64                  BaseAddress;
708    UINT32                  ProximityDomain;
709
710} ACPI_DMAR_RHSA;
711
712
713/* 4: ACPI Namespace Device Declaration Structure */
714
715typedef struct acpi_dmar_andd
716{
717    ACPI_DMAR_HEADER        Header;
718    UINT8                   Reserved[3];
719    UINT8                   DeviceNumber;
720    char                    DeviceName[1];
721
722} ACPI_DMAR_ANDD;
723
724
725/*******************************************************************************
726 *
727 * HPET - High Precision Event Timer table
728 *        Version 1
729 *
730 * Conforms to "IA-PC HPET (High Precision Event Timers) Specification",
731 * Version 1.0a, October 2004
732 *
733 ******************************************************************************/
734
735typedef struct acpi_table_hpet
736{
737    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
738    UINT32                  Id;                 /* Hardware ID of event timer block */
739    ACPI_GENERIC_ADDRESS    Address;            /* Address of event timer block */
740    UINT8                   Sequence;           /* HPET sequence number */
741    UINT16                  MinimumTick;        /* Main counter min tick, periodic mode */
742    UINT8                   Flags;
743
744} ACPI_TABLE_HPET;
745
746/* Masks for Flags field above */
747
748#define ACPI_HPET_PAGE_PROTECT_MASK (3)
749
750/* Values for Page Protect flags */
751
752enum AcpiHpetPageProtect
753{
754    ACPI_HPET_NO_PAGE_PROTECT       = 0,
755    ACPI_HPET_PAGE_PROTECT4         = 1,
756    ACPI_HPET_PAGE_PROTECT64        = 2
757};
758
759
760/*******************************************************************************
761 *
762 * IBFT - Boot Firmware Table
763 *        Version 1
764 *
765 * Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b
766 * Specification", Version 1.01, March 1, 2007
767 *
768 * Note: It appears that this table is not intended to appear in the RSDT/XSDT.
769 * Therefore, it is not currently supported by the disassembler.
770 *
771 ******************************************************************************/
772
773typedef struct acpi_table_ibft
774{
775    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
776    UINT8                   Reserved[12];
777
778} ACPI_TABLE_IBFT;
779
780
781/* IBFT common subtable header */
782
783typedef struct acpi_ibft_header
784{
785    UINT8                   Type;
786    UINT8                   Version;
787    UINT16                  Length;
788    UINT8                   Index;
789    UINT8                   Flags;
790
791} ACPI_IBFT_HEADER;
792
793/* Values for Type field above */
794
795enum AcpiIbftType
796{
797    ACPI_IBFT_TYPE_NOT_USED         = 0,
798    ACPI_IBFT_TYPE_CONTROL          = 1,
799    ACPI_IBFT_TYPE_INITIATOR        = 2,
800    ACPI_IBFT_TYPE_NIC              = 3,
801    ACPI_IBFT_TYPE_TARGET           = 4,
802    ACPI_IBFT_TYPE_EXTENSIONS       = 5,
803    ACPI_IBFT_TYPE_RESERVED         = 6     /* 6 and greater are reserved */
804};
805
806
807/* IBFT subtables */
808
809typedef struct acpi_ibft_control
810{
811    ACPI_IBFT_HEADER        Header;
812    UINT16                  Extensions;
813    UINT16                  InitiatorOffset;
814    UINT16                  Nic0Offset;
815    UINT16                  Target0Offset;
816    UINT16                  Nic1Offset;
817    UINT16                  Target1Offset;
818
819} ACPI_IBFT_CONTROL;
820
821typedef struct acpi_ibft_initiator
822{
823    ACPI_IBFT_HEADER        Header;
824    UINT8                   SnsServer[16];
825    UINT8                   SlpServer[16];
826    UINT8                   PrimaryServer[16];
827    UINT8                   SecondaryServer[16];
828    UINT16                  NameLength;
829    UINT16                  NameOffset;
830
831} ACPI_IBFT_INITIATOR;
832
833typedef struct acpi_ibft_nic
834{
835    ACPI_IBFT_HEADER        Header;
836    UINT8                   IpAddress[16];
837    UINT8                   SubnetMaskPrefix;
838    UINT8                   Origin;
839    UINT8                   Gateway[16];
840    UINT8                   PrimaryDns[16];
841    UINT8                   SecondaryDns[16];
842    UINT8                   Dhcp[16];
843    UINT16                  Vlan;
844    UINT8                   MacAddress[6];
845    UINT16                  PciAddress;
846    UINT16                  NameLength;
847    UINT16                  NameOffset;
848
849} ACPI_IBFT_NIC;
850
851typedef struct acpi_ibft_target
852{
853    ACPI_IBFT_HEADER        Header;
854    UINT8                   TargetIpAddress[16];
855    UINT16                  TargetIpSocket;
856    UINT8                   TargetBootLun[8];
857    UINT8                   ChapType;
858    UINT8                   NicAssociation;
859    UINT16                  TargetNameLength;
860    UINT16                  TargetNameOffset;
861    UINT16                  ChapNameLength;
862    UINT16                  ChapNameOffset;
863    UINT16                  ChapSecretLength;
864    UINT16                  ChapSecretOffset;
865    UINT16                  ReverseChapNameLength;
866    UINT16                  ReverseChapNameOffset;
867    UINT16                  ReverseChapSecretLength;
868    UINT16                  ReverseChapSecretOffset;
869
870} ACPI_IBFT_TARGET;
871
872
873/*******************************************************************************
874 *
875 * IORT - IO Remapping Table
876 *
877 * Conforms to "IO Remapping Table System Software on ARM Platforms",
878 * Document number: ARM DEN 0049C, May 2017
879 *
880 ******************************************************************************/
881
882typedef struct acpi_table_iort
883{
884    ACPI_TABLE_HEADER       Header;
885    UINT32                  NodeCount;
886    UINT32                  NodeOffset;
887    UINT32                  Reserved;
888
889} ACPI_TABLE_IORT;
890
891
892/*
893 * IORT subtables
894 */
895typedef struct acpi_iort_node
896{
897    UINT8                   Type;
898    UINT16                  Length;
899    UINT8                   Revision;
900    UINT32                  Reserved;
901    UINT32                  MappingCount;
902    UINT32                  MappingOffset;
903    char                    NodeData[1];
904
905} ACPI_IORT_NODE;
906
907/* Values for subtable Type above */
908
909enum AcpiIortNodeType
910{
911    ACPI_IORT_NODE_ITS_GROUP            = 0x00,
912    ACPI_IORT_NODE_NAMED_COMPONENT      = 0x01,
913    ACPI_IORT_NODE_PCI_ROOT_COMPLEX     = 0x02,
914    ACPI_IORT_NODE_SMMU                 = 0x03,
915    ACPI_IORT_NODE_SMMU_V3              = 0x04
916};
917
918
919typedef struct acpi_iort_id_mapping
920{
921    UINT32                  InputBase;          /* Lowest value in input range */
922    UINT32                  IdCount;            /* Number of IDs */
923    UINT32                  OutputBase;         /* Lowest value in output range */
924    UINT32                  OutputReference;    /* A reference to the output node */
925    UINT32                  Flags;
926
927} ACPI_IORT_ID_MAPPING;
928
929/* Masks for Flags field above for IORT subtable */
930
931#define ACPI_IORT_ID_SINGLE_MAPPING (1)
932
933
934typedef struct acpi_iort_memory_access
935{
936    UINT32                  CacheCoherency;
937    UINT8                   Hints;
938    UINT16                  Reserved;
939    UINT8                   MemoryFlags;
940
941} ACPI_IORT_MEMORY_ACCESS;
942
943/* Values for CacheCoherency field above */
944
945#define ACPI_IORT_NODE_COHERENT         0x00000001  /* The device node is fully coherent */
946#define ACPI_IORT_NODE_NOT_COHERENT     0x00000000  /* The device node is not coherent */
947
948/* Masks for Hints field above */
949
950#define ACPI_IORT_HT_TRANSIENT          (1)
951#define ACPI_IORT_HT_WRITE              (1<<1)
952#define ACPI_IORT_HT_READ               (1<<2)
953#define ACPI_IORT_HT_OVERRIDE           (1<<3)
954
955/* Masks for MemoryFlags field above */
956
957#define ACPI_IORT_MF_COHERENCY          (1)
958#define ACPI_IORT_MF_ATTRIBUTES         (1<<1)
959
960
961/*
962 * IORT node specific subtables
963 */
964typedef struct acpi_iort_its_group
965{
966    UINT32                  ItsCount;
967    UINT32                  Identifiers[1];         /* GIC ITS identifier arrary */
968
969} ACPI_IORT_ITS_GROUP;
970
971
972typedef struct acpi_iort_named_component
973{
974    UINT32                  NodeFlags;
975    UINT64                  MemoryProperties;       /* Memory access properties */
976    UINT8                   MemoryAddressLimit;     /* Memory address size limit */
977    char                    DeviceName[1];          /* Path of namespace object */
978
979} ACPI_IORT_NAMED_COMPONENT;
980
981
982typedef struct acpi_iort_root_complex
983{
984    UINT64                  MemoryProperties;       /* Memory access properties */
985    UINT32                  AtsAttribute;
986    UINT32                  PciSegmentNumber;
987
988} ACPI_IORT_ROOT_COMPLEX;
989
990/* Values for AtsAttribute field above */
991
992#define ACPI_IORT_ATS_SUPPORTED         0x00000001  /* The root complex supports ATS */
993#define ACPI_IORT_ATS_UNSUPPORTED       0x00000000  /* The root complex doesn't support ATS */
994
995
996typedef struct acpi_iort_smmu
997{
998    UINT64                  BaseAddress;            /* SMMU base address */
999    UINT64                  Span;                   /* Length of memory range */
1000    UINT32                  Model;
1001    UINT32                  Flags;
1002    UINT32                  GlobalInterruptOffset;
1003    UINT32                  ContextInterruptCount;
1004    UINT32                  ContextInterruptOffset;
1005    UINT32                  PmuInterruptCount;
1006    UINT32                  PmuInterruptOffset;
1007    UINT64                  Interrupts[1];          /* Interrupt array */
1008
1009} ACPI_IORT_SMMU;
1010
1011/* Values for Model field above */
1012
1013#define ACPI_IORT_SMMU_V1               0x00000000  /* Generic SMMUv1 */
1014#define ACPI_IORT_SMMU_V2               0x00000001  /* Generic SMMUv2 */
1015#define ACPI_IORT_SMMU_CORELINK_MMU400  0x00000002  /* ARM Corelink MMU-400 */
1016#define ACPI_IORT_SMMU_CORELINK_MMU500  0x00000003  /* ARM Corelink MMU-500 */
1017#define ACPI_IORT_SMMU_CORELINK_MMU401  0x00000004  /* ARM Corelink MMU-401 */
1018#define ACPI_IORT_SMMU_CAVIUM_THUNDERX  0x00000005  /* Cavium ThunderX SMMUv2 */
1019
1020/* Masks for Flags field above */
1021
1022#define ACPI_IORT_SMMU_DVM_SUPPORTED    (1)
1023#define ACPI_IORT_SMMU_COHERENT_WALK    (1<<1)
1024
1025/* Global interrupt format */
1026
1027typedef struct acpi_iort_smmu_gsi
1028{
1029    UINT32                  NSgIrpt;
1030    UINT32                  NSgIrptFlags;
1031    UINT32                  NSgCfgIrpt;
1032    UINT32                  NSgCfgIrptFlags;
1033
1034} ACPI_IORT_SMMU_GSI;
1035
1036
1037typedef struct acpi_iort_smmu_v3
1038{
1039    UINT64                  BaseAddress;            /* SMMUv3 base address */
1040    UINT32                  Flags;
1041    UINT32                  Reserved;
1042    UINT64                  VatosAddress;
1043    UINT32                  Model;
1044    UINT32                  EventGsiv;
1045    UINT32                  PriGsiv;
1046    UINT32                  GerrGsiv;
1047    UINT32                  SyncGsiv;
1048    UINT8                   Pxm;
1049    UINT8                   Reserved1;
1050    UINT16                  Reserved2;
1051    UINT32                  IdMappingIndex;
1052
1053} ACPI_IORT_SMMU_V3;
1054
1055/* Values for Model field above */
1056
1057#define ACPI_IORT_SMMU_V3_GENERIC           0x00000000  /* Generic SMMUv3 */
1058#define ACPI_IORT_SMMU_V3_HISILICON_HI161X  0x00000001  /* HiSilicon Hi161x SMMUv3 */
1059#define ACPI_IORT_SMMU_V3_CAVIUM_CN99XX     0x00000002  /* Cavium CN99xx SMMUv3 */
1060
1061/* Masks for Flags field above */
1062
1063#define ACPI_IORT_SMMU_V3_COHACC_OVERRIDE   (1)
1064#define ACPI_IORT_SMMU_V3_HTTU_OVERRIDE     (1<<1)
1065#define ACPI_IORT_SMMU_V3_PXM_VALID         (1<<3)
1066
1067
1068/*******************************************************************************
1069 *
1070 * IVRS - I/O Virtualization Reporting Structure
1071 *        Version 1
1072 *
1073 * Conforms to "AMD I/O Virtualization Technology (IOMMU) Specification",
1074 * Revision 1.26, February 2009.
1075 *
1076 ******************************************************************************/
1077
1078typedef struct acpi_table_ivrs
1079{
1080    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1081    UINT32                  Info;               /* Common virtualization info */
1082    UINT64                  Reserved;
1083
1084} ACPI_TABLE_IVRS;
1085
1086/* Values for Info field above */
1087
1088#define ACPI_IVRS_PHYSICAL_SIZE     0x00007F00  /* 7 bits, physical address size */
1089#define ACPI_IVRS_VIRTUAL_SIZE      0x003F8000  /* 7 bits, virtual address size */
1090#define ACPI_IVRS_ATS_RESERVED      0x00400000  /* ATS address translation range reserved */
1091
1092
1093/* IVRS subtable header */
1094
1095typedef struct acpi_ivrs_header
1096{
1097    UINT8                   Type;               /* Subtable type */
1098    UINT8                   Flags;
1099    UINT16                  Length;             /* Subtable length */
1100    UINT16                  DeviceId;           /* ID of IOMMU */
1101
1102} ACPI_IVRS_HEADER;
1103
1104/* Values for subtable Type above */
1105
1106enum AcpiIvrsType
1107{
1108    ACPI_IVRS_TYPE_HARDWARE         = 0x10,
1109    ACPI_IVRS_TYPE_MEMORY1          = 0x20,
1110    ACPI_IVRS_TYPE_MEMORY2          = 0x21,
1111    ACPI_IVRS_TYPE_MEMORY3          = 0x22
1112};
1113
1114/* Masks for Flags field above for IVHD subtable */
1115
1116#define ACPI_IVHD_TT_ENABLE         (1)
1117#define ACPI_IVHD_PASS_PW           (1<<1)
1118#define ACPI_IVHD_RES_PASS_PW       (1<<2)
1119#define ACPI_IVHD_ISOC              (1<<3)
1120#define ACPI_IVHD_IOTLB             (1<<4)
1121
1122/* Masks for Flags field above for IVMD subtable */
1123
1124#define ACPI_IVMD_UNITY             (1)
1125#define ACPI_IVMD_READ              (1<<1)
1126#define ACPI_IVMD_WRITE             (1<<2)
1127#define ACPI_IVMD_EXCLUSION_RANGE   (1<<3)
1128
1129
1130/*
1131 * IVRS subtables, correspond to Type in ACPI_IVRS_HEADER
1132 */
1133
1134/* 0x10: I/O Virtualization Hardware Definition Block (IVHD) */
1135
1136typedef struct acpi_ivrs_hardware
1137{
1138    ACPI_IVRS_HEADER        Header;
1139    UINT16                  CapabilityOffset;   /* Offset for IOMMU control fields */
1140    UINT64                  BaseAddress;        /* IOMMU control registers */
1141    UINT16                  PciSegmentGroup;
1142    UINT16                  Info;               /* MSI number and unit ID */
1143    UINT32                  Reserved;
1144
1145} ACPI_IVRS_HARDWARE;
1146
1147/* Masks for Info field above */
1148
1149#define ACPI_IVHD_MSI_NUMBER_MASK   0x001F      /* 5 bits, MSI message number */
1150#define ACPI_IVHD_UNIT_ID_MASK      0x1F00      /* 5 bits, UnitID */
1151
1152
1153/*
1154 * Device Entries for IVHD subtable, appear after ACPI_IVRS_HARDWARE structure.
1155 * Upper two bits of the Type field are the (encoded) length of the structure.
1156 * Currently, only 4 and 8 byte entries are defined. 16 and 32 byte entries
1157 * are reserved for future use but not defined.
1158 */
1159typedef struct acpi_ivrs_de_header
1160{
1161    UINT8                   Type;
1162    UINT16                  Id;
1163    UINT8                   DataSetting;
1164
1165} ACPI_IVRS_DE_HEADER;
1166
1167/* Length of device entry is in the top two bits of Type field above */
1168
1169#define ACPI_IVHD_ENTRY_LENGTH      0xC0
1170
1171/* Values for device entry Type field above */
1172
1173enum AcpiIvrsDeviceEntryType
1174{
1175    /* 4-byte device entries, all use ACPI_IVRS_DEVICE4 */
1176
1177    ACPI_IVRS_TYPE_PAD4             = 0,
1178    ACPI_IVRS_TYPE_ALL              = 1,
1179    ACPI_IVRS_TYPE_SELECT           = 2,
1180    ACPI_IVRS_TYPE_START            = 3,
1181    ACPI_IVRS_TYPE_END              = 4,
1182
1183    /* 8-byte device entries */
1184
1185    ACPI_IVRS_TYPE_PAD8             = 64,
1186    ACPI_IVRS_TYPE_NOT_USED         = 65,
1187    ACPI_IVRS_TYPE_ALIAS_SELECT     = 66, /* Uses ACPI_IVRS_DEVICE8A */
1188    ACPI_IVRS_TYPE_ALIAS_START      = 67, /* Uses ACPI_IVRS_DEVICE8A */
1189    ACPI_IVRS_TYPE_EXT_SELECT       = 70, /* Uses ACPI_IVRS_DEVICE8B */
1190    ACPI_IVRS_TYPE_EXT_START        = 71, /* Uses ACPI_IVRS_DEVICE8B */
1191    ACPI_IVRS_TYPE_SPECIAL          = 72  /* Uses ACPI_IVRS_DEVICE8C */
1192};
1193
1194/* Values for Data field above */
1195
1196#define ACPI_IVHD_INIT_PASS         (1)
1197#define ACPI_IVHD_EINT_PASS         (1<<1)
1198#define ACPI_IVHD_NMI_PASS          (1<<2)
1199#define ACPI_IVHD_SYSTEM_MGMT       (3<<4)
1200#define ACPI_IVHD_LINT0_PASS        (1<<6)
1201#define ACPI_IVHD_LINT1_PASS        (1<<7)
1202
1203
1204/* Types 0-4: 4-byte device entry */
1205
1206typedef struct acpi_ivrs_device4
1207{
1208    ACPI_IVRS_DE_HEADER     Header;
1209
1210} ACPI_IVRS_DEVICE4;
1211
1212/* Types 66-67: 8-byte device entry */
1213
1214typedef struct acpi_ivrs_device8a
1215{
1216    ACPI_IVRS_DE_HEADER     Header;
1217    UINT8                   Reserved1;
1218    UINT16                  UsedId;
1219    UINT8                   Reserved2;
1220
1221} ACPI_IVRS_DEVICE8A;
1222
1223/* Types 70-71: 8-byte device entry */
1224
1225typedef struct acpi_ivrs_device8b
1226{
1227    ACPI_IVRS_DE_HEADER     Header;
1228    UINT32                  ExtendedData;
1229
1230} ACPI_IVRS_DEVICE8B;
1231
1232/* Values for ExtendedData above */
1233
1234#define ACPI_IVHD_ATS_DISABLED      (1<<31)
1235
1236/* Type 72: 8-byte device entry */
1237
1238typedef struct acpi_ivrs_device8c
1239{
1240    ACPI_IVRS_DE_HEADER     Header;
1241    UINT8                   Handle;
1242    UINT16                  UsedId;
1243    UINT8                   Variety;
1244
1245} ACPI_IVRS_DEVICE8C;
1246
1247/* Values for Variety field above */
1248
1249#define ACPI_IVHD_IOAPIC            1
1250#define ACPI_IVHD_HPET              2
1251
1252
1253/* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition Block (IVMD) */
1254
1255typedef struct acpi_ivrs_memory
1256{
1257    ACPI_IVRS_HEADER        Header;
1258    UINT16                  AuxData;
1259    UINT64                  Reserved;
1260    UINT64                  StartAddress;
1261    UINT64                  MemoryLength;
1262
1263} ACPI_IVRS_MEMORY;
1264
1265
1266/*******************************************************************************
1267 *
1268 * LPIT - Low Power Idle Table
1269 *
1270 * Conforms to "ACPI Low Power Idle Table (LPIT)" July 2014.
1271 *
1272 ******************************************************************************/
1273
1274typedef struct acpi_table_lpit
1275{
1276    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1277
1278} ACPI_TABLE_LPIT;
1279
1280
1281/* LPIT subtable header */
1282
1283typedef struct acpi_lpit_header
1284{
1285    UINT32                  Type;               /* Subtable type */
1286    UINT32                  Length;             /* Subtable length */
1287    UINT16                  UniqueId;
1288    UINT16                  Reserved;
1289    UINT32                  Flags;
1290
1291} ACPI_LPIT_HEADER;
1292
1293/* Values for subtable Type above */
1294
1295enum AcpiLpitType
1296{
1297    ACPI_LPIT_TYPE_NATIVE_CSTATE    = 0x00,
1298    ACPI_LPIT_TYPE_RESERVED         = 0x01      /* 1 and above are reserved */
1299};
1300
1301/* Masks for Flags field above  */
1302
1303#define ACPI_LPIT_STATE_DISABLED    (1)
1304#define ACPI_LPIT_NO_COUNTER        (1<<1)
1305
1306/*
1307 * LPIT subtables, correspond to Type in ACPI_LPIT_HEADER
1308 */
1309
1310/* 0x00: Native C-state instruction based LPI structure */
1311
1312typedef struct acpi_lpit_native
1313{
1314    ACPI_LPIT_HEADER        Header;
1315    ACPI_GENERIC_ADDRESS    EntryTrigger;
1316    UINT32                  Residency;
1317    UINT32                  Latency;
1318    ACPI_GENERIC_ADDRESS    ResidencyCounter;
1319    UINT64                  CounterFrequency;
1320
1321} ACPI_LPIT_NATIVE;
1322
1323
1324/*******************************************************************************
1325 *
1326 * MCFG - PCI Memory Mapped Configuration table and subtable
1327 *        Version 1
1328 *
1329 * Conforms to "PCI Firmware Specification", Revision 3.0, June 20, 2005
1330 *
1331 ******************************************************************************/
1332
1333typedef struct acpi_table_mcfg
1334{
1335    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1336    UINT8                   Reserved[8];
1337
1338} ACPI_TABLE_MCFG;
1339
1340
1341/* Subtable */
1342
1343typedef struct acpi_mcfg_allocation
1344{
1345    UINT64                  Address;            /* Base address, processor-relative */
1346    UINT16                  PciSegment;         /* PCI segment group number */
1347    UINT8                   StartBusNumber;     /* Starting PCI Bus number */
1348    UINT8                   EndBusNumber;       /* Final PCI Bus number */
1349    UINT32                  Reserved;
1350
1351} ACPI_MCFG_ALLOCATION;
1352
1353
1354/*******************************************************************************
1355 *
1356 * MCHI - Management Controller Host Interface Table
1357 *        Version 1
1358 *
1359 * Conforms to "Management Component Transport Protocol (MCTP) Host
1360 * Interface Specification", Revision 1.0.0a, October 13, 2009
1361 *
1362 ******************************************************************************/
1363
1364typedef struct acpi_table_mchi
1365{
1366    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1367    UINT8                   InterfaceType;
1368    UINT8                   Protocol;
1369    UINT64                  ProtocolData;
1370    UINT8                   InterruptType;
1371    UINT8                   Gpe;
1372    UINT8                   PciDeviceFlag;
1373    UINT32                  GlobalInterrupt;
1374    ACPI_GENERIC_ADDRESS    ControlRegister;
1375    UINT8                   PciSegment;
1376    UINT8                   PciBus;
1377    UINT8                   PciDevice;
1378    UINT8                   PciFunction;
1379
1380} ACPI_TABLE_MCHI;
1381
1382
1383/*******************************************************************************
1384 *
1385 * MSDM - Microsoft Data Management table
1386 *
1387 * Conforms to "Microsoft Software Licensing Tables (SLIC and MSDM)",
1388 * November 29, 2011. Copyright 2011 Microsoft
1389 *
1390 ******************************************************************************/
1391
1392/* Basic MSDM table is only the common ACPI header */
1393
1394typedef struct acpi_table_msdm
1395{
1396    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1397
1398} ACPI_TABLE_MSDM;
1399
1400
1401/*******************************************************************************
1402 *
1403 * MTMR - MID Timer Table
1404 *        Version 1
1405 *
1406 * Conforms to "Simple Firmware Interface Specification",
1407 * Draft 0.8.2, Oct 19, 2010
1408 * NOTE: The ACPI MTMR is equivalent to the SFI MTMR table.
1409 *
1410 ******************************************************************************/
1411
1412typedef struct acpi_table_mtmr
1413{
1414    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1415
1416} ACPI_TABLE_MTMR;
1417
1418/* MTMR entry */
1419
1420typedef struct acpi_mtmr_entry
1421{
1422    ACPI_GENERIC_ADDRESS    PhysicalAddress;
1423    UINT32                  Frequency;
1424    UINT32                  Irq;
1425
1426} ACPI_MTMR_ENTRY;
1427
1428/*******************************************************************************
1429 *
1430 * SDEI - Software Delegated Exception Interface Descriptor Table
1431 *
1432 * Conforms to "Software Delegated Exception Interface (SDEI)" ARM DEN0054A,
1433 * May 8th, 2017. Copyright 2017 ARM Ltd.
1434 *
1435 ******************************************************************************/
1436
1437typedef struct acpi_table_sdei
1438{
1439    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1440
1441} ACPI_TABLE_SDEI;
1442
1443
1444/*******************************************************************************
1445 *
1446 * SLIC - Software Licensing Description Table
1447 *
1448 * Conforms to "Microsoft Software Licensing Tables (SLIC and MSDM)",
1449 * November 29, 2011. Copyright 2011 Microsoft
1450 *
1451 ******************************************************************************/
1452
1453/* Basic SLIC table is only the common ACPI header */
1454
1455typedef struct acpi_table_slic
1456{
1457    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1458
1459} ACPI_TABLE_SLIC;
1460
1461
1462/*******************************************************************************
1463 *
1464 * SPCR - Serial Port Console Redirection table
1465 *        Version 2
1466 *
1467 * Conforms to "Serial Port Console Redirection Table",
1468 * Version 1.03, August 10, 2015
1469 *
1470 ******************************************************************************/
1471
1472typedef struct acpi_table_spcr
1473{
1474    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1475    UINT8                   InterfaceType;      /* 0=full 16550, 1=subset of 16550 */
1476    UINT8                   Reserved[3];
1477    ACPI_GENERIC_ADDRESS    SerialPort;
1478    UINT8                   InterruptType;
1479    UINT8                   PcInterrupt;
1480    UINT32                  Interrupt;
1481    UINT8                   BaudRate;
1482    UINT8                   Parity;
1483    UINT8                   StopBits;
1484    UINT8                   FlowControl;
1485    UINT8                   TerminalType;
1486    UINT8                   Reserved1;
1487    UINT16                  PciDeviceId;
1488    UINT16                  PciVendorId;
1489    UINT8                   PciBus;
1490    UINT8                   PciDevice;
1491    UINT8                   PciFunction;
1492    UINT32                  PciFlags;
1493    UINT8                   PciSegment;
1494    UINT32                  Reserved2;
1495
1496} ACPI_TABLE_SPCR;
1497
1498/* Masks for PciFlags field above */
1499
1500#define ACPI_SPCR_DO_NOT_DISABLE    (1)
1501
1502/* Values for Interface Type: See the definition of the DBG2 table */
1503
1504
1505/*******************************************************************************
1506 *
1507 * SPMI - Server Platform Management Interface table
1508 *        Version 5
1509 *
1510 * Conforms to "Intelligent Platform Management Interface Specification
1511 * Second Generation v2.0", Document Revision 1.0, February 12, 2004 with
1512 * June 12, 2009 markup.
1513 *
1514 ******************************************************************************/
1515
1516typedef struct acpi_table_spmi
1517{
1518    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1519    UINT8                   InterfaceType;
1520    UINT8                   Reserved;           /* Must be 1 */
1521    UINT16                  SpecRevision;       /* Version of IPMI */
1522    UINT8                   InterruptType;
1523    UINT8                   GpeNumber;          /* GPE assigned */
1524    UINT8                   Reserved1;
1525    UINT8                   PciDeviceFlag;
1526    UINT32                  Interrupt;
1527    ACPI_GENERIC_ADDRESS    IpmiRegister;
1528    UINT8                   PciSegment;
1529    UINT8                   PciBus;
1530    UINT8                   PciDevice;
1531    UINT8                   PciFunction;
1532    UINT8                   Reserved2;
1533
1534} ACPI_TABLE_SPMI;
1535
1536/* Values for InterfaceType above */
1537
1538enum AcpiSpmiInterfaceTypes
1539{
1540    ACPI_SPMI_NOT_USED              = 0,
1541    ACPI_SPMI_KEYBOARD              = 1,
1542    ACPI_SPMI_SMI                   = 2,
1543    ACPI_SPMI_BLOCK_TRANSFER        = 3,
1544    ACPI_SPMI_SMBUS                 = 4,
1545    ACPI_SPMI_RESERVED              = 5         /* 5 and above are reserved */
1546};
1547
1548
1549/*******************************************************************************
1550 *
1551 * TCPA - Trusted Computing Platform Alliance table
1552 *        Version 2
1553 *
1554 * TCG Hardware Interface Table for TPM 1.2 Clients and Servers
1555 *
1556 * Conforms to "TCG ACPI Specification, Family 1.2 and 2.0",
1557 * Version 1.2, Revision 8
1558 * February 27, 2017
1559 *
1560 * NOTE: There are two versions of the table with the same signature --
1561 * the client version and the server version. The common PlatformClass
1562 * field is used to differentiate the two types of tables.
1563 *
1564 ******************************************************************************/
1565
1566typedef struct acpi_table_tcpa_hdr
1567{
1568    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1569    UINT16                  PlatformClass;
1570
1571} ACPI_TABLE_TCPA_HDR;
1572
1573/*
1574 * Values for PlatformClass above.
1575 * This is how the client and server subtables are differentiated
1576 */
1577#define ACPI_TCPA_CLIENT_TABLE          0
1578#define ACPI_TCPA_SERVER_TABLE          1
1579
1580
1581typedef struct acpi_table_tcpa_client
1582{
1583    UINT32                  MinimumLogLength;   /* Minimum length for the event log area */
1584    UINT64                  LogAddress;         /* Address of the event log area */
1585
1586} ACPI_TABLE_TCPA_CLIENT;
1587
1588typedef struct acpi_table_tcpa_server
1589{
1590    UINT16                  Reserved;
1591    UINT64                  MinimumLogLength;   /* Minimum length for the event log area */
1592    UINT64                  LogAddress;         /* Address of the event log area */
1593    UINT16                  SpecRevision;
1594    UINT8                   DeviceFlags;
1595    UINT8                   InterruptFlags;
1596    UINT8                   GpeNumber;
1597    UINT8                   Reserved2[3];
1598    UINT32                  GlobalInterrupt;
1599    ACPI_GENERIC_ADDRESS    Address;
1600    UINT32                  Reserved3;
1601    ACPI_GENERIC_ADDRESS    ConfigAddress;
1602    UINT8                   Group;
1603    UINT8                   Bus;                /* PCI Bus/Segment/Function numbers */
1604    UINT8                   Device;
1605    UINT8                   Function;
1606
1607} ACPI_TABLE_TCPA_SERVER;
1608
1609/* Values for DeviceFlags above */
1610
1611#define ACPI_TCPA_PCI_DEVICE            (1)
1612#define ACPI_TCPA_BUS_PNP               (1<<1)
1613#define ACPI_TCPA_ADDRESS_VALID         (1<<2)
1614
1615/* Values for InterruptFlags above */
1616
1617#define ACPI_TCPA_INTERRUPT_MODE        (1)
1618#define ACPI_TCPA_INTERRUPT_POLARITY    (1<<1)
1619#define ACPI_TCPA_SCI_VIA_GPE           (1<<2)
1620#define ACPI_TCPA_GLOBAL_INTERRUPT      (1<<3)
1621
1622
1623/*******************************************************************************
1624 *
1625 * TPM2 - Trusted Platform Module (TPM) 2.0 Hardware Interface Table
1626 *        Version 4
1627 *
1628 * TCG Hardware Interface Table for TPM 2.0 Clients and Servers
1629 *
1630 * Conforms to "TCG ACPI Specification, Family 1.2 and 2.0",
1631 * Version 1.2, Revision 8
1632 * February 27, 2017
1633 *
1634 ******************************************************************************/
1635
1636typedef struct acpi_table_tpm2
1637{
1638    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1639    UINT16                  PlatformClass;
1640    UINT16                  Reserved;
1641    UINT64                  ControlAddress;
1642    UINT32                  StartMethod;
1643
1644    /* Platform-specific data follows */
1645
1646} ACPI_TABLE_TPM2;
1647
1648/* Values for StartMethod above */
1649
1650#define ACPI_TPM2_NOT_ALLOWED                       0
1651#define ACPI_TPM2_RESERVED1                         1
1652#define ACPI_TPM2_START_METHOD                      2
1653#define ACPI_TPM2_RESERVED3                         3
1654#define ACPI_TPM2_RESERVED4                         4
1655#define ACPI_TPM2_RESERVED5                         5
1656#define ACPI_TPM2_MEMORY_MAPPED                     6
1657#define ACPI_TPM2_COMMAND_BUFFER                    7
1658#define ACPI_TPM2_COMMAND_BUFFER_WITH_START_METHOD  8
1659#define ACPI_TPM2_RESERVED9                         9
1660#define ACPI_TPM2_RESERVED10                        10
1661#define ACPI_TPM2_COMMAND_BUFFER_WITH_ARM_SMC       11  /* V1.2 Rev 8 */
1662#define ACPI_TPM2_RESERVED                          12
1663
1664
1665/* Optional trailer appears after any StartMethod subtables */
1666
1667typedef struct acpi_tpm2_trailer
1668{
1669    UINT8                   MethodParameters[12];
1670    UINT32                  MinimumLogLength;   /* Minimum length for the event log area */
1671    UINT64                  LogAddress;         /* Address of the event log area */
1672
1673} ACPI_TPM2_TRAILER;
1674
1675
1676/*
1677 * Subtables (StartMethod-specific)
1678 */
1679
1680/* 11: Start Method for ARM SMC (V1.2 Rev 8) */
1681
1682typedef struct acpi_tpm2_arm_smc
1683{
1684    UINT32                  GlobalInterrupt;
1685    UINT8                   InterruptFlags;
1686    UINT8                   OperationFlags;
1687    UINT16                  Reserved;
1688    UINT32                  FunctionId;
1689
1690} ACPI_TPM2_ARM_SMC;
1691
1692/* Values for InterruptFlags above */
1693
1694#define ACPI_TPM2_INTERRUPT_SUPPORT     (1)
1695
1696/* Values for OperationFlags above */
1697
1698#define ACPI_TPM2_IDLE_SUPPORT          (1)
1699
1700
1701/*******************************************************************************
1702 *
1703 * UEFI - UEFI Boot optimization Table
1704 *        Version 1
1705 *
1706 * Conforms to "Unified Extensible Firmware Interface Specification",
1707 * Version 2.3, May 8, 2009
1708 *
1709 ******************************************************************************/
1710
1711typedef struct acpi_table_uefi
1712{
1713    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1714    UINT8                   Identifier[16];     /* UUID identifier */
1715    UINT16                  DataOffset;         /* Offset of remaining data in table */
1716
1717} ACPI_TABLE_UEFI;
1718
1719
1720/*******************************************************************************
1721 *
1722 * VRTC - Virtual Real Time Clock Table
1723 *        Version 1
1724 *
1725 * Conforms to "Simple Firmware Interface Specification",
1726 * Draft 0.8.2, Oct 19, 2010
1727 * NOTE: The ACPI VRTC is equivalent to The SFI MRTC table.
1728 *
1729 ******************************************************************************/
1730
1731typedef struct acpi_table_vrtc
1732{
1733    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1734
1735} ACPI_TABLE_VRTC;
1736
1737/* VRTC entry */
1738
1739typedef struct acpi_vrtc_entry
1740{
1741    ACPI_GENERIC_ADDRESS    PhysicalAddress;
1742    UINT32                  Irq;
1743
1744} ACPI_VRTC_ENTRY;
1745
1746
1747/*******************************************************************************
1748 *
1749 * WAET - Windows ACPI Emulated devices Table
1750 *        Version 1
1751 *
1752 * Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009
1753 *
1754 ******************************************************************************/
1755
1756typedef struct acpi_table_waet
1757{
1758    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1759    UINT32                  Flags;
1760
1761} ACPI_TABLE_WAET;
1762
1763/* Masks for Flags field above */
1764
1765#define ACPI_WAET_RTC_NO_ACK        (1)         /* RTC requires no int acknowledge */
1766#define ACPI_WAET_TIMER_ONE_READ    (1<<1)      /* PM timer requires only one read */
1767
1768
1769/*******************************************************************************
1770 *
1771 * WDAT - Watchdog Action Table
1772 *        Version 1
1773 *
1774 * Conforms to "Hardware Watchdog Timers Design Specification",
1775 * Copyright 2006 Microsoft Corporation.
1776 *
1777 ******************************************************************************/
1778
1779typedef struct acpi_table_wdat
1780{
1781    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1782    UINT32                  HeaderLength;       /* Watchdog Header Length */
1783    UINT16                  PciSegment;         /* PCI Segment number */
1784    UINT8                   PciBus;             /* PCI Bus number */
1785    UINT8                   PciDevice;          /* PCI Device number */
1786    UINT8                   PciFunction;        /* PCI Function number */
1787    UINT8                   Reserved[3];
1788    UINT32                  TimerPeriod;        /* Period of one timer count (msec) */
1789    UINT32                  MaxCount;           /* Maximum counter value supported */
1790    UINT32                  MinCount;           /* Minimum counter value */
1791    UINT8                   Flags;
1792    UINT8                   Reserved2[3];
1793    UINT32                  Entries;            /* Number of watchdog entries that follow */
1794
1795} ACPI_TABLE_WDAT;
1796
1797/* Masks for Flags field above */
1798
1799#define ACPI_WDAT_ENABLED           (1)
1800#define ACPI_WDAT_STOPPED           0x80
1801
1802
1803/* WDAT Instruction Entries (actions) */
1804
1805typedef struct acpi_wdat_entry
1806{
1807    UINT8                   Action;
1808    UINT8                   Instruction;
1809    UINT16                  Reserved;
1810    ACPI_GENERIC_ADDRESS    RegisterRegion;
1811    UINT32                  Value;              /* Value used with Read/Write register */
1812    UINT32                  Mask;               /* Bitmask required for this register instruction */
1813
1814} ACPI_WDAT_ENTRY;
1815
1816/* Values for Action field above */
1817
1818enum AcpiWdatActions
1819{
1820    ACPI_WDAT_RESET                 = 1,
1821    ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4,
1822    ACPI_WDAT_GET_COUNTDOWN         = 5,
1823    ACPI_WDAT_SET_COUNTDOWN         = 6,
1824    ACPI_WDAT_GET_RUNNING_STATE     = 8,
1825    ACPI_WDAT_SET_RUNNING_STATE     = 9,
1826    ACPI_WDAT_GET_STOPPED_STATE     = 10,
1827    ACPI_WDAT_SET_STOPPED_STATE     = 11,
1828    ACPI_WDAT_GET_REBOOT            = 16,
1829    ACPI_WDAT_SET_REBOOT            = 17,
1830    ACPI_WDAT_GET_SHUTDOWN          = 18,
1831    ACPI_WDAT_SET_SHUTDOWN          = 19,
1832    ACPI_WDAT_GET_STATUS            = 32,
1833    ACPI_WDAT_SET_STATUS            = 33,
1834    ACPI_WDAT_ACTION_RESERVED       = 34    /* 34 and greater are reserved */
1835};
1836
1837/* Values for Instruction field above */
1838
1839enum AcpiWdatInstructions
1840{
1841    ACPI_WDAT_READ_VALUE            = 0,
1842    ACPI_WDAT_READ_COUNTDOWN        = 1,
1843    ACPI_WDAT_WRITE_VALUE           = 2,
1844    ACPI_WDAT_WRITE_COUNTDOWN       = 3,
1845    ACPI_WDAT_INSTRUCTION_RESERVED  = 4,    /* 4 and greater are reserved */
1846    ACPI_WDAT_PRESERVE_REGISTER     = 0x80  /* Except for this value */
1847};
1848
1849
1850/*******************************************************************************
1851 *
1852 * WDDT - Watchdog Descriptor Table
1853 *        Version 1
1854 *
1855 * Conforms to "Using the Intel ICH Family Watchdog Timer (WDT)",
1856 * Version 001, September 2002
1857 *
1858 ******************************************************************************/
1859
1860typedef struct acpi_table_wddt
1861{
1862    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1863    UINT16                  SpecVersion;
1864    UINT16                  TableVersion;
1865    UINT16                  PciVendorId;
1866    ACPI_GENERIC_ADDRESS    Address;
1867    UINT16                  MaxCount;           /* Maximum counter value supported */
1868    UINT16                  MinCount;           /* Minimum counter value supported */
1869    UINT16                  Period;
1870    UINT16                  Status;
1871    UINT16                  Capability;
1872
1873} ACPI_TABLE_WDDT;
1874
1875/* Flags for Status field above */
1876
1877#define ACPI_WDDT_AVAILABLE     (1)
1878#define ACPI_WDDT_ACTIVE        (1<<1)
1879#define ACPI_WDDT_TCO_OS_OWNED  (1<<2)
1880#define ACPI_WDDT_USER_RESET    (1<<11)
1881#define ACPI_WDDT_WDT_RESET     (1<<12)
1882#define ACPI_WDDT_POWER_FAIL    (1<<13)
1883#define ACPI_WDDT_UNKNOWN_RESET (1<<14)
1884
1885/* Flags for Capability field above */
1886
1887#define ACPI_WDDT_AUTO_RESET    (1)
1888#define ACPI_WDDT_ALERT_SUPPORT (1<<1)
1889
1890
1891/*******************************************************************************
1892 *
1893 * WDRT - Watchdog Resource Table
1894 *        Version 1
1895 *
1896 * Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003",
1897 * Version 1.01, August 28, 2006
1898 *
1899 ******************************************************************************/
1900
1901typedef struct acpi_table_wdrt
1902{
1903    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1904    ACPI_GENERIC_ADDRESS    ControlRegister;
1905    ACPI_GENERIC_ADDRESS    CountRegister;
1906    UINT16                  PciDeviceId;
1907    UINT16                  PciVendorId;
1908    UINT8                   PciBus;             /* PCI Bus number */
1909    UINT8                   PciDevice;          /* PCI Device number */
1910    UINT8                   PciFunction;        /* PCI Function number */
1911    UINT8                   PciSegment;         /* PCI Segment number */
1912    UINT16                  MaxCount;           /* Maximum counter value supported */
1913    UINT8                   Units;
1914
1915} ACPI_TABLE_WDRT;
1916
1917
1918/*******************************************************************************
1919 *
1920 * WSMT - Windows SMM Security Migrations Table
1921 *        Version 1
1922 *
1923 * Conforms to "Windows SMM Security Migrations Table",
1924 * Version 1.0, April 18, 2016
1925 *
1926 ******************************************************************************/
1927
1928typedef struct acpi_table_wsmt
1929{
1930    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1931    UINT32                  ProtectionFlags;
1932
1933} ACPI_TABLE_WSMT;
1934
1935/* Flags for ProtectionFlags field above */
1936
1937#define ACPI_WSMT_FIXED_COMM_BUFFERS                (1)
1938#define ACPI_WSMT_COMM_BUFFER_NESTED_PTR_PROTECTION (2)
1939#define ACPI_WSMT_SYSTEM_RESOURCE_PROTECTION        (4)
1940
1941
1942/* Reset to default packing */
1943
1944#pragma pack()
1945
1946#endif /* __ACTBL2_H__ */
1947