^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) * Name: actbl3.h - ACPI Table Definitions
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) * Copyright (C) 2000 - 2020, Intel Corp.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) *****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #ifndef __ACTBL3_H__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #define __ACTBL3_H__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) * Additional ACPI Tables
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) * These tables are not consumed directly by the ACPICA subsystem, but are
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) * included here to support device drivers and the AML disassembler.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) * Values for description table header signatures for tables defined in this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) * file. Useful because they make it more difficult to inadvertently type in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) * the wrong signature.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) #define ACPI_SIG_SLIC "SLIC" /* Software Licensing Description Table */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) #define ACPI_SIG_SLIT "SLIT" /* System Locality Distance Information Table */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) #define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) #define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) #define ACPI_SIG_SRAT "SRAT" /* System Resource Affinity Table */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) #define ACPI_SIG_STAO "STAO" /* Status Override table */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) #define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) #define ACPI_SIG_TPM2 "TPM2" /* Trusted Platform Module 2.0 H/W interface table */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) #define ACPI_SIG_UEFI "UEFI" /* Uefi Boot Optimization Table */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) #define ACPI_SIG_VRTC "VRTC" /* Virtual Real Time Clock Table */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) #define ACPI_SIG_WAET "WAET" /* Windows ACPI Emulated devices Table */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) #define ACPI_SIG_WDAT "WDAT" /* Watchdog Action Table */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) #define ACPI_SIG_WDDT "WDDT" /* Watchdog Timer Description Table */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) #define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) #define ACPI_SIG_WPBT "WPBT" /* Windows Platform Binary Table */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) #define ACPI_SIG_WSMT "WSMT" /* Windows SMM Security Mitigations Table */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) #define ACPI_SIG_XENV "XENV" /* Xen Environment table */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) #define ACPI_SIG_XXXX "XXXX" /* Intermediate AML header for ASL/ASL+ converter */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) * All tables must be byte-packed to match the ACPI specification, since
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) * the tables are provided by the system BIOS.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) #pragma pack(1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) * Note: C bitfields are not used for this reason:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) * "Bitfields are great and easy to read, but unfortunately the C language
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) * does not specify the layout of bitfields in memory, which means they are
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) * essentially useless for dealing with packed data in on-disk formats or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) * this decision was a design error in C. Ritchie could have picked an order
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) * and stuck with it." Norman Ramsey.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) * See http://stackoverflow.com/a/1053662/41661
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) * SLIC - Software Licensing Description Table
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) * Conforms to "Microsoft Software Licensing Tables (SLIC and MSDM)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) * November 29, 2011. Copyright 2011 Microsoft
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) /* Basic SLIC table is only the common ACPI header */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) struct acpi_table_slic {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) struct acpi_table_header header; /* Common ACPI table header */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) * SLIT - System Locality Distance Information Table
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) * Version 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) struct acpi_table_slit {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) struct acpi_table_header header; /* Common ACPI table header */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) u64 locality_count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) u8 entry[1]; /* Real size = localities^2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) * SPCR - Serial Port Console Redirection table
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) * Version 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) * Conforms to "Serial Port Console Redirection Table",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) * Version 1.03, August 10, 2015
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) struct acpi_table_spcr {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) struct acpi_table_header header; /* Common ACPI table header */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) u8 interface_type; /* 0=full 16550, 1=subset of 16550 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) u8 reserved[3];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) struct acpi_generic_address serial_port;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) u8 interrupt_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) u8 pc_interrupt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) u32 interrupt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) u8 baud_rate;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) u8 parity;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) u8 stop_bits;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) u8 flow_control;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) u8 terminal_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) u8 reserved1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) u16 pci_device_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) u16 pci_vendor_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) u8 pci_bus;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) u8 pci_device;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) u8 pci_function;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) u32 pci_flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) u8 pci_segment;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) u32 reserved2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) /* Masks for pci_flags field above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) #define ACPI_SPCR_DO_NOT_DISABLE (1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) /* Values for Interface Type: See the definition of the DBG2 table */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) * SPMI - Server Platform Management Interface table
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) * Version 5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) * Conforms to "Intelligent Platform Management Interface Specification
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) * Second Generation v2.0", Document Revision 1.0, February 12, 2004 with
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) * June 12, 2009 markup.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) struct acpi_table_spmi {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) struct acpi_table_header header; /* Common ACPI table header */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) u8 interface_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) u8 reserved; /* Must be 1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) u16 spec_revision; /* Version of IPMI */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) u8 interrupt_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) u8 gpe_number; /* GPE assigned */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) u8 reserved1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) u8 pci_device_flag;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) u32 interrupt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) struct acpi_generic_address ipmi_register;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) u8 pci_segment;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) u8 pci_bus;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) u8 pci_device;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) u8 pci_function;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) u8 reserved2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) /* Values for interface_type above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) enum acpi_spmi_interface_types {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) ACPI_SPMI_NOT_USED = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) ACPI_SPMI_KEYBOARD = 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) ACPI_SPMI_SMI = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) ACPI_SPMI_BLOCK_TRANSFER = 3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) ACPI_SPMI_SMBUS = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) ACPI_SPMI_RESERVED = 5 /* 5 and above are reserved */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) * SRAT - System Resource Affinity Table
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) * Version 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) struct acpi_table_srat {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) struct acpi_table_header header; /* Common ACPI table header */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) u32 table_revision; /* Must be value '1' */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) u64 reserved; /* Reserved, must be zero */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) /* Values for subtable type in struct acpi_subtable_header */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) enum acpi_srat_type {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) ACPI_SRAT_TYPE_CPU_AFFINITY = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) ACPI_SRAT_TYPE_MEMORY_AFFINITY = 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) ACPI_SRAT_TYPE_GICC_AFFINITY = 3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) ACPI_SRAT_TYPE_GIC_ITS_AFFINITY = 4, /* ACPI 6.2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) ACPI_SRAT_TYPE_GENERIC_AFFINITY = 5, /* ACPI 6.3 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) ACPI_SRAT_TYPE_RESERVED = 6 /* 5 and greater are reserved */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) * SRAT Subtables, correspond to Type in struct acpi_subtable_header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) /* 0: Processor Local APIC/SAPIC Affinity */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) struct acpi_srat_cpu_affinity {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) struct acpi_subtable_header header;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) u8 proximity_domain_lo;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) u8 apic_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) u32 flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) u8 local_sapic_eid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) u8 proximity_domain_hi[3];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) u32 clock_domain;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) /* Flags */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) #define ACPI_SRAT_CPU_USE_AFFINITY (1) /* 00: Use affinity structure */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) /* 1: Memory Affinity */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) struct acpi_srat_mem_affinity {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) struct acpi_subtable_header header;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) u32 proximity_domain;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) u16 reserved; /* Reserved, must be zero */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) u64 base_address;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) u64 length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) u32 reserved1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) u32 flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) u64 reserved2; /* Reserved, must be zero */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) /* Flags */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) #define ACPI_SRAT_MEM_ENABLED (1) /* 00: Use affinity structure */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) #define ACPI_SRAT_MEM_HOT_PLUGGABLE (1<<1) /* 01: Memory region is hot pluggable */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) #define ACPI_SRAT_MEM_NON_VOLATILE (1<<2) /* 02: Memory region is non-volatile */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) /* 2: Processor Local X2_APIC Affinity (ACPI 4.0) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) struct acpi_srat_x2apic_cpu_affinity {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) struct acpi_subtable_header header;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) u16 reserved; /* Reserved, must be zero */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) u32 proximity_domain;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) u32 apic_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) u32 flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) u32 clock_domain;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) u32 reserved2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) /* Flags for struct acpi_srat_cpu_affinity and struct acpi_srat_x2apic_cpu_affinity */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) #define ACPI_SRAT_CPU_ENABLED (1) /* 00: Use affinity structure */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) /* 3: GICC Affinity (ACPI 5.1) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) struct acpi_srat_gicc_affinity {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) struct acpi_subtable_header header;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) u32 proximity_domain;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) u32 acpi_processor_uid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) u32 flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) u32 clock_domain;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) /* Flags for struct acpi_srat_gicc_affinity */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) #define ACPI_SRAT_GICC_ENABLED (1) /* 00: Use affinity structure */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) /* 4: GCC ITS Affinity (ACPI 6.2) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) struct acpi_srat_gic_its_affinity {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) struct acpi_subtable_header header;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) u32 proximity_domain;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) u16 reserved;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) u32 its_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) /* 5: Generic Initiator Affinity Structure (ACPI 6.3) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) struct acpi_srat_generic_affinity {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) struct acpi_subtable_header header;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) u8 reserved;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) u8 device_handle_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) u32 proximity_domain;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) u8 device_handle[16];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) u32 flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) u32 reserved1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) /* Flags for struct acpi_srat_generic_affinity */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) #define ACPI_SRAT_GENERIC_AFFINITY_ENABLED (1) /* 00: Use affinity structure */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) * STAO - Status Override Table (_STA override) - ACPI 6.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) * Version 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) * Conforms to "ACPI Specification for Status Override Table"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) * 6 January 2015
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) struct acpi_table_stao {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) struct acpi_table_header header; /* Common ACPI table header */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) u8 ignore_uart;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) * TCPA - Trusted Computing Platform Alliance table
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) * Version 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) * TCG Hardware Interface Table for TPM 1.2 Clients and Servers
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) * Conforms to "TCG ACPI Specification, Family 1.2 and 2.0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) * Version 1.2, Revision 8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) * February 27, 2017
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) * NOTE: There are two versions of the table with the same signature --
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) * the client version and the server version. The common platform_class
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319) * field is used to differentiate the two types of tables.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321) ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323) struct acpi_table_tcpa_hdr {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) struct acpi_table_header header; /* Common ACPI table header */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325) u16 platform_class;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329) * Values for platform_class above.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) * This is how the client and server subtables are differentiated
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332) #define ACPI_TCPA_CLIENT_TABLE 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) #define ACPI_TCPA_SERVER_TABLE 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) struct acpi_table_tcpa_client {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336) u32 minimum_log_length; /* Minimum length for the event log area */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337) u64 log_address; /* Address of the event log area */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340) struct acpi_table_tcpa_server {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341) u16 reserved;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342) u64 minimum_log_length; /* Minimum length for the event log area */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343) u64 log_address; /* Address of the event log area */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344) u16 spec_revision;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 345) u8 device_flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346) u8 interrupt_flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 347) u8 gpe_number;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 348) u8 reserved2[3];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 349) u32 global_interrupt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350) struct acpi_generic_address address;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351) u32 reserved3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352) struct acpi_generic_address config_address;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353) u8 group;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 354) u8 bus; /* PCI Bus/Segment/Function numbers */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 355) u8 device;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 356) u8 function;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 357) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 358)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 359) /* Values for device_flags above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 360)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 361) #define ACPI_TCPA_PCI_DEVICE (1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 362) #define ACPI_TCPA_BUS_PNP (1<<1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 363) #define ACPI_TCPA_ADDRESS_VALID (1<<2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 364)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 365) /* Values for interrupt_flags above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 366)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 367) #define ACPI_TCPA_INTERRUPT_MODE (1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 368) #define ACPI_TCPA_INTERRUPT_POLARITY (1<<1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 369) #define ACPI_TCPA_SCI_VIA_GPE (1<<2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 370) #define ACPI_TCPA_GLOBAL_INTERRUPT (1<<3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 371)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 372) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 373) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 374) * TPM2 - Trusted Platform Module (TPM) 2.0 Hardware Interface Table
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 375) * Version 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 376) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 377) * TCG Hardware Interface Table for TPM 2.0 Clients and Servers
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 378) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 379) * Conforms to "TCG ACPI Specification, Family 1.2 and 2.0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 380) * Version 1.2, Revision 8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 381) * February 27, 2017
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 382) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 383) ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 384)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 385) /* Revision 3 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 386)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 387) struct acpi_table_tpm23 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 388) struct acpi_table_header header; /* Common ACPI table header */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 389) u32 reserved;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 390) u64 control_address;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 391) u32 start_method;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 392) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 393)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 394) /* Value for start_method above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 395)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 396) #define ACPI_TPM23_ACPI_START_METHOD 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 397)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 398) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 399) * Optional trailer for revision 3. If start method is 2, there is a 4 byte
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 400) * reserved area of all zeros.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 401) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 402) struct acpi_tmp23_trailer {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 403) u32 reserved;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 404) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 405)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 406) /* Revision 4 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 407)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 408) struct acpi_table_tpm2 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 409) struct acpi_table_header header; /* Common ACPI table header */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 410) u16 platform_class;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 411) u16 reserved;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 412) u64 control_address;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 413) u32 start_method;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 414)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 415) /* Platform-specific data follows */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 416) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 417)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 418) /* Optional trailer for revision 4 holding platform-specific data */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 419) struct acpi_tpm2_phy {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 420) u8 start_method_specific[12];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 421) u32 log_area_minimum_length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 422) u64 log_area_start_address;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 423) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 424)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 425) /* Values for start_method above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 426)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 427) #define ACPI_TPM2_NOT_ALLOWED 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 428) #define ACPI_TPM2_RESERVED1 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 429) #define ACPI_TPM2_START_METHOD 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 430) #define ACPI_TPM2_RESERVED3 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 431) #define ACPI_TPM2_RESERVED4 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 432) #define ACPI_TPM2_RESERVED5 5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 433) #define ACPI_TPM2_MEMORY_MAPPED 6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 434) #define ACPI_TPM2_COMMAND_BUFFER 7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 435) #define ACPI_TPM2_COMMAND_BUFFER_WITH_START_METHOD 8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 436) #define ACPI_TPM2_RESERVED9 9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 437) #define ACPI_TPM2_RESERVED10 10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 438) #define ACPI_TPM2_COMMAND_BUFFER_WITH_ARM_SMC 11 /* V1.2 Rev 8 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 439) #define ACPI_TPM2_RESERVED 12
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 440)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 441) /* Optional trailer appears after any start_method subtables */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 442)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 443) struct acpi_tpm2_trailer {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 444) u8 method_parameters[12];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 445) u32 minimum_log_length; /* Minimum length for the event log area */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 446) u64 log_address; /* Address of the event log area */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 447) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 448)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 449) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 450) * Subtables (start_method-specific)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 451) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 452)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 453) /* 11: Start Method for ARM SMC (V1.2 Rev 8) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 454)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 455) struct acpi_tpm2_arm_smc {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 456) u32 global_interrupt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 457) u8 interrupt_flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 458) u8 operation_flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 459) u16 reserved;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 460) u32 function_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 461) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 462)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 463) /* Values for interrupt_flags above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 464)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 465) #define ACPI_TPM2_INTERRUPT_SUPPORT (1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 466)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 467) /* Values for operation_flags above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 468)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 469) #define ACPI_TPM2_IDLE_SUPPORT (1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 470)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 471) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 472) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 473) * UEFI - UEFI Boot optimization Table
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 474) * Version 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 475) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 476) * Conforms to "Unified Extensible Firmware Interface Specification",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 477) * Version 2.3, May 8, 2009
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 478) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 479) ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 480)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 481) struct acpi_table_uefi {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 482) struct acpi_table_header header; /* Common ACPI table header */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 483) u8 identifier[16]; /* UUID identifier */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 484) u16 data_offset; /* Offset of remaining data in table */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 485) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 486)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 487) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 488) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 489) * VRTC - Virtual Real Time Clock Table
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 490) * Version 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 491) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 492) * Conforms to "Simple Firmware Interface Specification",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 493) * Draft 0.8.2, Oct 19, 2010
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 494) * NOTE: The ACPI VRTC is equivalent to The SFI MRTC table.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 495) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 496) ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 497)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 498) struct acpi_table_vrtc {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 499) struct acpi_table_header header; /* Common ACPI table header */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 500) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 501)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 502) /* VRTC entry */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 503)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 504) struct acpi_vrtc_entry {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 505) struct acpi_generic_address physical_address;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 506) u32 irq;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 507) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 508)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 509) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 510) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 511) * WAET - Windows ACPI Emulated devices Table
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 512) * Version 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 513) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 514) * Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 515) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 516) ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 517)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 518) struct acpi_table_waet {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 519) struct acpi_table_header header; /* Common ACPI table header */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 520) u32 flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 521) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 522)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 523) /* Masks for Flags field above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 524)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 525) #define ACPI_WAET_RTC_NO_ACK (1) /* RTC requires no int acknowledge */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 526) #define ACPI_WAET_TIMER_ONE_READ (1<<1) /* PM timer requires only one read */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 527)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 528) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 529) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 530) * WDAT - Watchdog Action Table
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 531) * Version 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 532) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 533) * Conforms to "Hardware Watchdog Timers Design Specification",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 534) * Copyright 2006 Microsoft Corporation.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 535) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 536) ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 537)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 538) struct acpi_table_wdat {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 539) struct acpi_table_header header; /* Common ACPI table header */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 540) u32 header_length; /* Watchdog Header Length */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 541) u16 pci_segment; /* PCI Segment number */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 542) u8 pci_bus; /* PCI Bus number */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 543) u8 pci_device; /* PCI Device number */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 544) u8 pci_function; /* PCI Function number */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 545) u8 reserved[3];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 546) u32 timer_period; /* Period of one timer count (msec) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 547) u32 max_count; /* Maximum counter value supported */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 548) u32 min_count; /* Minimum counter value */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 549) u8 flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 550) u8 reserved2[3];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 551) u32 entries; /* Number of watchdog entries that follow */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 552) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 553)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 554) /* Masks for Flags field above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 555)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 556) #define ACPI_WDAT_ENABLED (1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 557) #define ACPI_WDAT_STOPPED 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 558)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 559) /* WDAT Instruction Entries (actions) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 560)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 561) struct acpi_wdat_entry {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 562) u8 action;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 563) u8 instruction;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 564) u16 reserved;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 565) struct acpi_generic_address register_region;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 566) u32 value; /* Value used with Read/Write register */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 567) u32 mask; /* Bitmask required for this register instruction */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 568) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 569)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 570) /* Values for Action field above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 571)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 572) enum acpi_wdat_actions {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 573) ACPI_WDAT_RESET = 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 574) ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 575) ACPI_WDAT_GET_COUNTDOWN = 5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 576) ACPI_WDAT_SET_COUNTDOWN = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 577) ACPI_WDAT_GET_RUNNING_STATE = 8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 578) ACPI_WDAT_SET_RUNNING_STATE = 9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 579) ACPI_WDAT_GET_STOPPED_STATE = 10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 580) ACPI_WDAT_SET_STOPPED_STATE = 11,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 581) ACPI_WDAT_GET_REBOOT = 16,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 582) ACPI_WDAT_SET_REBOOT = 17,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 583) ACPI_WDAT_GET_SHUTDOWN = 18,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 584) ACPI_WDAT_SET_SHUTDOWN = 19,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 585) ACPI_WDAT_GET_STATUS = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 586) ACPI_WDAT_SET_STATUS = 33,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 587) ACPI_WDAT_ACTION_RESERVED = 34 /* 34 and greater are reserved */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 588) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 589)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 590) /* Values for Instruction field above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 591)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 592) enum acpi_wdat_instructions {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 593) ACPI_WDAT_READ_VALUE = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 594) ACPI_WDAT_READ_COUNTDOWN = 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 595) ACPI_WDAT_WRITE_VALUE = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 596) ACPI_WDAT_WRITE_COUNTDOWN = 3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 597) ACPI_WDAT_INSTRUCTION_RESERVED = 4, /* 4 and greater are reserved */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 598) ACPI_WDAT_PRESERVE_REGISTER = 0x80 /* Except for this value */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 599) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 600)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 601) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 602) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 603) * WDDT - Watchdog Descriptor Table
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 604) * Version 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 605) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 606) * Conforms to "Using the Intel ICH Family Watchdog Timer (WDT)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 607) * Version 001, September 2002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 608) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 609) ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 610)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 611) struct acpi_table_wddt {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 612) struct acpi_table_header header; /* Common ACPI table header */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 613) u16 spec_version;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 614) u16 table_version;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 615) u16 pci_vendor_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 616) struct acpi_generic_address address;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 617) u16 max_count; /* Maximum counter value supported */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 618) u16 min_count; /* Minimum counter value supported */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 619) u16 period;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 620) u16 status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 621) u16 capability;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 622) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 623)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 624) /* Flags for Status field above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 625)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 626) #define ACPI_WDDT_AVAILABLE (1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 627) #define ACPI_WDDT_ACTIVE (1<<1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 628) #define ACPI_WDDT_TCO_OS_OWNED (1<<2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 629) #define ACPI_WDDT_USER_RESET (1<<11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 630) #define ACPI_WDDT_WDT_RESET (1<<12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 631) #define ACPI_WDDT_POWER_FAIL (1<<13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 632) #define ACPI_WDDT_UNKNOWN_RESET (1<<14)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 633)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 634) /* Flags for Capability field above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 635)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 636) #define ACPI_WDDT_AUTO_RESET (1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 637) #define ACPI_WDDT_ALERT_SUPPORT (1<<1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 638)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 639) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 640) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 641) * WDRT - Watchdog Resource Table
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 642) * Version 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 643) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 644) * Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 645) * Version 1.01, August 28, 2006
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 646) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 647) ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 648)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 649) struct acpi_table_wdrt {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 650) struct acpi_table_header header; /* Common ACPI table header */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 651) struct acpi_generic_address control_register;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 652) struct acpi_generic_address count_register;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 653) u16 pci_device_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 654) u16 pci_vendor_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 655) u8 pci_bus; /* PCI Bus number */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 656) u8 pci_device; /* PCI Device number */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 657) u8 pci_function; /* PCI Function number */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 658) u8 pci_segment; /* PCI Segment number */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 659) u16 max_count; /* Maximum counter value supported */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 660) u8 units;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 661) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 662)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 663) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 664) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 665) * WPBT - Windows Platform Environment Table (ACPI 6.0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 666) * Version 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 667) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 668) * Conforms to "Windows Platform Binary Table (WPBT)" 29 November 2011
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 669) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 670) ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 671)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 672) struct acpi_table_wpbt {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 673) struct acpi_table_header header; /* Common ACPI table header */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 674) u32 handoff_size;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 675) u64 handoff_address;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 676) u8 layout;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 677) u8 type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 678) u16 arguments_length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 679) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 680)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 681) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 682) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 683) * WSMT - Windows SMM Security Mitigations Table
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 684) * Version 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 685) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 686) * Conforms to "Windows SMM Security Mitigations Table",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 687) * Version 1.0, April 18, 2016
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 688) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 689) ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 690)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 691) struct acpi_table_wsmt {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 692) struct acpi_table_header header; /* Common ACPI table header */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 693) u32 protection_flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 694) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 695)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 696) /* Flags for protection_flags field above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 697)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 698) #define ACPI_WSMT_FIXED_COMM_BUFFERS (1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 699) #define ACPI_WSMT_COMM_BUFFER_NESTED_PTR_PROTECTION (2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 700) #define ACPI_WSMT_SYSTEM_RESOURCE_PROTECTION (4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 701)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 702) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 703) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 704) * XENV - Xen Environment Table (ACPI 6.0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 705) * Version 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 706) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 707) * Conforms to "ACPI Specification for Xen Environment Table" 4 January 2015
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 708) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 709) ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 710)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 711) struct acpi_table_xenv {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 712) struct acpi_table_header header; /* Common ACPI table header */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 713) u64 grant_table_address;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 714) u64 grant_table_size;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 715) u32 event_interrupt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 716) u8 event_flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 717) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 718)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 719) /* Reset to default packing */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 720)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 721) #pragma pack()
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 722)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 723) #endif /* __ACTBL3_H__ */