xref: /freebsd/sys/contrib/dev/acpica/include/actbl2.h (revision ca3cf4fa2cebeef46977ac88ffb50a401158a296)
1d6dd1baeSJung-uk Kim /******************************************************************************
2d6dd1baeSJung-uk Kim  *
3d6dd1baeSJung-uk Kim  * Name: actbl2.h - ACPI Specification Revision 2.0 Tables
4d6dd1baeSJung-uk Kim  *
5d6dd1baeSJung-uk Kim  *****************************************************************************/
6d6dd1baeSJung-uk Kim 
7d6dd1baeSJung-uk Kim /******************************************************************************
8d6dd1baeSJung-uk Kim  *
9d6dd1baeSJung-uk Kim  * 1. Copyright Notice
10d6dd1baeSJung-uk Kim  *
119a179dd8SJung-uk Kim  * Some or all of this work - Copyright (c) 1999 - 2010, Intel Corp.
12d6dd1baeSJung-uk Kim  * All rights reserved.
13d6dd1baeSJung-uk Kim  *
14d6dd1baeSJung-uk Kim  * 2. License
15d6dd1baeSJung-uk Kim  *
16d6dd1baeSJung-uk Kim  * 2.1. This is your license from Intel Corp. under its intellectual property
17d6dd1baeSJung-uk Kim  * rights.  You may have additional license terms from the party that provided
18d6dd1baeSJung-uk Kim  * you this software, covering your right to use that party's intellectual
19d6dd1baeSJung-uk Kim  * property rights.
20d6dd1baeSJung-uk Kim  *
21d6dd1baeSJung-uk Kim  * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
22d6dd1baeSJung-uk Kim  * copy of the source code appearing in this file ("Covered Code") an
23d6dd1baeSJung-uk Kim  * irrevocable, perpetual, worldwide license under Intel's copyrights in the
24d6dd1baeSJung-uk Kim  * base code distributed originally by Intel ("Original Intel Code") to copy,
25d6dd1baeSJung-uk Kim  * make derivatives, distribute, use and display any portion of the Covered
26d6dd1baeSJung-uk Kim  * Code in any form, with the right to sublicense such rights; and
27d6dd1baeSJung-uk Kim  *
28d6dd1baeSJung-uk Kim  * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
29d6dd1baeSJung-uk Kim  * license (with the right to sublicense), under only those claims of Intel
30d6dd1baeSJung-uk Kim  * patents that are infringed by the Original Intel Code, to make, use, sell,
31d6dd1baeSJung-uk Kim  * offer to sell, and import the Covered Code and derivative works thereof
32d6dd1baeSJung-uk Kim  * solely to the minimum extent necessary to exercise the above copyright
33d6dd1baeSJung-uk Kim  * license, and in no event shall the patent license extend to any additions
34d6dd1baeSJung-uk Kim  * to or modifications of the Original Intel Code.  No other license or right
35d6dd1baeSJung-uk Kim  * is granted directly or by implication, estoppel or otherwise;
36d6dd1baeSJung-uk Kim  *
37d6dd1baeSJung-uk Kim  * The above copyright and patent license is granted only if the following
38d6dd1baeSJung-uk Kim  * conditions are met:
39d6dd1baeSJung-uk Kim  *
40d6dd1baeSJung-uk Kim  * 3. Conditions
41d6dd1baeSJung-uk Kim  *
42d6dd1baeSJung-uk Kim  * 3.1. Redistribution of Source with Rights to Further Distribute Source.
43d6dd1baeSJung-uk Kim  * Redistribution of source code of any substantial portion of the Covered
44d6dd1baeSJung-uk Kim  * Code or modification with rights to further distribute source must include
45d6dd1baeSJung-uk Kim  * the above Copyright Notice, the above License, this list of Conditions,
46d6dd1baeSJung-uk Kim  * and the following Disclaimer and Export Compliance provision.  In addition,
47d6dd1baeSJung-uk Kim  * Licensee must cause all Covered Code to which Licensee contributes to
48d6dd1baeSJung-uk Kim  * contain a file documenting the changes Licensee made to create that Covered
49d6dd1baeSJung-uk Kim  * Code and the date of any change.  Licensee must include in that file the
50d6dd1baeSJung-uk Kim  * documentation of any changes made by any predecessor Licensee.  Licensee
51d6dd1baeSJung-uk Kim  * must include a prominent statement that the modification is derived,
52d6dd1baeSJung-uk Kim  * directly or indirectly, from Original Intel Code.
53d6dd1baeSJung-uk Kim  *
54d6dd1baeSJung-uk Kim  * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
55d6dd1baeSJung-uk Kim  * Redistribution of source code of any substantial portion of the Covered
56d6dd1baeSJung-uk Kim  * Code or modification without rights to further distribute source must
57d6dd1baeSJung-uk Kim  * include the following Disclaimer and Export Compliance provision in the
58d6dd1baeSJung-uk Kim  * documentation and/or other materials provided with distribution.  In
59d6dd1baeSJung-uk Kim  * addition, Licensee may not authorize further sublicense of source of any
60d6dd1baeSJung-uk Kim  * portion of the Covered Code, and must include terms to the effect that the
61d6dd1baeSJung-uk Kim  * license from Licensee to its licensee is limited to the intellectual
62d6dd1baeSJung-uk Kim  * property embodied in the software Licensee provides to its licensee, and
63d6dd1baeSJung-uk Kim  * not to intellectual property embodied in modifications its licensee may
64d6dd1baeSJung-uk Kim  * make.
65d6dd1baeSJung-uk Kim  *
66d6dd1baeSJung-uk Kim  * 3.3. Redistribution of Executable. Redistribution in executable form of any
67d6dd1baeSJung-uk Kim  * substantial portion of the Covered Code or modification must reproduce the
68d6dd1baeSJung-uk Kim  * above Copyright Notice, and the following Disclaimer and Export Compliance
69d6dd1baeSJung-uk Kim  * provision in the documentation and/or other materials provided with the
70d6dd1baeSJung-uk Kim  * distribution.
71d6dd1baeSJung-uk Kim  *
72d6dd1baeSJung-uk Kim  * 3.4. Intel retains all right, title, and interest in and to the Original
73d6dd1baeSJung-uk Kim  * Intel Code.
74d6dd1baeSJung-uk Kim  *
75d6dd1baeSJung-uk Kim  * 3.5. Neither the name Intel nor any other trademark owned or controlled by
76d6dd1baeSJung-uk Kim  * Intel shall be used in advertising or otherwise to promote the sale, use or
77d6dd1baeSJung-uk Kim  * other dealings in products derived from or relating to the Covered Code
78d6dd1baeSJung-uk Kim  * without prior written authorization from Intel.
79d6dd1baeSJung-uk Kim  *
80d6dd1baeSJung-uk Kim  * 4. Disclaimer and Export Compliance
81d6dd1baeSJung-uk Kim  *
82d6dd1baeSJung-uk Kim  * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
83d6dd1baeSJung-uk Kim  * HERE.  ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
84d6dd1baeSJung-uk Kim  * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT,  ASSISTANCE,
85d6dd1baeSJung-uk Kim  * INSTALLATION, TRAINING OR OTHER SERVICES.  INTEL WILL NOT PROVIDE ANY
86d6dd1baeSJung-uk Kim  * UPDATES, ENHANCEMENTS OR EXTENSIONS.  INTEL SPECIFICALLY DISCLAIMS ANY
87d6dd1baeSJung-uk Kim  * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
88d6dd1baeSJung-uk Kim  * PARTICULAR PURPOSE.
89d6dd1baeSJung-uk Kim  *
90d6dd1baeSJung-uk Kim  * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
91d6dd1baeSJung-uk Kim  * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
92d6dd1baeSJung-uk Kim  * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
93d6dd1baeSJung-uk Kim  * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
94d6dd1baeSJung-uk Kim  * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
95d6dd1baeSJung-uk Kim  * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.  THESE LIMITATIONS
96d6dd1baeSJung-uk Kim  * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
97d6dd1baeSJung-uk Kim  * LIMITED REMEDY.
98d6dd1baeSJung-uk Kim  *
99d6dd1baeSJung-uk Kim  * 4.3. Licensee shall not export, either directly or indirectly, any of this
100d6dd1baeSJung-uk Kim  * software or system incorporating such software without first obtaining any
101d6dd1baeSJung-uk Kim  * required license or other approval from the U. S. Department of Commerce or
102d6dd1baeSJung-uk Kim  * any other agency or department of the United States Government.  In the
103d6dd1baeSJung-uk Kim  * event Licensee exports any such software from the United States or
104d6dd1baeSJung-uk Kim  * re-exports any such software from a foreign destination, Licensee shall
105d6dd1baeSJung-uk Kim  * ensure that the distribution and export/re-export of the software is in
106d6dd1baeSJung-uk Kim  * compliance with all laws, regulations, orders, or other restrictions of the
107d6dd1baeSJung-uk Kim  * U.S. Export Administration Regulations. Licensee agrees that neither it nor
108d6dd1baeSJung-uk Kim  * any of its subsidiaries will export/re-export any technical data, process,
109d6dd1baeSJung-uk Kim  * software, or service, directly or indirectly, to any country for which the
110d6dd1baeSJung-uk Kim  * United States government or any agency thereof requires an export license,
111d6dd1baeSJung-uk Kim  * other governmental approval, or letter of assurance, without first obtaining
112d6dd1baeSJung-uk Kim  * such license, approval or letter.
113d6dd1baeSJung-uk Kim  *
114d6dd1baeSJung-uk Kim  *****************************************************************************/
115d6dd1baeSJung-uk Kim 
116d6dd1baeSJung-uk Kim #ifndef __ACTBL2_H__
117d6dd1baeSJung-uk Kim #define __ACTBL2_H__
118d6dd1baeSJung-uk Kim 
119d6dd1baeSJung-uk Kim 
120d6dd1baeSJung-uk Kim /*******************************************************************************
121d6dd1baeSJung-uk Kim  *
122d6dd1baeSJung-uk Kim  * Additional ACPI Tables (2)
123d6dd1baeSJung-uk Kim  *
124d6dd1baeSJung-uk Kim  * These tables are not consumed directly by the ACPICA subsystem, but are
125d6dd1baeSJung-uk Kim  * included here to support device drivers and the AML disassembler.
126d6dd1baeSJung-uk Kim  *
127d6dd1baeSJung-uk Kim  * The tables in this file are defined by third-party specifications, and are
128d6dd1baeSJung-uk Kim  * not defined directly by the ACPI specification itself.
129d6dd1baeSJung-uk Kim  *
130d6dd1baeSJung-uk Kim  ******************************************************************************/
131d6dd1baeSJung-uk Kim 
132d6dd1baeSJung-uk Kim 
133d6dd1baeSJung-uk Kim /*
134d6dd1baeSJung-uk Kim  * Values for description table header signatures for tables defined in this
135d6dd1baeSJung-uk Kim  * file. Useful because they make it more difficult to inadvertently type in
136d6dd1baeSJung-uk Kim  * the wrong signature.
137d6dd1baeSJung-uk Kim  */
138d6dd1baeSJung-uk Kim #define ACPI_SIG_ASF            "ASF!"      /* Alert Standard Format table */
139d6dd1baeSJung-uk Kim #define ACPI_SIG_BOOT           "BOOT"      /* Simple Boot Flag Table */
140d6dd1baeSJung-uk Kim #define ACPI_SIG_DBGP           "DBGP"      /* Debug Port table */
141d6dd1baeSJung-uk Kim #define ACPI_SIG_DMAR           "DMAR"      /* DMA Remapping table */
142d6dd1baeSJung-uk Kim #define ACPI_SIG_HPET           "HPET"      /* High Precision Event Timer table */
143d6dd1baeSJung-uk Kim #define ACPI_SIG_IBFT           "IBFT"      /* iSCSI Boot Firmware Table */
144d6dd1baeSJung-uk Kim #define ACPI_SIG_IVRS           "IVRS"      /* I/O Virtualization Reporting Structure */
145d6dd1baeSJung-uk Kim #define ACPI_SIG_MCFG           "MCFG"      /* PCI Memory Mapped Configuration table */
146ca3cf4faSJung-uk Kim #define ACPI_SIG_MCHI           "MCHI"      /* Management Controller Host Interface table */
147d6dd1baeSJung-uk Kim #define ACPI_SIG_SLIC           "SLIC"      /* Software Licensing Description Table */
148d6dd1baeSJung-uk Kim #define ACPI_SIG_SPCR           "SPCR"      /* Serial Port Console Redirection table */
149d6dd1baeSJung-uk Kim #define ACPI_SIG_SPMI           "SPMI"      /* Server Platform Management Interface table */
150d6dd1baeSJung-uk Kim #define ACPI_SIG_TCPA           "TCPA"      /* Trusted Computing Platform Alliance table */
151d6dd1baeSJung-uk Kim #define ACPI_SIG_UEFI           "UEFI"      /* Uefi Boot Optimization Table */
152d6dd1baeSJung-uk Kim #define ACPI_SIG_WAET           "WAET"      /* Windows ACPI Emulated devices Table */
153d6dd1baeSJung-uk Kim #define ACPI_SIG_WDAT           "WDAT"      /* Watchdog Action Table */
154d6dd1baeSJung-uk Kim #define ACPI_SIG_WDRT           "WDRT"      /* Watchdog Resource Table */
155d6dd1baeSJung-uk Kim 
156d6dd1baeSJung-uk Kim 
157d6dd1baeSJung-uk Kim /*
158d6dd1baeSJung-uk Kim  * All tables must be byte-packed to match the ACPI specification, since
159d6dd1baeSJung-uk Kim  * the tables are provided by the system BIOS.
160d6dd1baeSJung-uk Kim  */
161d6dd1baeSJung-uk Kim #pragma pack(1)
162d6dd1baeSJung-uk Kim 
163d6dd1baeSJung-uk Kim /*
164d6dd1baeSJung-uk Kim  * Note about bitfields: The UINT8 type is used for bitfields in ACPI tables.
165d6dd1baeSJung-uk Kim  * This is the only type that is even remotely portable. Anything else is not
166d6dd1baeSJung-uk Kim  * portable, so do not use any other bitfield types.
167d6dd1baeSJung-uk Kim  */
168d6dd1baeSJung-uk Kim 
169d6dd1baeSJung-uk Kim 
170d6dd1baeSJung-uk Kim /*******************************************************************************
171d6dd1baeSJung-uk Kim  *
172d6dd1baeSJung-uk Kim  * ASF - Alert Standard Format table (Signature "ASF!")
173d6dd1baeSJung-uk Kim  *       Revision 0x10
174d6dd1baeSJung-uk Kim  *
175d6dd1baeSJung-uk Kim  * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003
176d6dd1baeSJung-uk Kim  *
177d6dd1baeSJung-uk Kim  ******************************************************************************/
178d6dd1baeSJung-uk Kim 
179d6dd1baeSJung-uk Kim typedef struct acpi_table_asf
180d6dd1baeSJung-uk Kim {
181d6dd1baeSJung-uk Kim     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
182d6dd1baeSJung-uk Kim 
183d6dd1baeSJung-uk Kim } ACPI_TABLE_ASF;
184d6dd1baeSJung-uk Kim 
185d6dd1baeSJung-uk Kim 
186d6dd1baeSJung-uk Kim /* ASF subtable header */
187d6dd1baeSJung-uk Kim 
188d6dd1baeSJung-uk Kim typedef struct acpi_asf_header
189d6dd1baeSJung-uk Kim {
190d6dd1baeSJung-uk Kim     UINT8                   Type;
191d6dd1baeSJung-uk Kim     UINT8                   Reserved;
192d6dd1baeSJung-uk Kim     UINT16                  Length;
193d6dd1baeSJung-uk Kim 
194d6dd1baeSJung-uk Kim } ACPI_ASF_HEADER;
195d6dd1baeSJung-uk Kim 
196d6dd1baeSJung-uk Kim 
197d6dd1baeSJung-uk Kim /* Values for Type field above */
198d6dd1baeSJung-uk Kim 
199d6dd1baeSJung-uk Kim enum AcpiAsfType
200d6dd1baeSJung-uk Kim {
201d6dd1baeSJung-uk Kim     ACPI_ASF_TYPE_INFO          = 0,
202d6dd1baeSJung-uk Kim     ACPI_ASF_TYPE_ALERT         = 1,
203d6dd1baeSJung-uk Kim     ACPI_ASF_TYPE_CONTROL       = 2,
204d6dd1baeSJung-uk Kim     ACPI_ASF_TYPE_BOOT          = 3,
205d6dd1baeSJung-uk Kim     ACPI_ASF_TYPE_ADDRESS       = 4,
206d6dd1baeSJung-uk Kim     ACPI_ASF_TYPE_RESERVED      = 5
207d6dd1baeSJung-uk Kim };
208d6dd1baeSJung-uk Kim 
209d6dd1baeSJung-uk Kim /*
210d6dd1baeSJung-uk Kim  * ASF subtables
211d6dd1baeSJung-uk Kim  */
212d6dd1baeSJung-uk Kim 
213d6dd1baeSJung-uk Kim /* 0: ASF Information */
214d6dd1baeSJung-uk Kim 
215d6dd1baeSJung-uk Kim typedef struct acpi_asf_info
216d6dd1baeSJung-uk Kim {
217d6dd1baeSJung-uk Kim     ACPI_ASF_HEADER         Header;
218d6dd1baeSJung-uk Kim     UINT8                   MinResetValue;
219d6dd1baeSJung-uk Kim     UINT8                   MinPollInterval;
220d6dd1baeSJung-uk Kim     UINT16                  SystemId;
221d6dd1baeSJung-uk Kim     UINT32                  MfgId;
222d6dd1baeSJung-uk Kim     UINT8                   Flags;
223d6dd1baeSJung-uk Kim     UINT8                   Reserved2[3];
224d6dd1baeSJung-uk Kim 
225d6dd1baeSJung-uk Kim } ACPI_ASF_INFO;
226d6dd1baeSJung-uk Kim 
227d6dd1baeSJung-uk Kim /* Masks for Flags field above */
228d6dd1baeSJung-uk Kim 
229d6dd1baeSJung-uk Kim #define ACPI_ASF_SMBUS_PROTOCOLS    (1)
230d6dd1baeSJung-uk Kim 
231d6dd1baeSJung-uk Kim 
232d6dd1baeSJung-uk Kim /* 1: ASF Alerts */
233d6dd1baeSJung-uk Kim 
234d6dd1baeSJung-uk Kim typedef struct acpi_asf_alert
235d6dd1baeSJung-uk Kim {
236d6dd1baeSJung-uk Kim     ACPI_ASF_HEADER         Header;
237d6dd1baeSJung-uk Kim     UINT8                   AssertMask;
238d6dd1baeSJung-uk Kim     UINT8                   DeassertMask;
239d6dd1baeSJung-uk Kim     UINT8                   Alerts;
240d6dd1baeSJung-uk Kim     UINT8                   DataLength;
241d6dd1baeSJung-uk Kim 
242d6dd1baeSJung-uk Kim } ACPI_ASF_ALERT;
243d6dd1baeSJung-uk Kim 
244d6dd1baeSJung-uk Kim typedef struct acpi_asf_alert_data
245d6dd1baeSJung-uk Kim {
246d6dd1baeSJung-uk Kim     UINT8                   Address;
247d6dd1baeSJung-uk Kim     UINT8                   Command;
248d6dd1baeSJung-uk Kim     UINT8                   Mask;
249d6dd1baeSJung-uk Kim     UINT8                   Value;
250d6dd1baeSJung-uk Kim     UINT8                   SensorType;
251d6dd1baeSJung-uk Kim     UINT8                   Type;
252d6dd1baeSJung-uk Kim     UINT8                   Offset;
253d6dd1baeSJung-uk Kim     UINT8                   SourceType;
254d6dd1baeSJung-uk Kim     UINT8                   Severity;
255d6dd1baeSJung-uk Kim     UINT8                   SensorNumber;
256d6dd1baeSJung-uk Kim     UINT8                   Entity;
257d6dd1baeSJung-uk Kim     UINT8                   Instance;
258d6dd1baeSJung-uk Kim 
259d6dd1baeSJung-uk Kim } ACPI_ASF_ALERT_DATA;
260d6dd1baeSJung-uk Kim 
261d6dd1baeSJung-uk Kim 
262d6dd1baeSJung-uk Kim /* 2: ASF Remote Control */
263d6dd1baeSJung-uk Kim 
264d6dd1baeSJung-uk Kim typedef struct acpi_asf_remote
265d6dd1baeSJung-uk Kim {
266d6dd1baeSJung-uk Kim     ACPI_ASF_HEADER         Header;
267d6dd1baeSJung-uk Kim     UINT8                   Controls;
268d6dd1baeSJung-uk Kim     UINT8                   DataLength;
269d6dd1baeSJung-uk Kim     UINT16                  Reserved2;
270d6dd1baeSJung-uk Kim 
271d6dd1baeSJung-uk Kim } ACPI_ASF_REMOTE;
272d6dd1baeSJung-uk Kim 
273d6dd1baeSJung-uk Kim typedef struct acpi_asf_control_data
274d6dd1baeSJung-uk Kim {
275d6dd1baeSJung-uk Kim     UINT8                   Function;
276d6dd1baeSJung-uk Kim     UINT8                   Address;
277d6dd1baeSJung-uk Kim     UINT8                   Command;
278d6dd1baeSJung-uk Kim     UINT8                   Value;
279d6dd1baeSJung-uk Kim 
280d6dd1baeSJung-uk Kim } ACPI_ASF_CONTROL_DATA;
281d6dd1baeSJung-uk Kim 
282d6dd1baeSJung-uk Kim 
283d6dd1baeSJung-uk Kim /* 3: ASF RMCP Boot Options */
284d6dd1baeSJung-uk Kim 
285d6dd1baeSJung-uk Kim typedef struct acpi_asf_rmcp
286d6dd1baeSJung-uk Kim {
287d6dd1baeSJung-uk Kim     ACPI_ASF_HEADER         Header;
288d6dd1baeSJung-uk Kim     UINT8                   Capabilities[7];
289d6dd1baeSJung-uk Kim     UINT8                   CompletionCode;
290d6dd1baeSJung-uk Kim     UINT32                  EnterpriseId;
291d6dd1baeSJung-uk Kim     UINT8                   Command;
292d6dd1baeSJung-uk Kim     UINT16                  Parameter;
293d6dd1baeSJung-uk Kim     UINT16                  BootOptions;
294d6dd1baeSJung-uk Kim     UINT16                  OemParameters;
295d6dd1baeSJung-uk Kim 
296d6dd1baeSJung-uk Kim } ACPI_ASF_RMCP;
297d6dd1baeSJung-uk Kim 
298d6dd1baeSJung-uk Kim 
299d6dd1baeSJung-uk Kim /* 4: ASF Address */
300d6dd1baeSJung-uk Kim 
301d6dd1baeSJung-uk Kim typedef struct acpi_asf_address
302d6dd1baeSJung-uk Kim {
303d6dd1baeSJung-uk Kim     ACPI_ASF_HEADER         Header;
304d6dd1baeSJung-uk Kim     UINT8                   EpromAddress;
305d6dd1baeSJung-uk Kim     UINT8                   Devices;
306d6dd1baeSJung-uk Kim 
307d6dd1baeSJung-uk Kim } ACPI_ASF_ADDRESS;
308d6dd1baeSJung-uk Kim 
309d6dd1baeSJung-uk Kim 
310d6dd1baeSJung-uk Kim /*******************************************************************************
311d6dd1baeSJung-uk Kim  *
312d6dd1baeSJung-uk Kim  * BOOT - Simple Boot Flag Table
313d6dd1baeSJung-uk Kim  *        Version 1
314d6dd1baeSJung-uk Kim  *
315d6dd1baeSJung-uk Kim  * Conforms to the "Simple Boot Flag Specification", Version 2.1
316d6dd1baeSJung-uk Kim  *
317d6dd1baeSJung-uk Kim  ******************************************************************************/
318d6dd1baeSJung-uk Kim 
319d6dd1baeSJung-uk Kim typedef struct acpi_table_boot
320d6dd1baeSJung-uk Kim {
321d6dd1baeSJung-uk Kim     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
322d6dd1baeSJung-uk Kim     UINT8                   CmosIndex;          /* Index in CMOS RAM for the boot register */
323d6dd1baeSJung-uk Kim     UINT8                   Reserved[3];
324d6dd1baeSJung-uk Kim 
325d6dd1baeSJung-uk Kim } ACPI_TABLE_BOOT;
326d6dd1baeSJung-uk Kim 
327d6dd1baeSJung-uk Kim 
328d6dd1baeSJung-uk Kim /*******************************************************************************
329d6dd1baeSJung-uk Kim  *
330d6dd1baeSJung-uk Kim  * DBGP - Debug Port table
331d6dd1baeSJung-uk Kim  *        Version 1
332d6dd1baeSJung-uk Kim  *
333d6dd1baeSJung-uk Kim  * Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000
334d6dd1baeSJung-uk Kim  *
335d6dd1baeSJung-uk Kim  ******************************************************************************/
336d6dd1baeSJung-uk Kim 
337d6dd1baeSJung-uk Kim typedef struct acpi_table_dbgp
338d6dd1baeSJung-uk Kim {
339d6dd1baeSJung-uk Kim     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
340d6dd1baeSJung-uk Kim     UINT8                   Type;               /* 0=full 16550, 1=subset of 16550 */
341d6dd1baeSJung-uk Kim     UINT8                   Reserved[3];
342d6dd1baeSJung-uk Kim     ACPI_GENERIC_ADDRESS    DebugPort;
343d6dd1baeSJung-uk Kim 
344d6dd1baeSJung-uk Kim } ACPI_TABLE_DBGP;
345d6dd1baeSJung-uk Kim 
346d6dd1baeSJung-uk Kim 
347d6dd1baeSJung-uk Kim /*******************************************************************************
348d6dd1baeSJung-uk Kim  *
349d6dd1baeSJung-uk Kim  * DMAR - DMA Remapping table
350d6dd1baeSJung-uk Kim  *        Version 1
351d6dd1baeSJung-uk Kim  *
352d6dd1baeSJung-uk Kim  * Conforms to "Intel Virtualization Technology for Directed I/O",
353d6dd1baeSJung-uk Kim  * Version 1.2, Sept. 2008
354d6dd1baeSJung-uk Kim  *
355d6dd1baeSJung-uk Kim  ******************************************************************************/
356d6dd1baeSJung-uk Kim 
357d6dd1baeSJung-uk Kim typedef struct acpi_table_dmar
358d6dd1baeSJung-uk Kim {
359d6dd1baeSJung-uk Kim     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
360d6dd1baeSJung-uk Kim     UINT8                   Width;              /* Host Address Width */
361d6dd1baeSJung-uk Kim     UINT8                   Flags;
362d6dd1baeSJung-uk Kim     UINT8                   Reserved[10];
363d6dd1baeSJung-uk Kim 
364d6dd1baeSJung-uk Kim } ACPI_TABLE_DMAR;
365d6dd1baeSJung-uk Kim 
366d6dd1baeSJung-uk Kim /* Masks for Flags field above */
367d6dd1baeSJung-uk Kim 
368d6dd1baeSJung-uk Kim #define ACPI_DMAR_INTR_REMAP        (1)
369d6dd1baeSJung-uk Kim 
370d6dd1baeSJung-uk Kim 
371d6dd1baeSJung-uk Kim /* DMAR subtable header */
372d6dd1baeSJung-uk Kim 
373d6dd1baeSJung-uk Kim typedef struct acpi_dmar_header
374d6dd1baeSJung-uk Kim {
375d6dd1baeSJung-uk Kim     UINT16                  Type;
376d6dd1baeSJung-uk Kim     UINT16                  Length;
377d6dd1baeSJung-uk Kim 
378d6dd1baeSJung-uk Kim } ACPI_DMAR_HEADER;
379d6dd1baeSJung-uk Kim 
380d6dd1baeSJung-uk Kim /* Values for subtable type in ACPI_DMAR_HEADER */
381d6dd1baeSJung-uk Kim 
382d6dd1baeSJung-uk Kim enum AcpiDmarType
383d6dd1baeSJung-uk Kim {
384d6dd1baeSJung-uk Kim     ACPI_DMAR_TYPE_HARDWARE_UNIT        = 0,
385d6dd1baeSJung-uk Kim     ACPI_DMAR_TYPE_RESERVED_MEMORY      = 1,
386d6dd1baeSJung-uk Kim     ACPI_DMAR_TYPE_ATSR                 = 2,
387d6dd1baeSJung-uk Kim     ACPI_DMAR_HARDWARE_AFFINITY         = 3,
388d6dd1baeSJung-uk Kim     ACPI_DMAR_TYPE_RESERVED             = 4     /* 4 and greater are reserved */
389d6dd1baeSJung-uk Kim };
390d6dd1baeSJung-uk Kim 
391d6dd1baeSJung-uk Kim 
392d6dd1baeSJung-uk Kim /* DMAR Device Scope structure */
393d6dd1baeSJung-uk Kim 
394d6dd1baeSJung-uk Kim typedef struct acpi_dmar_device_scope
395d6dd1baeSJung-uk Kim {
396d6dd1baeSJung-uk Kim     UINT8                   EntryType;
397d6dd1baeSJung-uk Kim     UINT8                   Length;
398d6dd1baeSJung-uk Kim     UINT16                  Reserved;
399d6dd1baeSJung-uk Kim     UINT8                   EnumerationId;
400d6dd1baeSJung-uk Kim     UINT8                   Bus;
401d6dd1baeSJung-uk Kim 
402d6dd1baeSJung-uk Kim } ACPI_DMAR_DEVICE_SCOPE;
403d6dd1baeSJung-uk Kim 
404d6dd1baeSJung-uk Kim /* Values for EntryType in ACPI_DMAR_DEVICE_SCOPE */
405d6dd1baeSJung-uk Kim 
406d6dd1baeSJung-uk Kim enum AcpiDmarScopeType
407d6dd1baeSJung-uk Kim {
408d6dd1baeSJung-uk Kim     ACPI_DMAR_SCOPE_TYPE_NOT_USED       = 0,
409d6dd1baeSJung-uk Kim     ACPI_DMAR_SCOPE_TYPE_ENDPOINT       = 1,
410d6dd1baeSJung-uk Kim     ACPI_DMAR_SCOPE_TYPE_BRIDGE         = 2,
411d6dd1baeSJung-uk Kim     ACPI_DMAR_SCOPE_TYPE_IOAPIC         = 3,
412d6dd1baeSJung-uk Kim     ACPI_DMAR_SCOPE_TYPE_HPET           = 4,
413d6dd1baeSJung-uk Kim     ACPI_DMAR_SCOPE_TYPE_RESERVED       = 5     /* 5 and greater are reserved */
414d6dd1baeSJung-uk Kim };
415d6dd1baeSJung-uk Kim 
416d6dd1baeSJung-uk Kim typedef struct acpi_dmar_pci_path
417d6dd1baeSJung-uk Kim {
418d6dd1baeSJung-uk Kim     UINT8                   Device;
419d6dd1baeSJung-uk Kim     UINT8                   Function;
420d6dd1baeSJung-uk Kim 
421d6dd1baeSJung-uk Kim } ACPI_DMAR_PCI_PATH;
422d6dd1baeSJung-uk Kim 
423d6dd1baeSJung-uk Kim 
424d6dd1baeSJung-uk Kim /*
425d6dd1baeSJung-uk Kim  * DMAR Sub-tables, correspond to Type in ACPI_DMAR_HEADER
426d6dd1baeSJung-uk Kim  */
427d6dd1baeSJung-uk Kim 
428d6dd1baeSJung-uk Kim /* 0: Hardware Unit Definition */
429d6dd1baeSJung-uk Kim 
430d6dd1baeSJung-uk Kim typedef struct acpi_dmar_hardware_unit
431d6dd1baeSJung-uk Kim {
432d6dd1baeSJung-uk Kim     ACPI_DMAR_HEADER        Header;
433d6dd1baeSJung-uk Kim     UINT8                   Flags;
434d6dd1baeSJung-uk Kim     UINT8                   Reserved;
435d6dd1baeSJung-uk Kim     UINT16                  Segment;
436d6dd1baeSJung-uk Kim     UINT64                  Address;            /* Register Base Address */
437d6dd1baeSJung-uk Kim 
438d6dd1baeSJung-uk Kim } ACPI_DMAR_HARDWARE_UNIT;
439d6dd1baeSJung-uk Kim 
440d6dd1baeSJung-uk Kim /* Masks for Flags field above */
441d6dd1baeSJung-uk Kim 
442d6dd1baeSJung-uk Kim #define ACPI_DMAR_INCLUDE_ALL       (1)
443d6dd1baeSJung-uk Kim 
444d6dd1baeSJung-uk Kim 
445d6dd1baeSJung-uk Kim /* 1: Reserved Memory Defininition */
446d6dd1baeSJung-uk Kim 
447d6dd1baeSJung-uk Kim typedef struct acpi_dmar_reserved_memory
448d6dd1baeSJung-uk Kim {
449d6dd1baeSJung-uk Kim     ACPI_DMAR_HEADER        Header;
450d6dd1baeSJung-uk Kim     UINT16                  Reserved;
451d6dd1baeSJung-uk Kim     UINT16                  Segment;
452d6dd1baeSJung-uk Kim     UINT64                  BaseAddress;        /* 4K aligned base address */
453d6dd1baeSJung-uk Kim     UINT64                  EndAddress;         /* 4K aligned limit address */
454d6dd1baeSJung-uk Kim 
455d6dd1baeSJung-uk Kim } ACPI_DMAR_RESERVED_MEMORY;
456d6dd1baeSJung-uk Kim 
457d6dd1baeSJung-uk Kim /* Masks for Flags field above */
458d6dd1baeSJung-uk Kim 
459d6dd1baeSJung-uk Kim #define ACPI_DMAR_ALLOW_ALL         (1)
460d6dd1baeSJung-uk Kim 
461d6dd1baeSJung-uk Kim 
462d6dd1baeSJung-uk Kim /* 2: Root Port ATS Capability Reporting Structure */
463d6dd1baeSJung-uk Kim 
464d6dd1baeSJung-uk Kim typedef struct acpi_dmar_atsr
465d6dd1baeSJung-uk Kim {
466d6dd1baeSJung-uk Kim     ACPI_DMAR_HEADER        Header;
467d6dd1baeSJung-uk Kim     UINT8                   Flags;
468d6dd1baeSJung-uk Kim     UINT8                   Reserved;
469d6dd1baeSJung-uk Kim     UINT16                  Segment;
470d6dd1baeSJung-uk Kim 
471d6dd1baeSJung-uk Kim } ACPI_DMAR_ATSR;
472d6dd1baeSJung-uk Kim 
473d6dd1baeSJung-uk Kim /* Masks for Flags field above */
474d6dd1baeSJung-uk Kim 
475d6dd1baeSJung-uk Kim #define ACPI_DMAR_ALL_PORTS         (1)
476d6dd1baeSJung-uk Kim 
477d6dd1baeSJung-uk Kim 
478d6dd1baeSJung-uk Kim /* 3: Remapping Hardware Static Affinity Structure */
479d6dd1baeSJung-uk Kim 
480d6dd1baeSJung-uk Kim typedef struct acpi_dmar_rhsa
481d6dd1baeSJung-uk Kim {
482d6dd1baeSJung-uk Kim     ACPI_DMAR_HEADER        Header;
483d6dd1baeSJung-uk Kim     UINT32                  Reserved;
484d6dd1baeSJung-uk Kim     UINT64                  BaseAddress;
485d6dd1baeSJung-uk Kim     UINT32                  ProximityDomain;
486d6dd1baeSJung-uk Kim 
487d6dd1baeSJung-uk Kim } ACPI_DMAR_RHSA;
488d6dd1baeSJung-uk Kim 
489d6dd1baeSJung-uk Kim 
490d6dd1baeSJung-uk Kim /*******************************************************************************
491d6dd1baeSJung-uk Kim  *
492d6dd1baeSJung-uk Kim  * HPET - High Precision Event Timer table
493d6dd1baeSJung-uk Kim  *        Version 1
494d6dd1baeSJung-uk Kim  *
495d6dd1baeSJung-uk Kim  * Conforms to "IA-PC HPET (High Precision Event Timers) Specification",
496d6dd1baeSJung-uk Kim  * Version 1.0a, October 2004
497d6dd1baeSJung-uk Kim  *
498d6dd1baeSJung-uk Kim  ******************************************************************************/
499d6dd1baeSJung-uk Kim 
500d6dd1baeSJung-uk Kim typedef struct acpi_table_hpet
501d6dd1baeSJung-uk Kim {
502d6dd1baeSJung-uk Kim     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
503d6dd1baeSJung-uk Kim     UINT32                  Id;                 /* Hardware ID of event timer block */
504d6dd1baeSJung-uk Kim     ACPI_GENERIC_ADDRESS    Address;            /* Address of event timer block */
505d6dd1baeSJung-uk Kim     UINT8                   Sequence;           /* HPET sequence number */
506d6dd1baeSJung-uk Kim     UINT16                  MinimumTick;        /* Main counter min tick, periodic mode */
507d6dd1baeSJung-uk Kim     UINT8                   Flags;
508d6dd1baeSJung-uk Kim 
509d6dd1baeSJung-uk Kim } ACPI_TABLE_HPET;
510d6dd1baeSJung-uk Kim 
511d6dd1baeSJung-uk Kim /* Masks for Flags field above */
512d6dd1baeSJung-uk Kim 
513d6dd1baeSJung-uk Kim #define ACPI_HPET_PAGE_PROTECT_MASK (3)
514d6dd1baeSJung-uk Kim 
515d6dd1baeSJung-uk Kim /* Values for Page Protect flags */
516d6dd1baeSJung-uk Kim 
517d6dd1baeSJung-uk Kim enum AcpiHpetPageProtect
518d6dd1baeSJung-uk Kim {
519d6dd1baeSJung-uk Kim     ACPI_HPET_NO_PAGE_PROTECT       = 0,
520d6dd1baeSJung-uk Kim     ACPI_HPET_PAGE_PROTECT4         = 1,
521d6dd1baeSJung-uk Kim     ACPI_HPET_PAGE_PROTECT64        = 2
522d6dd1baeSJung-uk Kim };
523d6dd1baeSJung-uk Kim 
524d6dd1baeSJung-uk Kim 
525d6dd1baeSJung-uk Kim /*******************************************************************************
526d6dd1baeSJung-uk Kim  *
527d6dd1baeSJung-uk Kim  * IBFT - Boot Firmware Table
528d6dd1baeSJung-uk Kim  *        Version 1
529d6dd1baeSJung-uk Kim  *
530d6dd1baeSJung-uk Kim  * Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b
531d6dd1baeSJung-uk Kim  * Specification", Version 1.01, March 1, 2007
532d6dd1baeSJung-uk Kim  *
533d6dd1baeSJung-uk Kim  * Note: It appears that this table is not intended to appear in the RSDT/XSDT.
534d6dd1baeSJung-uk Kim  * Therefore, it is not currently supported by the disassembler.
535d6dd1baeSJung-uk Kim  *
536d6dd1baeSJung-uk Kim  ******************************************************************************/
537d6dd1baeSJung-uk Kim 
538d6dd1baeSJung-uk Kim typedef struct acpi_table_ibft
539d6dd1baeSJung-uk Kim {
540d6dd1baeSJung-uk Kim     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
541d6dd1baeSJung-uk Kim     UINT8                   Reserved[12];
542d6dd1baeSJung-uk Kim 
543d6dd1baeSJung-uk Kim } ACPI_TABLE_IBFT;
544d6dd1baeSJung-uk Kim 
545d6dd1baeSJung-uk Kim 
546d6dd1baeSJung-uk Kim /* IBFT common subtable header */
547d6dd1baeSJung-uk Kim 
548d6dd1baeSJung-uk Kim typedef struct acpi_ibft_header
549d6dd1baeSJung-uk Kim {
550d6dd1baeSJung-uk Kim     UINT8                   Type;
551d6dd1baeSJung-uk Kim     UINT8                   Version;
552d6dd1baeSJung-uk Kim     UINT16                  Length;
553d6dd1baeSJung-uk Kim     UINT8                   Index;
554d6dd1baeSJung-uk Kim     UINT8                   Flags;
555d6dd1baeSJung-uk Kim 
556d6dd1baeSJung-uk Kim } ACPI_IBFT_HEADER;
557d6dd1baeSJung-uk Kim 
558d6dd1baeSJung-uk Kim /* Values for Type field above */
559d6dd1baeSJung-uk Kim 
560d6dd1baeSJung-uk Kim enum AcpiIbftType
561d6dd1baeSJung-uk Kim {
562d6dd1baeSJung-uk Kim     ACPI_IBFT_TYPE_NOT_USED         = 0,
563d6dd1baeSJung-uk Kim     ACPI_IBFT_TYPE_CONTROL          = 1,
564d6dd1baeSJung-uk Kim     ACPI_IBFT_TYPE_INITIATOR        = 2,
565d6dd1baeSJung-uk Kim     ACPI_IBFT_TYPE_NIC              = 3,
566d6dd1baeSJung-uk Kim     ACPI_IBFT_TYPE_TARGET           = 4,
567d6dd1baeSJung-uk Kim     ACPI_IBFT_TYPE_EXTENSIONS       = 5,
568d6dd1baeSJung-uk Kim     ACPI_IBFT_TYPE_RESERVED         = 6     /* 6 and greater are reserved */
569d6dd1baeSJung-uk Kim };
570d6dd1baeSJung-uk Kim 
571d6dd1baeSJung-uk Kim 
572d6dd1baeSJung-uk Kim /* IBFT subtables */
573d6dd1baeSJung-uk Kim 
574d6dd1baeSJung-uk Kim typedef struct acpi_ibft_control
575d6dd1baeSJung-uk Kim {
576d6dd1baeSJung-uk Kim     ACPI_IBFT_HEADER        Header;
577d6dd1baeSJung-uk Kim     UINT16                  Extensions;
578d6dd1baeSJung-uk Kim     UINT16                  InitiatorOffset;
579d6dd1baeSJung-uk Kim     UINT16                  Nic0Offset;
580d6dd1baeSJung-uk Kim     UINT16                  Target0Offset;
581d6dd1baeSJung-uk Kim     UINT16                  Nic1Offset;
582d6dd1baeSJung-uk Kim     UINT16                  Target1Offset;
583d6dd1baeSJung-uk Kim 
584d6dd1baeSJung-uk Kim } ACPI_IBFT_CONTROL;
585d6dd1baeSJung-uk Kim 
586d6dd1baeSJung-uk Kim typedef struct acpi_ibft_initiator
587d6dd1baeSJung-uk Kim {
588d6dd1baeSJung-uk Kim     ACPI_IBFT_HEADER        Header;
589d6dd1baeSJung-uk Kim     UINT8                   SnsServer[16];
590d6dd1baeSJung-uk Kim     UINT8                   SlpServer[16];
591d6dd1baeSJung-uk Kim     UINT8                   PrimaryServer[16];
592d6dd1baeSJung-uk Kim     UINT8                   SecondaryServer[16];
593d6dd1baeSJung-uk Kim     UINT16                  NameLength;
594d6dd1baeSJung-uk Kim     UINT16                  NameOffset;
595d6dd1baeSJung-uk Kim 
596d6dd1baeSJung-uk Kim } ACPI_IBFT_INITIATOR;
597d6dd1baeSJung-uk Kim 
598d6dd1baeSJung-uk Kim typedef struct acpi_ibft_nic
599d6dd1baeSJung-uk Kim {
600d6dd1baeSJung-uk Kim     ACPI_IBFT_HEADER        Header;
601d6dd1baeSJung-uk Kim     UINT8                   IpAddress[16];
602d6dd1baeSJung-uk Kim     UINT8                   SubnetMaskPrefix;
603d6dd1baeSJung-uk Kim     UINT8                   Origin;
604d6dd1baeSJung-uk Kim     UINT8                   Gateway[16];
605d6dd1baeSJung-uk Kim     UINT8                   PrimaryDns[16];
606d6dd1baeSJung-uk Kim     UINT8                   SecondaryDns[16];
607d6dd1baeSJung-uk Kim     UINT8                   Dhcp[16];
608d6dd1baeSJung-uk Kim     UINT16                  Vlan;
609d6dd1baeSJung-uk Kim     UINT8                   MacAddress[6];
610d6dd1baeSJung-uk Kim     UINT16                  PciAddress;
611d6dd1baeSJung-uk Kim     UINT16                  NameLength;
612d6dd1baeSJung-uk Kim     UINT16                  NameOffset;
613d6dd1baeSJung-uk Kim 
614d6dd1baeSJung-uk Kim } ACPI_IBFT_NIC;
615d6dd1baeSJung-uk Kim 
616d6dd1baeSJung-uk Kim typedef struct acpi_ibft_target
617d6dd1baeSJung-uk Kim {
618d6dd1baeSJung-uk Kim     ACPI_IBFT_HEADER        Header;
619d6dd1baeSJung-uk Kim     UINT8                   TargetIpAddress[16];
620d6dd1baeSJung-uk Kim     UINT16                  TargetIpSocket;
621d6dd1baeSJung-uk Kim     UINT8                   TargetBootLun[8];
622d6dd1baeSJung-uk Kim     UINT8                   ChapType;
623d6dd1baeSJung-uk Kim     UINT8                   NicAssociation;
624d6dd1baeSJung-uk Kim     UINT16                  TargetNameLength;
625d6dd1baeSJung-uk Kim     UINT16                  TargetNameOffset;
626d6dd1baeSJung-uk Kim     UINT16                  ChapNameLength;
627d6dd1baeSJung-uk Kim     UINT16                  ChapNameOffset;
628d6dd1baeSJung-uk Kim     UINT16                  ChapSecretLength;
629d6dd1baeSJung-uk Kim     UINT16                  ChapSecretOffset;
630d6dd1baeSJung-uk Kim     UINT16                  ReverseChapNameLength;
631d6dd1baeSJung-uk Kim     UINT16                  ReverseChapNameOffset;
632d6dd1baeSJung-uk Kim     UINT16                  ReverseChapSecretLength;
633d6dd1baeSJung-uk Kim     UINT16                  ReverseChapSecretOffset;
634d6dd1baeSJung-uk Kim 
635d6dd1baeSJung-uk Kim } ACPI_IBFT_TARGET;
636d6dd1baeSJung-uk Kim 
637d6dd1baeSJung-uk Kim 
638d6dd1baeSJung-uk Kim /*******************************************************************************
639d6dd1baeSJung-uk Kim  *
640d6dd1baeSJung-uk Kim  * IVRS - I/O Virtualization Reporting Structure
641d6dd1baeSJung-uk Kim  *        Version 1
642d6dd1baeSJung-uk Kim  *
643d6dd1baeSJung-uk Kim  * Conforms to "AMD I/O Virtualization Technology (IOMMU) Specification",
644d6dd1baeSJung-uk Kim  * Revision 1.26, February 2009.
645d6dd1baeSJung-uk Kim  *
646d6dd1baeSJung-uk Kim  ******************************************************************************/
647d6dd1baeSJung-uk Kim 
648d6dd1baeSJung-uk Kim typedef struct acpi_table_ivrs
649d6dd1baeSJung-uk Kim {
650d6dd1baeSJung-uk Kim     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
651d6dd1baeSJung-uk Kim     UINT32                  Info;               /* Common virtualization info */
652d6dd1baeSJung-uk Kim     UINT64                  Reserved;
653d6dd1baeSJung-uk Kim 
654d6dd1baeSJung-uk Kim } ACPI_TABLE_IVRS;
655d6dd1baeSJung-uk Kim 
656d6dd1baeSJung-uk Kim /* Values for Info field above */
657d6dd1baeSJung-uk Kim 
658d6dd1baeSJung-uk Kim #define ACPI_IVRS_PHYSICAL_SIZE     0x00007F00  /* 7 bits, physical address size */
659d6dd1baeSJung-uk Kim #define ACPI_IVRS_VIRTUAL_SIZE      0x003F8000  /* 7 bits, virtual address size */
660d6dd1baeSJung-uk Kim #define ACPI_IVRS_ATS_RESERVED      0x00400000  /* ATS address translation range reserved */
661d6dd1baeSJung-uk Kim 
662d6dd1baeSJung-uk Kim 
663d6dd1baeSJung-uk Kim /* IVRS subtable header */
664d6dd1baeSJung-uk Kim 
665d6dd1baeSJung-uk Kim typedef struct acpi_ivrs_header
666d6dd1baeSJung-uk Kim {
667d6dd1baeSJung-uk Kim     UINT8                   Type;               /* Subtable type */
668d6dd1baeSJung-uk Kim     UINT8                   Flags;
669d6dd1baeSJung-uk Kim     UINT16                  Length;             /* Subtable length */
670d6dd1baeSJung-uk Kim     UINT16                  DeviceId;           /* ID of IOMMU */
671d6dd1baeSJung-uk Kim 
672d6dd1baeSJung-uk Kim } ACPI_IVRS_HEADER;
673d6dd1baeSJung-uk Kim 
674d6dd1baeSJung-uk Kim /* Values for subtable Type above */
675d6dd1baeSJung-uk Kim 
676d6dd1baeSJung-uk Kim enum AcpiIvrsType
677d6dd1baeSJung-uk Kim {
678d6dd1baeSJung-uk Kim     ACPI_IVRS_TYPE_HARDWARE         = 0x10,
679d6dd1baeSJung-uk Kim     ACPI_IVRS_TYPE_MEMORY1          = 0x20,
680d6dd1baeSJung-uk Kim     ACPI_IVRS_TYPE_MEMORY2          = 0x21,
681d6dd1baeSJung-uk Kim     ACPI_IVRS_TYPE_MEMORY3          = 0x22
682d6dd1baeSJung-uk Kim };
683d6dd1baeSJung-uk Kim 
684d6dd1baeSJung-uk Kim /* Masks for Flags field above for IVHD subtable */
685d6dd1baeSJung-uk Kim 
686d6dd1baeSJung-uk Kim #define ACPI_IVHD_TT_ENABLE         (1)
687d6dd1baeSJung-uk Kim #define ACPI_IVHD_PASS_PW           (1<<1)
688d6dd1baeSJung-uk Kim #define ACPI_IVHD_RES_PASS_PW       (1<<2)
689d6dd1baeSJung-uk Kim #define ACPI_IVHD_ISOC              (1<<3)
690d6dd1baeSJung-uk Kim #define ACPI_IVHD_IOTLB             (1<<4)
691d6dd1baeSJung-uk Kim 
692d6dd1baeSJung-uk Kim /* Masks for Flags field above for IVMD subtable */
693d6dd1baeSJung-uk Kim 
694d6dd1baeSJung-uk Kim #define ACPI_IVMD_UNITY             (1)
695d6dd1baeSJung-uk Kim #define ACPI_IVMD_READ              (1<<1)
696d6dd1baeSJung-uk Kim #define ACPI_IVMD_WRITE             (1<<2)
697d6dd1baeSJung-uk Kim #define ACPI_IVMD_EXCLUSION_RANGE   (1<<3)
698d6dd1baeSJung-uk Kim 
699d6dd1baeSJung-uk Kim 
700d6dd1baeSJung-uk Kim /*
701d6dd1baeSJung-uk Kim  * IVRS subtables, correspond to Type in ACPI_IVRS_HEADER
702d6dd1baeSJung-uk Kim  */
703d6dd1baeSJung-uk Kim 
704d6dd1baeSJung-uk Kim /* 0x10: I/O Virtualization Hardware Definition Block (IVHD) */
705d6dd1baeSJung-uk Kim 
706d6dd1baeSJung-uk Kim typedef struct acpi_ivrs_hardware
707d6dd1baeSJung-uk Kim {
708d6dd1baeSJung-uk Kim     ACPI_IVRS_HEADER        Header;
709d6dd1baeSJung-uk Kim     UINT16                  CapabilityOffset;   /* Offset for IOMMU control fields */
710d6dd1baeSJung-uk Kim     UINT64                  BaseAddress;        /* IOMMU control registers */
711d6dd1baeSJung-uk Kim     UINT16                  PciSegmentGroup;
712d6dd1baeSJung-uk Kim     UINT16                  Info;               /* MSI number and unit ID */
713d6dd1baeSJung-uk Kim     UINT32                  Reserved;
714d6dd1baeSJung-uk Kim 
715d6dd1baeSJung-uk Kim } ACPI_IVRS_HARDWARE;
716d6dd1baeSJung-uk Kim 
717d6dd1baeSJung-uk Kim /* Masks for Info field above */
718d6dd1baeSJung-uk Kim 
719d6dd1baeSJung-uk Kim #define ACPI_IVHD_MSI_NUMBER_MASK   0x001F      /* 5 bits, MSI message number */
720d6dd1baeSJung-uk Kim #define ACPI_IVHD_UNIT_ID_MASK      0x1F00      /* 5 bits, UnitID */
721d6dd1baeSJung-uk Kim 
722d6dd1baeSJung-uk Kim 
723d6dd1baeSJung-uk Kim /*
724d6dd1baeSJung-uk Kim  * Device Entries for IVHD subtable, appear after ACPI_IVRS_HARDWARE structure.
725d6dd1baeSJung-uk Kim  * Upper two bits of the Type field are the (encoded) length of the structure.
726d6dd1baeSJung-uk Kim  * Currently, only 4 and 8 byte entries are defined. 16 and 32 byte entries
727d6dd1baeSJung-uk Kim  * are reserved for future use but not defined.
728d6dd1baeSJung-uk Kim  */
729d6dd1baeSJung-uk Kim typedef struct acpi_ivrs_de_header
730d6dd1baeSJung-uk Kim {
731d6dd1baeSJung-uk Kim     UINT8                   Type;
732d6dd1baeSJung-uk Kim     UINT16                  Id;
733d6dd1baeSJung-uk Kim     UINT8                   DataSetting;
734d6dd1baeSJung-uk Kim 
735d6dd1baeSJung-uk Kim } ACPI_IVRS_DE_HEADER;
736d6dd1baeSJung-uk Kim 
737d6dd1baeSJung-uk Kim /* Length of device entry is in the top two bits of Type field above */
738d6dd1baeSJung-uk Kim 
739d6dd1baeSJung-uk Kim #define ACPI_IVHD_ENTRY_LENGTH      0xC0
740d6dd1baeSJung-uk Kim 
741d6dd1baeSJung-uk Kim /* Values for device entry Type field above */
742d6dd1baeSJung-uk Kim 
743d6dd1baeSJung-uk Kim enum AcpiIvrsDeviceEntryType
744d6dd1baeSJung-uk Kim {
745d6dd1baeSJung-uk Kim     /* 4-byte device entries, all use ACPI_IVRS_DEVICE4 */
746d6dd1baeSJung-uk Kim 
747d6dd1baeSJung-uk Kim     ACPI_IVRS_TYPE_PAD4             = 0,
748d6dd1baeSJung-uk Kim     ACPI_IVRS_TYPE_ALL              = 1,
749d6dd1baeSJung-uk Kim     ACPI_IVRS_TYPE_SELECT           = 2,
750d6dd1baeSJung-uk Kim     ACPI_IVRS_TYPE_START            = 3,
751d6dd1baeSJung-uk Kim     ACPI_IVRS_TYPE_END              = 4,
752d6dd1baeSJung-uk Kim 
753d6dd1baeSJung-uk Kim     /* 8-byte device entries */
754d6dd1baeSJung-uk Kim 
755d6dd1baeSJung-uk Kim     ACPI_IVRS_TYPE_PAD8             = 64,
756d6dd1baeSJung-uk Kim     ACPI_IVRS_TYPE_NOT_USED         = 65,
757d6dd1baeSJung-uk Kim     ACPI_IVRS_TYPE_ALIAS_SELECT     = 66, /* Uses ACPI_IVRS_DEVICE8A */
758d6dd1baeSJung-uk Kim     ACPI_IVRS_TYPE_ALIAS_START      = 67, /* Uses ACPI_IVRS_DEVICE8A */
759d6dd1baeSJung-uk Kim     ACPI_IVRS_TYPE_EXT_SELECT       = 70, /* Uses ACPI_IVRS_DEVICE8B */
760d6dd1baeSJung-uk Kim     ACPI_IVRS_TYPE_EXT_START        = 71, /* Uses ACPI_IVRS_DEVICE8B */
761d6dd1baeSJung-uk Kim     ACPI_IVRS_TYPE_SPECIAL          = 72  /* Uses ACPI_IVRS_DEVICE8C */
762d6dd1baeSJung-uk Kim };
763d6dd1baeSJung-uk Kim 
764d6dd1baeSJung-uk Kim /* Values for Data field above */
765d6dd1baeSJung-uk Kim 
766d6dd1baeSJung-uk Kim #define ACPI_IVHD_INIT_PASS         (1)
767d6dd1baeSJung-uk Kim #define ACPI_IVHD_EINT_PASS         (1<<1)
768d6dd1baeSJung-uk Kim #define ACPI_IVHD_NMI_PASS          (1<<2)
769d6dd1baeSJung-uk Kim #define ACPI_IVHD_SYSTEM_MGMT       (3<<4)
770d6dd1baeSJung-uk Kim #define ACPI_IVHD_LINT0_PASS        (1<<6)
771d6dd1baeSJung-uk Kim #define ACPI_IVHD_LINT1_PASS        (1<<7)
772d6dd1baeSJung-uk Kim 
773d6dd1baeSJung-uk Kim 
774d6dd1baeSJung-uk Kim /* Types 0-4: 4-byte device entry */
775d6dd1baeSJung-uk Kim 
776d6dd1baeSJung-uk Kim typedef struct acpi_ivrs_device4
777d6dd1baeSJung-uk Kim {
778d6dd1baeSJung-uk Kim     ACPI_IVRS_DE_HEADER     Header;
779d6dd1baeSJung-uk Kim 
780d6dd1baeSJung-uk Kim } ACPI_IVRS_DEVICE4;
781d6dd1baeSJung-uk Kim 
782d6dd1baeSJung-uk Kim /* Types 66-67: 8-byte device entry */
783d6dd1baeSJung-uk Kim 
784d6dd1baeSJung-uk Kim typedef struct acpi_ivrs_device8a
785d6dd1baeSJung-uk Kim {
786d6dd1baeSJung-uk Kim     ACPI_IVRS_DE_HEADER     Header;
787d6dd1baeSJung-uk Kim     UINT8                   Reserved1;
788d6dd1baeSJung-uk Kim     UINT16                  UsedId;
789d6dd1baeSJung-uk Kim     UINT8                   Reserved2;
790d6dd1baeSJung-uk Kim 
791d6dd1baeSJung-uk Kim } ACPI_IVRS_DEVICE8A;
792d6dd1baeSJung-uk Kim 
793d6dd1baeSJung-uk Kim /* Types 70-71: 8-byte device entry */
794d6dd1baeSJung-uk Kim 
795d6dd1baeSJung-uk Kim typedef struct acpi_ivrs_device8b
796d6dd1baeSJung-uk Kim {
797d6dd1baeSJung-uk Kim     ACPI_IVRS_DE_HEADER     Header;
798d6dd1baeSJung-uk Kim     UINT32                  ExtendedData;
799d6dd1baeSJung-uk Kim 
800d6dd1baeSJung-uk Kim } ACPI_IVRS_DEVICE8B;
801d6dd1baeSJung-uk Kim 
802d6dd1baeSJung-uk Kim /* Values for ExtendedData above */
803d6dd1baeSJung-uk Kim 
804d6dd1baeSJung-uk Kim #define ACPI_IVHD_ATS_DISABLED      (1<<31)
805d6dd1baeSJung-uk Kim 
806d6dd1baeSJung-uk Kim /* Type 72: 8-byte device entry */
807d6dd1baeSJung-uk Kim 
808d6dd1baeSJung-uk Kim typedef struct acpi_ivrs_device8c
809d6dd1baeSJung-uk Kim {
810d6dd1baeSJung-uk Kim     ACPI_IVRS_DE_HEADER     Header;
811d6dd1baeSJung-uk Kim     UINT8                   Handle;
812d6dd1baeSJung-uk Kim     UINT16                  UsedId;
813d6dd1baeSJung-uk Kim     UINT8                   Variety;
814d6dd1baeSJung-uk Kim 
815d6dd1baeSJung-uk Kim } ACPI_IVRS_DEVICE8C;
816d6dd1baeSJung-uk Kim 
817d6dd1baeSJung-uk Kim /* Values for Variety field above */
818d6dd1baeSJung-uk Kim 
819d6dd1baeSJung-uk Kim #define ACPI_IVHD_IOAPIC            1
820d6dd1baeSJung-uk Kim #define ACPI_IVHD_HPET              2
821d6dd1baeSJung-uk Kim 
822d6dd1baeSJung-uk Kim 
823d6dd1baeSJung-uk Kim /* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition Block (IVMD) */
824d6dd1baeSJung-uk Kim 
825d6dd1baeSJung-uk Kim typedef struct acpi_ivrs_memory
826d6dd1baeSJung-uk Kim {
827d6dd1baeSJung-uk Kim     ACPI_IVRS_HEADER        Header;
828d6dd1baeSJung-uk Kim     UINT16                  AuxData;
829d6dd1baeSJung-uk Kim     UINT64                  Reserved;
830d6dd1baeSJung-uk Kim     UINT64                  StartAddress;
831d6dd1baeSJung-uk Kim     UINT64                  MemoryLength;
832d6dd1baeSJung-uk Kim 
833d6dd1baeSJung-uk Kim } ACPI_IVRS_MEMORY;
834d6dd1baeSJung-uk Kim 
835d6dd1baeSJung-uk Kim 
836d6dd1baeSJung-uk Kim /*******************************************************************************
837d6dd1baeSJung-uk Kim  *
838d6dd1baeSJung-uk Kim  * MCFG - PCI Memory Mapped Configuration table and sub-table
839d6dd1baeSJung-uk Kim  *        Version 1
840d6dd1baeSJung-uk Kim  *
841d6dd1baeSJung-uk Kim  * Conforms to "PCI Firmware Specification", Revision 3.0, June 20, 2005
842d6dd1baeSJung-uk Kim  *
843d6dd1baeSJung-uk Kim  ******************************************************************************/
844d6dd1baeSJung-uk Kim 
845d6dd1baeSJung-uk Kim typedef struct acpi_table_mcfg
846d6dd1baeSJung-uk Kim {
847d6dd1baeSJung-uk Kim     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
848d6dd1baeSJung-uk Kim     UINT8                   Reserved[8];
849d6dd1baeSJung-uk Kim 
850d6dd1baeSJung-uk Kim } ACPI_TABLE_MCFG;
851d6dd1baeSJung-uk Kim 
852d6dd1baeSJung-uk Kim 
853d6dd1baeSJung-uk Kim /* Subtable */
854d6dd1baeSJung-uk Kim 
855d6dd1baeSJung-uk Kim typedef struct acpi_mcfg_allocation
856d6dd1baeSJung-uk Kim {
857d6dd1baeSJung-uk Kim     UINT64                  Address;            /* Base address, processor-relative */
858d6dd1baeSJung-uk Kim     UINT16                  PciSegment;         /* PCI segment group number */
859d6dd1baeSJung-uk Kim     UINT8                   StartBusNumber;     /* Starting PCI Bus number */
860d6dd1baeSJung-uk Kim     UINT8                   EndBusNumber;       /* Final PCI Bus number */
861d6dd1baeSJung-uk Kim     UINT32                  Reserved;
862d6dd1baeSJung-uk Kim 
863d6dd1baeSJung-uk Kim } ACPI_MCFG_ALLOCATION;
864d6dd1baeSJung-uk Kim 
865d6dd1baeSJung-uk Kim 
866d6dd1baeSJung-uk Kim /*******************************************************************************
867d6dd1baeSJung-uk Kim  *
868ca3cf4faSJung-uk Kim  * MCHI - Management Controller Host Interface Table
869ca3cf4faSJung-uk Kim  *        Version 1
870ca3cf4faSJung-uk Kim  *
871ca3cf4faSJung-uk Kim  * Conforms to "Management Component Transport Protocol (MCTP) Host
872ca3cf4faSJung-uk Kim  * Interface Specification", Revision 1.0.0a, October 13, 2009
873ca3cf4faSJung-uk Kim  *
874ca3cf4faSJung-uk Kim  ******************************************************************************/
875ca3cf4faSJung-uk Kim 
876ca3cf4faSJung-uk Kim typedef struct acpi_table_mchi
877ca3cf4faSJung-uk Kim {
878ca3cf4faSJung-uk Kim     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
879ca3cf4faSJung-uk Kim     UINT8                   InterfaceType;
880ca3cf4faSJung-uk Kim     UINT8                   Protocol;
881ca3cf4faSJung-uk Kim     UINT64                  ProtocolData;
882ca3cf4faSJung-uk Kim     UINT8                   InterruptType;
883ca3cf4faSJung-uk Kim     UINT8                   Gpe;
884ca3cf4faSJung-uk Kim     UINT8                   PciDeviceFlag;
885ca3cf4faSJung-uk Kim     UINT32                  GlobalInterrupt;
886ca3cf4faSJung-uk Kim     ACPI_GENERIC_ADDRESS    ControlRegister;
887ca3cf4faSJung-uk Kim     UINT8                   PciSegment;
888ca3cf4faSJung-uk Kim     UINT8                   PciBus;
889ca3cf4faSJung-uk Kim     UINT8                   PciDevice;
890ca3cf4faSJung-uk Kim     UINT8                   PciFunction;
891ca3cf4faSJung-uk Kim 
892ca3cf4faSJung-uk Kim } ACPI_TABLE_MCHI;
893ca3cf4faSJung-uk Kim 
894ca3cf4faSJung-uk Kim 
895ca3cf4faSJung-uk Kim /*******************************************************************************
896ca3cf4faSJung-uk Kim  *
897d6dd1baeSJung-uk Kim  * SPCR - Serial Port Console Redirection table
898d6dd1baeSJung-uk Kim  *        Version 1
899d6dd1baeSJung-uk Kim  *
900d6dd1baeSJung-uk Kim  * Conforms to "Serial Port Console Redirection Table",
901d6dd1baeSJung-uk Kim  * Version 1.00, January 11, 2002
902d6dd1baeSJung-uk Kim  *
903d6dd1baeSJung-uk Kim  ******************************************************************************/
904d6dd1baeSJung-uk Kim 
905d6dd1baeSJung-uk Kim typedef struct acpi_table_spcr
906d6dd1baeSJung-uk Kim {
907d6dd1baeSJung-uk Kim     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
908d6dd1baeSJung-uk Kim     UINT8                   InterfaceType;      /* 0=full 16550, 1=subset of 16550 */
909d6dd1baeSJung-uk Kim     UINT8                   Reserved[3];
910d6dd1baeSJung-uk Kim     ACPI_GENERIC_ADDRESS    SerialPort;
911d6dd1baeSJung-uk Kim     UINT8                   InterruptType;
912d6dd1baeSJung-uk Kim     UINT8                   PcInterrupt;
913d6dd1baeSJung-uk Kim     UINT32                  Interrupt;
914d6dd1baeSJung-uk Kim     UINT8                   BaudRate;
915d6dd1baeSJung-uk Kim     UINT8                   Parity;
916d6dd1baeSJung-uk Kim     UINT8                   StopBits;
917d6dd1baeSJung-uk Kim     UINT8                   FlowControl;
918d6dd1baeSJung-uk Kim     UINT8                   TerminalType;
919d6dd1baeSJung-uk Kim     UINT8                   Reserved1;
920d6dd1baeSJung-uk Kim     UINT16                  PciDeviceId;
921d6dd1baeSJung-uk Kim     UINT16                  PciVendorId;
922d6dd1baeSJung-uk Kim     UINT8                   PciBus;
923d6dd1baeSJung-uk Kim     UINT8                   PciDevice;
924d6dd1baeSJung-uk Kim     UINT8                   PciFunction;
925d6dd1baeSJung-uk Kim     UINT32                  PciFlags;
926d6dd1baeSJung-uk Kim     UINT8                   PciSegment;
927d6dd1baeSJung-uk Kim     UINT32                  Reserved2;
928d6dd1baeSJung-uk Kim 
929d6dd1baeSJung-uk Kim } ACPI_TABLE_SPCR;
930d6dd1baeSJung-uk Kim 
931d6dd1baeSJung-uk Kim /* Masks for PciFlags field above */
932d6dd1baeSJung-uk Kim 
933d6dd1baeSJung-uk Kim #define ACPI_SPCR_DO_NOT_DISABLE    (1)
934d6dd1baeSJung-uk Kim 
935d6dd1baeSJung-uk Kim 
936d6dd1baeSJung-uk Kim /*******************************************************************************
937d6dd1baeSJung-uk Kim  *
938d6dd1baeSJung-uk Kim  * SPMI - Server Platform Management Interface table
939d6dd1baeSJung-uk Kim  *        Version 5
940d6dd1baeSJung-uk Kim  *
941d6dd1baeSJung-uk Kim  * Conforms to "Intelligent Platform Management Interface Specification
942d6dd1baeSJung-uk Kim  * Second Generation v2.0", Document Revision 1.0, February 12, 2004 with
943d6dd1baeSJung-uk Kim  * June 12, 2009 markup.
944d6dd1baeSJung-uk Kim  *
945d6dd1baeSJung-uk Kim  ******************************************************************************/
946d6dd1baeSJung-uk Kim 
947d6dd1baeSJung-uk Kim typedef struct acpi_table_spmi
948d6dd1baeSJung-uk Kim {
949d6dd1baeSJung-uk Kim     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
950d6dd1baeSJung-uk Kim     UINT8                   InterfaceType;
951d6dd1baeSJung-uk Kim     UINT8                   Reserved;           /* Must be 1 */
952d6dd1baeSJung-uk Kim     UINT16                  SpecRevision;       /* Version of IPMI */
953d6dd1baeSJung-uk Kim     UINT8                   InterruptType;
954d6dd1baeSJung-uk Kim     UINT8                   GpeNumber;          /* GPE assigned */
955d6dd1baeSJung-uk Kim     UINT8                   Reserved1;
956d6dd1baeSJung-uk Kim     UINT8                   PciDeviceFlag;
957d6dd1baeSJung-uk Kim     UINT32                  Interrupt;
958d6dd1baeSJung-uk Kim     ACPI_GENERIC_ADDRESS    IpmiRegister;
959d6dd1baeSJung-uk Kim     UINT8                   PciSegment;
960d6dd1baeSJung-uk Kim     UINT8                   PciBus;
961d6dd1baeSJung-uk Kim     UINT8                   PciDevice;
962d6dd1baeSJung-uk Kim     UINT8                   PciFunction;
963d6dd1baeSJung-uk Kim     UINT8                   Reserved2;
964d6dd1baeSJung-uk Kim 
965d6dd1baeSJung-uk Kim } ACPI_TABLE_SPMI;
966d6dd1baeSJung-uk Kim 
967d6dd1baeSJung-uk Kim /* Values for InterfaceType above */
968d6dd1baeSJung-uk Kim 
969d6dd1baeSJung-uk Kim enum AcpiSpmiInterfaceTypes
970d6dd1baeSJung-uk Kim {
971d6dd1baeSJung-uk Kim     ACPI_SPMI_NOT_USED              = 0,
972d6dd1baeSJung-uk Kim     ACPI_SPMI_KEYBOARD              = 1,
973d6dd1baeSJung-uk Kim     ACPI_SPMI_SMI                   = 2,
974d6dd1baeSJung-uk Kim     ACPI_SPMI_BLOCK_TRANSFER        = 3,
975d6dd1baeSJung-uk Kim     ACPI_SPMI_SMBUS                 = 4,
976d6dd1baeSJung-uk Kim     ACPI_SPMI_RESERVED              = 5         /* 5 and above are reserved */
977d6dd1baeSJung-uk Kim };
978d6dd1baeSJung-uk Kim 
979d6dd1baeSJung-uk Kim 
980d6dd1baeSJung-uk Kim /*******************************************************************************
981d6dd1baeSJung-uk Kim  *
982d6dd1baeSJung-uk Kim  * TCPA - Trusted Computing Platform Alliance table
983d6dd1baeSJung-uk Kim  *        Version 1
984d6dd1baeSJung-uk Kim  *
985d6dd1baeSJung-uk Kim  * Conforms to "TCG PC Specific Implementation Specification",
986d6dd1baeSJung-uk Kim  * Version 1.1, August 18, 2003
987d6dd1baeSJung-uk Kim  *
988d6dd1baeSJung-uk Kim  ******************************************************************************/
989d6dd1baeSJung-uk Kim 
990d6dd1baeSJung-uk Kim typedef struct acpi_table_tcpa
991d6dd1baeSJung-uk Kim {
992d6dd1baeSJung-uk Kim     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
993d6dd1baeSJung-uk Kim     UINT16                  Reserved;
994d6dd1baeSJung-uk Kim     UINT32                  MaxLogLength;       /* Maximum length for the event log area */
995d6dd1baeSJung-uk Kim     UINT64                  LogAddress;         /* Address of the event log area */
996d6dd1baeSJung-uk Kim 
997d6dd1baeSJung-uk Kim } ACPI_TABLE_TCPA;
998d6dd1baeSJung-uk Kim 
999d6dd1baeSJung-uk Kim 
1000d6dd1baeSJung-uk Kim /*******************************************************************************
1001d6dd1baeSJung-uk Kim  *
1002d6dd1baeSJung-uk Kim  * UEFI - UEFI Boot optimization Table
1003d6dd1baeSJung-uk Kim  *        Version 1
1004d6dd1baeSJung-uk Kim  *
1005d6dd1baeSJung-uk Kim  * Conforms to "Unified Extensible Firmware Interface Specification",
1006d6dd1baeSJung-uk Kim  * Version 2.3, May 8, 2009
1007d6dd1baeSJung-uk Kim  *
1008d6dd1baeSJung-uk Kim  ******************************************************************************/
1009d6dd1baeSJung-uk Kim 
1010d6dd1baeSJung-uk Kim typedef struct acpi_table_uefi
1011d6dd1baeSJung-uk Kim {
1012d6dd1baeSJung-uk Kim     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1013d6dd1baeSJung-uk Kim     UINT8                   Identifier[16];     /* UUID identifier */
1014d6dd1baeSJung-uk Kim     UINT16                  DataOffset;         /* Offset of remaining data in table */
1015d6dd1baeSJung-uk Kim 
1016d6dd1baeSJung-uk Kim } ACPI_TABLE_UEFI;
1017d6dd1baeSJung-uk Kim 
1018d6dd1baeSJung-uk Kim 
1019d6dd1baeSJung-uk Kim /*******************************************************************************
1020d6dd1baeSJung-uk Kim  *
1021d6dd1baeSJung-uk Kim  * WAET - Windows ACPI Emulated devices Table
1022d6dd1baeSJung-uk Kim  *        Version 1
1023d6dd1baeSJung-uk Kim  *
1024d6dd1baeSJung-uk Kim  * Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009
1025d6dd1baeSJung-uk Kim  *
1026d6dd1baeSJung-uk Kim  ******************************************************************************/
1027d6dd1baeSJung-uk Kim 
1028d6dd1baeSJung-uk Kim typedef struct acpi_table_waet
1029d6dd1baeSJung-uk Kim {
1030d6dd1baeSJung-uk Kim     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1031d6dd1baeSJung-uk Kim     UINT32                  Flags;
1032d6dd1baeSJung-uk Kim 
1033d6dd1baeSJung-uk Kim } ACPI_TABLE_WAET;
1034d6dd1baeSJung-uk Kim 
1035d6dd1baeSJung-uk Kim /* Masks for Flags field above */
1036d6dd1baeSJung-uk Kim 
1037d6dd1baeSJung-uk Kim #define ACPI_WAET_RTC_NO_ACK        (1)         /* RTC requires no int acknowledge */
1038d6dd1baeSJung-uk Kim #define ACPI_WAET_TIMER_ONE_READ    (1<<1)      /* PM timer requires only one read */
1039d6dd1baeSJung-uk Kim 
1040d6dd1baeSJung-uk Kim 
1041d6dd1baeSJung-uk Kim /*******************************************************************************
1042d6dd1baeSJung-uk Kim  *
1043d6dd1baeSJung-uk Kim  * WDAT - Watchdog Action Table
1044d6dd1baeSJung-uk Kim  *        Version 1
1045d6dd1baeSJung-uk Kim  *
1046d6dd1baeSJung-uk Kim  * Conforms to "Hardware Watchdog Timers Design Specification",
1047d6dd1baeSJung-uk Kim  * Copyright 2006 Microsoft Corporation.
1048d6dd1baeSJung-uk Kim  *
1049d6dd1baeSJung-uk Kim  ******************************************************************************/
1050d6dd1baeSJung-uk Kim 
1051d6dd1baeSJung-uk Kim typedef struct acpi_table_wdat
1052d6dd1baeSJung-uk Kim {
1053d6dd1baeSJung-uk Kim     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1054d6dd1baeSJung-uk Kim     UINT32                  HeaderLength;       /* Watchdog Header Length */
1055d6dd1baeSJung-uk Kim     UINT16                  PciSegment;         /* PCI Segment number */
1056d6dd1baeSJung-uk Kim     UINT8                   PciBus;             /* PCI Bus number */
1057d6dd1baeSJung-uk Kim     UINT8                   PciDevice;          /* PCI Device number */
1058d6dd1baeSJung-uk Kim     UINT8                   PciFunction;        /* PCI Function number */
1059d6dd1baeSJung-uk Kim     UINT8                   Reserved[3];
1060d6dd1baeSJung-uk Kim     UINT32                  TimerPeriod;        /* Period of one timer count (msec) */
1061d6dd1baeSJung-uk Kim     UINT32                  MaxCount;           /* Maximum counter value supported */
1062d6dd1baeSJung-uk Kim     UINT32                  MinCount;           /* Minimum counter value */
1063d6dd1baeSJung-uk Kim     UINT8                   Flags;
1064d6dd1baeSJung-uk Kim     UINT8                   Reserved2[3];
1065d6dd1baeSJung-uk Kim     UINT32                  Entries;            /* Number of watchdog entries that follow */
1066d6dd1baeSJung-uk Kim 
1067d6dd1baeSJung-uk Kim } ACPI_TABLE_WDAT;
1068d6dd1baeSJung-uk Kim 
1069d6dd1baeSJung-uk Kim /* Masks for Flags field above */
1070d6dd1baeSJung-uk Kim 
1071d6dd1baeSJung-uk Kim #define ACPI_WDAT_ENABLED           (1)
1072d6dd1baeSJung-uk Kim #define ACPI_WDAT_STOPPED           0x80
1073d6dd1baeSJung-uk Kim 
1074d6dd1baeSJung-uk Kim 
1075d6dd1baeSJung-uk Kim /* WDAT Instruction Entries (actions) */
1076d6dd1baeSJung-uk Kim 
1077d6dd1baeSJung-uk Kim typedef struct acpi_wdat_entry
1078d6dd1baeSJung-uk Kim {
1079d6dd1baeSJung-uk Kim     UINT8                   Action;
1080d6dd1baeSJung-uk Kim     UINT8                   Instruction;
1081d6dd1baeSJung-uk Kim     UINT16                  Reserved;
1082d6dd1baeSJung-uk Kim     ACPI_GENERIC_ADDRESS    RegisterRegion;
1083d6dd1baeSJung-uk Kim     UINT32                  Value;              /* Value used with Read/Write register */
1084d6dd1baeSJung-uk Kim     UINT32                  Mask;               /* Bitmask required for this register instruction */
1085d6dd1baeSJung-uk Kim 
1086d6dd1baeSJung-uk Kim } ACPI_WDAT_ENTRY;
1087d6dd1baeSJung-uk Kim 
1088d6dd1baeSJung-uk Kim /* Values for Action field above */
1089d6dd1baeSJung-uk Kim 
1090d6dd1baeSJung-uk Kim enum AcpiWdatActions
1091d6dd1baeSJung-uk Kim {
1092d6dd1baeSJung-uk Kim     ACPI_WDAT_RESET                 = 1,
1093d6dd1baeSJung-uk Kim     ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4,
1094d6dd1baeSJung-uk Kim     ACPI_WDAT_GET_COUNTDOWN         = 5,
1095d6dd1baeSJung-uk Kim     ACPI_WDAT_SET_COUNTDOWN         = 6,
1096d6dd1baeSJung-uk Kim     ACPI_WDAT_GET_RUNNING_STATE     = 8,
1097d6dd1baeSJung-uk Kim     ACPI_WDAT_SET_RUNNING_STATE     = 9,
1098d6dd1baeSJung-uk Kim     ACPI_WDAT_GET_STOPPED_STATE     = 10,
1099d6dd1baeSJung-uk Kim     ACPI_WDAT_SET_STOPPED_STATE     = 11,
1100d6dd1baeSJung-uk Kim     ACPI_WDAT_GET_REBOOT            = 16,
1101d6dd1baeSJung-uk Kim     ACPI_WDAT_SET_REBOOT            = 17,
1102d6dd1baeSJung-uk Kim     ACPI_WDAT_GET_SHUTDOWN          = 18,
1103d6dd1baeSJung-uk Kim     ACPI_WDAT_SET_SHUTDOWN          = 19,
1104d6dd1baeSJung-uk Kim     ACPI_WDAT_GET_STATUS            = 32,
1105d6dd1baeSJung-uk Kim     ACPI_WDAT_SET_STATUS            = 33,
1106d6dd1baeSJung-uk Kim     ACPI_WDAT_ACTION_RESERVED       = 34    /* 34 and greater are reserved */
1107d6dd1baeSJung-uk Kim };
1108d6dd1baeSJung-uk Kim 
1109d6dd1baeSJung-uk Kim /* Values for Instruction field above */
1110d6dd1baeSJung-uk Kim 
1111d6dd1baeSJung-uk Kim enum AcpiWdatInstructions
1112d6dd1baeSJung-uk Kim {
1113d6dd1baeSJung-uk Kim     ACPI_WDAT_READ_VALUE            = 0,
1114d6dd1baeSJung-uk Kim     ACPI_WDAT_READ_COUNTDOWN        = 1,
1115d6dd1baeSJung-uk Kim     ACPI_WDAT_WRITE_VALUE           = 2,
1116d6dd1baeSJung-uk Kim     ACPI_WDAT_WRITE_COUNTDOWN       = 3,
1117d6dd1baeSJung-uk Kim     ACPI_WDAT_INSTRUCTION_RESERVED  = 4,    /* 4 and greater are reserved */
1118d6dd1baeSJung-uk Kim     ACPI_WDAT_PRESERVE_REGISTER     = 0x80  /* Except for this value */
1119d6dd1baeSJung-uk Kim };
1120d6dd1baeSJung-uk Kim 
1121d6dd1baeSJung-uk Kim 
1122d6dd1baeSJung-uk Kim /*******************************************************************************
1123d6dd1baeSJung-uk Kim  *
1124d6dd1baeSJung-uk Kim  * WDRT - Watchdog Resource Table
1125d6dd1baeSJung-uk Kim  *        Version 1
1126d6dd1baeSJung-uk Kim  *
1127d6dd1baeSJung-uk Kim  * Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003",
1128d6dd1baeSJung-uk Kim  * Version 1.01, August 28, 2006
1129d6dd1baeSJung-uk Kim  *
1130d6dd1baeSJung-uk Kim  ******************************************************************************/
1131d6dd1baeSJung-uk Kim 
1132d6dd1baeSJung-uk Kim typedef struct acpi_table_wdrt
1133d6dd1baeSJung-uk Kim {
1134d6dd1baeSJung-uk Kim     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1135d6dd1baeSJung-uk Kim     ACPI_GENERIC_ADDRESS    ControlRegister;
1136d6dd1baeSJung-uk Kim     ACPI_GENERIC_ADDRESS    CountRegister;
1137d6dd1baeSJung-uk Kim     UINT16                  PciDeviceId;
1138d6dd1baeSJung-uk Kim     UINT16                  PciVendorId;
1139d6dd1baeSJung-uk Kim     UINT8                   PciBus;             /* PCI Bus number */
1140d6dd1baeSJung-uk Kim     UINT8                   PciDevice;          /* PCI Device number */
1141d6dd1baeSJung-uk Kim     UINT8                   PciFunction;        /* PCI Function number */
1142d6dd1baeSJung-uk Kim     UINT8                   PciSegment;         /* PCI Segment number */
1143d6dd1baeSJung-uk Kim     UINT16                  MaxCount;           /* Maximum counter value supported */
1144d6dd1baeSJung-uk Kim     UINT8                   Units;
1145d6dd1baeSJung-uk Kim 
1146d6dd1baeSJung-uk Kim } ACPI_TABLE_WDRT;
1147d6dd1baeSJung-uk Kim 
1148d6dd1baeSJung-uk Kim 
1149d6dd1baeSJung-uk Kim /* Reset to default packing */
1150d6dd1baeSJung-uk Kim 
1151d6dd1baeSJung-uk Kim #pragma pack()
1152d6dd1baeSJung-uk Kim 
1153d6dd1baeSJung-uk Kim #endif /* __ACTBL2_H__ */
1154d6dd1baeSJung-uk Kim 
1155