xref: /openbmc/linux/include/acpi/actbl3.h (revision c900529f3d9161bfde5cca0754f83b4d3c3e0220)
195857638SErik Schmauss /* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */
2c5bd6537SBob Moore /******************************************************************************
3c5bd6537SBob Moore  *
4c5bd6537SBob Moore  * Name: actbl3.h - ACPI Table Definitions
5c5bd6537SBob Moore  *
6612c2932SBob Moore  * Copyright (C) 2000 - 2023, Intel Corp.
7c5bd6537SBob Moore  *
895857638SErik Schmauss  *****************************************************************************/
9c5bd6537SBob Moore 
10c5bd6537SBob Moore #ifndef __ACTBL3_H__
11c5bd6537SBob Moore #define __ACTBL3_H__
12c5bd6537SBob Moore 
13c5bd6537SBob Moore /*******************************************************************************
14c5bd6537SBob Moore  *
15e62f8227SErik Schmauss  * Additional ACPI Tables
16c5bd6537SBob Moore  *
17c5bd6537SBob Moore  * These tables are not consumed directly by the ACPICA subsystem, but are
18c5bd6537SBob Moore  * included here to support device drivers and the AML disassembler.
19c5bd6537SBob Moore  *
20c5bd6537SBob Moore  ******************************************************************************/
21c5bd6537SBob Moore 
22c5bd6537SBob Moore /*
23c5bd6537SBob Moore  * Values for description table header signatures for tables defined in this
24c5bd6537SBob Moore  * file. Useful because they make it more difficult to inadvertently type in
25c5bd6537SBob Moore  * the wrong signature.
26c5bd6537SBob Moore  */
27e62f8227SErik Schmauss #define ACPI_SIG_SLIC           "SLIC"	/* Software Licensing Description Table */
28e62f8227SErik Schmauss #define ACPI_SIG_SLIT           "SLIT"	/* System Locality Distance Information Table */
29e62f8227SErik Schmauss #define ACPI_SIG_SPCR           "SPCR"	/* Serial Port Console Redirection table */
30e62f8227SErik Schmauss #define ACPI_SIG_SPMI           "SPMI"	/* Server Platform Management Interface table */
31e62f8227SErik Schmauss #define ACPI_SIG_SRAT           "SRAT"	/* System Resource Affinity Table */
3237e12657SBob Moore #define ACPI_SIG_STAO           "STAO"	/* Status Override table */
33e62f8227SErik Schmauss #define ACPI_SIG_TCPA           "TCPA"	/* Trusted Computing Platform Alliance table */
34e62f8227SErik Schmauss #define ACPI_SIG_TPM2           "TPM2"	/* Trusted Platform Module 2.0 H/W interface table */
35e62f8227SErik Schmauss #define ACPI_SIG_UEFI           "UEFI"	/* Uefi Boot Optimization Table */
3658225203SJean-Philippe Brucker #define ACPI_SIG_VIOT           "VIOT"	/* Virtual I/O Translation Table */
37e62f8227SErik Schmauss #define ACPI_SIG_WAET           "WAET"	/* Windows ACPI Emulated devices Table */
38e62f8227SErik Schmauss #define ACPI_SIG_WDAT           "WDAT"	/* Watchdog Action Table */
39e62f8227SErik Schmauss #define ACPI_SIG_WDDT           "WDDT"	/* Watchdog Timer Description Table */
40e62f8227SErik Schmauss #define ACPI_SIG_WDRT           "WDRT"	/* Watchdog Resource Table */
4168edb038SBob Moore #define ACPI_SIG_WPBT           "WPBT"	/* Windows Platform Binary Table */
42afb90870SErik Kaneda #define ACPI_SIG_WSMT           "WSMT"	/* Windows SMM Security Mitigations Table */
43b6944efdSBob Moore #define ACPI_SIG_XENV           "XENV"	/* Xen Environment table */
44e62f8227SErik Schmauss #define ACPI_SIG_XXXX           "XXXX"	/* Intermediate AML header for ASL/ASL+ converter */
45c5bd6537SBob Moore 
46c5bd6537SBob Moore /*
47c5bd6537SBob Moore  * All tables must be byte-packed to match the ACPI specification, since
48c5bd6537SBob Moore  * the tables are provided by the system BIOS.
49c5bd6537SBob Moore  */
50c5bd6537SBob Moore #pragma pack(1)
51c5bd6537SBob Moore 
52c5bd6537SBob Moore /*
53be030a57SBob Moore  * Note: C bitfields are not used for this reason:
54be030a57SBob Moore  *
55be030a57SBob Moore  * "Bitfields are great and easy to read, but unfortunately the C language
56be030a57SBob Moore  * does not specify the layout of bitfields in memory, which means they are
57be030a57SBob Moore  * essentially useless for dealing with packed data in on-disk formats or
58be030a57SBob Moore  * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me,
59be030a57SBob Moore  * this decision was a design error in C. Ritchie could have picked an order
60be030a57SBob Moore  * and stuck with it." Norman Ramsey.
61be030a57SBob Moore  * See http://stackoverflow.com/a/1053662/41661
62c5bd6537SBob Moore  */
63c5bd6537SBob Moore 
64c5bd6537SBob Moore /*******************************************************************************
65c5bd6537SBob Moore  *
66e62f8227SErik Schmauss  * SLIC - Software Licensing Description Table
67e62f8227SErik Schmauss  *
68e62f8227SErik Schmauss  * Conforms to "Microsoft Software Licensing Tables (SLIC and MSDM)",
69e62f8227SErik Schmauss  * November 29, 2011. Copyright 2011 Microsoft
70e62f8227SErik Schmauss  *
71e62f8227SErik Schmauss  ******************************************************************************/
72e62f8227SErik Schmauss 
73e62f8227SErik Schmauss /* Basic SLIC table is only the common ACPI header */
74e62f8227SErik Schmauss 
75e62f8227SErik Schmauss struct acpi_table_slic {
76e62f8227SErik Schmauss 	struct acpi_table_header header;	/* Common ACPI table header */
77e62f8227SErik Schmauss };
78e62f8227SErik Schmauss 
79e62f8227SErik Schmauss /*******************************************************************************
80e62f8227SErik Schmauss  *
81e62f8227SErik Schmauss  * SLIT - System Locality Distance Information Table
82c5bd6537SBob Moore  *        Version 1
83c5bd6537SBob Moore  *
84c5bd6537SBob Moore  ******************************************************************************/
85c5bd6537SBob Moore 
86e62f8227SErik Schmauss struct acpi_table_slit {
87c5bd6537SBob Moore 	struct acpi_table_header header;	/* Common ACPI table header */
88e62f8227SErik Schmauss 	u64 locality_count;
8941e7a72eSWyes Karny 	u8 entry[];				/* Real size = localities^2 */
90c5bd6537SBob Moore };
91c5bd6537SBob Moore 
92c5bd6537SBob Moore /*******************************************************************************
93c5bd6537SBob Moore  *
94e62f8227SErik Schmauss  * SPCR - Serial Port Console Redirection table
9554ea4247STomasz Nowicki  *        Version 2
96c5bd6537SBob Moore  *
97e62f8227SErik Schmauss  * Conforms to "Serial Port Console Redirection Table",
98e62f8227SErik Schmauss  * Version 1.03, August 10, 2015
99e62f8227SErik Schmauss  *
100c5bd6537SBob Moore  ******************************************************************************/
101c5bd6537SBob Moore 
102e62f8227SErik Schmauss struct acpi_table_spcr {
103c5bd6537SBob Moore 	struct acpi_table_header header;	/* Common ACPI table header */
104e62f8227SErik Schmauss 	u8 interface_type;	/* 0=full 16550, 1=subset of 16550 */
10554ea4247STomasz Nowicki 	u8 reserved[3];
106e62f8227SErik Schmauss 	struct acpi_generic_address serial_port;
107e62f8227SErik Schmauss 	u8 interrupt_type;
108e62f8227SErik Schmauss 	u8 pc_interrupt;
109e62f8227SErik Schmauss 	u32 interrupt;
110e62f8227SErik Schmauss 	u8 baud_rate;
111e62f8227SErik Schmauss 	u8 parity;
112e62f8227SErik Schmauss 	u8 stop_bits;
113e62f8227SErik Schmauss 	u8 flow_control;
114e62f8227SErik Schmauss 	u8 terminal_type;
115c5bd6537SBob Moore 	u8 reserved1;
116e62f8227SErik Schmauss 	u16 pci_device_id;
117e62f8227SErik Schmauss 	u16 pci_vendor_id;
118e62f8227SErik Schmauss 	u8 pci_bus;
119e62f8227SErik Schmauss 	u8 pci_device;
120e62f8227SErik Schmauss 	u8 pci_function;
121e62f8227SErik Schmauss 	u32 pci_flags;
122e62f8227SErik Schmauss 	u8 pci_segment;
123e62f8227SErik Schmauss 	u32 reserved2;
124c5bd6537SBob Moore };
125c5bd6537SBob Moore 
126e62f8227SErik Schmauss /* Masks for pci_flags field above */
127c5bd6537SBob Moore 
128e62f8227SErik Schmauss #define ACPI_SPCR_DO_NOT_DISABLE    (1)
129c5bd6537SBob Moore 
130e62f8227SErik Schmauss /* Values for Interface Type: See the definition of the DBG2 table */
131c5bd6537SBob Moore 
132e62f8227SErik Schmauss /*******************************************************************************
133e62f8227SErik Schmauss  *
134e62f8227SErik Schmauss  * SPMI - Server Platform Management Interface table
135e62f8227SErik Schmauss  *        Version 5
136e62f8227SErik Schmauss  *
137e62f8227SErik Schmauss  * Conforms to "Intelligent Platform Management Interface Specification
138e62f8227SErik Schmauss  * Second Generation v2.0", Document Revision 1.0, February 12, 2004 with
139e62f8227SErik Schmauss  * June 12, 2009 markup.
140e62f8227SErik Schmauss  *
141e62f8227SErik Schmauss  ******************************************************************************/
142e62f8227SErik Schmauss 
143e62f8227SErik Schmauss struct acpi_table_spmi {
144e62f8227SErik Schmauss 	struct acpi_table_header header;	/* Common ACPI table header */
145e62f8227SErik Schmauss 	u8 interface_type;
146e62f8227SErik Schmauss 	u8 reserved;		/* Must be 1 */
147e62f8227SErik Schmauss 	u16 spec_revision;	/* Version of IPMI */
148e62f8227SErik Schmauss 	u8 interrupt_type;
149e62f8227SErik Schmauss 	u8 gpe_number;		/* GPE assigned */
150e62f8227SErik Schmauss 	u8 reserved1;
151e62f8227SErik Schmauss 	u8 pci_device_flag;
152e62f8227SErik Schmauss 	u32 interrupt;
153e62f8227SErik Schmauss 	struct acpi_generic_address ipmi_register;
154e62f8227SErik Schmauss 	u8 pci_segment;
155e62f8227SErik Schmauss 	u8 pci_bus;
156e62f8227SErik Schmauss 	u8 pci_device;
157e62f8227SErik Schmauss 	u8 pci_function;
158e62f8227SErik Schmauss 	u8 reserved2;
159c5bd6537SBob Moore };
160c5bd6537SBob Moore 
161e62f8227SErik Schmauss /* Values for interface_type above */
162c5bd6537SBob Moore 
163e62f8227SErik Schmauss enum acpi_spmi_interface_types {
164e62f8227SErik Schmauss 	ACPI_SPMI_NOT_USED = 0,
165e62f8227SErik Schmauss 	ACPI_SPMI_KEYBOARD = 1,
166e62f8227SErik Schmauss 	ACPI_SPMI_SMI = 2,
167e62f8227SErik Schmauss 	ACPI_SPMI_BLOCK_TRANSFER = 3,
168e62f8227SErik Schmauss 	ACPI_SPMI_SMBUS = 4,
169e62f8227SErik Schmauss 	ACPI_SPMI_RESERVED = 5	/* 5 and above are reserved */
170c5bd6537SBob Moore };
171c5bd6537SBob Moore 
172c5bd6537SBob Moore /*******************************************************************************
173c5bd6537SBob Moore  *
174e62f8227SErik Schmauss  * SRAT - System Resource Affinity Table
175e62f8227SErik Schmauss  *        Version 3
176c5bd6537SBob Moore  *
177c5bd6537SBob Moore  ******************************************************************************/
178c5bd6537SBob Moore 
179e62f8227SErik Schmauss struct acpi_table_srat {
180c5bd6537SBob Moore 	struct acpi_table_header header;	/* Common ACPI table header */
181e62f8227SErik Schmauss 	u32 table_revision;	/* Must be value '1' */
182e62f8227SErik Schmauss 	u64 reserved;		/* Reserved, must be zero */
183c5bd6537SBob Moore };
184c5bd6537SBob Moore 
185f0d73664SBob Moore /* Values for subtable type in struct acpi_subtable_header */
186f0d73664SBob Moore 
187e62f8227SErik Schmauss enum acpi_srat_type {
188e62f8227SErik Schmauss 	ACPI_SRAT_TYPE_CPU_AFFINITY = 0,
189e62f8227SErik Schmauss 	ACPI_SRAT_TYPE_MEMORY_AFFINITY = 1,
190e62f8227SErik Schmauss 	ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY = 2,
191e62f8227SErik Schmauss 	ACPI_SRAT_TYPE_GICC_AFFINITY = 3,
192e62f8227SErik Schmauss 	ACPI_SRAT_TYPE_GIC_ITS_AFFINITY = 4,	/* ACPI 6.2 */
193aa475a59SErik Schmauss 	ACPI_SRAT_TYPE_GENERIC_AFFINITY = 5,	/* ACPI 6.3 */
1948a8332f9SAlison Schofield 	ACPI_SRAT_TYPE_GENERIC_PORT_AFFINITY = 6,	/* ACPI 6.4 */
1958a8332f9SAlison Schofield 	ACPI_SRAT_TYPE_RESERVED = 7	/* 7 and greater are reserved */
196f0d73664SBob Moore };
197f0d73664SBob Moore 
198c5bd6537SBob Moore /*
199e62f8227SErik Schmauss  * SRAT Subtables, correspond to Type in struct acpi_subtable_header
200c5bd6537SBob Moore  */
201c5bd6537SBob Moore 
202e62f8227SErik Schmauss /* 0: Processor Local APIC/SAPIC Affinity */
203c5bd6537SBob Moore 
204e62f8227SErik Schmauss struct acpi_srat_cpu_affinity {
205c5bd6537SBob Moore 	struct acpi_subtable_header header;
206e62f8227SErik Schmauss 	u8 proximity_domain_lo;
207e62f8227SErik Schmauss 	u8 apic_id;
208c7a1dfb9SDavid E. Box 	u32 flags;
209e62f8227SErik Schmauss 	u8 local_sapic_eid;
210e62f8227SErik Schmauss 	u8 proximity_domain_hi[3];
211e62f8227SErik Schmauss 	u32 clock_domain;
212c7a1dfb9SDavid E. Box };
213c7a1dfb9SDavid E. Box 
214e62f8227SErik Schmauss /* Flags */
215c5bd6537SBob Moore 
216e62f8227SErik Schmauss #define ACPI_SRAT_CPU_USE_AFFINITY  (1)	/* 00: Use affinity structure */
217c5bd6537SBob Moore 
218e62f8227SErik Schmauss /* 1: Memory Affinity */
219c5bd6537SBob Moore 
220e62f8227SErik Schmauss struct acpi_srat_mem_affinity {
221e62f8227SErik Schmauss 	struct acpi_subtable_header header;
222c5bd6537SBob Moore 	u32 proximity_domain;
223e62f8227SErik Schmauss 	u16 reserved;		/* Reserved, must be zero */
224e62f8227SErik Schmauss 	u64 base_address;
225e62f8227SErik Schmauss 	u64 length;
226e62f8227SErik Schmauss 	u32 reserved1;
227e62f8227SErik Schmauss 	u32 flags;
228e62f8227SErik Schmauss 	u64 reserved2;		/* Reserved, must be zero */
229c5bd6537SBob Moore };
230c5bd6537SBob Moore 
231e62f8227SErik Schmauss /* Flags */
232c5bd6537SBob Moore 
233e62f8227SErik Schmauss #define ACPI_SRAT_MEM_ENABLED       (1)	/* 00: Use affinity structure */
234e62f8227SErik Schmauss #define ACPI_SRAT_MEM_HOT_PLUGGABLE (1<<1)	/* 01: Memory region is hot pluggable */
235e62f8227SErik Schmauss #define ACPI_SRAT_MEM_NON_VOLATILE  (1<<2)	/* 02: Memory region is non-volatile */
236e62f8227SErik Schmauss 
237e62f8227SErik Schmauss /* 2: Processor Local X2_APIC Affinity (ACPI 4.0) */
238e62f8227SErik Schmauss 
239e62f8227SErik Schmauss struct acpi_srat_x2apic_cpu_affinity {
240e62f8227SErik Schmauss 	struct acpi_subtable_header header;
241e62f8227SErik Schmauss 	u16 reserved;		/* Reserved, must be zero */
242e62f8227SErik Schmauss 	u32 proximity_domain;
243e62f8227SErik Schmauss 	u32 apic_id;
244e62f8227SErik Schmauss 	u32 flags;
245e62f8227SErik Schmauss 	u32 clock_domain;
246e62f8227SErik Schmauss 	u32 reserved2;
247e62f8227SErik Schmauss };
248e62f8227SErik Schmauss 
249e62f8227SErik Schmauss /* Flags for struct acpi_srat_cpu_affinity and struct acpi_srat_x2apic_cpu_affinity */
250e62f8227SErik Schmauss 
251e62f8227SErik Schmauss #define ACPI_SRAT_CPU_ENABLED       (1)	/* 00: Use affinity structure */
252e62f8227SErik Schmauss 
253e62f8227SErik Schmauss /* 3: GICC Affinity (ACPI 5.1) */
254e62f8227SErik Schmauss 
255e62f8227SErik Schmauss struct acpi_srat_gicc_affinity {
256e62f8227SErik Schmauss 	struct acpi_subtable_header header;
257e62f8227SErik Schmauss 	u32 proximity_domain;
258e62f8227SErik Schmauss 	u32 acpi_processor_uid;
259e62f8227SErik Schmauss 	u32 flags;
260e62f8227SErik Schmauss 	u32 clock_domain;
261e62f8227SErik Schmauss };
262e62f8227SErik Schmauss 
263e62f8227SErik Schmauss /* Flags for struct acpi_srat_gicc_affinity */
264e62f8227SErik Schmauss 
265e62f8227SErik Schmauss #define ACPI_SRAT_GICC_ENABLED     (1)	/* 00: Use affinity structure */
266e62f8227SErik Schmauss 
267e62f8227SErik Schmauss /* 4: GCC ITS Affinity (ACPI 6.2) */
268e62f8227SErik Schmauss 
269e62f8227SErik Schmauss struct acpi_srat_gic_its_affinity {
270e62f8227SErik Schmauss 	struct acpi_subtable_header header;
271e62f8227SErik Schmauss 	u32 proximity_domain;
272c5bd6537SBob Moore 	u16 reserved;
273e62f8227SErik Schmauss 	u32 its_id;
274c5bd6537SBob Moore };
275c5bd6537SBob Moore 
2768a8332f9SAlison Schofield /*
2778a8332f9SAlison Schofield  * Common structure for SRAT subtable types:
2788a8332f9SAlison Schofield  * 5: ACPI_SRAT_TYPE_GENERIC_AFFINITY
2798a8332f9SAlison Schofield  * 6: ACPI_SRAT_TYPE_GENERIC_PORT_AFFINITY
2808a8332f9SAlison Schofield  */
281aa475a59SErik Schmauss 
282*25eea707SDave Jiang #define ACPI_SRAT_DEVICE_HANDLE_SIZE	16
283*25eea707SDave Jiang 
284aa475a59SErik Schmauss struct acpi_srat_generic_affinity {
285aa475a59SErik Schmauss 	struct acpi_subtable_header header;
286aa475a59SErik Schmauss 	u8 reserved;
287aa475a59SErik Schmauss 	u8 device_handle_type;
288aa475a59SErik Schmauss 	u32 proximity_domain;
289*25eea707SDave Jiang 	u8 device_handle[ACPI_SRAT_DEVICE_HANDLE_SIZE];
290aa475a59SErik Schmauss 	u32 flags;
291aa475a59SErik Schmauss 	u32 reserved1;
292aa475a59SErik Schmauss };
293aa475a59SErik Schmauss 
294aa475a59SErik Schmauss /* Flags for struct acpi_srat_generic_affinity */
295aa475a59SErik Schmauss 
296aa475a59SErik Schmauss #define ACPI_SRAT_GENERIC_AFFINITY_ENABLED     (1)	/* 00: Use affinity structure */
2972dab2b68SBob Moore #define ACPI_SRAT_ARCHITECTURAL_TRANSACTIONS   (1<<1)	/* ACPI 6.4 */
298aa475a59SErik Schmauss 
299c5bd6537SBob Moore /*******************************************************************************
300c5bd6537SBob Moore  *
30137e12657SBob Moore  * STAO - Status Override Table (_STA override) - ACPI 6.0
30237e12657SBob Moore  *        Version 1
30337e12657SBob Moore  *
30437e12657SBob Moore  * Conforms to "ACPI Specification for Status Override Table"
30537e12657SBob Moore  * 6 January 2015
30637e12657SBob Moore  *
30737e12657SBob Moore  ******************************************************************************/
30837e12657SBob Moore 
30937e12657SBob Moore struct acpi_table_stao {
31037e12657SBob Moore 	struct acpi_table_header header;	/* Common ACPI table header */
31137e12657SBob Moore 	u8 ignore_uart;
31237e12657SBob Moore };
31337e12657SBob Moore 
31437e12657SBob Moore /*******************************************************************************
31537e12657SBob Moore  *
316e62f8227SErik Schmauss  * TCPA - Trusted Computing Platform Alliance table
317e62f8227SErik Schmauss  *        Version 2
318e62f8227SErik Schmauss  *
319e62f8227SErik Schmauss  * TCG Hardware Interface Table for TPM 1.2 Clients and Servers
320e62f8227SErik Schmauss  *
321e62f8227SErik Schmauss  * Conforms to "TCG ACPI Specification, Family 1.2 and 2.0",
322e62f8227SErik Schmauss  * Version 1.2, Revision 8
323e62f8227SErik Schmauss  * February 27, 2017
324e62f8227SErik Schmauss  *
325e62f8227SErik Schmauss  * NOTE: There are two versions of the table with the same signature --
326e62f8227SErik Schmauss  * the client version and the server version. The common platform_class
327e62f8227SErik Schmauss  * field is used to differentiate the two types of tables.
328e62f8227SErik Schmauss  *
329e62f8227SErik Schmauss  ******************************************************************************/
330e62f8227SErik Schmauss 
331e62f8227SErik Schmauss struct acpi_table_tcpa_hdr {
332e62f8227SErik Schmauss 	struct acpi_table_header header;	/* Common ACPI table header */
333e62f8227SErik Schmauss 	u16 platform_class;
334e62f8227SErik Schmauss };
335e62f8227SErik Schmauss 
336e62f8227SErik Schmauss /*
337e62f8227SErik Schmauss  * Values for platform_class above.
338e62f8227SErik Schmauss  * This is how the client and server subtables are differentiated
339e62f8227SErik Schmauss  */
340e62f8227SErik Schmauss #define ACPI_TCPA_CLIENT_TABLE          0
341e62f8227SErik Schmauss #define ACPI_TCPA_SERVER_TABLE          1
342e62f8227SErik Schmauss 
343e62f8227SErik Schmauss struct acpi_table_tcpa_client {
344e62f8227SErik Schmauss 	u32 minimum_log_length;	/* Minimum length for the event log area */
345e62f8227SErik Schmauss 	u64 log_address;	/* Address of the event log area */
346e62f8227SErik Schmauss };
347e62f8227SErik Schmauss 
348e62f8227SErik Schmauss struct acpi_table_tcpa_server {
349e62f8227SErik Schmauss 	u16 reserved;
350e62f8227SErik Schmauss 	u64 minimum_log_length;	/* Minimum length for the event log area */
351e62f8227SErik Schmauss 	u64 log_address;	/* Address of the event log area */
352e62f8227SErik Schmauss 	u16 spec_revision;
353e62f8227SErik Schmauss 	u8 device_flags;
354e62f8227SErik Schmauss 	u8 interrupt_flags;
355e62f8227SErik Schmauss 	u8 gpe_number;
356e62f8227SErik Schmauss 	u8 reserved2[3];
357e62f8227SErik Schmauss 	u32 global_interrupt;
358e62f8227SErik Schmauss 	struct acpi_generic_address address;
359e62f8227SErik Schmauss 	u32 reserved3;
360e62f8227SErik Schmauss 	struct acpi_generic_address config_address;
361e62f8227SErik Schmauss 	u8 group;
362e62f8227SErik Schmauss 	u8 bus;			/* PCI Bus/Segment/Function numbers */
363e62f8227SErik Schmauss 	u8 device;
364e62f8227SErik Schmauss 	u8 function;
365e62f8227SErik Schmauss };
366e62f8227SErik Schmauss 
367e62f8227SErik Schmauss /* Values for device_flags above */
368e62f8227SErik Schmauss 
369e62f8227SErik Schmauss #define ACPI_TCPA_PCI_DEVICE            (1)
370e62f8227SErik Schmauss #define ACPI_TCPA_BUS_PNP               (1<<1)
371e62f8227SErik Schmauss #define ACPI_TCPA_ADDRESS_VALID         (1<<2)
372e62f8227SErik Schmauss 
373e62f8227SErik Schmauss /* Values for interrupt_flags above */
374e62f8227SErik Schmauss 
375e62f8227SErik Schmauss #define ACPI_TCPA_INTERRUPT_MODE        (1)
376e62f8227SErik Schmauss #define ACPI_TCPA_INTERRUPT_POLARITY    (1<<1)
377e62f8227SErik Schmauss #define ACPI_TCPA_SCI_VIA_GPE           (1<<2)
378e62f8227SErik Schmauss #define ACPI_TCPA_GLOBAL_INTERRUPT      (1<<3)
379e62f8227SErik Schmauss 
380e62f8227SErik Schmauss /*******************************************************************************
381e62f8227SErik Schmauss  *
382e62f8227SErik Schmauss  * TPM2 - Trusted Platform Module (TPM) 2.0 Hardware Interface Table
383e62f8227SErik Schmauss  *        Version 4
384e62f8227SErik Schmauss  *
385e62f8227SErik Schmauss  * TCG Hardware Interface Table for TPM 2.0 Clients and Servers
386e62f8227SErik Schmauss  *
387e62f8227SErik Schmauss  * Conforms to "TCG ACPI Specification, Family 1.2 and 2.0",
388e62f8227SErik Schmauss  * Version 1.2, Revision 8
389e62f8227SErik Schmauss  * February 27, 2017
390e62f8227SErik Schmauss  *
391e62f8227SErik Schmauss  ******************************************************************************/
392e62f8227SErik Schmauss 
393c159597cSErik Schmauss /* Revision 3 */
394c159597cSErik Schmauss 
395c159597cSErik Schmauss struct acpi_table_tpm23 {
396c159597cSErik Schmauss 	struct acpi_table_header header;	/* Common ACPI table header */
397c159597cSErik Schmauss 	u32 reserved;
398c159597cSErik Schmauss 	u64 control_address;
399c159597cSErik Schmauss 	u32 start_method;
400c159597cSErik Schmauss };
401c159597cSErik Schmauss 
402c159597cSErik Schmauss /* Value for start_method above */
403c159597cSErik Schmauss 
404c159597cSErik Schmauss #define ACPI_TPM23_ACPI_START_METHOD                 2
405c159597cSErik Schmauss 
406c159597cSErik Schmauss /*
407c159597cSErik Schmauss  * Optional trailer for revision 3. If start method is 2, there is a 4 byte
408c159597cSErik Schmauss  * reserved area of all zeros.
409c159597cSErik Schmauss  */
410c159597cSErik Schmauss struct acpi_tmp23_trailer {
411c159597cSErik Schmauss 	u32 reserved;
412c159597cSErik Schmauss };
413c159597cSErik Schmauss 
414c159597cSErik Schmauss /* Revision 4 */
415c159597cSErik Schmauss 
416e62f8227SErik Schmauss struct acpi_table_tpm2 {
417e62f8227SErik Schmauss 	struct acpi_table_header header;	/* Common ACPI table header */
418e62f8227SErik Schmauss 	u16 platform_class;
419e62f8227SErik Schmauss 	u16 reserved;
420e62f8227SErik Schmauss 	u64 control_address;
421e62f8227SErik Schmauss 	u32 start_method;
422e62f8227SErik Schmauss 
423e62f8227SErik Schmauss 	/* Platform-specific data follows */
424e62f8227SErik Schmauss };
425e62f8227SErik Schmauss 
42618306111SStefan Berger /* Optional trailer for revision 4 holding platform-specific data */
42718306111SStefan Berger struct acpi_tpm2_phy {
42818306111SStefan Berger 	u8  start_method_specific[12];
42918306111SStefan Berger 	u32 log_area_minimum_length;
43018306111SStefan Berger 	u64 log_area_start_address;
43118306111SStefan Berger };
43218306111SStefan Berger 
433e62f8227SErik Schmauss /* Values for start_method above */
434e62f8227SErik Schmauss 
435e62f8227SErik Schmauss #define ACPI_TPM2_NOT_ALLOWED                       0
436e62f8227SErik Schmauss #define ACPI_TPM2_RESERVED1                         1
437e62f8227SErik Schmauss #define ACPI_TPM2_START_METHOD                      2
438e62f8227SErik Schmauss #define ACPI_TPM2_RESERVED3                         3
439e62f8227SErik Schmauss #define ACPI_TPM2_RESERVED4                         4
440e62f8227SErik Schmauss #define ACPI_TPM2_RESERVED5                         5
441e62f8227SErik Schmauss #define ACPI_TPM2_MEMORY_MAPPED                     6
442e62f8227SErik Schmauss #define ACPI_TPM2_COMMAND_BUFFER                    7
443e62f8227SErik Schmauss #define ACPI_TPM2_COMMAND_BUFFER_WITH_START_METHOD  8
444e62f8227SErik Schmauss #define ACPI_TPM2_RESERVED9                         9
445e62f8227SErik Schmauss #define ACPI_TPM2_RESERVED10                        10
446e62f8227SErik Schmauss #define ACPI_TPM2_COMMAND_BUFFER_WITH_ARM_SMC       11	/* V1.2 Rev 8 */
447e62f8227SErik Schmauss #define ACPI_TPM2_RESERVED                          12
4484d273288SMatthew Garrett #define ACPI_TPM2_COMMAND_BUFFER_WITH_PLUTON        13
449e62f8227SErik Schmauss 
450e62f8227SErik Schmauss /* Optional trailer appears after any start_method subtables */
451e62f8227SErik Schmauss 
452e62f8227SErik Schmauss struct acpi_tpm2_trailer {
453e62f8227SErik Schmauss 	u8 method_parameters[12];
454e62f8227SErik Schmauss 	u32 minimum_log_length;	/* Minimum length for the event log area */
455e62f8227SErik Schmauss 	u64 log_address;	/* Address of the event log area */
456e62f8227SErik Schmauss };
457e62f8227SErik Schmauss 
458e62f8227SErik Schmauss /*
459e62f8227SErik Schmauss  * Subtables (start_method-specific)
460e62f8227SErik Schmauss  */
461e62f8227SErik Schmauss 
462e62f8227SErik Schmauss /* 11: Start Method for ARM SMC (V1.2 Rev 8) */
463e62f8227SErik Schmauss 
464e62f8227SErik Schmauss struct acpi_tpm2_arm_smc {
465e62f8227SErik Schmauss 	u32 global_interrupt;
466e62f8227SErik Schmauss 	u8 interrupt_flags;
467e62f8227SErik Schmauss 	u8 operation_flags;
468e62f8227SErik Schmauss 	u16 reserved;
469e62f8227SErik Schmauss 	u32 function_id;
470e62f8227SErik Schmauss };
471e62f8227SErik Schmauss 
472e62f8227SErik Schmauss /* Values for interrupt_flags above */
473e62f8227SErik Schmauss 
474e62f8227SErik Schmauss #define ACPI_TPM2_INTERRUPT_SUPPORT     (1)
475e62f8227SErik Schmauss 
476e62f8227SErik Schmauss /* Values for operation_flags above */
477e62f8227SErik Schmauss 
478e62f8227SErik Schmauss #define ACPI_TPM2_IDLE_SUPPORT          (1)
479e62f8227SErik Schmauss 
480e62f8227SErik Schmauss /*******************************************************************************
481e62f8227SErik Schmauss  *
482e62f8227SErik Schmauss  * UEFI - UEFI Boot optimization Table
483e62f8227SErik Schmauss  *        Version 1
484e62f8227SErik Schmauss  *
485e62f8227SErik Schmauss  * Conforms to "Unified Extensible Firmware Interface Specification",
486e62f8227SErik Schmauss  * Version 2.3, May 8, 2009
487e62f8227SErik Schmauss  *
488e62f8227SErik Schmauss  ******************************************************************************/
489e62f8227SErik Schmauss 
490e62f8227SErik Schmauss struct acpi_table_uefi {
491e62f8227SErik Schmauss 	struct acpi_table_header header;	/* Common ACPI table header */
492e62f8227SErik Schmauss 	u8 identifier[16];	/* UUID identifier */
493e62f8227SErik Schmauss 	u16 data_offset;	/* Offset of remaining data in table */
494e62f8227SErik Schmauss };
495e62f8227SErik Schmauss 
496e62f8227SErik Schmauss /*******************************************************************************
497e62f8227SErik Schmauss  *
49858225203SJean-Philippe Brucker  * VIOT - Virtual I/O Translation Table
49958225203SJean-Philippe Brucker  *        Version 1
50058225203SJean-Philippe Brucker  *
50158225203SJean-Philippe Brucker  ******************************************************************************/
50258225203SJean-Philippe Brucker 
50358225203SJean-Philippe Brucker struct acpi_table_viot {
50458225203SJean-Philippe Brucker 	struct acpi_table_header header;	/* Common ACPI table header */
50558225203SJean-Philippe Brucker 	u16 node_count;
50658225203SJean-Philippe Brucker 	u16 node_offset;
50758225203SJean-Philippe Brucker 	u8 reserved[8];
50858225203SJean-Philippe Brucker };
50958225203SJean-Philippe Brucker 
51058225203SJean-Philippe Brucker /* VIOT subtable header */
51158225203SJean-Philippe Brucker 
51258225203SJean-Philippe Brucker struct acpi_viot_header {
51358225203SJean-Philippe Brucker 	u8 type;
51458225203SJean-Philippe Brucker 	u8 reserved;
51558225203SJean-Philippe Brucker 	u16 length;
51658225203SJean-Philippe Brucker };
51758225203SJean-Philippe Brucker 
51858225203SJean-Philippe Brucker /* Values for Type field above */
51958225203SJean-Philippe Brucker 
52058225203SJean-Philippe Brucker enum acpi_viot_node_type {
52158225203SJean-Philippe Brucker 	ACPI_VIOT_NODE_PCI_RANGE = 0x01,
52258225203SJean-Philippe Brucker 	ACPI_VIOT_NODE_MMIO = 0x02,
52358225203SJean-Philippe Brucker 	ACPI_VIOT_NODE_VIRTIO_IOMMU_PCI = 0x03,
52458225203SJean-Philippe Brucker 	ACPI_VIOT_NODE_VIRTIO_IOMMU_MMIO = 0x04,
525f73b8619SBob Moore 	ACPI_VIOT_RESERVED = 0x05
52658225203SJean-Philippe Brucker };
52758225203SJean-Philippe Brucker 
52858225203SJean-Philippe Brucker /* VIOT subtables */
52958225203SJean-Philippe Brucker 
53058225203SJean-Philippe Brucker struct acpi_viot_pci_range {
531e563f6fcSJean-Philippe Brucker 	struct acpi_viot_header header;
53258225203SJean-Philippe Brucker 	u32 endpoint_start;
53358225203SJean-Philippe Brucker 	u16 segment_start;
53458225203SJean-Philippe Brucker 	u16 segment_end;
53558225203SJean-Philippe Brucker 	u16 bdf_start;
53658225203SJean-Philippe Brucker 	u16 bdf_end;
53758225203SJean-Philippe Brucker 	u16 output_node;
53858225203SJean-Philippe Brucker 	u8 reserved[6];
53958225203SJean-Philippe Brucker };
54058225203SJean-Philippe Brucker 
54158225203SJean-Philippe Brucker struct acpi_viot_mmio {
542e563f6fcSJean-Philippe Brucker 	struct acpi_viot_header header;
54358225203SJean-Philippe Brucker 	u32 endpoint;
54458225203SJean-Philippe Brucker 	u64 base_address;
54558225203SJean-Philippe Brucker 	u16 output_node;
54658225203SJean-Philippe Brucker 	u8 reserved[6];
54758225203SJean-Philippe Brucker };
54858225203SJean-Philippe Brucker 
54958225203SJean-Philippe Brucker struct acpi_viot_virtio_iommu_pci {
550e563f6fcSJean-Philippe Brucker 	struct acpi_viot_header header;
55158225203SJean-Philippe Brucker 	u16 segment;
55258225203SJean-Philippe Brucker 	u16 bdf;
55358225203SJean-Philippe Brucker 	u8 reserved[8];
55458225203SJean-Philippe Brucker };
55558225203SJean-Philippe Brucker 
55658225203SJean-Philippe Brucker struct acpi_viot_virtio_iommu_mmio {
557e563f6fcSJean-Philippe Brucker 	struct acpi_viot_header header;
55858225203SJean-Philippe Brucker 	u8 reserved[4];
55958225203SJean-Philippe Brucker 	u64 base_address;
56058225203SJean-Philippe Brucker };
56158225203SJean-Philippe Brucker 
56258225203SJean-Philippe Brucker /*******************************************************************************
56358225203SJean-Philippe Brucker  *
564e62f8227SErik Schmauss  * WAET - Windows ACPI Emulated devices Table
565e62f8227SErik Schmauss  *        Version 1
566e62f8227SErik Schmauss  *
567e62f8227SErik Schmauss  * Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009
568e62f8227SErik Schmauss  *
569e62f8227SErik Schmauss  ******************************************************************************/
570e62f8227SErik Schmauss 
571e62f8227SErik Schmauss struct acpi_table_waet {
572e62f8227SErik Schmauss 	struct acpi_table_header header;	/* Common ACPI table header */
573e62f8227SErik Schmauss 	u32 flags;
574e62f8227SErik Schmauss };
575e62f8227SErik Schmauss 
576e62f8227SErik Schmauss /* Masks for Flags field above */
577e62f8227SErik Schmauss 
578e62f8227SErik Schmauss #define ACPI_WAET_RTC_NO_ACK        (1)	/* RTC requires no int acknowledge */
579e62f8227SErik Schmauss #define ACPI_WAET_TIMER_ONE_READ    (1<<1)	/* PM timer requires only one read */
580e62f8227SErik Schmauss 
581e62f8227SErik Schmauss /*******************************************************************************
582e62f8227SErik Schmauss  *
583e62f8227SErik Schmauss  * WDAT - Watchdog Action Table
584e62f8227SErik Schmauss  *        Version 1
585e62f8227SErik Schmauss  *
586e62f8227SErik Schmauss  * Conforms to "Hardware Watchdog Timers Design Specification",
587e62f8227SErik Schmauss  * Copyright 2006 Microsoft Corporation.
588e62f8227SErik Schmauss  *
589e62f8227SErik Schmauss  ******************************************************************************/
590e62f8227SErik Schmauss 
591e62f8227SErik Schmauss struct acpi_table_wdat {
592e62f8227SErik Schmauss 	struct acpi_table_header header;	/* Common ACPI table header */
593e62f8227SErik Schmauss 	u32 header_length;	/* Watchdog Header Length */
594e62f8227SErik Schmauss 	u16 pci_segment;	/* PCI Segment number */
595e62f8227SErik Schmauss 	u8 pci_bus;		/* PCI Bus number */
596e62f8227SErik Schmauss 	u8 pci_device;		/* PCI Device number */
597e62f8227SErik Schmauss 	u8 pci_function;	/* PCI Function number */
598e62f8227SErik Schmauss 	u8 reserved[3];
599e62f8227SErik Schmauss 	u32 timer_period;	/* Period of one timer count (msec) */
600e62f8227SErik Schmauss 	u32 max_count;		/* Maximum counter value supported */
601e62f8227SErik Schmauss 	u32 min_count;		/* Minimum counter value */
602e62f8227SErik Schmauss 	u8 flags;
603e62f8227SErik Schmauss 	u8 reserved2[3];
604e62f8227SErik Schmauss 	u32 entries;		/* Number of watchdog entries that follow */
605e62f8227SErik Schmauss };
606e62f8227SErik Schmauss 
607e62f8227SErik Schmauss /* Masks for Flags field above */
608e62f8227SErik Schmauss 
609e62f8227SErik Schmauss #define ACPI_WDAT_ENABLED           (1)
610e62f8227SErik Schmauss #define ACPI_WDAT_STOPPED           0x80
611e62f8227SErik Schmauss 
612e62f8227SErik Schmauss /* WDAT Instruction Entries (actions) */
613e62f8227SErik Schmauss 
614e62f8227SErik Schmauss struct acpi_wdat_entry {
615e62f8227SErik Schmauss 	u8 action;
616e62f8227SErik Schmauss 	u8 instruction;
617e62f8227SErik Schmauss 	u16 reserved;
618e62f8227SErik Schmauss 	struct acpi_generic_address register_region;
619e62f8227SErik Schmauss 	u32 value;		/* Value used with Read/Write register */
620e62f8227SErik Schmauss 	u32 mask;		/* Bitmask required for this register instruction */
621e62f8227SErik Schmauss };
622e62f8227SErik Schmauss 
623e62f8227SErik Schmauss /* Values for Action field above */
624e62f8227SErik Schmauss 
625e62f8227SErik Schmauss enum acpi_wdat_actions {
626e62f8227SErik Schmauss 	ACPI_WDAT_RESET = 1,
627e62f8227SErik Schmauss 	ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4,
628e62f8227SErik Schmauss 	ACPI_WDAT_GET_COUNTDOWN = 5,
629e62f8227SErik Schmauss 	ACPI_WDAT_SET_COUNTDOWN = 6,
630e62f8227SErik Schmauss 	ACPI_WDAT_GET_RUNNING_STATE = 8,
631e62f8227SErik Schmauss 	ACPI_WDAT_SET_RUNNING_STATE = 9,
632e62f8227SErik Schmauss 	ACPI_WDAT_GET_STOPPED_STATE = 10,
633e62f8227SErik Schmauss 	ACPI_WDAT_SET_STOPPED_STATE = 11,
634e62f8227SErik Schmauss 	ACPI_WDAT_GET_REBOOT = 16,
635e62f8227SErik Schmauss 	ACPI_WDAT_SET_REBOOT = 17,
636e62f8227SErik Schmauss 	ACPI_WDAT_GET_SHUTDOWN = 18,
637e62f8227SErik Schmauss 	ACPI_WDAT_SET_SHUTDOWN = 19,
638e62f8227SErik Schmauss 	ACPI_WDAT_GET_STATUS = 32,
639e62f8227SErik Schmauss 	ACPI_WDAT_SET_STATUS = 33,
640e62f8227SErik Schmauss 	ACPI_WDAT_ACTION_RESERVED = 34	/* 34 and greater are reserved */
641e62f8227SErik Schmauss };
642e62f8227SErik Schmauss 
643e62f8227SErik Schmauss /* Values for Instruction field above */
644e62f8227SErik Schmauss 
645e62f8227SErik Schmauss enum acpi_wdat_instructions {
646e62f8227SErik Schmauss 	ACPI_WDAT_READ_VALUE = 0,
647e62f8227SErik Schmauss 	ACPI_WDAT_READ_COUNTDOWN = 1,
648e62f8227SErik Schmauss 	ACPI_WDAT_WRITE_VALUE = 2,
649e62f8227SErik Schmauss 	ACPI_WDAT_WRITE_COUNTDOWN = 3,
650e62f8227SErik Schmauss 	ACPI_WDAT_INSTRUCTION_RESERVED = 4,	/* 4 and greater are reserved */
651e62f8227SErik Schmauss 	ACPI_WDAT_PRESERVE_REGISTER = 0x80	/* Except for this value */
652e62f8227SErik Schmauss };
653e62f8227SErik Schmauss 
654e62f8227SErik Schmauss /*******************************************************************************
655e62f8227SErik Schmauss  *
656e62f8227SErik Schmauss  * WDDT - Watchdog Descriptor Table
657e62f8227SErik Schmauss  *        Version 1
658e62f8227SErik Schmauss  *
659e62f8227SErik Schmauss  * Conforms to "Using the Intel ICH Family Watchdog Timer (WDT)",
660e62f8227SErik Schmauss  * Version 001, September 2002
661e62f8227SErik Schmauss  *
662e62f8227SErik Schmauss  ******************************************************************************/
663e62f8227SErik Schmauss 
664e62f8227SErik Schmauss struct acpi_table_wddt {
665e62f8227SErik Schmauss 	struct acpi_table_header header;	/* Common ACPI table header */
666e62f8227SErik Schmauss 	u16 spec_version;
667e62f8227SErik Schmauss 	u16 table_version;
668e62f8227SErik Schmauss 	u16 pci_vendor_id;
669e62f8227SErik Schmauss 	struct acpi_generic_address address;
670e62f8227SErik Schmauss 	u16 max_count;		/* Maximum counter value supported */
671e62f8227SErik Schmauss 	u16 min_count;		/* Minimum counter value supported */
672e62f8227SErik Schmauss 	u16 period;
673e62f8227SErik Schmauss 	u16 status;
674e62f8227SErik Schmauss 	u16 capability;
675e62f8227SErik Schmauss };
676e62f8227SErik Schmauss 
677e62f8227SErik Schmauss /* Flags for Status field above */
678e62f8227SErik Schmauss 
679e62f8227SErik Schmauss #define ACPI_WDDT_AVAILABLE     (1)
680e62f8227SErik Schmauss #define ACPI_WDDT_ACTIVE        (1<<1)
681e62f8227SErik Schmauss #define ACPI_WDDT_TCO_OS_OWNED  (1<<2)
682e62f8227SErik Schmauss #define ACPI_WDDT_USER_RESET    (1<<11)
683e62f8227SErik Schmauss #define ACPI_WDDT_WDT_RESET     (1<<12)
684e62f8227SErik Schmauss #define ACPI_WDDT_POWER_FAIL    (1<<13)
685e62f8227SErik Schmauss #define ACPI_WDDT_UNKNOWN_RESET (1<<14)
686e62f8227SErik Schmauss 
687e62f8227SErik Schmauss /* Flags for Capability field above */
688e62f8227SErik Schmauss 
689e62f8227SErik Schmauss #define ACPI_WDDT_AUTO_RESET    (1)
690e62f8227SErik Schmauss #define ACPI_WDDT_ALERT_SUPPORT (1<<1)
691e62f8227SErik Schmauss 
692e62f8227SErik Schmauss /*******************************************************************************
693e62f8227SErik Schmauss  *
694e62f8227SErik Schmauss  * WDRT - Watchdog Resource Table
695e62f8227SErik Schmauss  *        Version 1
696e62f8227SErik Schmauss  *
697e62f8227SErik Schmauss  * Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003",
698e62f8227SErik Schmauss  * Version 1.01, August 28, 2006
699e62f8227SErik Schmauss  *
700e62f8227SErik Schmauss  ******************************************************************************/
701e62f8227SErik Schmauss 
702e62f8227SErik Schmauss struct acpi_table_wdrt {
703e62f8227SErik Schmauss 	struct acpi_table_header header;	/* Common ACPI table header */
704e62f8227SErik Schmauss 	struct acpi_generic_address control_register;
705e62f8227SErik Schmauss 	struct acpi_generic_address count_register;
706e62f8227SErik Schmauss 	u16 pci_device_id;
707e62f8227SErik Schmauss 	u16 pci_vendor_id;
708e62f8227SErik Schmauss 	u8 pci_bus;		/* PCI Bus number */
709e62f8227SErik Schmauss 	u8 pci_device;		/* PCI Device number */
710e62f8227SErik Schmauss 	u8 pci_function;	/* PCI Function number */
711e62f8227SErik Schmauss 	u8 pci_segment;		/* PCI Segment number */
712e62f8227SErik Schmauss 	u16 max_count;		/* Maximum counter value supported */
713e62f8227SErik Schmauss 	u8 units;
714e62f8227SErik Schmauss };
715e62f8227SErik Schmauss 
716e62f8227SErik Schmauss /*******************************************************************************
717e62f8227SErik Schmauss  *
71868edb038SBob Moore  * WPBT - Windows Platform Environment Table (ACPI 6.0)
71968edb038SBob Moore  *        Version 1
72068edb038SBob Moore  *
72168edb038SBob Moore  * Conforms to "Windows Platform Binary Table (WPBT)" 29 November 2011
72268edb038SBob Moore  *
72368edb038SBob Moore  ******************************************************************************/
72468edb038SBob Moore 
72568edb038SBob Moore struct acpi_table_wpbt {
72668edb038SBob Moore 	struct acpi_table_header header;	/* Common ACPI table header */
72768edb038SBob Moore 	u32 handoff_size;
72868edb038SBob Moore 	u64 handoff_address;
72968edb038SBob Moore 	u8 layout;
73068edb038SBob Moore 	u8 type;
73168edb038SBob Moore 	u16 arguments_length;
73268edb038SBob Moore };
73368edb038SBob Moore 
73487b8ec58SBob Moore struct acpi_wpbt_unicode {
73587b8ec58SBob Moore 	u16 *unicode_string;
73687b8ec58SBob Moore };
73787b8ec58SBob Moore 
73868edb038SBob Moore /*******************************************************************************
73968edb038SBob Moore  *
740afb90870SErik Kaneda  * WSMT - Windows SMM Security Mitigations Table
741e62f8227SErik Schmauss  *        Version 1
742e62f8227SErik Schmauss  *
743afb90870SErik Kaneda  * Conforms to "Windows SMM Security Mitigations Table",
744e62f8227SErik Schmauss  * Version 1.0, April 18, 2016
745e62f8227SErik Schmauss  *
746e62f8227SErik Schmauss  ******************************************************************************/
747e62f8227SErik Schmauss 
748e62f8227SErik Schmauss struct acpi_table_wsmt {
749e62f8227SErik Schmauss 	struct acpi_table_header header;	/* Common ACPI table header */
750e62f8227SErik Schmauss 	u32 protection_flags;
751e62f8227SErik Schmauss };
752e62f8227SErik Schmauss 
753e62f8227SErik Schmauss /* Flags for protection_flags field above */
754e62f8227SErik Schmauss 
755e62f8227SErik Schmauss #define ACPI_WSMT_FIXED_COMM_BUFFERS                (1)
756e62f8227SErik Schmauss #define ACPI_WSMT_COMM_BUFFER_NESTED_PTR_PROTECTION (2)
757e62f8227SErik Schmauss #define ACPI_WSMT_SYSTEM_RESOURCE_PROTECTION        (4)
758e62f8227SErik Schmauss 
759e62f8227SErik Schmauss /*******************************************************************************
760e62f8227SErik Schmauss  *
761b6944efdSBob Moore  * XENV - Xen Environment Table (ACPI 6.0)
762b6944efdSBob Moore  *        Version 1
763b6944efdSBob Moore  *
764b6944efdSBob Moore  * Conforms to "ACPI Specification for Xen Environment Table" 4 January 2015
765b6944efdSBob Moore  *
766b6944efdSBob Moore  ******************************************************************************/
767b6944efdSBob Moore 
768b6944efdSBob Moore struct acpi_table_xenv {
769b6944efdSBob Moore 	struct acpi_table_header header;	/* Common ACPI table header */
770b6944efdSBob Moore 	u64 grant_table_address;
771b6944efdSBob Moore 	u64 grant_table_size;
772b6944efdSBob Moore 	u32 event_interrupt;
773b6944efdSBob Moore 	u8 event_flags;
774b6944efdSBob Moore };
775b6944efdSBob Moore 
7766e596084SRobert Moore /* Reset to default packing */
7776e596084SRobert Moore 
7786e596084SRobert Moore #pragma pack()
779c5bd6537SBob Moore 
780c5bd6537SBob Moore #endif				/* __ACTBL3_H__ */
781