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__ */