VisionFive2 Linux kernel

StarFive Tech Linux Kernel for VisionFive (JH7110) boards (mirror)

More than 9999 Commits   33 Branches   57 Tags
95857638889ae (Erik Kaneda      2018-03-14 16:13:07 -0700    1) /* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */
^1da177e4c3f4 (Linus Torvalds   2005-04-16 15:20:36 -0700    2) /******************************************************************************
^1da177e4c3f4 (Linus Torvalds   2005-04-16 15:20:36 -0700    3)  *
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500    4)  * Name: actbl1.h - Additional ACPI table definitions
^1da177e4c3f4 (Linus Torvalds   2005-04-16 15:20:36 -0700    5)  *
4441e55d50513 (Bob Moore        2021-01-15 10:48:25 -0800    6)  * Copyright (C) 2000 - 2021, Intel Corp.
^1da177e4c3f4 (Linus Torvalds   2005-04-16 15:20:36 -0700    7)  *
95857638889ae (Erik Kaneda      2018-03-14 16:13:07 -0700    8)  *****************************************************************************/
^1da177e4c3f4 (Linus Torvalds   2005-04-16 15:20:36 -0700    9) 
^1da177e4c3f4 (Linus Torvalds   2005-04-16 15:20:36 -0700   10) #ifndef __ACTBL1_H__
^1da177e4c3f4 (Linus Torvalds   2005-04-16 15:20:36 -0700   11) #define __ACTBL1_H__
^1da177e4c3f4 (Linus Torvalds   2005-04-16 15:20:36 -0700   12) 
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500   13) /*******************************************************************************
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500   14)  *
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800   15)  * Additional ACPI Tables
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500   16)  *
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500   17)  * These tables are not consumed directly by the ACPICA subsystem, but are
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500   18)  * included here to support device drivers and the AML disassembler.
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500   19)  *
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500   20)  ******************************************************************************/
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500   21) 
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500   22) /*
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800   23)  * Values for description table header signatures for tables defined in this
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800   24)  * file. Useful because they make it more difficult to inadvertently type in
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800   25)  * the wrong signature.
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500   26)  */
e692fa1353609 (Bob Moore        2021-08-03 20:07:53 +0200   27) #define ACPI_SIG_AEST           "AEST"	/* Arm Error Source Table */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800   28) #define ACPI_SIG_ASF            "ASF!"	/* Alert Standard Format table */
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400   29) #define ACPI_SIG_BERT           "BERT"	/* Boot Error Record Table */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800   30) #define ACPI_SIG_BGRT           "BGRT"	/* Boot Graphics Resource Table */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800   31) #define ACPI_SIG_BOOT           "BOOT"	/* Simple Boot Flag Table */
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700   32) #define ACPI_SIG_CEDT           "CEDT"	/* CXL Early Discovery Table */
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500   33) #define ACPI_SIG_CPEP           "CPEP"	/* Corrected Platform Error Polling table */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800   34) #define ACPI_SIG_CSRT           "CSRT"	/* Core System Resource Table */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800   35) #define ACPI_SIG_DBG2           "DBG2"	/* Debug Port table type 2 */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800   36) #define ACPI_SIG_DBGP           "DBGP"	/* Debug Port table */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800   37) #define ACPI_SIG_DMAR           "DMAR"	/* DMA Remapping table */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800   38) #define ACPI_SIG_DRTM           "DRTM"	/* Dynamic Root of Trust for Measurement table */
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500   39) #define ACPI_SIG_ECDT           "ECDT"	/* Embedded Controller Boot Resources Table */
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400   40) #define ACPI_SIG_EINJ           "EINJ"	/* Error Injection table */
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400   41) #define ACPI_SIG_ERST           "ERST"	/* Error Record Serialization Table */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800   42) #define ACPI_SIG_FPDT           "FPDT"	/* Firmware Performance Data Table */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800   43) #define ACPI_SIG_GTDT           "GTDT"	/* Generic Timer Description Table */
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400   44) #define ACPI_SIG_HEST           "HEST"	/* Hardware Error Source Table */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800   45) #define ACPI_SIG_HMAT           "HMAT"	/* Heterogeneous Memory Attributes Table */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800   46) #define ACPI_SIG_HPET           "HPET"	/* High Precision Event Timer table */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800   47) #define ACPI_SIG_IBFT           "IBFT"	/* iSCSI Boot Firmware Table */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800   48) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800   49) #define ACPI_SIG_S3PT           "S3PT"	/* S3 Performance (sub)Table */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800   50) #define ACPI_SIG_PCCS           "PCC"	/* PCC Shared Memory Region */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800   51) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800   52) /* Reserved table signatures */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800   53) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800   54) #define ACPI_SIG_MATR           "MATR"	/* Memory Address Translation Table */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800   55) #define ACPI_SIG_MSDM           "MSDM"	/* Microsoft Data Management Table */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800   56) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800   57) /*
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800   58)  * These tables have been seen in the field, but no definition has been found
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800   59)  */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800   60) #ifdef ACPI_UNDEFINED_TABLES
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800   61) #define ACPI_SIG_ATKG           "ATKG"
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800   62) #define ACPI_SIG_GSCI           "GSCI"	/* GMCH SCI table */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800   63) #define ACPI_SIG_IEIT           "IEIT"
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800   64) #endif
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500   65) 
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500   66) /*
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500   67)  * All tables must be byte-packed to match the ACPI specification, since
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500   68)  * the tables are provided by the system BIOS.
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500   69)  */
^1da177e4c3f4 (Linus Torvalds   2005-04-16 15:20:36 -0700   70) #pragma pack(1)
^1da177e4c3f4 (Linus Torvalds   2005-04-16 15:20:36 -0700   71) 
^1da177e4c3f4 (Linus Torvalds   2005-04-16 15:20:36 -0700   72) /*
be030a5768542 (Bob Moore        2012-08-17 13:07:54 +0800   73)  * Note: C bitfields are not used for this reason:
be030a5768542 (Bob Moore        2012-08-17 13:07:54 +0800   74)  *
be030a5768542 (Bob Moore        2012-08-17 13:07:54 +0800   75)  * "Bitfields are great and easy to read, but unfortunately the C language
be030a5768542 (Bob Moore        2012-08-17 13:07:54 +0800   76)  * does not specify the layout of bitfields in memory, which means they are
be030a5768542 (Bob Moore        2012-08-17 13:07:54 +0800   77)  * essentially useless for dealing with packed data in on-disk formats or
be030a5768542 (Bob Moore        2012-08-17 13:07:54 +0800   78)  * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me,
be030a5768542 (Bob Moore        2012-08-17 13:07:54 +0800   79)  * this decision was a design error in C. Ritchie could have picked an order
be030a5768542 (Bob Moore        2012-08-17 13:07:54 +0800   80)  * and stuck with it." Norman Ramsey.
be030a5768542 (Bob Moore        2012-08-17 13:07:54 +0800   81)  * See http://stackoverflow.com/a/1053662/41661
^1da177e4c3f4 (Linus Torvalds   2005-04-16 15:20:36 -0700   82)  */
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500   83) 
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800   84) /*******************************************************************************
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800   85)  *
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800   86)  * Common subtable headers
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800   87)  *
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800   88)  ******************************************************************************/
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800   89) 
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800   90) /* Generic subtable header (used in MADT, SRAT, etc.) */
f3d2e7865c816 (Bob Moore        2007-02-02 19:48:18 +0300   91) 
f3d2e7865c816 (Bob Moore        2007-02-02 19:48:18 +0300   92) struct acpi_subtable_header {
f3d2e7865c816 (Bob Moore        2007-02-02 19:48:18 +0300   93) 	u8 type;
f3d2e7865c816 (Bob Moore        2007-02-02 19:48:18 +0300   94) 	u8 length;
f3d2e7865c816 (Bob Moore        2007-02-02 19:48:18 +0300   95) };
f3d2e7865c816 (Bob Moore        2007-02-02 19:48:18 +0300   96) 
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800   97) /* Subtable header for WHEA tables (EINJ, ERST, WDAT) */
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400   98) 
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400   99) struct acpi_whea_header {
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  100) 	u8 action;
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  101) 	u8 instruction;
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  102) 	u8 flags;
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  103) 	u8 reserved;
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  104) 	struct acpi_generic_address register_region;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400  105) 	u64 value;		/* Value used with Read/Write register */
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400  106) 	u64 mask;		/* Bitmask required for this register instruction */
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  107) };
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  108) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  109) /*******************************************************************************
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  110)  *
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  111)  * ASF - Alert Standard Format table (Signature "ASF!")
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  112)  *       Revision 0x10
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  113)  *
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  114)  * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  115)  *
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  116)  ******************************************************************************/
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  117) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  118) struct acpi_table_asf {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  119) 	struct acpi_table_header header;	/* Common ACPI table header */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  120) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  121) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  122) /* ASF subtable header */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  123) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  124) struct acpi_asf_header {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  125) 	u8 type;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  126) 	u8 reserved;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  127) 	u16 length;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  128) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  129) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  130) /* Values for Type field above */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  131) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  132) enum acpi_asf_type {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  133) 	ACPI_ASF_TYPE_INFO = 0,
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  134) 	ACPI_ASF_TYPE_ALERT = 1,
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  135) 	ACPI_ASF_TYPE_CONTROL = 2,
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  136) 	ACPI_ASF_TYPE_BOOT = 3,
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  137) 	ACPI_ASF_TYPE_ADDRESS = 4,
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  138) 	ACPI_ASF_TYPE_RESERVED = 5
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  139) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  140) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  141) /*
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  142)  * ASF subtables
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  143)  */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  144) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  145) /* 0: ASF Information */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  146) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  147) struct acpi_asf_info {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  148) 	struct acpi_asf_header header;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  149) 	u8 min_reset_value;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  150) 	u8 min_poll_interval;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  151) 	u16 system_id;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  152) 	u32 mfg_id;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  153) 	u8 flags;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  154) 	u8 reserved2[3];
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  155) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  156) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  157) /* Masks for Flags field above */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  158) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  159) #define ACPI_ASF_SMBUS_PROTOCOLS    (1)
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  160) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  161) /* 1: ASF Alerts */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  162) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  163) struct acpi_asf_alert {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  164) 	struct acpi_asf_header header;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  165) 	u8 assert_mask;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  166) 	u8 deassert_mask;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  167) 	u8 alerts;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  168) 	u8 data_length;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  169) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  170) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  171) struct acpi_asf_alert_data {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  172) 	u8 address;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  173) 	u8 command;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  174) 	u8 mask;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  175) 	u8 value;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  176) 	u8 sensor_type;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  177) 	u8 type;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  178) 	u8 offset;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  179) 	u8 source_type;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  180) 	u8 severity;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  181) 	u8 sensor_number;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  182) 	u8 entity;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  183) 	u8 instance;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  184) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  185) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  186) /* 2: ASF Remote Control */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  187) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  188) struct acpi_asf_remote {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  189) 	struct acpi_asf_header header;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  190) 	u8 controls;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  191) 	u8 data_length;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  192) 	u16 reserved2;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  193) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  194) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  195) struct acpi_asf_control_data {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  196) 	u8 function;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  197) 	u8 address;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  198) 	u8 command;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  199) 	u8 value;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  200) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  201) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  202) /* 3: ASF RMCP Boot Options */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  203) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  204) struct acpi_asf_rmcp {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  205) 	struct acpi_asf_header header;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  206) 	u8 capabilities[7];
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  207) 	u8 completion_code;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  208) 	u32 enterprise_id;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  209) 	u8 command;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  210) 	u16 parameter;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  211) 	u16 boot_options;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  212) 	u16 oem_parameters;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  213) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  214) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  215) /* 4: ASF Address */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  216) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  217) struct acpi_asf_address {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  218) 	struct acpi_asf_header header;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  219) 	u8 eprom_address;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  220) 	u8 devices;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  221) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  222) 
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  223) /*******************************************************************************
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  224)  *
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  225)  * BERT - Boot Error Record Table (ACPI 4.0)
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  226)  *        Version 1
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  227)  *
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  228)  ******************************************************************************/
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  229) 
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  230) struct acpi_table_bert {
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  231) 	struct acpi_table_header header;	/* Common ACPI table header */
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  232) 	u32 region_length;	/* Length of the boot error region */
b595076a180a5 (Uwe Kleine-König 2010-11-01 15:38:34 -0400  233) 	u64 address;		/* Physical address of the error region */
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  234) };
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  235) 
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  236) /* Boot Error Region (not a subtable, pointed to by Address field above) */
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400  237) 
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  238) struct acpi_bert_region {
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  239) 	u32 block_status;	/* Type of error information */
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  240) 	u32 raw_data_offset;	/* Offset to raw error data */
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  241) 	u32 raw_data_length;	/* Length of raw error data */
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  242) 	u32 data_length;	/* Length of generic error data */
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  243) 	u32 error_severity;	/* Severity code */
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  244) };
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  245) 
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  246) /* Values for block_status flags above */
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  247) 
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  248) #define ACPI_BERT_UNCORRECTABLE             (1)
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  249) #define ACPI_BERT_CORRECTABLE               (1<<1)
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  250) #define ACPI_BERT_MULTIPLE_UNCORRECTABLE    (1<<2)
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  251) #define ACPI_BERT_MULTIPLE_CORRECTABLE      (1<<3)
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  252) #define ACPI_BERT_ERROR_ENTRY_COUNT         (0xFF<<4)	/* 8 bits, error count */
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  253) 
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  254) /* Values for error_severity above */
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  255) 
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  256) enum acpi_bert_error_severity {
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  257) 	ACPI_BERT_ERROR_CORRECTABLE = 0,
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  258) 	ACPI_BERT_ERROR_FATAL = 1,
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  259) 	ACPI_BERT_ERROR_CORRECTED = 2,
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  260) 	ACPI_BERT_ERROR_NONE = 3,
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  261) 	ACPI_BERT_ERROR_RESERVED = 4	/* 4 and greater are reserved */
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  262) };
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  263) 
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  264) /*
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  265)  * Note: The generic error data that follows the error_severity field above
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  266)  * uses the struct acpi_hest_generic_data defined under the HEST table below
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  267)  */
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  268) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  269) /*******************************************************************************
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  270)  *
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  271)  * BGRT - Boot Graphics Resource Table (ACPI 5.0)
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  272)  *        Version 1
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  273)  *
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  274)  ******************************************************************************/
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  275) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  276) struct acpi_table_bgrt {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  277) 	struct acpi_table_header header;	/* Common ACPI table header */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  278) 	u16 version;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  279) 	u8 status;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  280) 	u8 image_type;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  281) 	u64 image_address;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  282) 	u32 image_offset_x;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  283) 	u32 image_offset_y;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  284) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  285) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  286) /* Flags for Status field above */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  287) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  288) #define ACPI_BGRT_DISPLAYED                 (1)
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  289) #define ACPI_BGRT_ORIENTATION_OFFSET        (3 << 1)
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  290) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  291) /*******************************************************************************
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  292)  *
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  293)  * BOOT - Simple Boot Flag Table
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  294)  *        Version 1
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  295)  *
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  296)  * Conforms to the "Simple Boot Flag Specification", Version 2.1
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  297)  *
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  298)  ******************************************************************************/
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  299) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  300) struct acpi_table_boot {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  301) 	struct acpi_table_header header;	/* Common ACPI table header */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  302) 	u8 cmos_index;		/* Index in CMOS RAM for the boot register */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  303) 	u8 reserved[3];
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  304) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  305) 
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700  306) /*******************************************************************************
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700  307)  *
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700  308)  * CEDT - CXL Early Discovery Table
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700  309)  *        Version 1
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700  310)  *
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700  311)  * Conforms to the "CXL Early Discovery Table" (CXL 2.0)
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700  312)  *
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700  313)  ******************************************************************************/
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700  314) 
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700  315) struct acpi_table_cedt {
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700  316) 	struct acpi_table_header header;	/* Common ACPI table header */
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700  317) };
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700  318) 
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700  319) /* CEDT subtable header (Performance Record Structure) */
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700  320) 
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700  321) struct acpi_cedt_header {
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700  322) 	u8 type;
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700  323) 	u8 reserved;
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700  324) 	u16 length;
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700  325) };
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700  326) 
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700  327) /* Values for Type field above */
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700  328) 
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700  329) enum acpi_cedt_type {
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700  330) 	ACPI_CEDT_TYPE_CHBS = 0,
4a2c1dcfaf59b (Alison Schofield 2021-06-04 14:26:05 -0700  331) 	ACPI_CEDT_TYPE_CFMWS = 1,
4a2c1dcfaf59b (Alison Schofield 2021-06-04 14:26:05 -0700  332) 	ACPI_CEDT_TYPE_RESERVED = 2,
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700  333) };
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700  334) 
160c768e1cad4 (Alison Schofield 2021-06-04 14:26:04 -0700  335) /* Values for version field above */
160c768e1cad4 (Alison Schofield 2021-06-04 14:26:04 -0700  336) 
160c768e1cad4 (Alison Schofield 2021-06-04 14:26:04 -0700  337) #define ACPI_CEDT_CHBS_VERSION_CXL11    (0)
160c768e1cad4 (Alison Schofield 2021-06-04 14:26:04 -0700  338) #define ACPI_CEDT_CHBS_VERSION_CXL20    (1)
160c768e1cad4 (Alison Schofield 2021-06-04 14:26:04 -0700  339) 
160c768e1cad4 (Alison Schofield 2021-06-04 14:26:04 -0700  340) /* Values for length field above */
160c768e1cad4 (Alison Schofield 2021-06-04 14:26:04 -0700  341) 
160c768e1cad4 (Alison Schofield 2021-06-04 14:26:04 -0700  342) #define ACPI_CEDT_CHBS_LENGTH_CXL11     (0x2000)
160c768e1cad4 (Alison Schofield 2021-06-04 14:26:04 -0700  343) #define ACPI_CEDT_CHBS_LENGTH_CXL20     (0x10000)
160c768e1cad4 (Alison Schofield 2021-06-04 14:26:04 -0700  344) 
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700  345) /*
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700  346)  * CEDT subtables
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700  347)  */
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700  348) 
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700  349) /* 0: CXL Host Bridge Structure */
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700  350) 
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700  351) struct acpi_cedt_chbs {
519c809069cef (Bob Moore        2021-04-06 14:30:24 -0700  352) 	struct acpi_cedt_header header;
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700  353) 	u32 uid;
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700  354) 	u32 cxl_version;
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700  355) 	u32 reserved;
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700  356) 	u64 base;
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700  357) 	u64 length;
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700  358) };
7c5eab72f5a4d (Ben Widawsky     2021-04-06 14:30:20 -0700  359) 
4a2c1dcfaf59b (Alison Schofield 2021-06-04 14:26:05 -0700  360) /* 1: CXL Fixed Memory Window Structure */
4a2c1dcfaf59b (Alison Schofield 2021-06-04 14:26:05 -0700  361) 
4a2c1dcfaf59b (Alison Schofield 2021-06-04 14:26:05 -0700  362) struct acpi_cedt_cfmws {
4a2c1dcfaf59b (Alison Schofield 2021-06-04 14:26:05 -0700  363) 	struct acpi_cedt_header header;
4a2c1dcfaf59b (Alison Schofield 2021-06-04 14:26:05 -0700  364) 	u32 reserved1;
4a2c1dcfaf59b (Alison Schofield 2021-06-04 14:26:05 -0700  365) 	u64 base_hpa;
4a2c1dcfaf59b (Alison Schofield 2021-06-04 14:26:05 -0700  366) 	u64 window_size;
4a2c1dcfaf59b (Alison Schofield 2021-06-04 14:26:05 -0700  367) 	u8 interleave_ways;
4a2c1dcfaf59b (Alison Schofield 2021-06-04 14:26:05 -0700  368) 	u8 interleave_arithmetic;
4a2c1dcfaf59b (Alison Schofield 2021-06-04 14:26:05 -0700  369) 	u16 reserved2;
4a2c1dcfaf59b (Alison Schofield 2021-06-04 14:26:05 -0700  370) 	u32 granularity;
4a2c1dcfaf59b (Alison Schofield 2021-06-04 14:26:05 -0700  371) 	u16 restrictions;
4a2c1dcfaf59b (Alison Schofield 2021-06-04 14:26:05 -0700  372) 	u16 qtg_id;
4a2c1dcfaf59b (Alison Schofield 2021-06-04 14:26:05 -0700  373) 	u32 interleave_targets[];
4a2c1dcfaf59b (Alison Schofield 2021-06-04 14:26:05 -0700  374) };
4a2c1dcfaf59b (Alison Schofield 2021-06-04 14:26:05 -0700  375) 
4a2c1dcfaf59b (Alison Schofield 2021-06-04 14:26:05 -0700  376) /* Values for Interleave Arithmetic field above */
4a2c1dcfaf59b (Alison Schofield 2021-06-04 14:26:05 -0700  377) 
4a2c1dcfaf59b (Alison Schofield 2021-06-04 14:26:05 -0700  378) #define ACPI_CEDT_CFMWS_ARITHMETIC_MODULO	(0)
4a2c1dcfaf59b (Alison Schofield 2021-06-04 14:26:05 -0700  379) 
4a2c1dcfaf59b (Alison Schofield 2021-06-04 14:26:05 -0700  380) /* Values for Restrictions field above */
4a2c1dcfaf59b (Alison Schofield 2021-06-04 14:26:05 -0700  381) 
4a2c1dcfaf59b (Alison Schofield 2021-06-04 14:26:05 -0700  382) #define ACPI_CEDT_CFMWS_RESTRICT_TYPE2		(1)
4a2c1dcfaf59b (Alison Schofield 2021-06-04 14:26:05 -0700  383) #define ACPI_CEDT_CFMWS_RESTRICT_TYPE3		(1<<1)
4a2c1dcfaf59b (Alison Schofield 2021-06-04 14:26:05 -0700  384) #define ACPI_CEDT_CFMWS_RESTRICT_VOLATILE	(1<<2)
4a2c1dcfaf59b (Alison Schofield 2021-06-04 14:26:05 -0700  385) #define ACPI_CEDT_CFMWS_RESTRICT_PMEM		(1<<3)
4a2c1dcfaf59b (Alison Schofield 2021-06-04 14:26:05 -0700  386) #define ACPI_CEDT_CFMWS_RESTRICT_FIXED		(1<<4)
4a2c1dcfaf59b (Alison Schofield 2021-06-04 14:26:05 -0700  387) 
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500  388) /*******************************************************************************
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500  389)  *
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  390)  * CPEP - Corrected Platform Error Polling table (ACPI 4.0)
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  391)  *        Version 1
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500  392)  *
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500  393)  ******************************************************************************/
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500  394) 
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500  395) struct acpi_table_cpep {
f3d2e7865c816 (Bob Moore        2007-02-02 19:48:18 +0300  396) 	struct acpi_table_header header;	/* Common ACPI table header */
f3d2e7865c816 (Bob Moore        2007-02-02 19:48:18 +0300  397) 	u64 reserved;
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500  398) };
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500  399) 
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500  400) /* Subtable */
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500  401) 
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500  402) struct acpi_cpep_polling {
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  403) 	struct acpi_subtable_header header;
f3d2e7865c816 (Bob Moore        2007-02-02 19:48:18 +0300  404) 	u8 id;			/* Processor ID */
f3d2e7865c816 (Bob Moore        2007-02-02 19:48:18 +0300  405) 	u8 eid;			/* Processor EID */
f3d2e7865c816 (Bob Moore        2007-02-02 19:48:18 +0300  406) 	u32 interval;		/* Polling interval (msec) */
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500  407) };
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500  408) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  409) /*******************************************************************************
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  410)  *
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  411)  * CSRT - Core System Resource Table
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  412)  *        Version 0
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  413)  *
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  414)  * Conforms to the "Core System Resource Table (CSRT)", November 14, 2011
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  415)  *
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  416)  ******************************************************************************/
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  417) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  418) struct acpi_table_csrt {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  419) 	struct acpi_table_header header;	/* Common ACPI table header */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  420) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  421) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  422) /* Resource Group subtable */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  423) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  424) struct acpi_csrt_group {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  425) 	u32 length;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  426) 	u32 vendor_id;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  427) 	u32 subvendor_id;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  428) 	u16 device_id;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  429) 	u16 subdevice_id;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  430) 	u16 revision;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  431) 	u16 reserved;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  432) 	u32 shared_info_length;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  433) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  434) 	/* Shared data immediately follows (Length = shared_info_length) */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  435) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  436) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  437) /* Shared Info subtable */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  438) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  439) struct acpi_csrt_shared_info {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  440) 	u16 major_version;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  441) 	u16 minor_version;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  442) 	u32 mmio_base_low;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  443) 	u32 mmio_base_high;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  444) 	u32 gsi_interrupt;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  445) 	u8 interrupt_polarity;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  446) 	u8 interrupt_mode;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  447) 	u8 num_channels;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  448) 	u8 dma_address_width;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  449) 	u16 base_request_line;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  450) 	u16 num_handshake_signals;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  451) 	u32 max_block_size;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  452) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  453) 	/* Resource descriptors immediately follow (Length = Group length - shared_info_length) */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  454) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  455) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  456) /* Resource Descriptor subtable */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  457) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  458) struct acpi_csrt_descriptor {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  459) 	u32 length;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  460) 	u16 type;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  461) 	u16 subtype;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  462) 	u32 uid;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  463) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  464) 	/* Resource-specific information immediately follows */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  465) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  466) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  467) /* Resource Types */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  468) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  469) #define ACPI_CSRT_TYPE_INTERRUPT    0x0001
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  470) #define ACPI_CSRT_TYPE_TIMER        0x0002
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  471) #define ACPI_CSRT_TYPE_DMA          0x0003
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  472) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  473) /* Resource Subtypes */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  474) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  475) #define ACPI_CSRT_XRUPT_LINE        0x0000
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  476) #define ACPI_CSRT_XRUPT_CONTROLLER  0x0001
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  477) #define ACPI_CSRT_TIMER             0x0000
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  478) #define ACPI_CSRT_DMA_CHANNEL       0x0000
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  479) #define ACPI_CSRT_DMA_CONTROLLER    0x0001
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  480) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  481) /*******************************************************************************
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  482)  *
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  483)  * DBG2 - Debug Port Table 2
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  484)  *        Version 0 (Both main table and subtables)
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  485)  *
200950b615d5d (Marcin Wojtas    2021-08-03 20:10:02 +0200  486)  * Conforms to "Microsoft Debug Port Table 2 (DBG2)", September 21, 2020
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  487)  *
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  488)  ******************************************************************************/
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  489) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  490) struct acpi_table_dbg2 {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  491) 	struct acpi_table_header header;	/* Common ACPI table header */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  492) 	u32 info_offset;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  493) 	u32 info_count;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  494) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  495) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  496) struct acpi_dbg2_header {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  497) 	u32 info_offset;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  498) 	u32 info_count;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  499) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  500) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  501) /* Debug Device Information Subtable */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  502) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  503) struct acpi_dbg2_device {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  504) 	u8 revision;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  505) 	u16 length;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  506) 	u8 register_count;	/* Number of base_address registers */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  507) 	u16 namepath_length;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  508) 	u16 namepath_offset;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  509) 	u16 oem_data_length;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  510) 	u16 oem_data_offset;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  511) 	u16 port_type;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  512) 	u16 port_subtype;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  513) 	u16 reserved;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  514) 	u16 base_address_offset;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  515) 	u16 address_size_offset;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  516) 	/*
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  517) 	 * Data that follows:
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  518) 	 *    base_address (required) - Each in 12-byte Generic Address Structure format.
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  519) 	 *    address_size (required) - Array of u32 sizes corresponding to each base_address register.
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  520) 	 *    Namepath    (required) - Null terminated string. Single dot if not supported.
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  521) 	 *    oem_data    (optional) - Length is oem_data_length.
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  522) 	 */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  523) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  524) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  525) /* Types for port_type field above */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  526) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  527) #define ACPI_DBG2_SERIAL_PORT       0x8000
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  528) #define ACPI_DBG2_1394_PORT         0x8001
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  529) #define ACPI_DBG2_USB_PORT          0x8002
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  530) #define ACPI_DBG2_NET_PORT          0x8003
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  531) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  532) /* Subtypes for port_subtype field above */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  533) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  534) #define ACPI_DBG2_16550_COMPATIBLE  0x0000
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  535) #define ACPI_DBG2_16550_SUBSET      0x0001
200950b615d5d (Marcin Wojtas    2021-08-03 20:10:02 +0200  536) #define ACPI_DBG2_MAX311XE_SPI      0x0002
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  537) #define ACPI_DBG2_ARM_PL011         0x0003
200950b615d5d (Marcin Wojtas    2021-08-03 20:10:02 +0200  538) #define ACPI_DBG2_MSM8X60           0x0004
200950b615d5d (Marcin Wojtas    2021-08-03 20:10:02 +0200  539) #define ACPI_DBG2_16550_NVIDIA      0x0005
200950b615d5d (Marcin Wojtas    2021-08-03 20:10:02 +0200  540) #define ACPI_DBG2_TI_OMAP           0x0006
200950b615d5d (Marcin Wojtas    2021-08-03 20:10:02 +0200  541) #define ACPI_DBG2_APM88XXXX         0x0008
200950b615d5d (Marcin Wojtas    2021-08-03 20:10:02 +0200  542) #define ACPI_DBG2_MSM8974           0x0009
200950b615d5d (Marcin Wojtas    2021-08-03 20:10:02 +0200  543) #define ACPI_DBG2_SAM5250           0x000A
200950b615d5d (Marcin Wojtas    2021-08-03 20:10:02 +0200  544) #define ACPI_DBG2_INTEL_USIF        0x000B
200950b615d5d (Marcin Wojtas    2021-08-03 20:10:02 +0200  545) #define ACPI_DBG2_IMX6              0x000C
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  546) #define ACPI_DBG2_ARM_SBSA_32BIT    0x000D
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  547) #define ACPI_DBG2_ARM_SBSA_GENERIC  0x000E
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  548) #define ACPI_DBG2_ARM_DCC           0x000F
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  549) #define ACPI_DBG2_BCM2835           0x0010
200950b615d5d (Marcin Wojtas    2021-08-03 20:10:02 +0200  550) #define ACPI_DBG2_SDM845_1_8432MHZ  0x0011
200950b615d5d (Marcin Wojtas    2021-08-03 20:10:02 +0200  551) #define ACPI_DBG2_16550_WITH_GAS    0x0012
200950b615d5d (Marcin Wojtas    2021-08-03 20:10:02 +0200  552) #define ACPI_DBG2_SDM845_7_372MHZ   0x0013
200950b615d5d (Marcin Wojtas    2021-08-03 20:10:02 +0200  553) #define ACPI_DBG2_INTEL_LPSS        0x0014
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  554) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  555) #define ACPI_DBG2_1394_STANDARD     0x0000
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  556) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  557) #define ACPI_DBG2_USB_XHCI          0x0000
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  558) #define ACPI_DBG2_USB_EHCI          0x0001
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  559) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  560) /*******************************************************************************
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  561)  *
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  562)  * DBGP - Debug Port table
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  563)  *        Version 1
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  564)  *
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  565)  * Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  566)  *
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  567)  ******************************************************************************/
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  568) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  569) struct acpi_table_dbgp {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  570) 	struct acpi_table_header header;	/* Common ACPI table header */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  571) 	u8 type;		/* 0=full 16550, 1=subset of 16550 */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  572) 	u8 reserved[3];
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  573) 	struct acpi_generic_address debug_port;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  574) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  575) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  576) /*******************************************************************************
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  577)  *
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  578)  * DMAR - DMA Remapping table
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  579)  *        Version 1
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  580)  *
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  581)  * Conforms to "Intel Virtualization Technology for Directed I/O",
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  582)  * Version 2.3, October 2014
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  583)  *
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  584)  ******************************************************************************/
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  585) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  586) struct acpi_table_dmar {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  587) 	struct acpi_table_header header;	/* Common ACPI table header */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  588) 	u8 width;		/* Host Address Width */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  589) 	u8 flags;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  590) 	u8 reserved[10];
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  591) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  592) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  593) /* Masks for Flags field above */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  594) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  595) #define ACPI_DMAR_INTR_REMAP        (1)
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  596) #define ACPI_DMAR_X2APIC_OPT_OUT    (1<<1)
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  597) #define ACPI_DMAR_X2APIC_MODE       (1<<2)
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  598) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  599) /* DMAR subtable header */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  600) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  601) struct acpi_dmar_header {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  602) 	u16 type;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  603) 	u16 length;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  604) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  605) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  606) /* Values for subtable type in struct acpi_dmar_header */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  607) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  608) enum acpi_dmar_type {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  609) 	ACPI_DMAR_TYPE_HARDWARE_UNIT = 0,
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  610) 	ACPI_DMAR_TYPE_RESERVED_MEMORY = 1,
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  611) 	ACPI_DMAR_TYPE_ROOT_ATS = 2,
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  612) 	ACPI_DMAR_TYPE_HARDWARE_AFFINITY = 3,
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  613) 	ACPI_DMAR_TYPE_NAMESPACE = 4,
81d3c75bb3c32 (Yian Chen        2021-02-04 09:43:59 +0800  614) 	ACPI_DMAR_TYPE_SATC = 5,
81d3c75bb3c32 (Yian Chen        2021-02-04 09:43:59 +0800  615) 	ACPI_DMAR_TYPE_RESERVED = 6	/* 6 and greater are reserved */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  616) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  617) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  618) /* DMAR Device Scope structure */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  619) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  620) struct acpi_dmar_device_scope {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  621) 	u8 entry_type;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  622) 	u8 length;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  623) 	u16 reserved;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  624) 	u8 enumeration_id;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  625) 	u8 bus;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  626) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  627) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  628) /* Values for entry_type in struct acpi_dmar_device_scope - device types */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  629) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  630) enum acpi_dmar_scope_type {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  631) 	ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0,
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  632) 	ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1,
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  633) 	ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2,
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  634) 	ACPI_DMAR_SCOPE_TYPE_IOAPIC = 3,
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  635) 	ACPI_DMAR_SCOPE_TYPE_HPET = 4,
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  636) 	ACPI_DMAR_SCOPE_TYPE_NAMESPACE = 5,
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  637) 	ACPI_DMAR_SCOPE_TYPE_RESERVED = 6	/* 6 and greater are reserved */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  638) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  639) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  640) struct acpi_dmar_pci_path {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  641) 	u8 device;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  642) 	u8 function;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  643) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  644) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  645) /*
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  646)  * DMAR Subtables, correspond to Type in struct acpi_dmar_header
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  647)  */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  648) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  649) /* 0: Hardware Unit Definition */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  650) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  651) struct acpi_dmar_hardware_unit {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  652) 	struct acpi_dmar_header header;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  653) 	u8 flags;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  654) 	u8 reserved;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  655) 	u16 segment;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  656) 	u64 address;		/* Register Base Address */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  657) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  658) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  659) /* Masks for Flags field above */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  660) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  661) #define ACPI_DMAR_INCLUDE_ALL       (1)
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  662) 
c163f90cc8620 (Erik Kaneda      2019-02-15 13:36:19 -0800  663) /* 1: Reserved Memory Definition */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  664) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  665) struct acpi_dmar_reserved_memory {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  666) 	struct acpi_dmar_header header;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  667) 	u16 reserved;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  668) 	u16 segment;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  669) 	u64 base_address;	/* 4K aligned base address */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  670) 	u64 end_address;	/* 4K aligned limit address */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  671) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  672) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  673) /* Masks for Flags field above */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  674) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  675) #define ACPI_DMAR_ALLOW_ALL         (1)
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  676) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  677) /* 2: Root Port ATS Capability Reporting Structure */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  678) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  679) struct acpi_dmar_atsr {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  680) 	struct acpi_dmar_header header;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  681) 	u8 flags;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  682) 	u8 reserved;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  683) 	u16 segment;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  684) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  685) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  686) /* Masks for Flags field above */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  687) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  688) #define ACPI_DMAR_ALL_PORTS         (1)
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  689) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  690) /* 3: Remapping Hardware Static Affinity Structure */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  691) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  692) struct acpi_dmar_rhsa {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  693) 	struct acpi_dmar_header header;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  694) 	u32 reserved;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  695) 	u64 base_address;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  696) 	u32 proximity_domain;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  697) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  698) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  699) /* 4: ACPI Namespace Device Declaration Structure */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  700) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  701) struct acpi_dmar_andd {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  702) 	struct acpi_dmar_header header;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  703) 	u8 reserved[3];
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  704) 	u8 device_number;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  705) 	char device_name[1];
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  706) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  707) 
81d3c75bb3c32 (Yian Chen        2021-02-04 09:43:59 +0800  708) /* 5: SOC Integrated Address Translation Cache Reporting Structure */
81d3c75bb3c32 (Yian Chen        2021-02-04 09:43:59 +0800  709) 
81d3c75bb3c32 (Yian Chen        2021-02-04 09:43:59 +0800  710) struct acpi_dmar_satc {
81d3c75bb3c32 (Yian Chen        2021-02-04 09:43:59 +0800  711) 	struct acpi_dmar_header header;
81d3c75bb3c32 (Yian Chen        2021-02-04 09:43:59 +0800  712) 	u8 flags;
81d3c75bb3c32 (Yian Chen        2021-02-04 09:43:59 +0800  713) 	u8 reserved;
81d3c75bb3c32 (Yian Chen        2021-02-04 09:43:59 +0800  714) 	u16 segment;
81d3c75bb3c32 (Yian Chen        2021-02-04 09:43:59 +0800  715) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  716) /*******************************************************************************
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  717)  *
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  718)  * DRTM - Dynamic Root of Trust for Measurement table
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  719)  * Conforms to "TCG D-RTM Architecture" June 17 2013, Version 1.0.0
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  720)  * Table version 1
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  721)  *
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  722)  ******************************************************************************/
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  723) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  724) struct acpi_table_drtm {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  725) 	struct acpi_table_header header;	/* Common ACPI table header */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  726) 	u64 entry_base_address;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  727) 	u64 entry_length;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  728) 	u32 entry_address32;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  729) 	u64 entry_address64;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  730) 	u64 exit_address;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  731) 	u64 log_area_address;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  732) 	u32 log_area_length;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  733) 	u64 arch_dependent_address;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  734) 	u32 flags;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  735) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  736) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  737) /* Flag Definitions for above */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  738) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  739) #define ACPI_DRTM_ACCESS_ALLOWED            (1)
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  740) #define ACPI_DRTM_ENABLE_GAP_CODE           (1<<1)
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  741) #define ACPI_DRTM_INCOMPLETE_MEASUREMENTS   (1<<2)
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  742) #define ACPI_DRTM_AUTHORITY_ORDER           (1<<3)
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  743) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  744) /* 1) Validated Tables List (64-bit addresses) */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  745) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  746) struct acpi_drtm_vtable_list {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  747) 	u32 validated_table_count;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  748) 	u64 validated_tables[1];
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  749) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  750) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  751) /* 2) Resources List (of Resource Descriptors) */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  752) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  753) /* Resource Descriptor */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  754) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  755) struct acpi_drtm_resource {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  756) 	u8 size[7];
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  757) 	u8 type;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  758) 	u64 address;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  759) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  760) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  761) struct acpi_drtm_resource_list {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  762) 	u32 resource_count;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  763) 	struct acpi_drtm_resource resources[1];
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  764) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  765) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  766) /* 3) Platform-specific Identifiers List */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  767) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  768) struct acpi_drtm_dps_id {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  769) 	u32 dps_id_length;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  770) 	u8 dps_id[16];
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  771) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  772) 
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500  773) /*******************************************************************************
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500  774)  *
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500  775)  * ECDT - Embedded Controller Boot Resources Table
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  776)  *        Version 1
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500  777)  *
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500  778)  ******************************************************************************/
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500  779) 
f3d2e7865c816 (Bob Moore        2007-02-02 19:48:18 +0300  780) struct acpi_table_ecdt {
f3d2e7865c816 (Bob Moore        2007-02-02 19:48:18 +0300  781) 	struct acpi_table_header header;	/* Common ACPI table header */
f3d2e7865c816 (Bob Moore        2007-02-02 19:48:18 +0300  782) 	struct acpi_generic_address control;	/* Address of EC command/status register */
f3d2e7865c816 (Bob Moore        2007-02-02 19:48:18 +0300  783) 	struct acpi_generic_address data;	/* Address of EC data register */
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500  784) 	u32 uid;		/* Unique ID - must be same as the EC _UID method */
f3d2e7865c816 (Bob Moore        2007-02-02 19:48:18 +0300  785) 	u8 gpe;			/* The GPE for the EC */
f3d2e7865c816 (Bob Moore        2007-02-02 19:48:18 +0300  786) 	u8 id[1];		/* Full namepath of the EC in the ACPI namespace */
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500  787) };
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500  788) 
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  789) /*******************************************************************************
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  790)  *
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  791)  * EINJ - Error Injection Table (ACPI 4.0)
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  792)  *        Version 1
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  793)  *
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  794)  ******************************************************************************/
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  795) 
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  796) struct acpi_table_einj {
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  797) 	struct acpi_table_header header;	/* Common ACPI table header */
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  798) 	u32 header_length;
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  799) 	u8 flags;
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  800) 	u8 reserved[3];
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  801) 	u32 entries;
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  802) };
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  803) 
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  804) /* EINJ Injection Instruction Entries (actions) */
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  805) 
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  806) struct acpi_einj_entry {
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  807) 	struct acpi_whea_header whea_header;	/* Common header for WHEA tables */
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  808) };
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  809) 
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  810) /* Masks for Flags field above */
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  811) 
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  812) #define ACPI_EINJ_PRESERVE          (1)
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  813) 
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  814) /* Values for Action field above */
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  815) 
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  816) enum acpi_einj_actions {
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  817) 	ACPI_EINJ_BEGIN_OPERATION = 0,
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  818) 	ACPI_EINJ_GET_TRIGGER_TABLE = 1,
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  819) 	ACPI_EINJ_SET_ERROR_TYPE = 2,
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  820) 	ACPI_EINJ_GET_ERROR_TYPE = 3,
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  821) 	ACPI_EINJ_END_OPERATION = 4,
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  822) 	ACPI_EINJ_EXECUTE_OPERATION = 5,
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  823) 	ACPI_EINJ_CHECK_BUSY_STATUS = 6,
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  824) 	ACPI_EINJ_GET_COMMAND_STATUS = 7,
c5bd6537329e6 (Bob Moore        2011-11-16 11:04:00 +0800  825) 	ACPI_EINJ_SET_ERROR_TYPE_WITH_ADDRESS = 8,
a88e0ce6beffb (Bob Moore        2016-03-24 09:39:36 +0800  826) 	ACPI_EINJ_GET_EXECUTE_TIMINGS = 9,
a88e0ce6beffb (Bob Moore        2016-03-24 09:39:36 +0800  827) 	ACPI_EINJ_ACTION_RESERVED = 10,	/* 10 and greater are reserved */
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  828) 	ACPI_EINJ_TRIGGER_ERROR = 0xFF	/* Except for this value */
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  829) };
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  830) 
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  831) /* Values for Instruction field above */
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  832) 
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  833) enum acpi_einj_instructions {
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  834) 	ACPI_EINJ_READ_REGISTER = 0,
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  835) 	ACPI_EINJ_READ_REGISTER_VALUE = 1,
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  836) 	ACPI_EINJ_WRITE_REGISTER = 2,
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  837) 	ACPI_EINJ_WRITE_REGISTER_VALUE = 3,
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  838) 	ACPI_EINJ_NOOP = 4,
c5bd6537329e6 (Bob Moore        2011-11-16 11:04:00 +0800  839) 	ACPI_EINJ_FLUSH_CACHELINE = 5,
c5bd6537329e6 (Bob Moore        2011-11-16 11:04:00 +0800  840) 	ACPI_EINJ_INSTRUCTION_RESERVED = 6	/* 6 and greater are reserved */
c5bd6537329e6 (Bob Moore        2011-11-16 11:04:00 +0800  841) };
c5bd6537329e6 (Bob Moore        2011-11-16 11:04:00 +0800  842) 
c5bd6537329e6 (Bob Moore        2011-11-16 11:04:00 +0800  843) struct acpi_einj_error_type_with_addr {
c5bd6537329e6 (Bob Moore        2011-11-16 11:04:00 +0800  844) 	u32 error_type;
c5bd6537329e6 (Bob Moore        2011-11-16 11:04:00 +0800  845) 	u32 vendor_struct_offset;
c5bd6537329e6 (Bob Moore        2011-11-16 11:04:00 +0800  846) 	u32 flags;
c5bd6537329e6 (Bob Moore        2011-11-16 11:04:00 +0800  847) 	u32 apic_id;
c5bd6537329e6 (Bob Moore        2011-11-16 11:04:00 +0800  848) 	u64 address;
c5bd6537329e6 (Bob Moore        2011-11-16 11:04:00 +0800  849) 	u64 range;
c5bd6537329e6 (Bob Moore        2011-11-16 11:04:00 +0800  850) 	u32 pcie_id;
c5bd6537329e6 (Bob Moore        2011-11-16 11:04:00 +0800  851) };
c5bd6537329e6 (Bob Moore        2011-11-16 11:04:00 +0800  852) 
c5bd6537329e6 (Bob Moore        2011-11-16 11:04:00 +0800  853) struct acpi_einj_vendor {
c5bd6537329e6 (Bob Moore        2011-11-16 11:04:00 +0800  854) 	u32 length;
c5bd6537329e6 (Bob Moore        2011-11-16 11:04:00 +0800  855) 	u32 pcie_id;
c5bd6537329e6 (Bob Moore        2011-11-16 11:04:00 +0800  856) 	u16 vendor_id;
c5bd6537329e6 (Bob Moore        2011-11-16 11:04:00 +0800  857) 	u16 device_id;
c5bd6537329e6 (Bob Moore        2011-11-16 11:04:00 +0800  858) 	u8 revision_id;
c5bd6537329e6 (Bob Moore        2011-11-16 11:04:00 +0800  859) 	u8 reserved[3];
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  860) };
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  861) 
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400  862) /* EINJ Trigger Error Action Table */
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400  863) 
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400  864) struct acpi_einj_trigger {
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400  865) 	u32 header_size;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400  866) 	u32 revision;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400  867) 	u32 table_size;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400  868) 	u32 entry_count;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400  869) };
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400  870) 
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  871) /* Command status return values */
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  872) 
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  873) enum acpi_einj_command_status {
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  874) 	ACPI_EINJ_SUCCESS = 0,
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  875) 	ACPI_EINJ_FAILURE = 1,
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  876) 	ACPI_EINJ_INVALID_ACCESS = 2,
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  877) 	ACPI_EINJ_STATUS_RESERVED = 3	/* 3 and greater are reserved */
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  878) };
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  879) 
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  880) /* Error types returned from ACPI_EINJ_GET_ERROR_TYPE (bitfield) */
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  881) 
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  882) #define ACPI_EINJ_PROCESSOR_CORRECTABLE     (1)
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  883) #define ACPI_EINJ_PROCESSOR_UNCORRECTABLE   (1<<1)
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  884) #define ACPI_EINJ_PROCESSOR_FATAL           (1<<2)
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  885) #define ACPI_EINJ_MEMORY_CORRECTABLE        (1<<3)
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  886) #define ACPI_EINJ_MEMORY_UNCORRECTABLE      (1<<4)
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  887) #define ACPI_EINJ_MEMORY_FATAL              (1<<5)
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  888) #define ACPI_EINJ_PCIX_CORRECTABLE          (1<<6)
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  889) #define ACPI_EINJ_PCIX_UNCORRECTABLE        (1<<7)
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  890) #define ACPI_EINJ_PCIX_FATAL                (1<<8)
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  891) #define ACPI_EINJ_PLATFORM_CORRECTABLE      (1<<9)
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  892) #define ACPI_EINJ_PLATFORM_UNCORRECTABLE    (1<<10)
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  893) #define ACPI_EINJ_PLATFORM_FATAL            (1<<11)
c5bd6537329e6 (Bob Moore        2011-11-16 11:04:00 +0800  894) #define ACPI_EINJ_VENDOR_DEFINED            (1<<31)
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  895) 
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  896) /*******************************************************************************
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  897)  *
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  898)  * ERST - Error Record Serialization Table (ACPI 4.0)
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  899)  *        Version 1
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  900)  *
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  901)  ******************************************************************************/
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  902) 
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  903) struct acpi_table_erst {
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  904) 	struct acpi_table_header header;	/* Common ACPI table header */
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  905) 	u32 header_length;
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  906) 	u32 reserved;
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  907) 	u32 entries;
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  908) };
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  909) 
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  910) /* ERST Serialization Entries (actions) */
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  911) 
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  912) struct acpi_erst_entry {
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  913) 	struct acpi_whea_header whea_header;	/* Common header for WHEA tables */
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  914) };
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  915) 
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  916) /* Masks for Flags field above */
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  917) 
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  918) #define ACPI_ERST_PRESERVE          (1)
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  919) 
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  920) /* Values for Action field above */
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  921) 
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  922) enum acpi_erst_actions {
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  923) 	ACPI_ERST_BEGIN_WRITE = 0,
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  924) 	ACPI_ERST_BEGIN_READ = 1,
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  925) 	ACPI_ERST_BEGIN_CLEAR = 2,
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  926) 	ACPI_ERST_END = 3,
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  927) 	ACPI_ERST_SET_RECORD_OFFSET = 4,
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  928) 	ACPI_ERST_EXECUTE_OPERATION = 5,
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  929) 	ACPI_ERST_CHECK_BUSY_STATUS = 6,
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  930) 	ACPI_ERST_GET_COMMAND_STATUS = 7,
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  931) 	ACPI_ERST_GET_RECORD_ID = 8,
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  932) 	ACPI_ERST_SET_RECORD_ID = 9,
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  933) 	ACPI_ERST_GET_RECORD_COUNT = 10,
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  934) 	ACPI_ERST_BEGIN_DUMMY_WRIITE = 11,
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  935) 	ACPI_ERST_NOT_USED = 12,
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  936) 	ACPI_ERST_GET_ERROR_RANGE = 13,
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  937) 	ACPI_ERST_GET_ERROR_LENGTH = 14,
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  938) 	ACPI_ERST_GET_ERROR_ATTRIBUTES = 15,
a88e0ce6beffb (Bob Moore        2016-03-24 09:39:36 +0800  939) 	ACPI_ERST_EXECUTE_TIMINGS = 16,
a88e0ce6beffb (Bob Moore        2016-03-24 09:39:36 +0800  940) 	ACPI_ERST_ACTION_RESERVED = 17	/* 17 and greater are reserved */
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  941) };
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  942) 
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  943) /* Values for Instruction field above */
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  944) 
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  945) enum acpi_erst_instructions {
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  946) 	ACPI_ERST_READ_REGISTER = 0,
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  947) 	ACPI_ERST_READ_REGISTER_VALUE = 1,
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  948) 	ACPI_ERST_WRITE_REGISTER = 2,
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  949) 	ACPI_ERST_WRITE_REGISTER_VALUE = 3,
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  950) 	ACPI_ERST_NOOP = 4,
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  951) 	ACPI_ERST_LOAD_VAR1 = 5,
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  952) 	ACPI_ERST_LOAD_VAR2 = 6,
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  953) 	ACPI_ERST_STORE_VAR1 = 7,
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  954) 	ACPI_ERST_ADD = 8,
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  955) 	ACPI_ERST_SUBTRACT = 9,
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  956) 	ACPI_ERST_ADD_VALUE = 10,
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  957) 	ACPI_ERST_SUBTRACT_VALUE = 11,
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  958) 	ACPI_ERST_STALL = 12,
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  959) 	ACPI_ERST_STALL_WHILE_TRUE = 13,
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  960) 	ACPI_ERST_SKIP_NEXT_IF_TRUE = 14,
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  961) 	ACPI_ERST_GOTO = 15,
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  962) 	ACPI_ERST_SET_SRC_ADDRESS_BASE = 16,
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  963) 	ACPI_ERST_SET_DST_ADDRESS_BASE = 17,
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  964) 	ACPI_ERST_MOVE_DATA = 18,
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  965) 	ACPI_ERST_INSTRUCTION_RESERVED = 19	/* 19 and greater are reserved */
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  966) };
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  967) 
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  968) /* Command status return values */
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  969) 
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  970) enum acpi_erst_command_status {
54a2a15a56648 (Bob Moore        2020-02-14 10:48:03 -0800  971) 	ACPI_ERST_SUCCESS = 0,
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  972) 	ACPI_ERST_NO_SPACE = 1,
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  973) 	ACPI_ERST_NOT_AVAILABLE = 2,
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  974) 	ACPI_ERST_FAILURE = 3,
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  975) 	ACPI_ERST_RECORD_EMPTY = 4,
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  976) 	ACPI_ERST_NOT_FOUND = 5,
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  977) 	ACPI_ERST_STATUS_RESERVED = 6	/* 6 and greater are reserved */
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  978) };
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  979) 
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  980) /* Error Record Serialization Information */
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  981) 
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  982) struct acpi_erst_info {
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  983) 	u16 signature;		/* Should be "ER" */
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  984) 	u8 data[48];
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  985) };
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  986) 
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  987) /*******************************************************************************
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  988)  *
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  989)  * FPDT - Firmware Performance Data Table (ACPI 5.0)
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800  990)  *        Version 1
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  991)  *
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  992)  ******************************************************************************/
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  993) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  994) struct acpi_table_fpdt {
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  995) 	struct acpi_table_header header;	/* Common ACPI table header */
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  996) };
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400  997) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800  998) /* FPDT subtable header (Performance Record Structure) */
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400  999) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1000) struct acpi_fpdt_header {
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1001) 	u16 type;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1002) 	u8 length;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1003) 	u8 revision;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1004) };
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1005) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1006) /* Values for Type field above */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1007) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1008) enum acpi_fpdt_type {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1009) 	ACPI_FPDT_TYPE_BOOT = 0,
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1010) 	ACPI_FPDT_TYPE_S3PERF = 1
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1011) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1012) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1013) /*
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1014)  * FPDT subtables
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1015)  */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1016) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1017) /* 0: Firmware Basic Boot Performance Record */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1018) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1019) struct acpi_fpdt_boot_pointer {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1020) 	struct acpi_fpdt_header header;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1021) 	u8 reserved[4];
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1022) 	u64 address;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1023) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1024) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1025) /* 1: S3 Performance Table Pointer Record */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1026) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1027) struct acpi_fpdt_s3pt_pointer {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1028) 	struct acpi_fpdt_header header;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1029) 	u8 reserved[4];
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1030) 	u64 address;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1031) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1032) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1033) /*
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1034)  * S3PT - S3 Performance Table. This table is pointed to by the
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1035)  * S3 Pointer Record above.
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1036)  */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1037) struct acpi_table_s3pt {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1038) 	u8 signature[4];	/* "S3PT" */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1039) 	u32 length;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1040) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1041) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1042) /*
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1043)  * S3PT Subtables (Not part of the actual FPDT)
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1044)  */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1045) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1046) /* Values for Type field in S3PT header */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1047) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1048) enum acpi_s3pt_type {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1049) 	ACPI_S3PT_TYPE_RESUME = 0,
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1050) 	ACPI_S3PT_TYPE_SUSPEND = 1,
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1051) 	ACPI_FPDT_BOOT_PERFORMANCE = 2
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1052) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1053) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1054) struct acpi_s3pt_resume {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1055) 	struct acpi_fpdt_header header;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1056) 	u32 resume_count;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1057) 	u64 full_resume;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1058) 	u64 average_resume;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1059) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1060) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1061) struct acpi_s3pt_suspend {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1062) 	struct acpi_fpdt_header header;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1063) 	u64 suspend_start;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1064) 	u64 suspend_end;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1065) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1066) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1067) /*
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1068)  * FPDT Boot Performance Record (Not part of the actual FPDT)
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1069)  */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1070) struct acpi_fpdt_boot {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1071) 	struct acpi_fpdt_header header;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1072) 	u8 reserved[4];
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1073) 	u64 reset_end;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1074) 	u64 load_start;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1075) 	u64 startup_start;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1076) 	u64 exit_services_entry;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1077) 	u64 exit_services_exit;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1078) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1079) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1080) /*******************************************************************************
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1081)  *
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1082)  * GTDT - Generic Timer Description Table (ACPI 5.1)
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1083)  *        Version 2
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1084)  *
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1085)  ******************************************************************************/
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1086) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1087) struct acpi_table_gtdt {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1088) 	struct acpi_table_header header;	/* Common ACPI table header */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1089) 	u64 counter_block_addresss;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1090) 	u32 reserved;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1091) 	u32 secure_el1_interrupt;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1092) 	u32 secure_el1_flags;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1093) 	u32 non_secure_el1_interrupt;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1094) 	u32 non_secure_el1_flags;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1095) 	u32 virtual_timer_interrupt;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1096) 	u32 virtual_timer_flags;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1097) 	u32 non_secure_el2_interrupt;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1098) 	u32 non_secure_el2_flags;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1099) 	u64 counter_read_block_address;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1100) 	u32 platform_timer_count;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1101) 	u32 platform_timer_offset;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1102) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1103) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1104) /* Flag Definitions: Timer Block Physical Timers and Virtual timers */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1105) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1106) #define ACPI_GTDT_INTERRUPT_MODE        (1)
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1107) #define ACPI_GTDT_INTERRUPT_POLARITY    (1<<1)
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1108) #define ACPI_GTDT_ALWAYS_ON             (1<<2)
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1109) 
8f5a14d053100 (Erik Kaneda      2019-02-15 13:36:18 -0800 1110) struct acpi_gtdt_el2 {
8f5a14d053100 (Erik Kaneda      2019-02-15 13:36:18 -0800 1111) 	u32 virtual_el2_timer_gsiv;
8f5a14d053100 (Erik Kaneda      2019-02-15 13:36:18 -0800 1112) 	u32 virtual_el2_timer_flags;
8f5a14d053100 (Erik Kaneda      2019-02-15 13:36:18 -0800 1113) };
8f5a14d053100 (Erik Kaneda      2019-02-15 13:36:18 -0800 1114) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1115) /* Common GTDT subtable header */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1116) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1117) struct acpi_gtdt_header {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1118) 	u8 type;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1119) 	u16 length;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1120) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1121) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1122) /* Values for GTDT subtable type above */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1123) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1124) enum acpi_gtdt_type {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1125) 	ACPI_GTDT_TYPE_TIMER_BLOCK = 0,
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1126) 	ACPI_GTDT_TYPE_WATCHDOG = 1,
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1127) 	ACPI_GTDT_TYPE_RESERVED = 2	/* 2 and greater are reserved */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1128) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1129) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1130) /* GTDT Subtables, correspond to Type in struct acpi_gtdt_header */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1131) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1132) /* 0: Generic Timer Block */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1133) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1134) struct acpi_gtdt_timer_block {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1135) 	struct acpi_gtdt_header header;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1136) 	u8 reserved;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1137) 	u64 block_address;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1138) 	u32 timer_count;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1139) 	u32 timer_offset;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1140) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1141) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1142) /* Timer Sub-Structure, one per timer */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1143) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1144) struct acpi_gtdt_timer_entry {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1145) 	u8 frame_number;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1146) 	u8 reserved[3];
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1147) 	u64 base_address;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1148) 	u64 el0_base_address;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1149) 	u32 timer_interrupt;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1150) 	u32 timer_flags;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1151) 	u32 virtual_timer_interrupt;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1152) 	u32 virtual_timer_flags;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1153) 	u32 common_flags;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1154) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1155) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1156) /* Flag Definitions: timer_flags and virtual_timer_flags above */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1157) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1158) #define ACPI_GTDT_GT_IRQ_MODE               (1)
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1159) #define ACPI_GTDT_GT_IRQ_POLARITY           (1<<1)
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1160) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1161) /* Flag Definitions: common_flags above */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1162) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1163) #define ACPI_GTDT_GT_IS_SECURE_TIMER        (1)
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1164) #define ACPI_GTDT_GT_ALWAYS_ON              (1<<1)
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1165) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1166) /* 1: SBSA Generic Watchdog Structure */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1167) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1168) struct acpi_gtdt_watchdog {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1169) 	struct acpi_gtdt_header header;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1170) 	u8 reserved;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1171) 	u64 refresh_frame_address;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1172) 	u64 control_frame_address;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1173) 	u32 timer_interrupt;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1174) 	u32 timer_flags;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1175) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1176) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1177) /* Flag Definitions: timer_flags above */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1178) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1179) #define ACPI_GTDT_WATCHDOG_IRQ_MODE         (1)
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1180) #define ACPI_GTDT_WATCHDOG_IRQ_POLARITY     (1<<1)
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1181) #define ACPI_GTDT_WATCHDOG_SECURE           (1<<2)
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1182) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1183) /*******************************************************************************
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1184)  *
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1185)  * HEST - Hardware Error Source Table (ACPI 4.0)
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1186)  *        Version 1
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1187)  *
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1188)  ******************************************************************************/
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1189) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1190) struct acpi_table_hest {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1191) 	struct acpi_table_header header;	/* Common ACPI table header */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1192) 	u32 error_source_count;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1193) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1194) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1195) /* HEST subtable header */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1196) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1197) struct acpi_hest_header {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1198) 	u16 type;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1199) 	u16 source_id;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1200) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1201) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1202) /* Values for Type field above for subtables */
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1203) 
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1204) enum acpi_hest_types {
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1205) 	ACPI_HEST_TYPE_IA32_CHECK = 0,
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1206) 	ACPI_HEST_TYPE_IA32_CORRECTED_CHECK = 1,
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1207) 	ACPI_HEST_TYPE_IA32_NMI = 2,
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1208) 	ACPI_HEST_TYPE_NOT_USED3 = 3,
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1209) 	ACPI_HEST_TYPE_NOT_USED4 = 4,
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1210) 	ACPI_HEST_TYPE_NOT_USED5 = 5,
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1211) 	ACPI_HEST_TYPE_AER_ROOT_PORT = 6,
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1212) 	ACPI_HEST_TYPE_AER_ENDPOINT = 7,
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1213) 	ACPI_HEST_TYPE_AER_BRIDGE = 8,
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1214) 	ACPI_HEST_TYPE_GENERIC_ERROR = 9,
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1215) 	ACPI_HEST_TYPE_GENERIC_ERROR_V2 = 10,
c042933df2b15 (Bob Moore        2017-06-05 16:38:41 +0800 1216) 	ACPI_HEST_TYPE_IA32_DEFERRED_CHECK = 11,
c042933df2b15 (Bob Moore        2017-06-05 16:38:41 +0800 1217) 	ACPI_HEST_TYPE_RESERVED = 12	/* 12 and greater are reserved */
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1218) };
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1219) 
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1220) /*
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1221)  * HEST substructures contained in subtables
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1222)  */
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1223) 
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1224) /*
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1225)  * IA32 Error Bank(s) - Follows the struct acpi_hest_ia_machine_check and
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1226)  * struct acpi_hest_ia_corrected structures.
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1227)  */
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1228) struct acpi_hest_ia_error_bank {
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1229) 	u8 bank_number;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1230) 	u8 clear_status_on_init;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1231) 	u8 status_format;
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1232) 	u8 reserved;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1233) 	u32 control_register;
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1234) 	u64 control_data;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1235) 	u32 status_register;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1236) 	u32 address_register;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1237) 	u32 misc_register;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1238) };
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1239) 
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1240) /* Common HEST sub-structure for PCI/AER structures below (6,7,8) */
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1241) 
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1242) struct acpi_hest_aer_common {
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1243) 	u16 reserved1;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1244) 	u8 flags;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1245) 	u8 enabled;
c276e38841633 (Bob Moore        2009-07-27 14:55:02 +0800 1246) 	u32 records_to_preallocate;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1247) 	u32 max_sections_per_record;
4059a31063e9b (Betty Dall       2014-01-13 12:17:47 -0700 1248) 	u32 bus;		/* Bus and Segment numbers */
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1249) 	u16 device;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1250) 	u16 function;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1251) 	u16 device_control;
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1252) 	u16 reserved2;
c276e38841633 (Bob Moore        2009-07-27 14:55:02 +0800 1253) 	u32 uncorrectable_mask;
c276e38841633 (Bob Moore        2009-07-27 14:55:02 +0800 1254) 	u32 uncorrectable_severity;
c276e38841633 (Bob Moore        2009-07-27 14:55:02 +0800 1255) 	u32 correctable_mask;
c276e38841633 (Bob Moore        2009-07-27 14:55:02 +0800 1256) 	u32 advanced_capabilities;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1257) };
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1258) 
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1259) /* Masks for HEST Flags fields */
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1260) 
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1261) #define ACPI_HEST_FIRMWARE_FIRST        (1)
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1262) #define ACPI_HEST_GLOBAL                (1<<1)
2e166c731ddd5 (Bob Moore        2017-06-05 16:38:32 +0800 1263) #define ACPI_HEST_GHES_ASSIST           (1<<2)
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1264) 
4059a31063e9b (Betty Dall       2014-01-13 12:17:47 -0700 1265) /*
4059a31063e9b (Betty Dall       2014-01-13 12:17:47 -0700 1266)  * Macros to access the bus/segment numbers in Bus field above:
4059a31063e9b (Betty Dall       2014-01-13 12:17:47 -0700 1267)  *  Bus number is encoded in bits 7:0
4059a31063e9b (Betty Dall       2014-01-13 12:17:47 -0700 1268)  *  Segment number is encoded in bits 23:8
4059a31063e9b (Betty Dall       2014-01-13 12:17:47 -0700 1269)  */
4059a31063e9b (Betty Dall       2014-01-13 12:17:47 -0700 1270) #define ACPI_HEST_BUS(bus)              ((bus) & 0xFF)
4059a31063e9b (Betty Dall       2014-01-13 12:17:47 -0700 1271) #define ACPI_HEST_SEGMENT(bus)          (((bus) >> 8) & 0xFFFF)
4059a31063e9b (Betty Dall       2014-01-13 12:17:47 -0700 1272) 
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1273) /* Hardware Error Notification */
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1274) 
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1275) struct acpi_hest_notify {
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1276) 	u8 type;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1277) 	u8 length;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1278) 	u16 config_write_enable;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1279) 	u32 poll_interval;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1280) 	u32 vector;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1281) 	u32 polling_threshold_value;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1282) 	u32 polling_threshold_window;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1283) 	u32 error_threshold_value;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1284) 	u32 error_threshold_window;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1285) };
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1286) 
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1287) /* Values for Notify Type field above */
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1288) 
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1289) enum acpi_hest_notify_types {
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1290) 	ACPI_HEST_NOTIFY_POLLED = 0,
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1291) 	ACPI_HEST_NOTIFY_EXTERNAL = 1,
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1292) 	ACPI_HEST_NOTIFY_LOCAL = 2,
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1293) 	ACPI_HEST_NOTIFY_SCI = 3,
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1294) 	ACPI_HEST_NOTIFY_NMI = 4,
ca4a03143f6c9 (Bob Moore        2012-08-24 10:25:12 -0700 1295) 	ACPI_HEST_NOTIFY_CMCI = 5,	/* ACPI 5.0 */
ca4a03143f6c9 (Bob Moore        2012-08-24 10:25:12 -0700 1296) 	ACPI_HEST_NOTIFY_MCE = 6,	/* ACPI 5.0 */
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1297) 	ACPI_HEST_NOTIFY_GPIO = 7,	/* ACPI 6.0 */
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1298) 	ACPI_HEST_NOTIFY_SEA = 8,	/* ACPI 6.1 */
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1299) 	ACPI_HEST_NOTIFY_SEI = 9,	/* ACPI 6.1 */
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1300) 	ACPI_HEST_NOTIFY_GSIV = 10,	/* ACPI 6.1 */
4a8a6058a9099 (Bob Moore        2017-06-05 16:38:20 +0800 1301) 	ACPI_HEST_NOTIFY_SOFTWARE_DELEGATED = 11,	/* ACPI 6.2 */
4a8a6058a9099 (Bob Moore        2017-06-05 16:38:20 +0800 1302) 	ACPI_HEST_NOTIFY_RESERVED = 12	/* 12 and greater are reserved */
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1303) };
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1304) 
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1305) /* Values for config_write_enable bitfield above */
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1306) 
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1307) #define ACPI_HEST_TYPE                  (1)
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1308) #define ACPI_HEST_POLL_INTERVAL         (1<<1)
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1309) #define ACPI_HEST_POLL_THRESHOLD_VALUE  (1<<2)
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1310) #define ACPI_HEST_POLL_THRESHOLD_WINDOW (1<<3)
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1311) #define ACPI_HEST_ERR_THRESHOLD_VALUE   (1<<4)
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1312) #define ACPI_HEST_ERR_THRESHOLD_WINDOW  (1<<5)
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1313) 
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1314) /*
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1315)  * HEST subtables
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1316)  */
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1317) 
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1318) /* 0: IA32 Machine Check Exception */
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1319) 
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1320) struct acpi_hest_ia_machine_check {
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1321) 	struct acpi_hest_header header;
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1322) 	u16 reserved1;
c042933df2b15 (Bob Moore        2017-06-05 16:38:41 +0800 1323) 	u8 flags;		/* See flags ACPI_HEST_GLOBAL, etc. above */
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1324) 	u8 enabled;
c276e38841633 (Bob Moore        2009-07-27 14:55:02 +0800 1325) 	u32 records_to_preallocate;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1326) 	u32 max_sections_per_record;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1327) 	u64 global_capability_data;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1328) 	u64 global_control_data;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1329) 	u8 num_hardware_banks;
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1330) 	u8 reserved3[7];
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1331) };
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1332) 
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1333) /* 1: IA32 Corrected Machine Check */
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1334) 
1872bbc94b2d0 (Bob Moore        2009-08-13 13:31:00 +0800 1335) struct acpi_hest_ia_corrected {
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1336) 	struct acpi_hest_header header;
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1337) 	u16 reserved1;
c042933df2b15 (Bob Moore        2017-06-05 16:38:41 +0800 1338) 	u8 flags;		/* See flags ACPI_HEST_GLOBAL, etc. above */
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1339) 	u8 enabled;
c276e38841633 (Bob Moore        2009-07-27 14:55:02 +0800 1340) 	u32 records_to_preallocate;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1341) 	u32 max_sections_per_record;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1342) 	struct acpi_hest_notify notify;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1343) 	u8 num_hardware_banks;
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1344) 	u8 reserved2[3];
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1345) };
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1346) 
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1347) /* 2: IA32 Non-Maskable Interrupt */
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1348) 
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1349) struct acpi_hest_ia_nmi {
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1350) 	struct acpi_hest_header header;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1351) 	u32 reserved;
c276e38841633 (Bob Moore        2009-07-27 14:55:02 +0800 1352) 	u32 records_to_preallocate;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1353) 	u32 max_sections_per_record;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1354) 	u32 max_raw_data_length;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1355) };
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1356) 
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1357) /* 3,4,5: Not used */
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1358) 
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1359) /* 6: PCI Express Root Port AER */
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1360) 
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1361) struct acpi_hest_aer_root {
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1362) 	struct acpi_hest_header header;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1363) 	struct acpi_hest_aer_common aer;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1364) 	u32 root_error_command;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1365) };
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1366) 
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1367) /* 7: PCI Express AER (AER Endpoint) */
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1368) 
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1369) struct acpi_hest_aer {
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1370) 	struct acpi_hest_header header;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1371) 	struct acpi_hest_aer_common aer;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1372) };
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1373) 
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1374) /* 8: PCI Express/PCI-X Bridge AER */
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1375) 
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1376) struct acpi_hest_aer_bridge {
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1377) 	struct acpi_hest_header header;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1378) 	struct acpi_hest_aer_common aer;
c276e38841633 (Bob Moore        2009-07-27 14:55:02 +0800 1379) 	u32 uncorrectable_mask2;
c276e38841633 (Bob Moore        2009-07-27 14:55:02 +0800 1380) 	u32 uncorrectable_severity2;
c276e38841633 (Bob Moore        2009-07-27 14:55:02 +0800 1381) 	u32 advanced_capabilities2;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1382) };
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1383) 
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1384) /* 9: Generic Hardware Error Source */
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1385) 
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1386) struct acpi_hest_generic {
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1387) 	struct acpi_hest_header header;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1388) 	u16 related_source_id;
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1389) 	u8 reserved;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1390) 	u8 enabled;
c276e38841633 (Bob Moore        2009-07-27 14:55:02 +0800 1391) 	u32 records_to_preallocate;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1392) 	u32 max_sections_per_record;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1393) 	u32 max_raw_data_length;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1394) 	struct acpi_generic_address error_status_address;
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1395) 	struct acpi_hest_notify notify;
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1396) 	u32 error_block_length;
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1397) };
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1398) 
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1399) /* 10: Generic Hardware Error Source, version 2 */
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1400) 
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1401) struct acpi_hest_generic_v2 {
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1402) 	struct acpi_hest_header header;
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1403) 	u16 related_source_id;
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1404) 	u8 reserved;
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1405) 	u8 enabled;
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1406) 	u32 records_to_preallocate;
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1407) 	u32 max_sections_per_record;
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1408) 	u32 max_raw_data_length;
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1409) 	struct acpi_generic_address error_status_address;
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1410) 	struct acpi_hest_notify notify;
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1411) 	u32 error_block_length;
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1412) 	struct acpi_generic_address read_ack_register;
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1413) 	u64 read_ack_preserve;
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1414) 	u64 read_ack_write;
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1415) };
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1416) 
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1417) /* Generic Error Status block */
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1418) 
0a00fd5e20fd5 (Lv Zheng         2014-06-03 16:32:53 +0800 1419) struct acpi_hest_generic_status {
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1420) 	u32 block_status;
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1421) 	u32 raw_data_offset;
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1422) 	u32 raw_data_length;
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1423) 	u32 data_length;
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1424) 	u32 error_severity;
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1425) };
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1426) 
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1427) /* Values for block_status flags above */
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1428) 
0a00fd5e20fd5 (Lv Zheng         2014-06-03 16:32:53 +0800 1429) #define ACPI_HEST_UNCORRECTABLE             (1)
0a00fd5e20fd5 (Lv Zheng         2014-06-03 16:32:53 +0800 1430) #define ACPI_HEST_CORRECTABLE               (1<<1)
0a00fd5e20fd5 (Lv Zheng         2014-06-03 16:32:53 +0800 1431) #define ACPI_HEST_MULTIPLE_UNCORRECTABLE    (1<<2)
0a00fd5e20fd5 (Lv Zheng         2014-06-03 16:32:53 +0800 1432) #define ACPI_HEST_MULTIPLE_CORRECTABLE      (1<<3)
0a00fd5e20fd5 (Lv Zheng         2014-06-03 16:32:53 +0800 1433) #define ACPI_HEST_ERROR_ENTRY_COUNT         (0xFF<<4)	/* 8 bits, error count */
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1434) 
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1435) /* Generic Error Data entry */
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1436) 
0a00fd5e20fd5 (Lv Zheng         2014-06-03 16:32:53 +0800 1437) struct acpi_hest_generic_data {
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1438) 	u8 section_type[16];
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1439) 	u32 error_severity;
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1440) 	u16 revision;
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1441) 	u8 validation_bits;
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1442) 	u8 flags;
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1443) 	u32 error_data_length;
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1444) 	u8 fru_id[16];
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1445) 	u8 fru_text[20];
3fa347770a8a9 (Bob Moore        2008-04-10 19:06:43 +0400 1446) };
970d9c9ec313d (Bob Moore        2008-04-10 19:06:42 +0400 1447) 
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1448) /* Extension for revision 0x0300 */
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1449) 
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1450) struct acpi_hest_generic_data_v300 {
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1451) 	u8 section_type[16];
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1452) 	u32 error_severity;
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1453) 	u16 revision;
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1454) 	u8 validation_bits;
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1455) 	u8 flags;
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1456) 	u32 error_data_length;
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1457) 	u8 fru_id[16];
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1458) 	u8 fru_text[20];
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1459) 	u64 time_stamp;
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1460) };
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1461) 
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1462) /* Values for error_severity above */
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1463) 
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1464) #define ACPI_HEST_GEN_ERROR_RECOVERABLE     0
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1465) #define ACPI_HEST_GEN_ERROR_FATAL           1
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1466) #define ACPI_HEST_GEN_ERROR_CORRECTED       2
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1467) #define ACPI_HEST_GEN_ERROR_NONE            3
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1468) 
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1469) /* Flags for validation_bits above */
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1470) 
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1471) #define ACPI_HEST_GEN_VALID_FRU_ID          (1)
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1472) #define ACPI_HEST_GEN_VALID_FRU_STRING      (1<<1)
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1473) #define ACPI_HEST_GEN_VALID_TIMESTAMP       (1<<2)
7cd55c76f35ff (Bob Moore        2016-03-24 09:38:57 +0800 1474) 
c042933df2b15 (Bob Moore        2017-06-05 16:38:41 +0800 1475) /* 11: IA32 Deferred Machine Check Exception (ACPI 6.2) */
c042933df2b15 (Bob Moore        2017-06-05 16:38:41 +0800 1476) 
c042933df2b15 (Bob Moore        2017-06-05 16:38:41 +0800 1477) struct acpi_hest_ia_deferred_check {
c042933df2b15 (Bob Moore        2017-06-05 16:38:41 +0800 1478) 	struct acpi_hest_header header;
c042933df2b15 (Bob Moore        2017-06-05 16:38:41 +0800 1479) 	u16 reserved1;
c042933df2b15 (Bob Moore        2017-06-05 16:38:41 +0800 1480) 	u8 flags;		/* See flags ACPI_HEST_GLOBAL, etc. above */
c042933df2b15 (Bob Moore        2017-06-05 16:38:41 +0800 1481) 	u8 enabled;
c042933df2b15 (Bob Moore        2017-06-05 16:38:41 +0800 1482) 	u32 records_to_preallocate;
c042933df2b15 (Bob Moore        2017-06-05 16:38:41 +0800 1483) 	u32 max_sections_per_record;
c042933df2b15 (Bob Moore        2017-06-05 16:38:41 +0800 1484) 	struct acpi_hest_notify notify;
c042933df2b15 (Bob Moore        2017-06-05 16:38:41 +0800 1485) 	u8 num_hardware_banks;
c042933df2b15 (Bob Moore        2017-06-05 16:38:41 +0800 1486) 	u8 reserved2[3];
c042933df2b15 (Bob Moore        2017-06-05 16:38:41 +0800 1487) };
c042933df2b15 (Bob Moore        2017-06-05 16:38:41 +0800 1488) 
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1489) /*******************************************************************************
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1490)  *
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1491)  * HMAT - Heterogeneous Memory Attributes Table (ACPI 6.2)
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1492)  *        Version 1
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1493)  *
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1494)  ******************************************************************************/
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1495) 
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1496) struct acpi_table_hmat {
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1497) 	struct acpi_table_header header;	/* Common ACPI table header */
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1498) 	u32 reserved;
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1499) };
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1500) 
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1501) /* Values for HMAT structure types */
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1502) 
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1503) enum acpi_hmat_type {
57f5cf6ed8bdb (Alison Schofield 2019-04-17 11:13:10 -0700 1504) 	ACPI_HMAT_TYPE_PROXIMITY = 0,	/* Memory proximity domain attributes */
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1505) 	ACPI_HMAT_TYPE_LOCALITY = 1,	/* System locality latency and bandwidth information */
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1506) 	ACPI_HMAT_TYPE_CACHE = 2,	/* Memory side cache information */
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1507) 	ACPI_HMAT_TYPE_RESERVED = 3	/* 3 and greater are reserved */
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1508) };
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1509) 
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1510) struct acpi_hmat_structure {
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1511) 	u16 type;
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1512) 	u16 reserved;
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1513) 	u32 length;
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1514) };
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1515) 
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1516) /*
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1517)  * HMAT Structures, correspond to Type in struct acpi_hmat_structure
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1518)  */
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1519) 
9a8d961f1ef83 (Erik Kaneda      2019-02-15 13:36:17 -0800 1520) /* 0: Memory proximity domain attributes */
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1521) 
9a8d961f1ef83 (Erik Kaneda      2019-02-15 13:36:17 -0800 1522) struct acpi_hmat_proximity_domain {
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1523) 	struct acpi_hmat_structure header;
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1524) 	u16 flags;
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1525) 	u16 reserved1;
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1526) 	u32 processor_PD;	/* Processor proximity domain */
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1527) 	u32 memory_PD;		/* Memory proximity domain */
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1528) 	u32 reserved2;
9a8d961f1ef83 (Erik Kaneda      2019-02-15 13:36:17 -0800 1529) 	u64 reserved3;
9a8d961f1ef83 (Erik Kaneda      2019-02-15 13:36:17 -0800 1530) 	u64 reserved4;
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1531) };
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1532) 
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1533) /* Masks for Flags field above */
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1534) 
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1535) #define ACPI_HMAT_PROCESSOR_PD_VALID    (1)	/* 1: processor_PD field is valid */
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1536) #define ACPI_HMAT_MEMORY_PD_VALID       (1<<1)	/* 1: memory_PD field is valid */
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1537) #define ACPI_HMAT_RESERVATION_HINT      (1<<2)	/* 1: Reservation hint */
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1538) 
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1539) /* 1: System locality latency and bandwidth information */
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1540) 
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1541) struct acpi_hmat_locality {
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1542) 	struct acpi_hmat_structure header;
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1543) 	u8 flags;
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1544) 	u8 data_type;
f1489db63efb3 (Bob Moore        2021-04-06 14:30:16 -0700 1545) 	u8 min_transfer_size;
f1489db63efb3 (Bob Moore        2021-04-06 14:30:16 -0700 1546) 	u8 reserved1;
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1547) 	u32 number_of_initiator_Pds;
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1548) 	u32 number_of_target_Pds;
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1549) 	u32 reserved2;
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1550) 	u64 entry_base_unit;
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1551) };
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1552) 
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1553) /* Masks for Flags field above */
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1554) 
f1489db63efb3 (Bob Moore        2021-04-06 14:30:16 -0700 1555) #define ACPI_HMAT_MEMORY_HIERARCHY  (0x0F)     /* Bits 0-3 */
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1556) 
f1489db63efb3 (Bob Moore        2021-04-06 14:30:16 -0700 1557) /* Values for Memory Hierarchy flags */
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1558) 
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1559) #define ACPI_HMAT_MEMORY            0
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1560) #define ACPI_HMAT_LAST_LEVEL_CACHE  1
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1561) #define ACPI_HMAT_1ST_LEVEL_CACHE   2
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1562) #define ACPI_HMAT_2ND_LEVEL_CACHE   3
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1563) #define ACPI_HMAT_3RD_LEVEL_CACHE   4
f1489db63efb3 (Bob Moore        2021-04-06 14:30:16 -0700 1564) #define ACPI_HMAT_MINIMUM_XFER_SIZE 0x10       /* Bit 4: ACPI 6.4 */
f1489db63efb3 (Bob Moore        2021-04-06 14:30:16 -0700 1565) #define ACPI_HMAT_NON_SEQUENTIAL_XFERS 0x20    /* Bit 5: ACPI 6.4 */
f1489db63efb3 (Bob Moore        2021-04-06 14:30:16 -0700 1566) 
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1567) 
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1568) /* Values for data_type field above */
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1569) 
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1570) #define ACPI_HMAT_ACCESS_LATENCY    0
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1571) #define ACPI_HMAT_READ_LATENCY      1
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1572) #define ACPI_HMAT_WRITE_LATENCY     2
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1573) #define ACPI_HMAT_ACCESS_BANDWIDTH  3
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1574) #define ACPI_HMAT_READ_BANDWIDTH    4
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1575) #define ACPI_HMAT_WRITE_BANDWIDTH   5
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1576) 
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1577) /* 2: Memory side cache information */
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1578) 
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1579) struct acpi_hmat_cache {
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1580) 	struct acpi_hmat_structure header;
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1581) 	u32 memory_PD;
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1582) 	u32 reserved1;
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1583) 	u64 cache_size;
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1584) 	u32 cache_attributes;
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1585) 	u16 reserved2;
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1586) 	u16 number_of_SMBIOShandles;
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1587) };
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1588) 
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1589) /* Masks for cache_attributes field above */
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1590) 
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1591) #define ACPI_HMAT_TOTAL_CACHE_LEVEL     (0x0000000F)
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1592) #define ACPI_HMAT_CACHE_LEVEL           (0x000000F0)
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1593) #define ACPI_HMAT_CACHE_ASSOCIATIVITY   (0x00000F00)
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1594) #define ACPI_HMAT_WRITE_POLICY          (0x0000F000)
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1595) #define ACPI_HMAT_CACHE_LINE_SIZE       (0xFFFF0000)
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1596) 
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1597) /* Values for cache associativity flag */
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1598) 
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1599) #define ACPI_HMAT_CA_NONE                     (0)
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1600) #define ACPI_HMAT_CA_DIRECT_MAPPED            (1)
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1601) #define ACPI_HMAT_CA_COMPLEX_CACHE_INDEXING   (2)
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1602) 
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1603) /* Values for write policy flag */
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1604) 
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1605) #define ACPI_HMAT_CP_NONE   (0)
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1606) #define ACPI_HMAT_CP_WB     (1)
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1607) #define ACPI_HMAT_CP_WT     (2)
fa418ddfc7a6d (Lv Zheng         2017-06-05 16:37:16 +0800 1608) 
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500 1609) /*******************************************************************************
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500 1610)  *
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1611)  * HPET - High Precision Event Timer table
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1612)  *        Version 1
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1613)  *
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1614)  * Conforms to "IA-PC HPET (High Precision Event Timers) Specification",
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1615)  * Version 1.0a, October 2004
81b7cb92958f5 (Bob Moore        2017-09-20 10:00:30 +0800 1616)  *
81b7cb92958f5 (Bob Moore        2017-09-20 10:00:30 +0800 1617)  ******************************************************************************/
81b7cb92958f5 (Bob Moore        2017-09-20 10:00:30 +0800 1618) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1619) struct acpi_table_hpet {
81b7cb92958f5 (Bob Moore        2017-09-20 10:00:30 +0800 1620) 	struct acpi_table_header header;	/* Common ACPI table header */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1621) 	u32 id;			/* Hardware ID of event timer block */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1622) 	struct acpi_generic_address address;	/* Address of event timer block */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1623) 	u8 sequence;		/* HPET sequence number */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1624) 	u16 minimum_tick;	/* Main counter min tick, periodic mode */
4c189c9da00ed (Bob Moore        2017-11-17 15:40:22 -0800 1625) 	u8 flags;
81b7cb92958f5 (Bob Moore        2017-09-20 10:00:30 +0800 1626) };
81b7cb92958f5 (Bob Moore        2017-09-20 10:00:30 +0800 1627) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1628) /* Masks for Flags field above */
e3860b5ecff12 (Jeremy Linton    2017-11-17 15:42:29 -0800 1629) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1630) #define ACPI_HPET_PAGE_PROTECT_MASK (3)
e3860b5ecff12 (Jeremy Linton    2017-11-17 15:42:29 -0800 1631) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1632) /* Values for Page Protect flags */
b8355bcac2534 (Lv Zheng         2017-06-05 16:38:26 +0800 1633) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1634) enum acpi_hpet_page_protect {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1635) 	ACPI_HPET_NO_PAGE_PROTECT = 0,
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1636) 	ACPI_HPET_PAGE_PROTECT4 = 1,
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1637) 	ACPI_HPET_PAGE_PROTECT64 = 2
b8355bcac2534 (Lv Zheng         2017-06-05 16:38:26 +0800 1638) };
b8355bcac2534 (Lv Zheng         2017-06-05 16:38:26 +0800 1639) 
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500 1640) /*******************************************************************************
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500 1641)  *
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1642)  * IBFT - Boot Firmware Table
6e2d5ebd0d361 (Bob Moore        2009-07-27 10:53:00 +0800 1643)  *        Version 1
793c2388cae3f (Bob Moore        2006-03-31 00:00:00 -0500 1644)  *
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1645)  * Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1646)  * Specification", Version 1.01, March 1, 2007
4c189c9da00ed (Bob Moore        2017-11-17 15:40:22 -0800 1647)  *
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1648)  * Note: It appears that this table is not intended to appear in the RSDT/XSDT.
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1649)  * Therefore, it is not currently supported by the disassembler.
4c189c9da00ed (Bob Moore        2017-11-17 15:40:22 -0800 1650)  *
4c189c9da00ed (Bob Moore        2017-11-17 15:40:22 -0800 1651)  ******************************************************************************/
4c189c9da00ed (Bob Moore        2017-11-17 15:40:22 -0800 1652) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1653) struct acpi_table_ibft {
4c189c9da00ed (Bob Moore        2017-11-17 15:40:22 -0800 1654) 	struct acpi_table_header header;	/* Common ACPI table header */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1655) 	u8 reserved[12];
4c189c9da00ed (Bob Moore        2017-11-17 15:40:22 -0800 1656) };
4c189c9da00ed (Bob Moore        2017-11-17 15:40:22 -0800 1657) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1658) /* IBFT common subtable header */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1659) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1660) struct acpi_ibft_header {
4c189c9da00ed (Bob Moore        2017-11-17 15:40:22 -0800 1661) 	u8 type;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1662) 	u8 version;
4c189c9da00ed (Bob Moore        2017-11-17 15:40:22 -0800 1663) 	u16 length;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1664) 	u8 index;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1665) 	u8 flags;
4c189c9da00ed (Bob Moore        2017-11-17 15:40:22 -0800 1666) };
4c189c9da00ed (Bob Moore        2017-11-17 15:40:22 -0800 1667) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1668) /* Values for Type field above */
a618c7f89a02f (Bob Moore        2017-06-05 16:38:47 +0800 1669) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1670) enum acpi_ibft_type {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1671) 	ACPI_IBFT_TYPE_NOT_USED = 0,
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1672) 	ACPI_IBFT_TYPE_CONTROL = 1,
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1673) 	ACPI_IBFT_TYPE_INITIATOR = 2,
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1674) 	ACPI_IBFT_TYPE_NIC = 3,
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1675) 	ACPI_IBFT_TYPE_TARGET = 4,
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1676) 	ACPI_IBFT_TYPE_EXTENSIONS = 5,
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1677) 	ACPI_IBFT_TYPE_RESERVED = 6	/* 6 and greater are reserved */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1678) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1679) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1680) /* IBFT subtables */
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1681) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1682) struct acpi_ibft_control {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1683) 	struct acpi_ibft_header header;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1684) 	u16 extensions;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1685) 	u16 initiator_offset;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1686) 	u16 nic0_offset;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1687) 	u16 target0_offset;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1688) 	u16 nic1_offset;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1689) 	u16 target1_offset;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1690) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1691) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1692) struct acpi_ibft_initiator {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1693) 	struct acpi_ibft_header header;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1694) 	u8 sns_server[16];
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1695) 	u8 slp_server[16];
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1696) 	u8 primary_server[16];
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1697) 	u8 secondary_server[16];
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1698) 	u16 name_length;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1699) 	u16 name_offset;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1700) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1701) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1702) struct acpi_ibft_nic {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1703) 	struct acpi_ibft_header header;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1704) 	u8 ip_address[16];
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1705) 	u8 subnet_mask_prefix;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1706) 	u8 origin;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1707) 	u8 gateway[16];
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1708) 	u8 primary_dns[16];
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1709) 	u8 secondary_dns[16];
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1710) 	u8 dhcp[16];
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1711) 	u16 vlan;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1712) 	u8 mac_address[6];
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1713) 	u16 pci_address;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1714) 	u16 name_length;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1715) 	u16 name_offset;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1716) };
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1717) 
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1718) struct acpi_ibft_target {
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1719) 	struct acpi_ibft_header header;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1720) 	u8 target_ip_address[16];
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1721) 	u16 target_ip_socket;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1722) 	u8 target_boot_lun[8];
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1723) 	u8 chap_type;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1724) 	u8 nic_association;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1725) 	u16 target_name_length;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1726) 	u16 target_name_offset;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1727) 	u16 chap_name_length;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1728) 	u16 chap_name_offset;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1729) 	u16 chap_secret_length;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1730) 	u16 chap_secret_offset;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1731) 	u16 reverse_chap_name_length;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1732) 	u16 reverse_chap_name_offset;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1733) 	u16 reverse_chap_secret_length;
e62f8227851da (Erik Kaneda      2018-02-15 13:09:26 -0800 1734) 	u16 reverse_chap_secret_offset;
a618c7f89a02f (Bob Moore        2017-06-05 16:38:47 +0800 1735) };
a618c7f89a02f (Bob Moore        2017-06-05 16:38:47 +0800 1736) 
6e596084833b9 (Robert Moore     2014-03-05 14:12:01 +0800 1737) /* Reset to default packing */
6e596084833b9 (Robert Moore     2014-03-05 14:12:01 +0800 1738) 
6e596084833b9 (Robert Moore     2014-03-05 14:12:01 +0800 1739) #pragma pack()
^1da177e4c3f4 (Linus Torvalds   2005-04-16 15:20:36 -0700 1740) 
4be44fcd3bf64 (Len Brown        2005-08-05 00:44:28 -0400 1741) #endif				/* __ACTBL1_H__ */