actbl1.h revision 167802
169450Smsmith/******************************************************************************
269450Smsmith *
3167802Sjkim * Name: actbl1.h - Additional ACPI table definitions
469450Smsmith *       $Revision: 1.47 $
569450Smsmith *
669450Smsmith *****************************************************************************/
7217365Sjkim
8278970Sjkim/******************************************************************************
970243Smsmith *
1069450Smsmith * 1. Copyright Notice
11217365Sjkim *
12217365Sjkim * Some or all of this work - Copyright (c) 1999 - 2007, Intel Corp.
13217365Sjkim * All rights reserved.
14217365Sjkim *
15217365Sjkim * 2. License
16217365Sjkim *
17217365Sjkim * 2.1. This is your license from Intel Corp. under its intellectual property
18217365Sjkim * rights.  You may have additional license terms from the party that provided
19217365Sjkim * you this software, covering your right to use that party's intellectual
20217365Sjkim * property rights.
21217365Sjkim *
22217365Sjkim * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
23217365Sjkim * copy of the source code appearing in this file ("Covered Code") an
24217365Sjkim * irrevocable, perpetual, worldwide license under Intel's copyrights in the
2569450Smsmith * base code distributed originally by Intel ("Original Intel Code") to copy,
26217365Sjkim * make derivatives, distribute, use and display any portion of the Covered
27217365Sjkim * Code in any form, with the right to sublicense such rights; and
28217365Sjkim *
2969450Smsmith * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
30217365Sjkim * license (with the right to sublicense), under only those claims of Intel
31217365Sjkim * patents that are infringed by the Original Intel Code, to make, use, sell,
32217365Sjkim * offer to sell, and import the Covered Code and derivative works thereof
33217365Sjkim * solely to the minimum extent necessary to exercise the above copyright
34217365Sjkim * license, and in no event shall the patent license extend to any additions
35217365Sjkim * to or modifications of the Original Intel Code.  No other license or right
36217365Sjkim * is granted directly or by implication, estoppel or otherwise;
37217365Sjkim *
38217365Sjkim * The above copyright and patent license is granted only if the following
39217365Sjkim * conditions are met:
40217365Sjkim *
41217365Sjkim * 3. Conditions
42217365Sjkim *
4369450Smsmith * 3.1. Redistribution of Source with Rights to Further Distribute Source.
4469450Smsmith * Redistribution of source code of any substantial portion of the Covered
4569450Smsmith * Code or modification with rights to further distribute source must include
4669450Smsmith * the above Copyright Notice, the above License, this list of Conditions,
47167802Sjkim * and the following Disclaimer and Export Compliance provision.  In addition,
48167802Sjkim * Licensee must cause all Covered Code to which Licensee contributes to
49167802Sjkim * contain a file documenting the changes Licensee made to create that Covered
50197104Sjkim * Code and the date of any change.  Licensee must include in that file the
51167802Sjkim * documentation of any changes made by any predecessor Licensee.  Licensee
52167802Sjkim * must include a prominent statement that the modification is derived,
53167802Sjkim * directly or indirectly, from Original Intel Code.
54167802Sjkim *
55197104Sjkim * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
56197104Sjkim * Redistribution of source code of any substantial portion of the Covered
57167802Sjkim * Code or modification without rights to further distribute source must
58167802Sjkim * include the following Disclaimer and Export Compliance provision in the
59167802Sjkim * documentation and/or other materials provided with distribution.  In
60167802Sjkim * addition, Licensee may not authorize further sublicense of source of any
61197104Sjkim * portion of the Covered Code, and must include terms to the effect that the
62197104Sjkim * license from Licensee to its licensee is limited to the intellectual
63197104Sjkim * property embodied in the software Licensee provides to its licensee, and
64167802Sjkim * not to intellectual property embodied in modifications its licensee may
65193267Sjkim * make.
66167802Sjkim *
67167802Sjkim * 3.3. Redistribution of Executable. Redistribution in executable form of any
68193267Sjkim * substantial portion of the Covered Code or modification must reproduce the
69193267Sjkim * above Copyright Notice, and the following Disclaimer and Export Compliance
70193267Sjkim * provision in the documentation and/or other materials provided with the
71167802Sjkim * distribution.
72197104Sjkim *
73167802Sjkim * 3.4. Intel retains all right, title, and interest in and to the Original
74167802Sjkim * Intel Code.
75167802Sjkim *
76283092Sjkim * 3.5. Neither the name Intel nor any other trademark owned or controlled by
77167802Sjkim * Intel shall be used in advertising or otherwise to promote the sale, use or
78167802Sjkim * other dealings in products derived from or relating to the Covered Code
79167802Sjkim * without prior written authorization from Intel.
80167802Sjkim *
81167802Sjkim * 4. Disclaimer and Export Compliance
82167802Sjkim *
8369450Smsmith * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
8469450Smsmith * HERE.  ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
8591116Smsmith * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT,  ASSISTANCE,
86239340Sjkim * INSTALLATION, TRAINING OR OTHER SERVICES.  INTEL WILL NOT PROVIDE ANY
87239340Sjkim * UPDATES, ENHANCEMENTS OR EXTENSIONS.  INTEL SPECIFICALLY DISCLAIMS ANY
88239340Sjkim * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
89239340Sjkim * PARTICULAR PURPOSE.
90239340Sjkim *
91239340Sjkim * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
92239340Sjkim * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
93239340Sjkim * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
94239340Sjkim * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
9591116Smsmith * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
96167802Sjkim * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.  THESE LIMITATIONS
97167802Sjkim * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
98197104Sjkim * LIMITED REMEDY.
99197104Sjkim *
100197104Sjkim * 4.3. Licensee shall not export, either directly or indirectly, any of this
101197104Sjkim * software or system incorporating such software without first obtaining any
102197104Sjkim * required license or other approval from the U. S. Department of Commerce or
103167802Sjkim * any other agency or department of the United States Government.  In the
104197104Sjkim * event Licensee exports any such software from the United States or
105197104Sjkim * re-exports any such software from a foreign destination, Licensee shall
106167802Sjkim * ensure that the distribution and export/re-export of the software is in
10769450Smsmith * compliance with all laws, regulations, orders, or other restrictions of the
108167802Sjkim * U.S. Export Administration Regulations. Licensee agrees that neither it nor
109167802Sjkim * any of its subsidiaries will export/re-export any technical data, process,
110151937Sjkim * software, or service, directly or indirectly, to any country for which the
111167802Sjkim * United States government or any agency thereof requires an export license,
11269450Smsmith * other governmental approval, or letter of assurance, without first obtaining
11369450Smsmith * such license, approval or letter.
114197104Sjkim *
115193267Sjkim *****************************************************************************/
116193267Sjkim
117193267Sjkim#ifndef __ACTBL1_H__
118193267Sjkim#define __ACTBL1_H__
119193267Sjkim
120193267Sjkim
121193267Sjkim/*******************************************************************************
122193267Sjkim *
123193267Sjkim * Additional ACPI Tables
124193267Sjkim *
125193267Sjkim * These tables are not consumed directly by the ACPICA subsystem, but are
126193267Sjkim * included here to support device drivers and the AML disassembler.
127193267Sjkim *
128193267Sjkim ******************************************************************************/
129167802Sjkim
130167802Sjkim
131197104Sjkim/*
132197104Sjkim * Values for description table header signatures. Useful because they make
133167802Sjkim * it more difficult to inadvertently type in the wrong signature.
134167802Sjkim */
135167802Sjkim#define ACPI_SIG_ASF            "ASF!"      /* Alert Standard Format table */
136193267Sjkim#define ACPI_SIG_BOOT           "BOOT"      /* Simple Boot Flag Table */
137193267Sjkim#define ACPI_SIG_CPEP           "CPEP"      /* Corrected Platform Error Polling table */
138193267Sjkim#define ACPI_SIG_DBGP           "DBGP"      /* Debug Port table */
139193267Sjkim#define ACPI_SIG_DMAR           "DMAR"      /* DMA Remapping table */
140238381Sjkim#define ACPI_SIG_ECDT           "ECDT"      /* Embedded Controller Boot Resources Table */
141193267Sjkim#define ACPI_SIG_HPET           "HPET"      /* High Precision Event Timer table */
142193267Sjkim#define ACPI_SIG_MADT           "APIC"      /* Multiple APIC Description Table */
143193267Sjkim#define ACPI_SIG_MCFG           "MCFG"      /* PCI Memory Mapped Configuration table */
144193267Sjkim#define ACPI_SIG_SBST           "SBST"      /* Smart Battery Specification Table */
145197104Sjkim#define ACPI_SIG_SLIT           "SLIT"      /* System Locality Distance Information Table */
146193267Sjkim#define ACPI_SIG_SPCR           "SPCR"      /* Serial Port Console Redirection table */
147193267Sjkim#define ACPI_SIG_SPMI           "SPMI"      /* Server Platform Management Interface table */
148193267Sjkim#define ACPI_SIG_SRAT           "SRAT"      /* System Resource Affinity Table */
149197104Sjkim#define ACPI_SIG_TCPA           "TCPA"      /* Trusted Computing Platform Alliance table */
150197104Sjkim#define ACPI_SIG_WDRT           "WDRT"      /* Watchdog Resource Table */
151197104Sjkim
152197104Sjkim
153197104Sjkim/*
154193267Sjkim * All tables must be byte-packed to match the ACPI specification, since
155193267Sjkim * the tables are provided by the system BIOS.
156193267Sjkim */
157197104Sjkim#pragma pack(1)
158193267Sjkim
159193267Sjkim/*
160197104Sjkim * Note about bitfields: The UINT8 type is used for bitfields in ACPI tables.
161197104Sjkim * This is the only type that is even remotely portable. Anything else is not
162197104Sjkim * portable, so do not use any other bitfield types.
163197104Sjkim */
164193267Sjkim
165197104Sjkim
166193267Sjkim/* Common Sub-table header (used in MADT, SRAT, etc.) */
167197104Sjkim
168167802Sjkimtypedef struct acpi_subtable_header
169197104Sjkim{
170197104Sjkim    UINT8                   Type;
171197104Sjkim    UINT8                   Length;
172197104Sjkim
173197104Sjkim} ACPI_SUBTABLE_HEADER;
174197104Sjkim
175167802Sjkim
176197104Sjkim/*******************************************************************************
177197104Sjkim *
178197104Sjkim * ASF - Alert Standard Format table (Signature "ASF!")
179197104Sjkim *
180167802Sjkim * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003
181167802Sjkim *
182167802Sjkim ******************************************************************************/
183167802Sjkim
184197104Sjkimtypedef struct acpi_table_asf
185197104Sjkim{
186167802Sjkim    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
187167802Sjkim
188167802Sjkim} ACPI_TABLE_ASF;
189167802Sjkim
190167802Sjkim
191167802Sjkim/* ASF subtable header */
192167802Sjkim
193167802Sjkimtypedef struct acpi_asf_header
194167802Sjkim{
195167802Sjkim    UINT8                   Type;
196167802Sjkim    UINT8                   Reserved;
197167802Sjkim    UINT16                  Length;
198167802Sjkim
199167802Sjkim} ACPI_ASF_HEADER;
200167802Sjkim
201197104Sjkim
202167802Sjkim/* Values for Type field above */
203167802Sjkim
204167802Sjkimenum AcpiAsfType
205167802Sjkim{
206167802Sjkim    ACPI_ASF_TYPE_INFO          = 0,
207167802Sjkim    ACPI_ASF_TYPE_ALERT         = 1,
208167802Sjkim    ACPI_ASF_TYPE_CONTROL       = 2,
209167802Sjkim    ACPI_ASF_TYPE_BOOT          = 3,
210167802Sjkim    ACPI_ASF_TYPE_ADDRESS       = 4,
211167802Sjkim    ACPI_ASF_TYPE_RESERVED      = 5
212197104Sjkim};
213167802Sjkim
214167802Sjkim/*
215167802Sjkim * ASF subtables
216167802Sjkim */
217167802Sjkim
218167802Sjkim/* 0: ASF Information */
219167802Sjkim
220167802Sjkimtypedef struct acpi_asf_info
221167802Sjkim{
222167802Sjkim    ACPI_ASF_HEADER         Header;
223167802Sjkim    UINT8                   MinResetValue;
224167802Sjkim    UINT8                   MinPollInterval;
225167802Sjkim    UINT16                  SystemId;
226167802Sjkim    UINT32                  MfgId;
227167802Sjkim    UINT8                   Flags;
228167802Sjkim    UINT8                   Reserved2[3];
229167802Sjkim
230197104Sjkim} ACPI_ASF_INFO;
231197104Sjkim
232193267Sjkim/* 1: ASF Alerts */
233193267Sjkim
234193267Sjkimtypedef struct acpi_asf_alert
235193267Sjkim{
236193267Sjkim    ACPI_ASF_HEADER         Header;
237193267Sjkim    UINT8                   AssertMask;
238193267Sjkim    UINT8                   DeassertMask;
239197104Sjkim    UINT8                   Alerts;
240197104Sjkim    UINT8                   DataLength;
241193267Sjkim
242193267Sjkim} ACPI_ASF_ALERT;
243193267Sjkim
244193267Sjkimtypedef struct acpi_asf_alert_data
245197104Sjkim{
246193267Sjkim    UINT8                   Address;
247193267Sjkim    UINT8                   Command;
248193267Sjkim    UINT8                   Mask;
249193267Sjkim    UINT8                   Value;
250193267Sjkim    UINT8                   SensorType;
251193267Sjkim    UINT8                   Type;
252193267Sjkim    UINT8                   Offset;
253193267Sjkim    UINT8                   SourceType;
254197104Sjkim    UINT8                   Severity;
255197104Sjkim    UINT8                   SensorNumber;
256197104Sjkim    UINT8                   Entity;
257197104Sjkim    UINT8                   Instance;
258193267Sjkim
259193267Sjkim} ACPI_ASF_ALERT_DATA;
260193267Sjkim
261193267Sjkim/* 2: ASF Remote Control */
262228110Sjkim
263228110Sjkimtypedef struct acpi_asf_remote
264228110Sjkim{
265228110Sjkim    ACPI_ASF_HEADER         Header;
266228110Sjkim    UINT8                   Controls;
267228110Sjkim    UINT8                   DataLength;
268228110Sjkim    UINT16                  Reserved2;
269228110Sjkim
270228110Sjkim} ACPI_ASF_REMOTE;
271228110Sjkim
272228110Sjkimtypedef struct acpi_asf_control_data
273193267Sjkim{
274193267Sjkim    UINT8                   Function;
275193267Sjkim    UINT8                   Address;
276193267Sjkim    UINT8                   Command;
277193267Sjkim    UINT8                   Value;
278193267Sjkim
279193267Sjkim} ACPI_ASF_CONTROL_DATA;
280193267Sjkim
281193267Sjkim/* 3: ASF RMCP Boot Options */
282193267Sjkim
283193267Sjkimtypedef struct acpi_asf_rmcp
284228110Sjkim{
285228110Sjkim    ACPI_ASF_HEADER         Header;
286193267Sjkim    UINT8                   Capabilities[7];
287193267Sjkim    UINT8                   CompletionCode;
288228110Sjkim    UINT32                  EnterpriseId;
289228110Sjkim    UINT8                   Command;
290228110Sjkim    UINT16                  Parameter;
291228110Sjkim    UINT16                  BootOptions;
292228110Sjkim    UINT16                  OemParameters;
293228110Sjkim
294228110Sjkim} ACPI_ASF_RMCP;
295228110Sjkim
296228110Sjkim/* 4: ASF Address */
297197104Sjkim
298228110Sjkimtypedef struct acpi_asf_address
299228110Sjkim{
300228110Sjkim    ACPI_ASF_HEADER         Header;
301228110Sjkim    UINT8                   EpromAddress;
302228110Sjkim    UINT8                   Devices;
303228110Sjkim
304228110Sjkim} ACPI_ASF_ADDRESS;
305228110Sjkim
306228110Sjkim
307228110Sjkim/*******************************************************************************
308228110Sjkim *
309228110Sjkim * BOOT - Simple Boot Flag Table
310228110Sjkim *
311228110Sjkim ******************************************************************************/
312193267Sjkim
313193267Sjkimtypedef struct acpi_table_boot
314193267Sjkim{
315193267Sjkim    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
316193267Sjkim    UINT8                   CmosIndex;          /* Index in CMOS RAM for the boot register */
317193267Sjkim    UINT8                   Reserved[3];
318193267Sjkim
319193267Sjkim} ACPI_TABLE_BOOT;
320193267Sjkim
321193267Sjkim
322193267Sjkim/*******************************************************************************
323197104Sjkim *
324193267Sjkim * CPEP - Corrected Platform Error Polling table
325197104Sjkim *
326197104Sjkim ******************************************************************************/
327197104Sjkim
328197104Sjkimtypedef struct acpi_table_cpep
329197104Sjkim{
330197104Sjkim    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
331197104Sjkim    UINT64                  Reserved;
332197104Sjkim
333197104Sjkim} ACPI_TABLE_CPEP;
334197104Sjkim
335197104Sjkim
336197104Sjkim/* Subtable */
337197104Sjkim
338197104Sjkimtypedef struct acpi_cpep_polling
339197104Sjkim{
340197104Sjkim    UINT8                   Type;
341197104Sjkim    UINT8                   Length;
342197104Sjkim    UINT8                   Id;                 /* Processor ID */
343197104Sjkim    UINT8                   Eid;                /* Processor EID */
344197104Sjkim    UINT32                  Interval;           /* Polling interval (msec) */
345197104Sjkim
346197104Sjkim} ACPI_CPEP_POLLING;
347197104Sjkim
348228110Sjkim
349197104Sjkim/*******************************************************************************
350197104Sjkim *
351193267Sjkim * DBGP - Debug Port table
352193267Sjkim *
353197104Sjkim ******************************************************************************/
354197104Sjkim
355193267Sjkimtypedef struct acpi_table_dbgp
356193267Sjkim{
357193267Sjkim    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
358193267Sjkim    UINT8                   Type;               /* 0=full 16550, 1=subset of 16550 */
359193267Sjkim    UINT8                   Reserved[3];
360193267Sjkim    ACPI_GENERIC_ADDRESS    DebugPort;
361193267Sjkim
362193267Sjkim} ACPI_TABLE_DBGP;
363193267Sjkim
364193267Sjkim
365193267Sjkim/*******************************************************************************
366193267Sjkim *
367197104Sjkim * DMAR - DMA Remapping table
368193267Sjkim *
369193267Sjkim ******************************************************************************/
370193267Sjkim
371193267Sjkimtypedef struct acpi_table_dmar
372193267Sjkim{
373193267Sjkim    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
374193267Sjkim    UINT8                   Width;              /* Host Address Width */
375193267Sjkim    UINT8                   Reserved[11];
376197104Sjkim
377197104Sjkim} ACPI_TABLE_DMAR;
378197104Sjkim
379197104Sjkim/* DMAR subtable header */
380193267Sjkim
381193267Sjkimtypedef struct acpi_dmar_header
382193267Sjkim{
383193267Sjkim    UINT16                  Type;
384197104Sjkim    UINT16                  Length;
385197104Sjkim    UINT8                   Flags;
386197104Sjkim    UINT8                   Reserved[3];
387197104Sjkim
388193267Sjkim} ACPI_DMAR_HEADER;
389193267Sjkim
390193267Sjkim/* Values for subtable type in ACPI_DMAR_HEADER */
391193267Sjkim
392197104Sjkimenum AcpiDmarType
393197104Sjkim{
394193267Sjkim    ACPI_DMAR_TYPE_HARDWARE_UNIT        = 0,
395193267Sjkim    ACPI_DMAR_TYPE_RESERVED_MEMORY      = 1,
396193267Sjkim    ACPI_DMAR_TYPE_RESERVED             = 2     /* 2 and greater are reserved */
397193267Sjkim};
398193267Sjkim
399193267Sjkimtypedef struct acpi_dmar_device_scope
400193267Sjkim{
401193267Sjkim    UINT8                   EntryType;
402193267Sjkim    UINT8                   Length;
403193267Sjkim    UINT8                   Segment;
404193267Sjkim    UINT8                   Bus;
405193267Sjkim
406193267Sjkim} ACPI_DMAR_DEVICE_SCOPE;
407193267Sjkim
408193267Sjkim/* Values for EntryType in ACPI_DMAR_DEVICE_SCOPE */
409193267Sjkim
410193267Sjkimenum AcpiDmarScopeType
411193267Sjkim{
412193267Sjkim    ACPI_DMAR_SCOPE_TYPE_NOT_USED       = 0,
413193267Sjkim    ACPI_DMAR_SCOPE_TYPE_ENDPOINT       = 1,
414193267Sjkim    ACPI_DMAR_SCOPE_TYPE_BRIDGE         = 2,
415193267Sjkim    ACPI_DMAR_SCOPE_TYPE_RESERVED       = 3     /* 3 and greater are reserved */
416193267Sjkim};
417193267Sjkim
418193267Sjkim
419193267Sjkim/*
420193267Sjkim * DMAR Sub-tables, correspond to Type in ACPI_DMAR_HEADER
421193267Sjkim */
422193267Sjkim
423193267Sjkim/* 0: Hardware Unit Definition */
424193267Sjkim
425193267Sjkimtypedef struct acpi_dmar_hardware_unit
426193267Sjkim{
427193267Sjkim    ACPI_DMAR_HEADER        Header;
428193267Sjkim    UINT64                  Address;            /* Register Base Address */
429197104Sjkim
430193267Sjkim} ACPI_DMAR_HARDWARE_UNIT;
431197104Sjkim
432197104Sjkim/* Flags */
433197104Sjkim
434197104Sjkim#define ACPI_DMAR_INCLUDE_ALL       (1)
435197104Sjkim
436197104Sjkim/* 1: Reserved Memory Defininition */
437197104Sjkim
438197104Sjkimtypedef struct acpi_dmar_reserved_memory
439197104Sjkim{
440197104Sjkim    ACPI_DMAR_HEADER        Header;
441197104Sjkim    UINT64                  Address;            /* 4K aligned base address */
442197104Sjkim    UINT64                  EndAddress;         /* 4K aligned limit address */
443197104Sjkim
444197104Sjkim} ACPI_DMAR_RESERVED_MEMORY;
445197104Sjkim
446197104Sjkim/* Flags */
447197104Sjkim
448197104Sjkim#define ACPI_DMAR_ALLOW_ALL         (1)
449197104Sjkim
450197104Sjkim
451197104Sjkim/*******************************************************************************
452197104Sjkim *
453193267Sjkim * ECDT - Embedded Controller Boot Resources Table
454193267Sjkim *
455197104Sjkim ******************************************************************************/
456197104Sjkim
457193267Sjkimtypedef struct acpi_table_ecdt
458193267Sjkim{
459193267Sjkim    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
460193267Sjkim    ACPI_GENERIC_ADDRESS    Control;            /* Address of EC command/status register */
461193267Sjkim    ACPI_GENERIC_ADDRESS    Data;               /* Address of EC data register */
462193267Sjkim    UINT32                  Uid;                /* Unique ID - must be same as the EC _UID method */
463193267Sjkim    UINT8                   Gpe;                /* The GPE for the EC */
464193267Sjkim    UINT8                   Id[1];              /* Full namepath of the EC in the ACPI namespace */
465193267Sjkim
466193267Sjkim} ACPI_TABLE_ECDT;
467193267Sjkim
468193267Sjkim
469193267Sjkim/*******************************************************************************
470193267Sjkim *
471193267Sjkim * HPET - High Precision Event Timer table
472193267Sjkim *
473197104Sjkim ******************************************************************************/
474193267Sjkim
475193267Sjkimtypedef struct acpi_table_hpet
476193267Sjkim{
477193267Sjkim    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
478193267Sjkim    UINT32                  Id;                 /* Hardware ID of event timer block */
479193267Sjkim    ACPI_GENERIC_ADDRESS    Address;            /* Address of event timer block */
480193267Sjkim    UINT8                   Sequence;           /* HPET sequence number */
481193267Sjkim    UINT16                  MinimumTick;        /* Main counter min tick, periodic mode */
482197104Sjkim    UINT8                   Flags;
483197104Sjkim
484197104Sjkim} ACPI_TABLE_HPET;
485197104Sjkim
486197104Sjkim/*! Flags */
487197104Sjkim
488197104Sjkim#define ACPI_HPET_PAGE_PROTECT      (1)         /* 00: No page protection */
489197104Sjkim#define ACPI_HPET_PAGE_PROTECT_4    (1<<1)      /* 01: 4KB page protected */
490197104Sjkim#define ACPI_HPET_PAGE_PROTECT_64   (1<<2)      /* 02: 64KB page protected */
491197104Sjkim
492197104Sjkim/*! [End] no source code translation !*/
493193267Sjkim
494193267Sjkim
495193267Sjkim/*******************************************************************************
496193267Sjkim *
497197104Sjkim * MADT - Multiple APIC Description Table
498193267Sjkim *
499193267Sjkim ******************************************************************************/
500197104Sjkim
501197104Sjkimtypedef struct acpi_table_madt
502197104Sjkim{
503197104Sjkim    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
504197104Sjkim    UINT32                  Address;            /* Physical address of local APIC */
505193267Sjkim    UINT32                  Flags;
506193267Sjkim
507193267Sjkim} ACPI_TABLE_MADT;
508193267Sjkim
509197104Sjkim/* Flags */
510193267Sjkim
511197104Sjkim#define ACPI_MADT_PCAT_COMPAT       (1)         /* 00:    System also has dual 8259s */
512193267Sjkim
513193267Sjkim/* Values for PCATCompat flag */
514193267Sjkim
515193267Sjkim#define ACPI_MADT_DUAL_PIC          0
516197104Sjkim#define ACPI_MADT_MULTIPLE_APIC     1
517193267Sjkim
518193267Sjkim
519197104Sjkim/* Values for subtable type in ACPI_SUBTABLE_HEADER */
520193267Sjkim
521193267Sjkimenum AcpiMadtType
522193267Sjkim{
523197104Sjkim    ACPI_MADT_TYPE_LOCAL_APIC           = 0,
524193267Sjkim    ACPI_MADT_TYPE_IO_APIC              = 1,
525193267Sjkim    ACPI_MADT_TYPE_INTERRUPT_OVERRIDE   = 2,
526197104Sjkim    ACPI_MADT_TYPE_NMI_SOURCE           = 3,
527193267Sjkim    ACPI_MADT_TYPE_LOCAL_APIC_NMI       = 4,
528272444Sjkim    ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE  = 5,
529193267Sjkim    ACPI_MADT_TYPE_IO_SAPIC             = 6,
530193267Sjkim    ACPI_MADT_TYPE_LOCAL_SAPIC          = 7,
531193267Sjkim    ACPI_MADT_TYPE_INTERRUPT_SOURCE     = 8,
532197104Sjkim    ACPI_MADT_TYPE_RESERVED             = 9     /* 9 and greater are reserved */
533197104Sjkim};
534197104Sjkim
535197104Sjkim
536197104Sjkim/*
537193267Sjkim * MADT Sub-tables, correspond to Type in ACPI_SUBTABLE_HEADER
538193267Sjkim */
539193267Sjkim
540197104Sjkim/* 0: Processor Local APIC */
541193267Sjkim
542197104Sjkimtypedef struct acpi_madt_local_apic
543197104Sjkim{
544197104Sjkim    ACPI_SUBTABLE_HEADER    Header;
545272444Sjkim    UINT8                   ProcessorId;        /* ACPI processor id */
546272444Sjkim    UINT8                   Id;                 /* Processor's local APIC id */
547272444Sjkim    UINT32                  LapicFlags;
548272444Sjkim
549272444Sjkim} ACPI_MADT_LOCAL_APIC;
550272444Sjkim
551272444Sjkim/* 1: IO APIC */
552197104Sjkim
553272444Sjkimtypedef struct acpi_madt_io_apic
554193267Sjkim{
555193267Sjkim    ACPI_SUBTABLE_HEADER    Header;
556193267Sjkim    UINT8                   Id;                 /* I/O APIC ID */
557193267Sjkim    UINT8                   Reserved;           /* Reserved - must be zero */
558193267Sjkim    UINT32                  Address;            /* APIC physical address */
559193267Sjkim    UINT32                  GlobalIrqBase;      /* Global system interrupt where INTI lines start */
560193267Sjkim
561193267Sjkim} ACPI_MADT_IO_APIC;
562193267Sjkim
563193267Sjkim/* 2: Interrupt Override */
564193267Sjkim
565193267Sjkimtypedef struct acpi_madt_interrupt_override
566193267Sjkim{
567193267Sjkim    ACPI_SUBTABLE_HEADER    Header;
568193267Sjkim    UINT8                   Bus;                /* 0 - ISA */
569193267Sjkim    UINT8                   SourceIrq;          /* Interrupt source (IRQ) */
570193267Sjkim    UINT32                  GlobalIrq;          /* Global system interrupt */
571193267Sjkim    UINT16                  IntiFlags;
572193267Sjkim
573193267Sjkim} ACPI_MADT_INTERRUPT_OVERRIDE;
574193267Sjkim
575193267Sjkim/* 3: NMI Source */
576193267Sjkim
577193267Sjkimtypedef struct acpi_madt_nmi_source
578193267Sjkim{
579240716Sjkim    ACPI_SUBTABLE_HEADER    Header;
580240716Sjkim    UINT16                  IntiFlags;
581240716Sjkim    UINT32                  GlobalIrq;          /* Global system interrupt */
582193267Sjkim
583193267Sjkim} ACPI_MADT_NMI_SOURCE;
584197104Sjkim
585193267Sjkim/* 4: Local APIC NMI */
586197104Sjkim
587197104Sjkimtypedef struct acpi_madt_local_apic_nmi
588197104Sjkim{
589197104Sjkim    ACPI_SUBTABLE_HEADER    Header;
590197104Sjkim    UINT8                   ProcessorId;        /* ACPI processor id */
591197104Sjkim    UINT16                  IntiFlags;
592197104Sjkim    UINT8                   Lint;               /* LINTn to which NMI is connected */
593197104Sjkim
594193267Sjkim} ACPI_MADT_LOCAL_APIC_NMI;
595193267Sjkim
596193267Sjkim/* 5: Address Override */
597193267Sjkim
598197104Sjkimtypedef struct acpi_madt_local_apic_override
599193267Sjkim{
600197104Sjkim    ACPI_SUBTABLE_HEADER    Header;
601193267Sjkim    UINT16                  Reserved;           /* Reserved, must be zero */
602193267Sjkim    UINT64                  Address;            /* APIC physical address */
603197104Sjkim
604193267Sjkim} ACPI_MADT_LOCAL_APIC_OVERRIDE;
605197104Sjkim
606197104Sjkim/* 6: I/O Sapic */
607193267Sjkim
608193267Sjkimtypedef struct acpi_madt_io_sapic
609193267Sjkim{
610193267Sjkim    ACPI_SUBTABLE_HEADER    Header;
611197104Sjkim    UINT8                   Id;                 /* I/O SAPIC ID */
612193267Sjkim    UINT8                   Reserved;           /* Reserved, must be zero */
613197104Sjkim    UINT32                  GlobalIrqBase;      /* Global interrupt for SAPIC start */
614193267Sjkim    UINT64                  Address;            /* SAPIC physical address */
615193267Sjkim
616197104Sjkim} ACPI_MADT_IO_SAPIC;
617193267Sjkim
618197104Sjkim/* 7: Local Sapic */
619193267Sjkim
620193267Sjkimtypedef struct acpi_madt_local_sapic
621197104Sjkim{
622193267Sjkim    ACPI_SUBTABLE_HEADER    Header;
623193267Sjkim    UINT8                   ProcessorId;        /* ACPI processor id */
624197104Sjkim    UINT8                   Id;                 /* SAPIC ID */
625193267Sjkim    UINT8                   Eid;                /* SAPIC EID */
626193267Sjkim    UINT8                   Reserved[3];        /* Reserved, must be zero */
627193267Sjkim    UINT32                  LapicFlags;
628197104Sjkim    UINT32                  Uid;                /* Numeric UID - ACPI 3.0 */
629193267Sjkim    char                    UidString[1];       /* String UID  - ACPI 3.0 */
630197104Sjkim
631193267Sjkim} ACPI_MADT_LOCAL_SAPIC;
632193267Sjkim
633197104Sjkim/* 8: Platform Interrupt Source */
634193267Sjkim
635197104Sjkimtypedef struct acpi_madt_interrupt_source
636193267Sjkim{
637193267Sjkim    ACPI_SUBTABLE_HEADER    Header;
638193267Sjkim    UINT16                  IntiFlags;
639197104Sjkim    UINT8                   Type;               /* 1=PMI, 2=INIT, 3=corrected */
640193267Sjkim    UINT8                   Id;                 /* Processor ID */
641193267Sjkim    UINT8                   Eid;                /* Processor EID */
642193267Sjkim    UINT8                   IoSapicVector;      /* Vector value for PMI interrupts */
643197104Sjkim    UINT32                  GlobalIrq;          /* Global system interrupt */
644193267Sjkim    UINT32                  Flags;              /* Interrupt Source Flags */
645193267Sjkim
646197104Sjkim} ACPI_MADT_INTERRUPT_SOURCE;
647193267Sjkim
648193267Sjkim/* Flags field above */
649193267Sjkim
650193267Sjkim#define ACPI_MADT_CPEI_OVERRIDE     (1)
651193267Sjkim
652193267Sjkim
653193267Sjkim/*
654193267Sjkim * Common flags fields for MADT subtables
655193267Sjkim */
656193267Sjkim
657193267Sjkim/* MADT Local APIC flags (LapicFlags) */
658193267Sjkim
659193267Sjkim#define ACPI_MADT_ENABLED           (1)         /* 00: Processor is usable if set */
660193267Sjkim
661193267Sjkim/* MADT MPS INTI flags (IntiFlags) */
662193267Sjkim
663193267Sjkim#define ACPI_MADT_POLARITY_MASK     (3)         /* 00-01: Polarity of APIC I/O input signals */
664193267Sjkim#define ACPI_MADT_TRIGGER_MASK      (3<<2)      /* 02-03: Trigger mode of APIC input signals */
665193267Sjkim
666193267Sjkim/* Values for MPS INTI flags */
667193267Sjkim
668193267Sjkim#define ACPI_MADT_POLARITY_CONFORMS       0
669193267Sjkim#define ACPI_MADT_POLARITY_ACTIVE_HIGH    1
670193267Sjkim#define ACPI_MADT_POLARITY_RESERVED       2
671193267Sjkim#define ACPI_MADT_POLARITY_ACTIVE_LOW     3
672193267Sjkim
673193267Sjkim#define ACPI_MADT_TRIGGER_CONFORMS        (0)
674193267Sjkim#define ACPI_MADT_TRIGGER_EDGE            (1<<2)
675197104Sjkim#define ACPI_MADT_TRIGGER_RESERVED        (2<<2)
676197104Sjkim#define ACPI_MADT_TRIGGER_LEVEL           (3<<2)
677197104Sjkim
678193267Sjkim
679193267Sjkim/*******************************************************************************
680193267Sjkim *
681193267Sjkim * MCFG - PCI Memory Mapped Configuration table and sub-table
682193267Sjkim *
683193267Sjkim ******************************************************************************/
684193267Sjkim
685193267Sjkimtypedef struct acpi_table_mcfg
686193267Sjkim{
687193267Sjkim    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
688197104Sjkim    UINT8                   Reserved[8];
689193267Sjkim
690197104Sjkim} ACPI_TABLE_MCFG;
691193267Sjkim
692193267Sjkim
693193267Sjkim/* Subtable */
694193267Sjkim
695197104Sjkimtypedef struct acpi_mcfg_allocation
696193267Sjkim{
697193267Sjkim    UINT64                  Address;            /* Base address, processor-relative */
698193267Sjkim    UINT16                  PciSegment;         /* PCI segment group number */
699193267Sjkim    UINT8                   StartBusNumber;     /* Starting PCI Bus number */
700197104Sjkim    UINT8                   EndBusNumber;       /* Final PCI Bus number */
701167802Sjkim    UINT32                  Reserved;
702197104Sjkim
703167802Sjkim} ACPI_MCFG_ALLOCATION;
704197104Sjkim
705197104Sjkim
706197104Sjkim/*******************************************************************************
707197104Sjkim *
708197104Sjkim * SBST - Smart Battery Specification Table
709167802Sjkim *
710197104Sjkim ******************************************************************************/
711167802Sjkim
712197104Sjkimtypedef struct acpi_table_sbst
713167802Sjkim{
714197104Sjkim    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
715197104Sjkim    UINT32                  WarningLevel;
716197104Sjkim    UINT32                  LowLevel;
717197104Sjkim    UINT32                  CriticalLevel;
718197104Sjkim
719167802Sjkim} ACPI_TABLE_SBST;
720167802Sjkim
721197104Sjkim
722167802Sjkim/*******************************************************************************
723197104Sjkim *
724193267Sjkim * SLIT - System Locality Distance Information Table
725197104Sjkim *
726197104Sjkim ******************************************************************************/
727197104Sjkim
728197104Sjkimtypedef struct acpi_table_slit
729193267Sjkim{
730197104Sjkim    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
731197104Sjkim    UINT64                  LocalityCount;
732197104Sjkim    UINT8                   Entry[1];           /* Real size = localities^2 */
733193267Sjkim
734197104Sjkim} ACPI_TABLE_SLIT;
735193267Sjkim
736193267Sjkim
737193267Sjkim/*******************************************************************************
738193267Sjkim *
739167802Sjkim * SPCR - Serial Port Console Redirection table
740197104Sjkim *
741167802Sjkim ******************************************************************************/
742167802Sjkim
743167802Sjkimtypedef struct acpi_table_spcr
744167802Sjkim{
745167802Sjkim    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
746167802Sjkim    UINT8                   InterfaceType;      /* 0=full 16550, 1=subset of 16550 */
747167802Sjkim    UINT8                   Reserved[3];
748167802Sjkim    ACPI_GENERIC_ADDRESS    SerialPort;
749167802Sjkim    UINT8                   InterruptType;
750167802Sjkim    UINT8                   PcInterrupt;
751167802Sjkim    UINT32                  Interrupt;
752197104Sjkim    UINT8                   BaudRate;
753167802Sjkim    UINT8                   Parity;
754197104Sjkim    UINT8                   StopBits;
755167802Sjkim    UINT8                   FlowControl;
756167802Sjkim    UINT8                   TerminalType;
757167802Sjkim    UINT8                   Reserved1;
758167802Sjkim    UINT16                  PciDeviceId;
759167802Sjkim    UINT16                  PciVendorId;
760167802Sjkim    UINT8                   PciBus;
761167802Sjkim    UINT8                   PciDevice;
762197104Sjkim    UINT8                   PciFunction;
763167802Sjkim    UINT32                  PciFlags;
764167802Sjkim    UINT8                   PciSegment;
765167802Sjkim    UINT32                  Reserved2;
766272444Sjkim
767272444Sjkim} ACPI_TABLE_SPCR;
768272444Sjkim
769272444Sjkim
770272444Sjkim/*******************************************************************************
771272444Sjkim *
772272444Sjkim * SPMI - Server Platform Management Interface table
773272444Sjkim *
774272444Sjkim ******************************************************************************/
775272444Sjkim
776272444Sjkimtypedef struct acpi_table_spmi
777272444Sjkim{
778272444Sjkim    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
779272444Sjkim    UINT8                   Reserved;
780272444Sjkim    UINT8                   InterfaceType;
781283092Sjkim    UINT16                  SpecRevision;       /* Version of IPMI */
782283092Sjkim    UINT8                   InterruptType;
783167802Sjkim    UINT8                   GpeNumber;          /* GPE assigned */
784167802Sjkim    UINT8                   Reserved1;
785167802Sjkim    UINT8                   PciDeviceFlag;
786167802Sjkim    UINT32                  Interrupt;
787272444Sjkim    ACPI_GENERIC_ADDRESS    IpmiRegister;
788167802Sjkim    UINT8                   PciSegment;
789167802Sjkim    UINT8                   PciBus;
790167802Sjkim    UINT8                   PciDevice;
791167802Sjkim    UINT8                   PciFunction;
792167802Sjkim
793167802Sjkim} ACPI_TABLE_SPMI;
794167802Sjkim
795167802Sjkim
796167802Sjkim/*******************************************************************************
797167802Sjkim *
798167802Sjkim * SRAT - System Resource Affinity Table
799167802Sjkim *
800167802Sjkim ******************************************************************************/
801197104Sjkim
802167802Sjkimtypedef struct acpi_table_srat
803167802Sjkim{
804167802Sjkim    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
805167802Sjkim    UINT32                  TableRevision;      /* Must be value '1' */
806167802Sjkim    UINT64                  Reserved;           /* Reserved, must be zero */
807167802Sjkim
808167802Sjkim} ACPI_TABLE_SRAT;
809167802Sjkim
810167802Sjkim/* Values for subtable type in ACPI_SUBTABLE_HEADER */
811167802Sjkim
812167802Sjkimenum AcpiSratType
813167802Sjkim{
814197104Sjkim    ACPI_SRAT_TYPE_CPU_AFFINITY     = 0,
815167802Sjkim    ACPI_SRAT_TYPE_MEMORY_AFFINITY  = 1,
816167802Sjkim    ACPI_SRAT_TYPE_RESERVED         = 2
817167802Sjkim};
818167802Sjkim
819167802Sjkim/* SRAT sub-tables */
820167802Sjkim
821167802Sjkimtypedef struct acpi_srat_cpu_affinity
822167802Sjkim{
823167802Sjkim    ACPI_SUBTABLE_HEADER    Header;
824167802Sjkim    UINT8                   ProximityDomainLo;
825167802Sjkim    UINT8                   ApicId;
826167802Sjkim    UINT32                  Flags;
827197104Sjkim    UINT8                   LocalSapicEid;
828167802Sjkim    UINT8                   ProximityDomainHi[3];
829167802Sjkim    UINT32                  Reserved;           /* Reserved, must be zero */
830167802Sjkim
831167802Sjkim} ACPI_SRAT_CPU_AFFINITY;
832167802Sjkim
833167802Sjkim/* Flags */
834167802Sjkim
835167802Sjkim#define ACPI_SRAT_CPU_ENABLED       (1)         /* 00: Use affinity structure */
836167802Sjkim
837167802Sjkim
838197104Sjkimtypedef struct acpi_srat_mem_affinity
839167802Sjkim{
840167802Sjkim    ACPI_SUBTABLE_HEADER    Header;
841167802Sjkim    UINT32                  ProximityDomain;
842167802Sjkim    UINT16                  Reserved;           /* Reserved, must be zero */
843167802Sjkim    UINT64                  BaseAddress;
844167802Sjkim    UINT64                  Length;
845167802Sjkim    UINT32                  MemoryType;         /* See acpi_address_range_id */
846167802Sjkim    UINT32                  Flags;
847167802Sjkim    UINT64                  Reserved1;          /* Reserved, must be zero */
848167802Sjkim
849167802Sjkim} ACPI_SRAT_MEM_AFFINITY;
850197104Sjkim
851167802Sjkim/* Flags */
852167802Sjkim
853167802Sjkim#define ACPI_SRAT_MEM_ENABLED       (1)         /* 00: Use affinity structure */
854167802Sjkim#define ACPI_SRAT_MEM_HOT_PLUGGABLE (1<<1)      /* 01: Memory region is hot pluggable */
855167802Sjkim#define ACPI_SRAT_MEM_NON_VOLATILE  (1<<2)      /* 02: Memory region is non-volatile */
856167802Sjkim
857167802Sjkim/* Memory types */
858167802Sjkim
859167802Sjkimenum acpi_address_range_id
860167802Sjkim{
861197104Sjkim    ACPI_ADDRESS_RANGE_MEMORY   = 1,
862167802Sjkim    ACPI_ADDRESS_RANGE_RESERVED = 2,
863167802Sjkim    ACPI_ADDRESS_RANGE_ACPI     = 3,
864167802Sjkim    ACPI_ADDRESS_RANGE_NVS      = 4,
865167802Sjkim    ACPI_ADDRESS_RANGE_COUNT    = 5
866167802Sjkim};
867167802Sjkim
868167802Sjkim
869167802Sjkim/*******************************************************************************
870167802Sjkim *
871167802Sjkim * TCPA - Trusted Computing Platform Alliance table
872167802Sjkim *
873167802Sjkim ******************************************************************************/
874197104Sjkim
875167802Sjkimtypedef struct acpi_table_tcpa
876167802Sjkim{
877167802Sjkim    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
878167802Sjkim    UINT16                  Reserved;
879167802Sjkim    UINT32                  MaxLogLength;       /* Maximum length for the event log area */
880167802Sjkim    UINT64                  LogAddress;         /* Address of the event log area */
881167802Sjkim
882167802Sjkim} ACPI_TABLE_TCPA;
883167802Sjkim
884167802Sjkim
885167802Sjkim/*******************************************************************************
886167802Sjkim *
887167802Sjkim * WDRT - Watchdog Resource Table
888167802Sjkim *
889167802Sjkim ******************************************************************************/
890197104Sjkim
891167802Sjkimtypedef struct acpi_table_wdrt
892167802Sjkim{
893167802Sjkim    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
894167802Sjkim    UINT32                  HeaderLength;       /* Watchdog Header Length */
895167802Sjkim    UINT8                   PciSegment;         /* PCI Segment number */
896167802Sjkim    UINT8                   PciBus;             /* PCI Bus number */
897167802Sjkim    UINT8                   PciDevice;          /* PCI Device number */
898167802Sjkim    UINT8                   PciFunction;        /* PCI Function number */
899167802Sjkim    UINT32                  TimerPeriod;        /* Period of one timer count (msec) */
900167802Sjkim    UINT32                  MaxCount;           /* Maximum counter value supported */
901167802Sjkim    UINT32                  MinCount;           /* Minimum counter value */
902167802Sjkim    UINT8                   Flags;
903167802Sjkim    UINT8                   Reserved[3];
904167802Sjkim    UINT32                  Entries;            /* Number of watchdog entries that follow */
905167802Sjkim
906197104Sjkim} ACPI_TABLE_WDRT;
907167802Sjkim
908167802Sjkim/* Flags */
909167802Sjkim
910167802Sjkim#define ACPI_WDRT_TIMER_ENABLED     (1)         /* 00: Timer enabled */
911197104Sjkim
912197104Sjkim
913193267Sjkim/* Reset to default packing */
914193267Sjkim
915193267Sjkim#pragma pack()
916193267Sjkim
917193267Sjkim#endif /* __ACTBL1_H__ */
918193267Sjkim