actbl3.h revision 316303
1227896Sjkim/******************************************************************************
2227896Sjkim *
3227896Sjkim * Name: actbl3.h - ACPI Table Definitions
4227896Sjkim *
5227896Sjkim *****************************************************************************/
6227896Sjkim
7316303Sjkim/******************************************************************************
8316303Sjkim *
9316303Sjkim * 1. Copyright Notice
10316303Sjkim *
11316303Sjkim * Some or all of this work - Copyright (c) 1999 - 2017, Intel Corp.
12227896Sjkim * All rights reserved.
13227896Sjkim *
14316303Sjkim * 2. License
15316303Sjkim *
16316303Sjkim * 2.1. This is your license from Intel Corp. under its intellectual property
17316303Sjkim * rights. You may have additional license terms from the party that provided
18316303Sjkim * you this software, covering your right to use that party's intellectual
19316303Sjkim * property rights.
20316303Sjkim *
21316303Sjkim * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
22316303Sjkim * copy of the source code appearing in this file ("Covered Code") an
23316303Sjkim * irrevocable, perpetual, worldwide license under Intel's copyrights in the
24316303Sjkim * base code distributed originally by Intel ("Original Intel Code") to copy,
25316303Sjkim * make derivatives, distribute, use and display any portion of the Covered
26316303Sjkim * Code in any form, with the right to sublicense such rights; and
27316303Sjkim *
28316303Sjkim * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
29316303Sjkim * license (with the right to sublicense), under only those claims of Intel
30316303Sjkim * patents that are infringed by the Original Intel Code, to make, use, sell,
31316303Sjkim * offer to sell, and import the Covered Code and derivative works thereof
32316303Sjkim * solely to the minimum extent necessary to exercise the above copyright
33316303Sjkim * license, and in no event shall the patent license extend to any additions
34316303Sjkim * to or modifications of the Original Intel Code. No other license or right
35316303Sjkim * is granted directly or by implication, estoppel or otherwise;
36316303Sjkim *
37316303Sjkim * The above copyright and patent license is granted only if the following
38316303Sjkim * conditions are met:
39316303Sjkim *
40316303Sjkim * 3. Conditions
41316303Sjkim *
42316303Sjkim * 3.1. Redistribution of Source with Rights to Further Distribute Source.
43316303Sjkim * Redistribution of source code of any substantial portion of the Covered
44316303Sjkim * Code or modification with rights to further distribute source must include
45316303Sjkim * the above Copyright Notice, the above License, this list of Conditions,
46316303Sjkim * and the following Disclaimer and Export Compliance provision. In addition,
47316303Sjkim * Licensee must cause all Covered Code to which Licensee contributes to
48316303Sjkim * contain a file documenting the changes Licensee made to create that Covered
49316303Sjkim * Code and the date of any change. Licensee must include in that file the
50316303Sjkim * documentation of any changes made by any predecessor Licensee. Licensee
51316303Sjkim * must include a prominent statement that the modification is derived,
52316303Sjkim * directly or indirectly, from Original Intel Code.
53316303Sjkim *
54316303Sjkim * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
55316303Sjkim * Redistribution of source code of any substantial portion of the Covered
56316303Sjkim * Code or modification without rights to further distribute source must
57316303Sjkim * include the following Disclaimer and Export Compliance provision in the
58316303Sjkim * documentation and/or other materials provided with distribution. In
59316303Sjkim * addition, Licensee may not authorize further sublicense of source of any
60316303Sjkim * portion of the Covered Code, and must include terms to the effect that the
61316303Sjkim * license from Licensee to its licensee is limited to the intellectual
62316303Sjkim * property embodied in the software Licensee provides to its licensee, and
63316303Sjkim * not to intellectual property embodied in modifications its licensee may
64316303Sjkim * make.
65316303Sjkim *
66316303Sjkim * 3.3. Redistribution of Executable. Redistribution in executable form of any
67316303Sjkim * substantial portion of the Covered Code or modification must reproduce the
68316303Sjkim * above Copyright Notice, and the following Disclaimer and Export Compliance
69316303Sjkim * provision in the documentation and/or other materials provided with the
70316303Sjkim * distribution.
71316303Sjkim *
72316303Sjkim * 3.4. Intel retains all right, title, and interest in and to the Original
73316303Sjkim * Intel Code.
74316303Sjkim *
75316303Sjkim * 3.5. Neither the name Intel nor any other trademark owned or controlled by
76316303Sjkim * Intel shall be used in advertising or otherwise to promote the sale, use or
77316303Sjkim * other dealings in products derived from or relating to the Covered Code
78316303Sjkim * without prior written authorization from Intel.
79316303Sjkim *
80316303Sjkim * 4. Disclaimer and Export Compliance
81316303Sjkim *
82316303Sjkim * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
83316303Sjkim * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
84316303Sjkim * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
85316303Sjkim * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
86316303Sjkim * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
87316303Sjkim * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
88316303Sjkim * PARTICULAR PURPOSE.
89316303Sjkim *
90316303Sjkim * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
91316303Sjkim * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
92316303Sjkim * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
93316303Sjkim * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
94316303Sjkim * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
95316303Sjkim * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
96316303Sjkim * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
97316303Sjkim * LIMITED REMEDY.
98316303Sjkim *
99316303Sjkim * 4.3. Licensee shall not export, either directly or indirectly, any of this
100316303Sjkim * software or system incorporating such software without first obtaining any
101316303Sjkim * required license or other approval from the U. S. Department of Commerce or
102316303Sjkim * any other agency or department of the United States Government. In the
103316303Sjkim * event Licensee exports any such software from the United States or
104316303Sjkim * re-exports any such software from a foreign destination, Licensee shall
105316303Sjkim * ensure that the distribution and export/re-export of the software is in
106316303Sjkim * compliance with all laws, regulations, orders, or other restrictions of the
107316303Sjkim * U.S. Export Administration Regulations. Licensee agrees that neither it nor
108316303Sjkim * any of its subsidiaries will export/re-export any technical data, process,
109316303Sjkim * software, or service, directly or indirectly, to any country for which the
110316303Sjkim * United States government or any agency thereof requires an export license,
111316303Sjkim * other governmental approval, or letter of assurance, without first obtaining
112316303Sjkim * such license, approval or letter.
113316303Sjkim *
114316303Sjkim *****************************************************************************
115316303Sjkim *
116316303Sjkim * Alternatively, you may choose to be licensed under the terms of the
117316303Sjkim * following license:
118316303Sjkim *
119227896Sjkim * Redistribution and use in source and binary forms, with or without
120227896Sjkim * modification, are permitted provided that the following conditions
121227896Sjkim * are met:
122227896Sjkim * 1. Redistributions of source code must retain the above copyright
123227896Sjkim *    notice, this list of conditions, and the following disclaimer,
124227896Sjkim *    without modification.
125227896Sjkim * 2. Redistributions in binary form must reproduce at minimum a disclaimer
126227896Sjkim *    substantially similar to the "NO WARRANTY" disclaimer below
127227896Sjkim *    ("Disclaimer") and any redistribution must be conditioned upon
128227896Sjkim *    including a substantially similar Disclaimer requirement for further
129227896Sjkim *    binary redistribution.
130227896Sjkim * 3. Neither the names of the above-listed copyright holders nor the names
131227896Sjkim *    of any contributors may be used to endorse or promote products derived
132227896Sjkim *    from this software without specific prior written permission.
133227896Sjkim *
134316303Sjkim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
135316303Sjkim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
136316303Sjkim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
137316303Sjkim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
138316303Sjkim * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
139316303Sjkim * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
140316303Sjkim * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
141316303Sjkim * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
142316303Sjkim * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
143316303Sjkim * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
144316303Sjkim * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
145316303Sjkim *
146316303Sjkim * Alternatively, you may choose to be licensed under the terms of the
147227896Sjkim * GNU General Public License ("GPL") version 2 as published by the Free
148227896Sjkim * Software Foundation.
149227896Sjkim *
150316303Sjkim *****************************************************************************/
151227896Sjkim
152227896Sjkim#ifndef __ACTBL3_H__
153227896Sjkim#define __ACTBL3_H__
154227896Sjkim
155227896Sjkim
156227896Sjkim/*******************************************************************************
157227896Sjkim *
158227896Sjkim * Additional ACPI Tables (3)
159227896Sjkim *
160227896Sjkim * These tables are not consumed directly by the ACPICA subsystem, but are
161227896Sjkim * included here to support device drivers and the AML disassembler.
162227896Sjkim *
163284583Sjkim * In general, the tables in this file are fully defined within the ACPI
164284583Sjkim * specification.
165227896Sjkim *
166227896Sjkim ******************************************************************************/
167227896Sjkim
168227896Sjkim
169227896Sjkim/*
170227896Sjkim * Values for description table header signatures for tables defined in this
171227896Sjkim * file. Useful because they make it more difficult to inadvertently type in
172227896Sjkim * the wrong signature.
173227896Sjkim */
174227896Sjkim#define ACPI_SIG_BGRT           "BGRT"      /* Boot Graphics Resource Table */
175227896Sjkim#define ACPI_SIG_DRTM           "DRTM"      /* Dynamic Root of Trust for Measurement table */
176227896Sjkim#define ACPI_SIG_FPDT           "FPDT"      /* Firmware Performance Data Table */
177227896Sjkim#define ACPI_SIG_GTDT           "GTDT"      /* Generic Timer Description Table */
178227896Sjkim#define ACPI_SIG_MPST           "MPST"      /* Memory Power State Table */
179227896Sjkim#define ACPI_SIG_PCCT           "PCCT"      /* Platform Communications Channel Table */
180227896Sjkim#define ACPI_SIG_PMTT           "PMTT"      /* Platform Memory Topology Table */
181227896Sjkim#define ACPI_SIG_RASF           "RASF"      /* RAS Feature table */
182283092Sjkim#define ACPI_SIG_STAO           "STAO"      /* Status Override table */
183283092Sjkim#define ACPI_SIG_WPBT           "WPBT"      /* Windows Platform Binary Table */
184283092Sjkim#define ACPI_SIG_XENV           "XENV"      /* Xen Environment table */
185227896Sjkim
186227896Sjkim#define ACPI_SIG_S3PT           "S3PT"      /* S3 Performance (sub)Table */
187227896Sjkim#define ACPI_SIG_PCCS           "PCC"       /* PCC Shared Memory Region */
188227896Sjkim
189227896Sjkim/* Reserved table signatures */
190227896Sjkim
191227896Sjkim#define ACPI_SIG_MATR           "MATR"      /* Memory Address Translation Table */
192227896Sjkim#define ACPI_SIG_MSDM           "MSDM"      /* Microsoft Data Management Table */
193227896Sjkim
194227896Sjkim/*
195227896Sjkim * All tables must be byte-packed to match the ACPI specification, since
196227896Sjkim * the tables are provided by the system BIOS.
197227896Sjkim */
198227896Sjkim#pragma pack(1)
199227896Sjkim
200227896Sjkim/*
201239340Sjkim * Note: C bitfields are not used for this reason:
202239340Sjkim *
203239340Sjkim * "Bitfields are great and easy to read, but unfortunately the C language
204239340Sjkim * does not specify the layout of bitfields in memory, which means they are
205239340Sjkim * essentially useless for dealing with packed data in on-disk formats or
206239340Sjkim * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me,
207239340Sjkim * this decision was a design error in C. Ritchie could have picked an order
208239340Sjkim * and stuck with it." Norman Ramsey.
209239340Sjkim * See http://stackoverflow.com/a/1053662/41661
210227896Sjkim */
211227896Sjkim
212227896Sjkim
213227896Sjkim/*******************************************************************************
214227896Sjkim *
215227896Sjkim * BGRT - Boot Graphics Resource Table (ACPI 5.0)
216227896Sjkim *        Version 1
217227896Sjkim *
218227896Sjkim ******************************************************************************/
219227896Sjkim
220227896Sjkimtypedef struct acpi_table_bgrt
221227896Sjkim{
222227896Sjkim    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
223227896Sjkim    UINT16                  Version;
224227896Sjkim    UINT8                   Status;
225227896Sjkim    UINT8                   ImageType;
226227896Sjkim    UINT64                  ImageAddress;
227227896Sjkim    UINT32                  ImageOffsetX;
228227896Sjkim    UINT32                  ImageOffsetY;
229227896Sjkim
230227896Sjkim} ACPI_TABLE_BGRT;
231227896Sjkim
232227896Sjkim
233227896Sjkim/*******************************************************************************
234227896Sjkim *
235227896Sjkim * DRTM - Dynamic Root of Trust for Measurement table
236283092Sjkim * Conforms to "TCG D-RTM Architecture" June 17 2013, Version 1.0.0
237283092Sjkim * Table version 1
238227896Sjkim *
239227896Sjkim ******************************************************************************/
240227896Sjkim
241227896Sjkimtypedef struct acpi_table_drtm
242227896Sjkim{
243227896Sjkim    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
244227896Sjkim    UINT64                  EntryBaseAddress;
245227896Sjkim    UINT64                  EntryLength;
246227896Sjkim    UINT32                  EntryAddress32;
247227896Sjkim    UINT64                  EntryAddress64;
248227896Sjkim    UINT64                  ExitAddress;
249227896Sjkim    UINT64                  LogAreaAddress;
250227896Sjkim    UINT32                  LogAreaLength;
251227896Sjkim    UINT64                  ArchDependentAddress;
252227896Sjkim    UINT32                  Flags;
253227896Sjkim
254227896Sjkim} ACPI_TABLE_DRTM;
255227896Sjkim
256283092Sjkim/* Flag Definitions for above */
257227896Sjkim
258283092Sjkim#define ACPI_DRTM_ACCESS_ALLOWED            (1)
259283092Sjkim#define ACPI_DRTM_ENABLE_GAP_CODE           (1<<1)
260283092Sjkim#define ACPI_DRTM_INCOMPLETE_MEASUREMENTS   (1<<2)
261283092Sjkim#define ACPI_DRTM_AUTHORITY_ORDER           (1<<3)
262283092Sjkim
263283092Sjkim
264283092Sjkim/* 1) Validated Tables List (64-bit addresses) */
265283092Sjkim
266283092Sjkimtypedef struct acpi_drtm_vtable_list
267227896Sjkim{
268283092Sjkim    UINT32                  ValidatedTableCount;
269283092Sjkim    UINT64                  ValidatedTables[1];
270227896Sjkim
271283092Sjkim} ACPI_DRTM_VTABLE_LIST;
272227896Sjkim
273283092Sjkim/* 2) Resources List (of Resource Descriptors) */
274227896Sjkim
275283092Sjkim/* Resource Descriptor */
276283092Sjkim
277283092Sjkimtypedef struct acpi_drtm_resource
278283092Sjkim{
279283092Sjkim    UINT8                   Size[7];
280283092Sjkim    UINT8                   Type;
281283092Sjkim    UINT64                  Address;
282283092Sjkim
283283092Sjkim} ACPI_DRTM_RESOURCE;
284283092Sjkim
285227896Sjkimtypedef struct acpi_drtm_resource_list
286227896Sjkim{
287283092Sjkim    UINT32                  ResourceCount;
288283092Sjkim    ACPI_DRTM_RESOURCE      Resources[1];
289227896Sjkim
290227896Sjkim} ACPI_DRTM_RESOURCE_LIST;
291227896Sjkim
292227896Sjkim/* 3) Platform-specific Identifiers List */
293227896Sjkim
294283092Sjkimtypedef struct acpi_drtm_dps_id
295227896Sjkim{
296283092Sjkim    UINT32                  DpsIdLength;
297283092Sjkim    UINT8                   DpsId[16];
298227896Sjkim
299283092Sjkim} ACPI_DRTM_DPS_ID;
300227896Sjkim
301227896Sjkim
302227896Sjkim/*******************************************************************************
303227896Sjkim *
304227896Sjkim * FPDT - Firmware Performance Data Table (ACPI 5.0)
305227896Sjkim *        Version 1
306227896Sjkim *
307227896Sjkim ******************************************************************************/
308227896Sjkim
309227896Sjkimtypedef struct acpi_table_fpdt
310227896Sjkim{
311227896Sjkim    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
312227896Sjkim
313227896Sjkim} ACPI_TABLE_FPDT;
314227896Sjkim
315227896Sjkim
316298714Sjkim/* FPDT subtable header (Performance Record Structure) */
317227896Sjkim
318227896Sjkimtypedef struct acpi_fpdt_header
319227896Sjkim{
320227896Sjkim    UINT16                  Type;
321227896Sjkim    UINT8                   Length;
322227896Sjkim    UINT8                   Revision;
323227896Sjkim
324227896Sjkim} ACPI_FPDT_HEADER;
325227896Sjkim
326227896Sjkim/* Values for Type field above */
327227896Sjkim
328227896Sjkimenum AcpiFpdtType
329227896Sjkim{
330227896Sjkim    ACPI_FPDT_TYPE_BOOT                 = 0,
331246849Sjkim    ACPI_FPDT_TYPE_S3PERF               = 1
332227896Sjkim};
333227896Sjkim
334227896Sjkim
335227896Sjkim/*
336227896Sjkim * FPDT subtables
337227896Sjkim */
338227896Sjkim
339227896Sjkim/* 0: Firmware Basic Boot Performance Record */
340227896Sjkim
341298714Sjkimtypedef struct acpi_fpdt_boot_pointer
342227896Sjkim{
343227896Sjkim    ACPI_FPDT_HEADER        Header;
344227896Sjkim    UINT8                   Reserved[4];
345298714Sjkim    UINT64                  Address;
346227896Sjkim
347298714Sjkim} ACPI_FPDT_BOOT_POINTER;
348227896Sjkim
349227896Sjkim
350227896Sjkim/* 1: S3 Performance Table Pointer Record */
351227896Sjkim
352298714Sjkimtypedef struct acpi_fpdt_s3pt_pointer
353227896Sjkim{
354227896Sjkim    ACPI_FPDT_HEADER        Header;
355227896Sjkim    UINT8                   Reserved[4];
356227896Sjkim    UINT64                  Address;
357227896Sjkim
358298714Sjkim} ACPI_FPDT_S3PT_POINTER;
359227896Sjkim
360227896Sjkim
361227896Sjkim/*
362227896Sjkim * S3PT - S3 Performance Table. This table is pointed to by the
363298714Sjkim * S3 Pointer Record above.
364227896Sjkim */
365227896Sjkimtypedef struct acpi_table_s3pt
366227896Sjkim{
367227896Sjkim    UINT8                   Signature[4]; /* "S3PT" */
368227896Sjkim    UINT32                  Length;
369227896Sjkim
370227896Sjkim} ACPI_TABLE_S3PT;
371227896Sjkim
372227896Sjkim
373227896Sjkim/*
374298714Sjkim * S3PT Subtables (Not part of the actual FPDT)
375227896Sjkim */
376227896Sjkim
377298714Sjkim/* Values for Type field in S3PT header */
378227896Sjkim
379227896Sjkimenum AcpiS3ptType
380227896Sjkim{
381227896Sjkim    ACPI_S3PT_TYPE_RESUME               = 0,
382298714Sjkim    ACPI_S3PT_TYPE_SUSPEND              = 1,
383298714Sjkim    ACPI_FPDT_BOOT_PERFORMANCE          = 2
384227896Sjkim};
385227896Sjkim
386227896Sjkimtypedef struct acpi_s3pt_resume
387227896Sjkim{
388298714Sjkim    ACPI_FPDT_HEADER        Header;
389227896Sjkim    UINT32                  ResumeCount;
390227896Sjkim    UINT64                  FullResume;
391227896Sjkim    UINT64                  AverageResume;
392227896Sjkim
393227896Sjkim} ACPI_S3PT_RESUME;
394227896Sjkim
395227896Sjkimtypedef struct acpi_s3pt_suspend
396227896Sjkim{
397298714Sjkim    ACPI_FPDT_HEADER        Header;
398227896Sjkim    UINT64                  SuspendStart;
399227896Sjkim    UINT64                  SuspendEnd;
400227896Sjkim
401227896Sjkim} ACPI_S3PT_SUSPEND;
402227896Sjkim
403227896Sjkim
404298714Sjkim/*
405298714Sjkim * FPDT Boot Performance Record (Not part of the actual FPDT)
406298714Sjkim */
407298714Sjkimtypedef struct acpi_fpdt_boot
408298714Sjkim{
409298714Sjkim    ACPI_FPDT_HEADER        Header;
410298714Sjkim    UINT8                   Reserved[4];
411298714Sjkim    UINT64                  ResetEnd;
412298714Sjkim    UINT64                  LoadStart;
413298714Sjkim    UINT64                  StartupStart;
414298714Sjkim    UINT64                  ExitServicesEntry;
415298714Sjkim    UINT64                  ExitServicesExit;
416298714Sjkim
417298714Sjkim} ACPI_FPDT_BOOT;
418298714Sjkim
419298714Sjkim
420227896Sjkim/*******************************************************************************
421227896Sjkim *
422272444Sjkim * GTDT - Generic Timer Description Table (ACPI 5.1)
423272444Sjkim *        Version 2
424227896Sjkim *
425227896Sjkim ******************************************************************************/
426227896Sjkim
427227896Sjkimtypedef struct acpi_table_gtdt
428227896Sjkim{
429227896Sjkim    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
430272444Sjkim    UINT64                  CounterBlockAddresss;
431272444Sjkim    UINT32                  Reserved;
432272444Sjkim    UINT32                  SecureEl1Interrupt;
433272444Sjkim    UINT32                  SecureEl1Flags;
434272444Sjkim    UINT32                  NonSecureEl1Interrupt;
435272444Sjkim    UINT32                  NonSecureEl1Flags;
436227896Sjkim    UINT32                  VirtualTimerInterrupt;
437227896Sjkim    UINT32                  VirtualTimerFlags;
438272444Sjkim    UINT32                  NonSecureEl2Interrupt;
439272444Sjkim    UINT32                  NonSecureEl2Flags;
440272444Sjkim    UINT64                  CounterReadBlockAddress;
441272444Sjkim    UINT32                  PlatformTimerCount;
442272444Sjkim    UINT32                  PlatformTimerOffset;
443227896Sjkim
444227896Sjkim} ACPI_TABLE_GTDT;
445227896Sjkim
446272444Sjkim/* Flag Definitions: Timer Block Physical Timers and Virtual timers */
447227896Sjkim
448272444Sjkim#define ACPI_GTDT_INTERRUPT_MODE        (1)
449272444Sjkim#define ACPI_GTDT_INTERRUPT_POLARITY    (1<<1)
450272444Sjkim#define ACPI_GTDT_ALWAYS_ON             (1<<2)
451227896Sjkim
452227896Sjkim
453272444Sjkim/* Common GTDT subtable header */
454227896Sjkim
455272444Sjkimtypedef struct acpi_gtdt_header
456272444Sjkim{
457272444Sjkim    UINT8                   Type;
458272444Sjkim    UINT16                  Length;
459227896Sjkim
460272444Sjkim} ACPI_GTDT_HEADER;
461272444Sjkim
462272444Sjkim/* Values for GTDT subtable type above */
463272444Sjkim
464272444Sjkimenum AcpiGtdtType
465272444Sjkim{
466272444Sjkim    ACPI_GTDT_TYPE_TIMER_BLOCK      = 0,
467272444Sjkim    ACPI_GTDT_TYPE_WATCHDOG         = 1,
468272444Sjkim    ACPI_GTDT_TYPE_RESERVED         = 2    /* 2 and greater are reserved */
469272444Sjkim};
470272444Sjkim
471272444Sjkim
472272444Sjkim/* GTDT Subtables, correspond to Type in acpi_gtdt_header */
473272444Sjkim
474272444Sjkim/* 0: Generic Timer Block */
475272444Sjkim
476272444Sjkimtypedef struct acpi_gtdt_timer_block
477272444Sjkim{
478272444Sjkim    ACPI_GTDT_HEADER        Header;
479272444Sjkim    UINT8                   Reserved;
480272444Sjkim    UINT64                  BlockAddress;
481272444Sjkim    UINT32                  TimerCount;
482272444Sjkim    UINT32                  TimerOffset;
483272444Sjkim
484272444Sjkim} ACPI_GTDT_TIMER_BLOCK;
485272444Sjkim
486272444Sjkim/* Timer Sub-Structure, one per timer */
487272444Sjkim
488272444Sjkimtypedef struct acpi_gtdt_timer_entry
489272444Sjkim{
490272444Sjkim    UINT8                   FrameNumber;
491272444Sjkim    UINT8                   Reserved[3];
492272444Sjkim    UINT64                  BaseAddress;
493272444Sjkim    UINT64                  El0BaseAddress;
494272444Sjkim    UINT32                  TimerInterrupt;
495272444Sjkim    UINT32                  TimerFlags;
496272444Sjkim    UINT32                  VirtualTimerInterrupt;
497272444Sjkim    UINT32                  VirtualTimerFlags;
498272444Sjkim    UINT32                  CommonFlags;
499272444Sjkim
500272444Sjkim} ACPI_GTDT_TIMER_ENTRY;
501272444Sjkim
502272444Sjkim/* Flag Definitions: TimerFlags and VirtualTimerFlags above */
503272444Sjkim
504272444Sjkim#define ACPI_GTDT_GT_IRQ_MODE               (1)
505272444Sjkim#define ACPI_GTDT_GT_IRQ_POLARITY           (1<<1)
506272444Sjkim
507272444Sjkim/* Flag Definitions: CommonFlags above */
508272444Sjkim
509272444Sjkim#define ACPI_GTDT_GT_IS_SECURE_TIMER        (1)
510272444Sjkim#define ACPI_GTDT_GT_ALWAYS_ON              (1<<1)
511272444Sjkim
512272444Sjkim
513272444Sjkim/* 1: SBSA Generic Watchdog Structure */
514272444Sjkim
515272444Sjkimtypedef struct acpi_gtdt_watchdog
516272444Sjkim{
517272444Sjkim    ACPI_GTDT_HEADER        Header;
518272444Sjkim    UINT8                   Reserved;
519272444Sjkim    UINT64                  RefreshFrameAddress;
520272444Sjkim    UINT64                  ControlFrameAddress;
521272444Sjkim    UINT32                  TimerInterrupt;
522272444Sjkim    UINT32                  TimerFlags;
523272444Sjkim
524272444Sjkim} ACPI_GTDT_WATCHDOG;
525272444Sjkim
526272444Sjkim/* Flag Definitions: TimerFlags above */
527272444Sjkim
528272444Sjkim#define ACPI_GTDT_WATCHDOG_IRQ_MODE         (1)
529272444Sjkim#define ACPI_GTDT_WATCHDOG_IRQ_POLARITY     (1<<1)
530272444Sjkim#define ACPI_GTDT_WATCHDOG_SECURE           (1<<2)
531272444Sjkim
532272444Sjkim
533227896Sjkim/*******************************************************************************
534227896Sjkim *
535227896Sjkim * MPST - Memory Power State Table (ACPI 5.0)
536227896Sjkim *        Version 1
537227896Sjkim *
538227896Sjkim ******************************************************************************/
539227896Sjkim
540227896Sjkim#define ACPI_MPST_CHANNEL_INFO \
541227896Sjkim    UINT8                   ChannelId; \
542241973Sjkim    UINT8                   Reserved1[3]; \
543241973Sjkim    UINT16                  PowerNodeCount; \
544241973Sjkim    UINT16                  Reserved2;
545227896Sjkim
546227896Sjkim/* Main table */
547227896Sjkim
548227896Sjkimtypedef struct acpi_table_mpst
549227896Sjkim{
550227896Sjkim    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
551227896Sjkim    ACPI_MPST_CHANNEL_INFO                      /* Platform Communication Channel */
552227896Sjkim
553227896Sjkim} ACPI_TABLE_MPST;
554227896Sjkim
555227896Sjkim
556227896Sjkim/* Memory Platform Communication Channel Info */
557227896Sjkim
558227896Sjkimtypedef struct acpi_mpst_channel
559227896Sjkim{
560227896Sjkim    ACPI_MPST_CHANNEL_INFO                      /* Platform Communication Channel */
561227896Sjkim
562227896Sjkim} ACPI_MPST_CHANNEL;
563227896Sjkim
564227896Sjkim
565227896Sjkim/* Memory Power Node Structure */
566227896Sjkim
567227896Sjkimtypedef struct acpi_mpst_power_node
568227896Sjkim{
569227896Sjkim    UINT8                   Flags;
570227896Sjkim    UINT8                   Reserved1;
571227896Sjkim    UINT16                  NodeId;
572227896Sjkim    UINT32                  Length;
573227896Sjkim    UINT64                  RangeAddress;
574227896Sjkim    UINT64                  RangeLength;
575241973Sjkim    UINT32                  NumPowerStates;
576241973Sjkim    UINT32                  NumPhysicalComponents;
577227896Sjkim
578227896Sjkim} ACPI_MPST_POWER_NODE;
579227896Sjkim
580227896Sjkim/* Values for Flags field above */
581227896Sjkim
582227896Sjkim#define ACPI_MPST_ENABLED               1
583227896Sjkim#define ACPI_MPST_POWER_MANAGED         2
584227896Sjkim#define ACPI_MPST_HOT_PLUG_CAPABLE      4
585227896Sjkim
586227896Sjkim
587227896Sjkim/* Memory Power State Structure (follows POWER_NODE above) */
588227896Sjkim
589227896Sjkimtypedef struct acpi_mpst_power_state
590227896Sjkim{
591227896Sjkim    UINT8                   PowerState;
592227896Sjkim    UINT8                   InfoIndex;
593227896Sjkim
594227896Sjkim} ACPI_MPST_POWER_STATE;
595227896Sjkim
596227896Sjkim
597227896Sjkim/* Physical Component ID Structure (follows POWER_STATE above) */
598227896Sjkim
599227896Sjkimtypedef struct acpi_mpst_component
600227896Sjkim{
601227896Sjkim    UINT16                  ComponentId;
602227896Sjkim
603227896Sjkim} ACPI_MPST_COMPONENT;
604227896Sjkim
605227896Sjkim
606227896Sjkim/* Memory Power State Characteristics Structure (follows all POWER_NODEs) */
607227896Sjkim
608227896Sjkimtypedef struct acpi_mpst_data_hdr
609227896Sjkim{
610227896Sjkim    UINT16                  CharacteristicsCount;
611241973Sjkim    UINT16                  Reserved;
612227896Sjkim
613227896Sjkim} ACPI_MPST_DATA_HDR;
614227896Sjkim
615227896Sjkimtypedef struct acpi_mpst_power_data
616227896Sjkim{
617241973Sjkim    UINT8                   StructureId;
618227896Sjkim    UINT8                   Flags;
619227896Sjkim    UINT16                  Reserved1;
620227896Sjkim    UINT32                  AveragePower;
621227896Sjkim    UINT32                  PowerSaving;
622227896Sjkim    UINT64                  ExitLatency;
623227896Sjkim    UINT64                  Reserved2;
624227896Sjkim
625227896Sjkim} ACPI_MPST_POWER_DATA;
626227896Sjkim
627227896Sjkim/* Values for Flags field above */
628227896Sjkim
629227896Sjkim#define ACPI_MPST_PRESERVE              1
630227896Sjkim#define ACPI_MPST_AUTOENTRY             2
631227896Sjkim#define ACPI_MPST_AUTOEXIT              4
632227896Sjkim
633227896Sjkim
634227896Sjkim/* Shared Memory Region (not part of an ACPI table) */
635227896Sjkim
636227896Sjkimtypedef struct acpi_mpst_shared
637227896Sjkim{
638227896Sjkim    UINT32                  Signature;
639227896Sjkim    UINT16                  PccCommand;
640227896Sjkim    UINT16                  PccStatus;
641241973Sjkim    UINT32                  CommandRegister;
642241973Sjkim    UINT32                  StatusRegister;
643241973Sjkim    UINT32                  PowerStateId;
644241973Sjkim    UINT32                  PowerNodeId;
645227896Sjkim    UINT64                  EnergyConsumed;
646227896Sjkim    UINT64                  AveragePower;
647227896Sjkim
648227896Sjkim} ACPI_MPST_SHARED;
649227896Sjkim
650227896Sjkim
651227896Sjkim/*******************************************************************************
652227896Sjkim *
653227896Sjkim * PCCT - Platform Communications Channel Table (ACPI 5.0)
654227896Sjkim *        Version 1
655227896Sjkim *
656227896Sjkim ******************************************************************************/
657227896Sjkim
658227896Sjkimtypedef struct acpi_table_pcct
659227896Sjkim{
660227896Sjkim    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
661227896Sjkim    UINT32                  Flags;
662272444Sjkim    UINT64                  Reserved;
663227896Sjkim
664227896Sjkim} ACPI_TABLE_PCCT;
665227896Sjkim
666227896Sjkim/* Values for Flags field above */
667227896Sjkim
668227896Sjkim#define ACPI_PCCT_DOORBELL              1
669227896Sjkim
670272444Sjkim/* Values for subtable type in ACPI_SUBTABLE_HEADER */
671272444Sjkim
672272444Sjkimenum AcpiPcctType
673272444Sjkim{
674298714Sjkim    ACPI_PCCT_TYPE_GENERIC_SUBSPACE             = 0,
675298714Sjkim    ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE          = 1,
676298714Sjkim    ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE_TYPE2    = 2,    /* ACPI 6.1 */
677298714Sjkim    ACPI_PCCT_TYPE_RESERVED                     = 3     /* 3 and greater are reserved */
678272444Sjkim};
679272444Sjkim
680227896Sjkim/*
681272444Sjkim * PCCT Subtables, correspond to Type in ACPI_SUBTABLE_HEADER
682227896Sjkim */
683227896Sjkim
684227896Sjkim/* 0: Generic Communications Subspace */
685227896Sjkim
686227896Sjkimtypedef struct acpi_pcct_subspace
687227896Sjkim{
688227896Sjkim    ACPI_SUBTABLE_HEADER    Header;
689227896Sjkim    UINT8                   Reserved[6];
690227896Sjkim    UINT64                  BaseAddress;
691227896Sjkim    UINT64                  Length;
692227896Sjkim    ACPI_GENERIC_ADDRESS    DoorbellRegister;
693227896Sjkim    UINT64                  PreserveMask;
694227896Sjkim    UINT64                  WriteMask;
695272444Sjkim    UINT32                  Latency;
696272444Sjkim    UINT32                  MaxAccessRate;
697272444Sjkim    UINT16                  MinTurnaroundTime;
698227896Sjkim
699227896Sjkim} ACPI_PCCT_SUBSPACE;
700227896Sjkim
701227896Sjkim
702272444Sjkim/* 1: HW-reduced Communications Subspace (ACPI 5.1) */
703272444Sjkim
704272444Sjkimtypedef struct acpi_pcct_hw_reduced
705272444Sjkim{
706272444Sjkim    ACPI_SUBTABLE_HEADER    Header;
707272444Sjkim    UINT32                  DoorbellInterrupt;
708272444Sjkim    UINT8                   Flags;
709272444Sjkim    UINT8                   Reserved;
710272444Sjkim    UINT64                  BaseAddress;
711272444Sjkim    UINT64                  Length;
712272444Sjkim    ACPI_GENERIC_ADDRESS    DoorbellRegister;
713272444Sjkim    UINT64                  PreserveMask;
714272444Sjkim    UINT64                  WriteMask;
715272444Sjkim    UINT32                  Latency;
716272444Sjkim    UINT32                  MaxAccessRate;
717272444Sjkim    UINT16                  MinTurnaroundTime;
718272444Sjkim
719272444Sjkim} ACPI_PCCT_HW_REDUCED;
720272444Sjkim
721298714Sjkim
722298714Sjkim/* 2: HW-reduced Communications Subspace Type 2 (ACPI 6.1) */
723298714Sjkim
724298714Sjkimtypedef struct acpi_pcct_hw_reduced_type2
725298714Sjkim{
726298714Sjkim    ACPI_SUBTABLE_HEADER    Header;
727298714Sjkim    UINT32                  DoorbellInterrupt;
728298714Sjkim    UINT8                   Flags;
729298714Sjkim    UINT8                   Reserved;
730298714Sjkim    UINT64                  BaseAddress;
731298714Sjkim    UINT64                  Length;
732298714Sjkim    ACPI_GENERIC_ADDRESS    DoorbellRegister;
733298714Sjkim    UINT64                  PreserveMask;
734298714Sjkim    UINT64                  WriteMask;
735298714Sjkim    UINT32                  Latency;
736298714Sjkim    UINT32                  MaxAccessRate;
737298714Sjkim    UINT16                  MinTurnaroundTime;
738298714Sjkim    ACPI_GENERIC_ADDRESS    DoorbellAckRegister;
739298714Sjkim    UINT64                  AckPreserveMask;
740298714Sjkim    UINT64                  AckWriteMask;
741298714Sjkim
742298714Sjkim} ACPI_PCCT_HW_REDUCED_TYPE2;
743298714Sjkim
744298714Sjkim
745272444Sjkim/* Values for doorbell flags above */
746272444Sjkim
747272444Sjkim#define ACPI_PCCT_INTERRUPT_POLARITY    (1)
748272444Sjkim#define ACPI_PCCT_INTERRUPT_MODE        (1<<1)
749272444Sjkim
750272444Sjkim
751227896Sjkim/*
752227896Sjkim * PCC memory structures (not part of the ACPI table)
753227896Sjkim */
754227896Sjkim
755227896Sjkim/* Shared Memory Region */
756227896Sjkim
757227896Sjkimtypedef struct acpi_pcct_shared_memory
758227896Sjkim{
759227896Sjkim    UINT32                  Signature;
760227896Sjkim    UINT16                  Command;
761227896Sjkim    UINT16                  Status;
762227896Sjkim
763227896Sjkim} ACPI_PCCT_SHARED_MEMORY;
764227896Sjkim
765227896Sjkim
766227896Sjkim/*******************************************************************************
767227896Sjkim *
768227896Sjkim * PMTT - Platform Memory Topology Table (ACPI 5.0)
769227896Sjkim *        Version 1
770227896Sjkim *
771227896Sjkim ******************************************************************************/
772227896Sjkim
773227896Sjkimtypedef struct acpi_table_pmtt
774227896Sjkim{
775227896Sjkim    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
776227896Sjkim    UINT32                  Reserved;
777227896Sjkim
778227896Sjkim} ACPI_TABLE_PMTT;
779227896Sjkim
780227896Sjkim
781227896Sjkim/* Common header for PMTT subtables that follow main table */
782227896Sjkim
783227896Sjkimtypedef struct acpi_pmtt_header
784227896Sjkim{
785227896Sjkim    UINT8                   Type;
786227896Sjkim    UINT8                   Reserved1;
787227896Sjkim    UINT16                  Length;
788227896Sjkim    UINT16                  Flags;
789227896Sjkim    UINT16                  Reserved2;
790227896Sjkim
791227896Sjkim} ACPI_PMTT_HEADER;
792227896Sjkim
793227896Sjkim/* Values for Type field above */
794227896Sjkim
795227896Sjkim#define ACPI_PMTT_TYPE_SOCKET           0
796227896Sjkim#define ACPI_PMTT_TYPE_CONTROLLER       1
797227896Sjkim#define ACPI_PMTT_TYPE_DIMM             2
798227896Sjkim#define ACPI_PMTT_TYPE_RESERVED         3 /* 0x03-0xFF are reserved */
799227896Sjkim
800227896Sjkim/* Values for Flags field above */
801227896Sjkim
802227896Sjkim#define ACPI_PMTT_TOP_LEVEL             0x0001
803227896Sjkim#define ACPI_PMTT_PHYSICAL              0x0002
804227896Sjkim#define ACPI_PMTT_MEMORY_TYPE           0x000C
805227896Sjkim
806227896Sjkim
807227896Sjkim/*
808227896Sjkim * PMTT subtables, correspond to Type in acpi_pmtt_header
809227896Sjkim */
810227896Sjkim
811227896Sjkim
812227896Sjkim/* 0: Socket Structure */
813227896Sjkim
814227896Sjkimtypedef struct acpi_pmtt_socket
815227896Sjkim{
816227896Sjkim    ACPI_PMTT_HEADER        Header;
817227896Sjkim    UINT16                  SocketId;
818227896Sjkim    UINT16                  Reserved;
819227896Sjkim
820227896Sjkim} ACPI_PMTT_SOCKET;
821227896Sjkim
822227896Sjkim
823227896Sjkim/* 1: Memory Controller subtable */
824227896Sjkim
825227896Sjkimtypedef struct acpi_pmtt_controller
826227896Sjkim{
827227896Sjkim    ACPI_PMTT_HEADER        Header;
828227896Sjkim    UINT32                  ReadLatency;
829227896Sjkim    UINT32                  WriteLatency;
830227896Sjkim    UINT32                  ReadBandwidth;
831227896Sjkim    UINT32                  WriteBandwidth;
832227896Sjkim    UINT16                  AccessWidth;
833227896Sjkim    UINT16                  Alignment;
834227896Sjkim    UINT16                  Reserved;
835227896Sjkim    UINT16                  DomainCount;
836227896Sjkim
837227896Sjkim} ACPI_PMTT_CONTROLLER;
838227896Sjkim
839227896Sjkim/* 1a: Proximity Domain substructure */
840227896Sjkim
841227896Sjkimtypedef struct acpi_pmtt_domain
842227896Sjkim{
843227896Sjkim    UINT32                  ProximityDomain;
844227896Sjkim
845227896Sjkim} ACPI_PMTT_DOMAIN;
846227896Sjkim
847227896Sjkim
848227896Sjkim/* 2: Physical Component Identifier (DIMM) */
849227896Sjkim
850227896Sjkimtypedef struct acpi_pmtt_physical_component
851227896Sjkim{
852227896Sjkim    ACPI_PMTT_HEADER        Header;
853227896Sjkim    UINT16                  ComponentId;
854227896Sjkim    UINT16                  Reserved;
855227896Sjkim    UINT32                  MemorySize;
856227896Sjkim    UINT32                  BiosHandle;
857227896Sjkim
858227896Sjkim} ACPI_PMTT_PHYSICAL_COMPONENT;
859227896Sjkim
860227896Sjkim
861227896Sjkim/*******************************************************************************
862227896Sjkim *
863227896Sjkim * RASF - RAS Feature Table (ACPI 5.0)
864227896Sjkim *        Version 1
865227896Sjkim *
866227896Sjkim ******************************************************************************/
867227896Sjkim
868227896Sjkimtypedef struct acpi_table_rasf
869227896Sjkim{
870227896Sjkim    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
871227896Sjkim    UINT8                   ChannelId[12];
872227896Sjkim
873227896Sjkim} ACPI_TABLE_RASF;
874227896Sjkim
875227896Sjkim/* RASF Platform Communication Channel Shared Memory Region */
876227896Sjkim
877227896Sjkimtypedef struct acpi_rasf_shared_memory
878227896Sjkim{
879227896Sjkim    UINT32                  Signature;
880227896Sjkim    UINT16                  Command;
881227896Sjkim    UINT16                  Status;
882246849Sjkim    UINT16                  Version;
883246849Sjkim    UINT8                   Capabilities[16];
884246849Sjkim    UINT8                   SetCapabilities[16];
885246849Sjkim    UINT16                  NumParameterBlocks;
886246849Sjkim    UINT32                  SetCapabilitiesStatus;
887227896Sjkim
888227896Sjkim} ACPI_RASF_SHARED_MEMORY;
889227896Sjkim
890246849Sjkim/* RASF Parameter Block Structure Header */
891246849Sjkim
892246849Sjkimtypedef struct acpi_rasf_parameter_block
893246849Sjkim{
894246849Sjkim    UINT16                  Type;
895246849Sjkim    UINT16                  Version;
896246849Sjkim    UINT16                  Length;
897246849Sjkim
898246849Sjkim} ACPI_RASF_PARAMETER_BLOCK;
899246849Sjkim
900246849Sjkim/* RASF Parameter Block Structure for PATROL_SCRUB */
901246849Sjkim
902246849Sjkimtypedef struct acpi_rasf_patrol_scrub_parameter
903246849Sjkim{
904246849Sjkim    ACPI_RASF_PARAMETER_BLOCK   Header;
905246849Sjkim    UINT16                      PatrolScrubCommand;
906246849Sjkim    UINT64                      RequestedAddressRange[2];
907246849Sjkim    UINT64                      ActualAddressRange[2];
908246849Sjkim    UINT16                      Flags;
909246849Sjkim    UINT8                       RequestedSpeed;
910246849Sjkim
911246849Sjkim} ACPI_RASF_PATROL_SCRUB_PARAMETER;
912246849Sjkim
913227896Sjkim/* Masks for Flags and Speed fields above */
914227896Sjkim
915227896Sjkim#define ACPI_RASF_SCRUBBER_RUNNING      1
916227896Sjkim#define ACPI_RASF_SPEED                 (7<<1)
917246849Sjkim#define ACPI_RASF_SPEED_SLOW            (0<<1)
918246849Sjkim#define ACPI_RASF_SPEED_MEDIUM          (4<<1)
919246849Sjkim#define ACPI_RASF_SPEED_FAST            (7<<1)
920227896Sjkim
921227896Sjkim/* Channel Commands */
922227896Sjkim
923227896Sjkimenum AcpiRasfCommands
924227896Sjkim{
925246849Sjkim    ACPI_RASF_EXECUTE_RASF_COMMAND      = 1
926227896Sjkim};
927227896Sjkim
928246849Sjkim/* Platform RAS Capabilities */
929246849Sjkim
930246849Sjkimenum AcpiRasfCapabiliities
931246849Sjkim{
932246849Sjkim    ACPI_HW_PATROL_SCRUB_SUPPORTED      = 0,
933246849Sjkim    ACPI_SW_PATROL_SCRUB_EXPOSED        = 1
934246849Sjkim};
935246849Sjkim
936246849Sjkim/* Patrol Scrub Commands */
937246849Sjkim
938246849Sjkimenum AcpiRasfPatrolScrubCommands
939246849Sjkim{
940246849Sjkim    ACPI_RASF_GET_PATROL_PARAMETERS     = 1,
941246849Sjkim    ACPI_RASF_START_PATROL_SCRUBBER     = 2,
942246849Sjkim    ACPI_RASF_STOP_PATROL_SCRUBBER      = 3
943246849Sjkim};
944246849Sjkim
945227896Sjkim/* Channel Command flags */
946227896Sjkim
947227896Sjkim#define ACPI_RASF_GENERATE_SCI          (1<<15)
948227896Sjkim
949227896Sjkim/* Status values */
950227896Sjkim
951227896Sjkimenum AcpiRasfStatus
952227896Sjkim{
953227896Sjkim    ACPI_RASF_SUCCESS                   = 0,
954227896Sjkim    ACPI_RASF_NOT_VALID                 = 1,
955227896Sjkim    ACPI_RASF_NOT_SUPPORTED             = 2,
956227896Sjkim    ACPI_RASF_BUSY                      = 3,
957227896Sjkim    ACPI_RASF_FAILED                    = 4,
958227896Sjkim    ACPI_RASF_ABORTED                   = 5,
959227896Sjkim    ACPI_RASF_INVALID_DATA              = 6
960227896Sjkim};
961227896Sjkim
962227896Sjkim/* Status flags */
963227896Sjkim
964227896Sjkim#define ACPI_RASF_COMMAND_COMPLETE      (1)
965227896Sjkim#define ACPI_RASF_SCI_DOORBELL          (1<<1)
966227896Sjkim#define ACPI_RASF_ERROR                 (1<<2)
967227896Sjkim#define ACPI_RASF_STATUS                (0x1F<<3)
968227896Sjkim
969227896Sjkim
970245582Sjkim/*******************************************************************************
971245582Sjkim *
972283092Sjkim * STAO - Status Override Table (_STA override) - ACPI 6.0
973283092Sjkim *        Version 1
974283092Sjkim *
975283092Sjkim * Conforms to "ACPI Specification for Status Override Table"
976283092Sjkim * 6 January 2015
977283092Sjkim *
978283092Sjkim ******************************************************************************/
979283092Sjkim
980283092Sjkimtypedef struct acpi_table_stao
981283092Sjkim{
982283092Sjkim    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
983283092Sjkim    UINT8                   IgnoreUart;
984283092Sjkim
985283092Sjkim} ACPI_TABLE_STAO;
986283092Sjkim
987283092Sjkim
988283092Sjkim/*******************************************************************************
989283092Sjkim *
990283092Sjkim * WPBT - Windows Platform Environment Table (ACPI 6.0)
991283092Sjkim *        Version 1
992283092Sjkim *
993283092Sjkim * Conforms to "Windows Platform Binary Table (WPBT)" 29 November 2011
994283092Sjkim *
995283092Sjkim ******************************************************************************/
996283092Sjkim
997283092Sjkimtypedef struct acpi_table_wpbt
998283092Sjkim{
999283092Sjkim    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1000283092Sjkim    UINT32                  HandoffSize;
1001283092Sjkim    UINT64                  HandoffAddress;
1002283092Sjkim    UINT8                   Layout;
1003283092Sjkim    UINT8                   Type;
1004283092Sjkim    UINT16                  ArgumentsLength;
1005283092Sjkim
1006283092Sjkim} ACPI_TABLE_WPBT;
1007283092Sjkim
1008283092Sjkim
1009283092Sjkim/*******************************************************************************
1010283092Sjkim *
1011283092Sjkim * XENV - Xen Environment Table (ACPI 6.0)
1012283092Sjkim *        Version 1
1013283092Sjkim *
1014283092Sjkim * Conforms to "ACPI Specification for Xen Environment Table" 4 January 2015
1015283092Sjkim *
1016283092Sjkim ******************************************************************************/
1017283092Sjkim
1018283092Sjkimtypedef struct acpi_table_xenv
1019283092Sjkim{
1020283092Sjkim    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1021283092Sjkim    UINT64                  GrantTableAddress;
1022283092Sjkim    UINT64                  GrantTableSize;
1023283092Sjkim    UINT32                  EventInterrupt;
1024283092Sjkim    UINT8                   EventFlags;
1025283092Sjkim
1026283092Sjkim} ACPI_TABLE_XENV;
1027283092Sjkim
1028283092Sjkim
1029227896Sjkim/* Reset to default packing */
1030227896Sjkim
1031227896Sjkim#pragma pack()
1032227896Sjkim
1033227896Sjkim#endif /* __ACTBL3_H__ */
1034