Subversion Repositories Kolibri OS

Rev

Rev 6591 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 6591 Rev 7143
1
/******************************************************************************
1
/******************************************************************************
2
 *
2
 *
3
 * Name: actbl3.h - ACPI Table Definitions
3
 * Name: actbl3.h - ACPI Table Definitions
4
 *
4
 *
5
 *****************************************************************************/
5
 *****************************************************************************/
6
 
6
 
7
/*
7
/*
8
 * Copyright (C) 2000 - 2015, Intel Corp.
8
 * Copyright (C) 2000 - 2016, Intel Corp.
9
 * All rights reserved.
9
 * All rights reserved.
10
 *
10
 *
11
 * Redistribution and use in source and binary forms, with or without
11
 * Redistribution and use in source and binary forms, with or without
12
 * modification, are permitted provided that the following conditions
12
 * modification, are permitted provided that the following conditions
13
 * are met:
13
 * are met:
14
 * 1. Redistributions of source code must retain the above copyright
14
 * 1. Redistributions of source code must retain the above copyright
15
 *    notice, this list of conditions, and the following disclaimer,
15
 *    notice, this list of conditions, and the following disclaimer,
16
 *    without modification.
16
 *    without modification.
17
 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
17
 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18
 *    substantially similar to the "NO WARRANTY" disclaimer below
18
 *    substantially similar to the "NO WARRANTY" disclaimer below
19
 *    ("Disclaimer") and any redistribution must be conditioned upon
19
 *    ("Disclaimer") and any redistribution must be conditioned upon
20
 *    including a substantially similar Disclaimer requirement for further
20
 *    including a substantially similar Disclaimer requirement for further
21
 *    binary redistribution.
21
 *    binary redistribution.
22
 * 3. Neither the names of the above-listed copyright holders nor the names
22
 * 3. Neither the names of the above-listed copyright holders nor the names
23
 *    of any contributors may be used to endorse or promote products derived
23
 *    of any contributors may be used to endorse or promote products derived
24
 *    from this software without specific prior written permission.
24
 *    from this software without specific prior written permission.
25
 *
25
 *
26
 * Alternatively, this software may be distributed under the terms of the
26
 * Alternatively, this software may be distributed under the terms of the
27
 * GNU General Public License ("GPL") version 2 as published by the Free
27
 * GNU General Public License ("GPL") version 2 as published by the Free
28
 * Software Foundation.
28
 * Software Foundation.
29
 *
29
 *
30
 * NO WARRANTY
30
 * NO WARRANTY
31
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
31
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
32
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
33
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
34
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35
 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
35
 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
36
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
37
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
38
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
39
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40
 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
40
 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41
 * POSSIBILITY OF SUCH DAMAGES.
41
 * POSSIBILITY OF SUCH DAMAGES.
42
 */
42
 */
43
 
43
 
44
#ifndef __ACTBL3_H__
44
#ifndef __ACTBL3_H__
45
#define __ACTBL3_H__
45
#define __ACTBL3_H__
46
 
46
 
47
/*******************************************************************************
47
/*******************************************************************************
48
 *
48
 *
49
 * Additional ACPI Tables (3)
49
 * Additional ACPI Tables (3)
50
 *
50
 *
51
 * These tables are not consumed directly by the ACPICA subsystem, but are
51
 * These tables are not consumed directly by the ACPICA subsystem, but are
52
 * included here to support device drivers and the AML disassembler.
52
 * included here to support device drivers and the AML disassembler.
53
 *
53
 *
54
 * In general, the tables in this file are fully defined within the ACPI
54
 * In general, the tables in this file are fully defined within the ACPI
55
 * specification.
55
 * specification.
56
 *
56
 *
57
 ******************************************************************************/
57
 ******************************************************************************/
58
 
58
 
59
/*
59
/*
60
 * Values for description table header signatures for tables defined in this
60
 * Values for description table header signatures for tables defined in this
61
 * file. Useful because they make it more difficult to inadvertently type in
61
 * file. Useful because they make it more difficult to inadvertently type in
62
 * the wrong signature.
62
 * the wrong signature.
63
 */
63
 */
64
#define ACPI_SIG_BGRT           "BGRT"	/* Boot Graphics Resource Table */
64
#define ACPI_SIG_BGRT           "BGRT"	/* Boot Graphics Resource Table */
65
#define ACPI_SIG_DRTM           "DRTM"	/* Dynamic Root of Trust for Measurement table */
65
#define ACPI_SIG_DRTM           "DRTM"	/* Dynamic Root of Trust for Measurement table */
66
#define ACPI_SIG_FPDT           "FPDT"	/* Firmware Performance Data Table */
66
#define ACPI_SIG_FPDT           "FPDT"	/* Firmware Performance Data Table */
67
#define ACPI_SIG_GTDT           "GTDT"	/* Generic Timer Description Table */
67
#define ACPI_SIG_GTDT           "GTDT"	/* Generic Timer Description Table */
68
#define ACPI_SIG_MPST           "MPST"	/* Memory Power State Table */
68
#define ACPI_SIG_MPST           "MPST"	/* Memory Power State Table */
69
#define ACPI_SIG_PCCT           "PCCT"	/* Platform Communications Channel Table */
69
#define ACPI_SIG_PCCT           "PCCT"	/* Platform Communications Channel Table */
70
#define ACPI_SIG_PMTT           "PMTT"	/* Platform Memory Topology Table */
70
#define ACPI_SIG_PMTT           "PMTT"	/* Platform Memory Topology Table */
71
#define ACPI_SIG_RASF           "RASF"	/* RAS Feature table */
71
#define ACPI_SIG_RASF           "RASF"	/* RAS Feature table */
72
#define ACPI_SIG_STAO           "STAO"	/* Status Override table */
72
#define ACPI_SIG_STAO           "STAO"	/* Status Override table */
73
#define ACPI_SIG_WPBT           "WPBT"	/* Windows Platform Binary Table */
73
#define ACPI_SIG_WPBT           "WPBT"	/* Windows Platform Binary Table */
74
#define ACPI_SIG_XENV           "XENV"	/* Xen Environment table */
74
#define ACPI_SIG_XENV           "XENV"	/* Xen Environment table */
75
 
75
 
76
#define ACPI_SIG_S3PT           "S3PT"	/* S3 Performance (sub)Table */
76
#define ACPI_SIG_S3PT           "S3PT"	/* S3 Performance (sub)Table */
77
#define ACPI_SIG_PCCS           "PCC"	/* PCC Shared Memory Region */
77
#define ACPI_SIG_PCCS           "PCC"	/* PCC Shared Memory Region */
78
 
78
 
79
/* Reserved table signatures */
79
/* Reserved table signatures */
80
 
80
 
81
#define ACPI_SIG_MATR           "MATR"	/* Memory Address Translation Table */
81
#define ACPI_SIG_MATR           "MATR"	/* Memory Address Translation Table */
82
#define ACPI_SIG_MSDM           "MSDM"	/* Microsoft Data Management Table */
82
#define ACPI_SIG_MSDM           "MSDM"	/* Microsoft Data Management Table */
83
 
83
 
84
/*
84
/*
85
 * All tables must be byte-packed to match the ACPI specification, since
85
 * All tables must be byte-packed to match the ACPI specification, since
86
 * the tables are provided by the system BIOS.
86
 * the tables are provided by the system BIOS.
87
 */
87
 */
88
#pragma pack(1)
88
#pragma pack(1)
89
 
89
 
90
/*
90
/*
91
 * Note: C bitfields are not used for this reason:
91
 * Note: C bitfields are not used for this reason:
92
 *
92
 *
93
 * "Bitfields are great and easy to read, but unfortunately the C language
93
 * "Bitfields are great and easy to read, but unfortunately the C language
94
 * does not specify the layout of bitfields in memory, which means they are
94
 * does not specify the layout of bitfields in memory, which means they are
95
 * essentially useless for dealing with packed data in on-disk formats or
95
 * essentially useless for dealing with packed data in on-disk formats or
96
 * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me,
96
 * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me,
97
 * this decision was a design error in C. Ritchie could have picked an order
97
 * this decision was a design error in C. Ritchie could have picked an order
98
 * and stuck with it." Norman Ramsey.
98
 * and stuck with it." Norman Ramsey.
99
 * See http://stackoverflow.com/a/1053662/41661
99
 * See http://stackoverflow.com/a/1053662/41661
100
 */
100
 */
101
 
101
 
102
/*******************************************************************************
102
/*******************************************************************************
103
 *
103
 *
104
 * BGRT - Boot Graphics Resource Table (ACPI 5.0)
104
 * BGRT - Boot Graphics Resource Table (ACPI 5.0)
105
 *        Version 1
105
 *        Version 1
106
 *
106
 *
107
 ******************************************************************************/
107
 ******************************************************************************/
108
 
108
 
109
struct acpi_table_bgrt {
109
struct acpi_table_bgrt {
110
	struct acpi_table_header header;	/* Common ACPI table header */
110
	struct acpi_table_header header;	/* Common ACPI table header */
111
	u16 version;
111
	u16 version;
112
	u8 status;
112
	u8 status;
113
	u8 image_type;
113
	u8 image_type;
114
	u64 image_address;
114
	u64 image_address;
115
	u32 image_offset_x;
115
	u32 image_offset_x;
116
	u32 image_offset_y;
116
	u32 image_offset_y;
117
};
117
};
118
 
118
 
119
/*******************************************************************************
119
/*******************************************************************************
120
 *
120
 *
121
 * DRTM - Dynamic Root of Trust for Measurement table
121
 * DRTM - Dynamic Root of Trust for Measurement table
122
 * Conforms to "TCG D-RTM Architecture" June 17 2013, Version 1.0.0
122
 * Conforms to "TCG D-RTM Architecture" June 17 2013, Version 1.0.0
123
 * Table version 1
123
 * Table version 1
124
 *
124
 *
125
 ******************************************************************************/
125
 ******************************************************************************/
126
 
126
 
127
struct acpi_table_drtm {
127
struct acpi_table_drtm {
128
	struct acpi_table_header header;	/* Common ACPI table header */
128
	struct acpi_table_header header;	/* Common ACPI table header */
129
	u64 entry_base_address;
129
	u64 entry_base_address;
130
	u64 entry_length;
130
	u64 entry_length;
131
	u32 entry_address32;
131
	u32 entry_address32;
132
	u64 entry_address64;
132
	u64 entry_address64;
133
	u64 exit_address;
133
	u64 exit_address;
134
	u64 log_area_address;
134
	u64 log_area_address;
135
	u32 log_area_length;
135
	u32 log_area_length;
136
	u64 arch_dependent_address;
136
	u64 arch_dependent_address;
137
	u32 flags;
137
	u32 flags;
138
};
138
};
139
 
139
 
140
/* Flag Definitions for above */
140
/* Flag Definitions for above */
141
 
141
 
142
#define ACPI_DRTM_ACCESS_ALLOWED            (1)
142
#define ACPI_DRTM_ACCESS_ALLOWED            (1)
143
#define ACPI_DRTM_ENABLE_GAP_CODE           (1<<1)
143
#define ACPI_DRTM_ENABLE_GAP_CODE           (1<<1)
144
#define ACPI_DRTM_INCOMPLETE_MEASUREMENTS   (1<<2)
144
#define ACPI_DRTM_INCOMPLETE_MEASUREMENTS   (1<<2)
145
#define ACPI_DRTM_AUTHORITY_ORDER           (1<<3)
145
#define ACPI_DRTM_AUTHORITY_ORDER           (1<<3)
146
 
146
 
147
/* 1) Validated Tables List (64-bit addresses) */
147
/* 1) Validated Tables List (64-bit addresses) */
148
 
148
 
149
struct acpi_drtm_vtable_list {
149
struct acpi_drtm_vtable_list {
150
	u32 validated_table_count;
150
	u32 validated_table_count;
151
	u64 validated_tables[1];
151
	u64 validated_tables[1];
152
};
152
};
153
 
153
 
154
/* 2) Resources List (of Resource Descriptors) */
154
/* 2) Resources List (of Resource Descriptors) */
155
 
155
 
156
/* Resource Descriptor */
156
/* Resource Descriptor */
157
 
157
 
158
struct acpi_drtm_resource {
158
struct acpi_drtm_resource {
159
	u8 size[7];
159
	u8 size[7];
160
	u8 type;
160
	u8 type;
161
	u64 address;
161
	u64 address;
162
};
162
};
163
 
163
 
164
struct acpi_drtm_resource_list {
164
struct acpi_drtm_resource_list {
165
	u32 resource_count;
165
	u32 resource_count;
166
	struct acpi_drtm_resource resources[1];
166
	struct acpi_drtm_resource resources[1];
167
};
167
};
168
 
168
 
169
/* 3) Platform-specific Identifiers List */
169
/* 3) Platform-specific Identifiers List */
170
 
170
 
171
struct acpi_drtm_dps_id {
171
struct acpi_drtm_dps_id {
172
	u32 dps_id_length;
172
	u32 dps_id_length;
173
	u8 dps_id[16];
173
	u8 dps_id[16];
174
};
174
};
175
 
175
 
176
/*******************************************************************************
176
/*******************************************************************************
177
 *
177
 *
178
 * FPDT - Firmware Performance Data Table (ACPI 5.0)
178
 * FPDT - Firmware Performance Data Table (ACPI 5.0)
179
 *        Version 1
179
 *        Version 1
180
 *
180
 *
181
 ******************************************************************************/
181
 ******************************************************************************/
182
 
182
 
183
struct acpi_table_fpdt {
183
struct acpi_table_fpdt {
184
	struct acpi_table_header header;	/* Common ACPI table header */
184
	struct acpi_table_header header;	/* Common ACPI table header */
185
};
185
};
186
 
186
 
187
/* FPDT subtable header */
187
/* FPDT subtable header */
188
 
188
 
189
struct acpi_fpdt_header {
189
struct acpi_fpdt_header {
190
	u16 type;
190
	u16 type;
191
	u8 length;
191
	u8 length;
192
	u8 revision;
192
	u8 revision;
193
};
193
};
194
 
194
 
195
/* Values for Type field above */
195
/* Values for Type field above */
196
 
196
 
197
enum acpi_fpdt_type {
197
enum acpi_fpdt_type {
198
	ACPI_FPDT_TYPE_BOOT = 0,
198
	ACPI_FPDT_TYPE_BOOT = 0,
199
	ACPI_FPDT_TYPE_S3PERF = 1
199
	ACPI_FPDT_TYPE_S3PERF = 1
200
};
200
};
201
 
201
 
202
/*
202
/*
203
 * FPDT subtables
203
 * FPDT subtables
204
 */
204
 */
205
 
205
 
206
/* 0: Firmware Basic Boot Performance Record */
206
/* 0: Firmware Basic Boot Performance Record */
207
 
207
 
208
struct acpi_fpdt_boot {
208
struct acpi_fpdt_boot {
209
	struct acpi_fpdt_header header;
209
	struct acpi_fpdt_header header;
210
	u8 reserved[4];
210
	u8 reserved[4];
211
	u64 reset_end;
211
	u64 reset_end;
212
	u64 load_start;
212
	u64 load_start;
213
	u64 startup_start;
213
	u64 startup_start;
214
	u64 exit_services_entry;
214
	u64 exit_services_entry;
215
	u64 exit_services_exit;
215
	u64 exit_services_exit;
216
};
216
};
217
 
217
 
218
/* 1: S3 Performance Table Pointer Record */
218
/* 1: S3 Performance Table Pointer Record */
219
 
219
 
220
struct acpi_fpdt_s3pt_ptr {
220
struct acpi_fpdt_s3pt_ptr {
221
	struct acpi_fpdt_header header;
221
	struct acpi_fpdt_header header;
222
	u8 reserved[4];
222
	u8 reserved[4];
223
	u64 address;
223
	u64 address;
224
};
224
};
225
 
225
 
226
/*
226
/*
227
 * S3PT - S3 Performance Table. This table is pointed to by the
227
 * S3PT - S3 Performance Table. This table is pointed to by the
228
 * FPDT S3 Pointer Record above.
228
 * FPDT S3 Pointer Record above.
229
 */
229
 */
230
struct acpi_table_s3pt {
230
struct acpi_table_s3pt {
231
	u8 signature[4];	/* "S3PT" */
231
	u8 signature[4];	/* "S3PT" */
232
	u32 length;
232
	u32 length;
233
};
233
};
234
 
234
 
235
/*
235
/*
236
 * S3PT Subtables
236
 * S3PT Subtables
237
 */
237
 */
238
struct acpi_s3pt_header {
238
struct acpi_s3pt_header {
239
	u16 type;
239
	u16 type;
240
	u8 length;
240
	u8 length;
241
	u8 revision;
241
	u8 revision;
242
};
242
};
243
 
243
 
244
/* Values for Type field above */
244
/* Values for Type field above */
245
 
245
 
246
enum acpi_s3pt_type {
246
enum acpi_s3pt_type {
247
	ACPI_S3PT_TYPE_RESUME = 0,
247
	ACPI_S3PT_TYPE_RESUME = 0,
248
	ACPI_S3PT_TYPE_SUSPEND = 1
248
	ACPI_S3PT_TYPE_SUSPEND = 1
249
};
249
};
250
 
250
 
251
struct acpi_s3pt_resume {
251
struct acpi_s3pt_resume {
252
	struct acpi_s3pt_header header;
252
	struct acpi_s3pt_header header;
253
	u32 resume_count;
253
	u32 resume_count;
254
	u64 full_resume;
254
	u64 full_resume;
255
	u64 average_resume;
255
	u64 average_resume;
256
};
256
};
257
 
257
 
258
struct acpi_s3pt_suspend {
258
struct acpi_s3pt_suspend {
259
	struct acpi_s3pt_header header;
259
	struct acpi_s3pt_header header;
260
	u64 suspend_start;
260
	u64 suspend_start;
261
	u64 suspend_end;
261
	u64 suspend_end;
262
};
262
};
263
 
263
 
264
/*******************************************************************************
264
/*******************************************************************************
265
 *
265
 *
266
 * GTDT - Generic Timer Description Table (ACPI 5.1)
266
 * GTDT - Generic Timer Description Table (ACPI 5.1)
267
 *        Version 2
267
 *        Version 2
268
 *
268
 *
269
 ******************************************************************************/
269
 ******************************************************************************/
270
 
270
 
271
struct acpi_table_gtdt {
271
struct acpi_table_gtdt {
272
	struct acpi_table_header header;	/* Common ACPI table header */
272
	struct acpi_table_header header;	/* Common ACPI table header */
273
	u64 counter_block_addresss;
273
	u64 counter_block_addresss;
274
	u32 reserved;
274
	u32 reserved;
275
	u32 secure_el1_interrupt;
275
	u32 secure_el1_interrupt;
276
	u32 secure_el1_flags;
276
	u32 secure_el1_flags;
277
	u32 non_secure_el1_interrupt;
277
	u32 non_secure_el1_interrupt;
278
	u32 non_secure_el1_flags;
278
	u32 non_secure_el1_flags;
279
	u32 virtual_timer_interrupt;
279
	u32 virtual_timer_interrupt;
280
	u32 virtual_timer_flags;
280
	u32 virtual_timer_flags;
281
	u32 non_secure_el2_interrupt;
281
	u32 non_secure_el2_interrupt;
282
	u32 non_secure_el2_flags;
282
	u32 non_secure_el2_flags;
283
	u64 counter_read_block_address;
283
	u64 counter_read_block_address;
284
	u32 platform_timer_count;
284
	u32 platform_timer_count;
285
	u32 platform_timer_offset;
285
	u32 platform_timer_offset;
286
};
286
};
287
 
287
 
288
/* Flag Definitions: Timer Block Physical Timers and Virtual timers */
288
/* Flag Definitions: Timer Block Physical Timers and Virtual timers */
289
 
289
 
290
#define ACPI_GTDT_INTERRUPT_MODE        (1)
290
#define ACPI_GTDT_INTERRUPT_MODE        (1)
291
#define ACPI_GTDT_INTERRUPT_POLARITY    (1<<1)
291
#define ACPI_GTDT_INTERRUPT_POLARITY    (1<<1)
292
#define ACPI_GTDT_ALWAYS_ON             (1<<2)
292
#define ACPI_GTDT_ALWAYS_ON             (1<<2)
293
 
293
 
294
/* Common GTDT subtable header */
294
/* Common GTDT subtable header */
295
 
295
 
296
struct acpi_gtdt_header {
296
struct acpi_gtdt_header {
297
	u8 type;
297
	u8 type;
298
	u16 length;
298
	u16 length;
299
};
299
};
300
 
300
 
301
/* Values for GTDT subtable type above */
301
/* Values for GTDT subtable type above */
302
 
302
 
303
enum acpi_gtdt_type {
303
enum acpi_gtdt_type {
304
	ACPI_GTDT_TYPE_TIMER_BLOCK = 0,
304
	ACPI_GTDT_TYPE_TIMER_BLOCK = 0,
305
	ACPI_GTDT_TYPE_WATCHDOG = 1,
305
	ACPI_GTDT_TYPE_WATCHDOG = 1,
306
	ACPI_GTDT_TYPE_RESERVED = 2	/* 2 and greater are reserved */
306
	ACPI_GTDT_TYPE_RESERVED = 2	/* 2 and greater are reserved */
307
};
307
};
308
 
308
 
309
/* GTDT Subtables, correspond to Type in struct acpi_gtdt_header */
309
/* GTDT Subtables, correspond to Type in struct acpi_gtdt_header */
310
 
310
 
311
/* 0: Generic Timer Block */
311
/* 0: Generic Timer Block */
312
 
312
 
313
struct acpi_gtdt_timer_block {
313
struct acpi_gtdt_timer_block {
314
	struct acpi_gtdt_header header;
314
	struct acpi_gtdt_header header;
315
	u8 reserved;
315
	u8 reserved;
316
	u64 block_address;
316
	u64 block_address;
317
	u32 timer_count;
317
	u32 timer_count;
318
	u32 timer_offset;
318
	u32 timer_offset;
319
};
319
};
320
 
320
 
321
/* Timer Sub-Structure, one per timer */
321
/* Timer Sub-Structure, one per timer */
322
 
322
 
323
struct acpi_gtdt_timer_entry {
323
struct acpi_gtdt_timer_entry {
324
	u8 frame_number;
324
	u8 frame_number;
325
	u8 reserved[3];
325
	u8 reserved[3];
326
	u64 base_address;
326
	u64 base_address;
327
	u64 el0_base_address;
327
	u64 el0_base_address;
328
	u32 timer_interrupt;
328
	u32 timer_interrupt;
329
	u32 timer_flags;
329
	u32 timer_flags;
330
	u32 virtual_timer_interrupt;
330
	u32 virtual_timer_interrupt;
331
	u32 virtual_timer_flags;
331
	u32 virtual_timer_flags;
332
	u32 common_flags;
332
	u32 common_flags;
333
};
333
};
334
 
334
 
335
/* Flag Definitions: timer_flags and virtual_timer_flags above */
335
/* Flag Definitions: timer_flags and virtual_timer_flags above */
336
 
336
 
337
#define ACPI_GTDT_GT_IRQ_MODE               (1)
337
#define ACPI_GTDT_GT_IRQ_MODE               (1)
338
#define ACPI_GTDT_GT_IRQ_POLARITY           (1<<1)
338
#define ACPI_GTDT_GT_IRQ_POLARITY           (1<<1)
339
 
339
 
340
/* Flag Definitions: common_flags above */
340
/* Flag Definitions: common_flags above */
341
 
341
 
342
#define ACPI_GTDT_GT_IS_SECURE_TIMER        (1)
342
#define ACPI_GTDT_GT_IS_SECURE_TIMER        (1)
343
#define ACPI_GTDT_GT_ALWAYS_ON              (1<<1)
343
#define ACPI_GTDT_GT_ALWAYS_ON              (1<<1)
344
 
344
 
345
/* 1: SBSA Generic Watchdog Structure */
345
/* 1: SBSA Generic Watchdog Structure */
346
 
346
 
347
struct acpi_gtdt_watchdog {
347
struct acpi_gtdt_watchdog {
348
	struct acpi_gtdt_header header;
348
	struct acpi_gtdt_header header;
349
	u8 reserved;
349
	u8 reserved;
350
	u64 refresh_frame_address;
350
	u64 refresh_frame_address;
351
	u64 control_frame_address;
351
	u64 control_frame_address;
352
	u32 timer_interrupt;
352
	u32 timer_interrupt;
353
	u32 timer_flags;
353
	u32 timer_flags;
354
};
354
};
355
 
355
 
356
/* Flag Definitions: timer_flags above */
356
/* Flag Definitions: timer_flags above */
357
 
357
 
358
#define ACPI_GTDT_WATCHDOG_IRQ_MODE         (1)
358
#define ACPI_GTDT_WATCHDOG_IRQ_MODE         (1)
359
#define ACPI_GTDT_WATCHDOG_IRQ_POLARITY     (1<<1)
359
#define ACPI_GTDT_WATCHDOG_IRQ_POLARITY     (1<<1)
360
#define ACPI_GTDT_WATCHDOG_SECURE           (1<<2)
360
#define ACPI_GTDT_WATCHDOG_SECURE           (1<<2)
361
 
361
 
362
/*******************************************************************************
362
/*******************************************************************************
363
 *
363
 *
364
 * MPST - Memory Power State Table (ACPI 5.0)
364
 * MPST - Memory Power State Table (ACPI 5.0)
365
 *        Version 1
365
 *        Version 1
366
 *
366
 *
367
 ******************************************************************************/
367
 ******************************************************************************/
368
 
368
 
369
#define ACPI_MPST_CHANNEL_INFO \
369
#define ACPI_MPST_CHANNEL_INFO \
370
	u8                              channel_id; \
370
	u8                              channel_id; \
371
	u8                              reserved1[3]; \
371
	u8                              reserved1[3]; \
372
	u16                             power_node_count; \
372
	u16                             power_node_count; \
373
	u16                             reserved2;
373
	u16                             reserved2;
374
 
374
 
375
/* Main table */
375
/* Main table */
376
 
376
 
377
struct acpi_table_mpst {
377
struct acpi_table_mpst {
378
	struct acpi_table_header header;	/* Common ACPI table header */
378
	struct acpi_table_header header;	/* Common ACPI table header */
379
	 ACPI_MPST_CHANNEL_INFO	/* Platform Communication Channel */
379
	 ACPI_MPST_CHANNEL_INFO	/* Platform Communication Channel */
380
};
380
};
381
 
381
 
382
/* Memory Platform Communication Channel Info */
382
/* Memory Platform Communication Channel Info */
383
 
383
 
384
struct acpi_mpst_channel {
384
struct acpi_mpst_channel {
385
	ACPI_MPST_CHANNEL_INFO	/* Platform Communication Channel */
385
	ACPI_MPST_CHANNEL_INFO	/* Platform Communication Channel */
386
};
386
};
387
 
387
 
388
/* Memory Power Node Structure */
388
/* Memory Power Node Structure */
389
 
389
 
390
struct acpi_mpst_power_node {
390
struct acpi_mpst_power_node {
391
	u8 flags;
391
	u8 flags;
392
	u8 reserved1;
392
	u8 reserved1;
393
	u16 node_id;
393
	u16 node_id;
394
	u32 length;
394
	u32 length;
395
	u64 range_address;
395
	u64 range_address;
396
	u64 range_length;
396
	u64 range_length;
397
	u32 num_power_states;
397
	u32 num_power_states;
398
	u32 num_physical_components;
398
	u32 num_physical_components;
399
};
399
};
400
 
400
 
401
/* Values for Flags field above */
401
/* Values for Flags field above */
402
 
402
 
403
#define ACPI_MPST_ENABLED               1
403
#define ACPI_MPST_ENABLED               1
404
#define ACPI_MPST_POWER_MANAGED         2
404
#define ACPI_MPST_POWER_MANAGED         2
405
#define ACPI_MPST_HOT_PLUG_CAPABLE      4
405
#define ACPI_MPST_HOT_PLUG_CAPABLE      4
406
 
406
 
407
/* Memory Power State Structure (follows POWER_NODE above) */
407
/* Memory Power State Structure (follows POWER_NODE above) */
408
 
408
 
409
struct acpi_mpst_power_state {
409
struct acpi_mpst_power_state {
410
	u8 power_state;
410
	u8 power_state;
411
	u8 info_index;
411
	u8 info_index;
412
};
412
};
413
 
413
 
414
/* Physical Component ID Structure (follows POWER_STATE above) */
414
/* Physical Component ID Structure (follows POWER_STATE above) */
415
 
415
 
416
struct acpi_mpst_component {
416
struct acpi_mpst_component {
417
	u16 component_id;
417
	u16 component_id;
418
};
418
};
419
 
419
 
420
/* Memory Power State Characteristics Structure (follows all POWER_NODEs) */
420
/* Memory Power State Characteristics Structure (follows all POWER_NODEs) */
421
 
421
 
422
struct acpi_mpst_data_hdr {
422
struct acpi_mpst_data_hdr {
423
	u16 characteristics_count;
423
	u16 characteristics_count;
424
	u16 reserved;
424
	u16 reserved;
425
};
425
};
426
 
426
 
427
struct acpi_mpst_power_data {
427
struct acpi_mpst_power_data {
428
	u8 structure_id;
428
	u8 structure_id;
429
	u8 flags;
429
	u8 flags;
430
	u16 reserved1;
430
	u16 reserved1;
431
	u32 average_power;
431
	u32 average_power;
432
	u32 power_saving;
432
	u32 power_saving;
433
	u64 exit_latency;
433
	u64 exit_latency;
434
	u64 reserved2;
434
	u64 reserved2;
435
};
435
};
436
 
436
 
437
/* Values for Flags field above */
437
/* Values for Flags field above */
438
 
438
 
439
#define ACPI_MPST_PRESERVE              1
439
#define ACPI_MPST_PRESERVE              1
440
#define ACPI_MPST_AUTOENTRY             2
440
#define ACPI_MPST_AUTOENTRY             2
441
#define ACPI_MPST_AUTOEXIT              4
441
#define ACPI_MPST_AUTOEXIT              4
442
 
442
 
443
/* Shared Memory Region (not part of an ACPI table) */
443
/* Shared Memory Region (not part of an ACPI table) */
444
 
444
 
445
struct acpi_mpst_shared {
445
struct acpi_mpst_shared {
446
	u32 signature;
446
	u32 signature;
447
	u16 pcc_command;
447
	u16 pcc_command;
448
	u16 pcc_status;
448
	u16 pcc_status;
449
	u32 command_register;
449
	u32 command_register;
450
	u32 status_register;
450
	u32 status_register;
451
	u32 power_state_id;
451
	u32 power_state_id;
452
	u32 power_node_id;
452
	u32 power_node_id;
453
	u64 energy_consumed;
453
	u64 energy_consumed;
454
	u64 average_power;
454
	u64 average_power;
455
};
455
};
456
 
456
 
457
/*******************************************************************************
457
/*******************************************************************************
458
 *
458
 *
459
 * PCCT - Platform Communications Channel Table (ACPI 5.0)
459
 * PCCT - Platform Communications Channel Table (ACPI 5.0)
460
 *        Version 1
460
 *        Version 1
461
 *
461
 *
462
 ******************************************************************************/
462
 ******************************************************************************/
463
 
463
 
464
struct acpi_table_pcct {
464
struct acpi_table_pcct {
465
	struct acpi_table_header header;	/* Common ACPI table header */
465
	struct acpi_table_header header;	/* Common ACPI table header */
466
	u32 flags;
466
	u32 flags;
467
	u64 reserved;
467
	u64 reserved;
468
};
468
};
469
 
469
 
470
/* Values for Flags field above */
470
/* Values for Flags field above */
471
 
471
 
472
#define ACPI_PCCT_DOORBELL              1
472
#define ACPI_PCCT_DOORBELL              1
473
 
473
 
474
/* Values for subtable type in struct acpi_subtable_header */
474
/* Values for subtable type in struct acpi_subtable_header */
475
 
475
 
476
enum acpi_pcct_type {
476
enum acpi_pcct_type {
477
	ACPI_PCCT_TYPE_GENERIC_SUBSPACE = 0,
477
	ACPI_PCCT_TYPE_GENERIC_SUBSPACE = 0,
478
	ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE = 1,
478
	ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE = 1,
479
	ACPI_PCCT_TYPE_RESERVED = 2	/* 2 and greater are reserved */
479
	ACPI_PCCT_TYPE_RESERVED = 2	/* 2 and greater are reserved */
480
};
480
};
481
 
481
 
482
/*
482
/*
483
 * PCCT Subtables, correspond to Type in struct acpi_subtable_header
483
 * PCCT Subtables, correspond to Type in struct acpi_subtable_header
484
 */
484
 */
485
 
485
 
486
/* 0: Generic Communications Subspace */
486
/* 0: Generic Communications Subspace */
487
 
487
 
488
struct acpi_pcct_subspace {
488
struct acpi_pcct_subspace {
489
	struct acpi_subtable_header header;
489
	struct acpi_subtable_header header;
490
	u8 reserved[6];
490
	u8 reserved[6];
491
	u64 base_address;
491
	u64 base_address;
492
	u64 length;
492
	u64 length;
493
	struct acpi_generic_address doorbell_register;
493
	struct acpi_generic_address doorbell_register;
494
	u64 preserve_mask;
494
	u64 preserve_mask;
495
	u64 write_mask;
495
	u64 write_mask;
496
	u32 latency;
496
	u32 latency;
497
	u32 max_access_rate;
497
	u32 max_access_rate;
498
	u16 min_turnaround_time;
498
	u16 min_turnaround_time;
499
};
499
};
500
 
500
 
501
/* 1: HW-reduced Communications Subspace (ACPI 5.1) */
501
/* 1: HW-reduced Communications Subspace (ACPI 5.1) */
502
 
502
 
503
struct acpi_pcct_hw_reduced {
503
struct acpi_pcct_hw_reduced {
504
	struct acpi_subtable_header header;
504
	struct acpi_subtable_header header;
505
	u32 doorbell_interrupt;
505
	u32 doorbell_interrupt;
506
	u8 flags;
506
	u8 flags;
507
	u8 reserved;
507
	u8 reserved;
508
	u64 base_address;
508
	u64 base_address;
509
	u64 length;
509
	u64 length;
510
	struct acpi_generic_address doorbell_register;
510
	struct acpi_generic_address doorbell_register;
511
	u64 preserve_mask;
511
	u64 preserve_mask;
512
	u64 write_mask;
512
	u64 write_mask;
513
	u32 latency;
513
	u32 latency;
514
	u32 max_access_rate;
514
	u32 max_access_rate;
515
	u16 min_turnaround_time;
515
	u16 min_turnaround_time;
516
};
516
};
517
 
517
 
518
/* Values for doorbell flags above */
518
/* Values for doorbell flags above */
519
 
519
 
520
#define ACPI_PCCT_INTERRUPT_POLARITY    (1)
520
#define ACPI_PCCT_INTERRUPT_POLARITY    (1)
521
#define ACPI_PCCT_INTERRUPT_MODE        (1<<1)
521
#define ACPI_PCCT_INTERRUPT_MODE        (1<<1)
522
 
522
 
523
/*
523
/*
524
 * PCC memory structures (not part of the ACPI table)
524
 * PCC memory structures (not part of the ACPI table)
525
 */
525
 */
526
 
526
 
527
/* Shared Memory Region */
527
/* Shared Memory Region */
528
 
528
 
529
struct acpi_pcct_shared_memory {
529
struct acpi_pcct_shared_memory {
530
	u32 signature;
530
	u32 signature;
531
	u16 command;
531
	u16 command;
532
	u16 status;
532
	u16 status;
533
};
533
};
534
 
534
 
535
/*******************************************************************************
535
/*******************************************************************************
536
 *
536
 *
537
 * PMTT - Platform Memory Topology Table (ACPI 5.0)
537
 * PMTT - Platform Memory Topology Table (ACPI 5.0)
538
 *        Version 1
538
 *        Version 1
539
 *
539
 *
540
 ******************************************************************************/
540
 ******************************************************************************/
541
 
541
 
542
struct acpi_table_pmtt {
542
struct acpi_table_pmtt {
543
	struct acpi_table_header header;	/* Common ACPI table header */
543
	struct acpi_table_header header;	/* Common ACPI table header */
544
	u32 reserved;
544
	u32 reserved;
545
};
545
};
546
 
546
 
547
/* Common header for PMTT subtables that follow main table */
547
/* Common header for PMTT subtables that follow main table */
548
 
548
 
549
struct acpi_pmtt_header {
549
struct acpi_pmtt_header {
550
	u8 type;
550
	u8 type;
551
	u8 reserved1;
551
	u8 reserved1;
552
	u16 length;
552
	u16 length;
553
	u16 flags;
553
	u16 flags;
554
	u16 reserved2;
554
	u16 reserved2;
555
};
555
};
556
 
556
 
557
/* Values for Type field above */
557
/* Values for Type field above */
558
 
558
 
559
#define ACPI_PMTT_TYPE_SOCKET           0
559
#define ACPI_PMTT_TYPE_SOCKET           0
560
#define ACPI_PMTT_TYPE_CONTROLLER       1
560
#define ACPI_PMTT_TYPE_CONTROLLER       1
561
#define ACPI_PMTT_TYPE_DIMM             2
561
#define ACPI_PMTT_TYPE_DIMM             2
562
#define ACPI_PMTT_TYPE_RESERVED         3	/* 0x03-0xFF are reserved */
562
#define ACPI_PMTT_TYPE_RESERVED         3	/* 0x03-0xFF are reserved */
563
 
563
 
564
/* Values for Flags field above */
564
/* Values for Flags field above */
565
 
565
 
566
#define ACPI_PMTT_TOP_LEVEL             0x0001
566
#define ACPI_PMTT_TOP_LEVEL             0x0001
567
#define ACPI_PMTT_PHYSICAL              0x0002
567
#define ACPI_PMTT_PHYSICAL              0x0002
568
#define ACPI_PMTT_MEMORY_TYPE           0x000C
568
#define ACPI_PMTT_MEMORY_TYPE           0x000C
569
 
569
 
570
/*
570
/*
571
 * PMTT subtables, correspond to Type in struct acpi_pmtt_header
571
 * PMTT subtables, correspond to Type in struct acpi_pmtt_header
572
 */
572
 */
573
 
573
 
574
/* 0: Socket Structure */
574
/* 0: Socket Structure */
575
 
575
 
576
struct acpi_pmtt_socket {
576
struct acpi_pmtt_socket {
577
	struct acpi_pmtt_header header;
577
	struct acpi_pmtt_header header;
578
	u16 socket_id;
578
	u16 socket_id;
579
	u16 reserved;
579
	u16 reserved;
580
};
580
};
581
 
581
 
582
/* 1: Memory Controller subtable */
582
/* 1: Memory Controller subtable */
583
 
583
 
584
struct acpi_pmtt_controller {
584
struct acpi_pmtt_controller {
585
	struct acpi_pmtt_header header;
585
	struct acpi_pmtt_header header;
586
	u32 read_latency;
586
	u32 read_latency;
587
	u32 write_latency;
587
	u32 write_latency;
588
	u32 read_bandwidth;
588
	u32 read_bandwidth;
589
	u32 write_bandwidth;
589
	u32 write_bandwidth;
590
	u16 access_width;
590
	u16 access_width;
591
	u16 alignment;
591
	u16 alignment;
592
	u16 reserved;
592
	u16 reserved;
593
	u16 domain_count;
593
	u16 domain_count;
594
};
594
};
595
 
595
 
596
/* 1a: Proximity Domain substructure */
596
/* 1a: Proximity Domain substructure */
597
 
597
 
598
struct acpi_pmtt_domain {
598
struct acpi_pmtt_domain {
599
	u32 proximity_domain;
599
	u32 proximity_domain;
600
};
600
};
601
 
601
 
602
/* 2: Physical Component Identifier (DIMM) */
602
/* 2: Physical Component Identifier (DIMM) */
603
 
603
 
604
struct acpi_pmtt_physical_component {
604
struct acpi_pmtt_physical_component {
605
	struct acpi_pmtt_header header;
605
	struct acpi_pmtt_header header;
606
	u16 component_id;
606
	u16 component_id;
607
	u16 reserved;
607
	u16 reserved;
608
	u32 memory_size;
608
	u32 memory_size;
609
	u32 bios_handle;
609
	u32 bios_handle;
610
};
610
};
611
 
611
 
612
/*******************************************************************************
612
/*******************************************************************************
613
 *
613
 *
614
 * RASF - RAS Feature Table (ACPI 5.0)
614
 * RASF - RAS Feature Table (ACPI 5.0)
615
 *        Version 1
615
 *        Version 1
616
 *
616
 *
617
 ******************************************************************************/
617
 ******************************************************************************/
618
 
618
 
619
struct acpi_table_rasf {
619
struct acpi_table_rasf {
620
	struct acpi_table_header header;	/* Common ACPI table header */
620
	struct acpi_table_header header;	/* Common ACPI table header */
621
	u8 channel_id[12];
621
	u8 channel_id[12];
622
};
622
};
623
 
623
 
624
/* RASF Platform Communication Channel Shared Memory Region */
624
/* RASF Platform Communication Channel Shared Memory Region */
625
 
625
 
626
struct acpi_rasf_shared_memory {
626
struct acpi_rasf_shared_memory {
627
	u32 signature;
627
	u32 signature;
628
	u16 command;
628
	u16 command;
629
	u16 status;
629
	u16 status;
630
	u16 version;
630
	u16 version;
631
	u8 capabilities[16];
631
	u8 capabilities[16];
632
	u8 set_capabilities[16];
632
	u8 set_capabilities[16];
633
	u16 num_parameter_blocks;
633
	u16 num_parameter_blocks;
634
	u32 set_capabilities_status;
634
	u32 set_capabilities_status;
635
};
635
};
636
 
636
 
637
/* RASF Parameter Block Structure Header */
637
/* RASF Parameter Block Structure Header */
638
 
638
 
639
struct acpi_rasf_parameter_block {
639
struct acpi_rasf_parameter_block {
640
	u16 type;
640
	u16 type;
641
	u16 version;
641
	u16 version;
642
	u16 length;
642
	u16 length;
643
};
643
};
644
 
644
 
645
/* RASF Parameter Block Structure for PATROL_SCRUB */
645
/* RASF Parameter Block Structure for PATROL_SCRUB */
646
 
646
 
647
struct acpi_rasf_patrol_scrub_parameter {
647
struct acpi_rasf_patrol_scrub_parameter {
648
	struct acpi_rasf_parameter_block header;
648
	struct acpi_rasf_parameter_block header;
649
	u16 patrol_scrub_command;
649
	u16 patrol_scrub_command;
650
	u64 requested_address_range[2];
650
	u64 requested_address_range[2];
651
	u64 actual_address_range[2];
651
	u64 actual_address_range[2];
652
	u16 flags;
652
	u16 flags;
653
	u8 requested_speed;
653
	u8 requested_speed;
654
};
654
};
655
 
655
 
656
/* Masks for Flags and Speed fields above */
656
/* Masks for Flags and Speed fields above */
657
 
657
 
658
#define ACPI_RASF_SCRUBBER_RUNNING      1
658
#define ACPI_RASF_SCRUBBER_RUNNING      1
659
#define ACPI_RASF_SPEED                 (7<<1)
659
#define ACPI_RASF_SPEED                 (7<<1)
660
#define ACPI_RASF_SPEED_SLOW            (0<<1)
660
#define ACPI_RASF_SPEED_SLOW            (0<<1)
661
#define ACPI_RASF_SPEED_MEDIUM          (4<<1)
661
#define ACPI_RASF_SPEED_MEDIUM          (4<<1)
662
#define ACPI_RASF_SPEED_FAST            (7<<1)
662
#define ACPI_RASF_SPEED_FAST            (7<<1)
663
 
663
 
664
/* Channel Commands */
664
/* Channel Commands */
665
 
665
 
666
enum acpi_rasf_commands {
666
enum acpi_rasf_commands {
667
	ACPI_RASF_EXECUTE_RASF_COMMAND = 1
667
	ACPI_RASF_EXECUTE_RASF_COMMAND = 1
668
};
668
};
669
 
669
 
670
/* Platform RAS Capabilities */
670
/* Platform RAS Capabilities */
671
 
671
 
672
enum acpi_rasf_capabiliities {
672
enum acpi_rasf_capabiliities {
673
	ACPI_HW_PATROL_SCRUB_SUPPORTED = 0,
673
	ACPI_HW_PATROL_SCRUB_SUPPORTED = 0,
674
	ACPI_SW_PATROL_SCRUB_EXPOSED = 1
674
	ACPI_SW_PATROL_SCRUB_EXPOSED = 1
675
};
675
};
676
 
676
 
677
/* Patrol Scrub Commands */
677
/* Patrol Scrub Commands */
678
 
678
 
679
enum acpi_rasf_patrol_scrub_commands {
679
enum acpi_rasf_patrol_scrub_commands {
680
	ACPI_RASF_GET_PATROL_PARAMETERS = 1,
680
	ACPI_RASF_GET_PATROL_PARAMETERS = 1,
681
	ACPI_RASF_START_PATROL_SCRUBBER = 2,
681
	ACPI_RASF_START_PATROL_SCRUBBER = 2,
682
	ACPI_RASF_STOP_PATROL_SCRUBBER = 3
682
	ACPI_RASF_STOP_PATROL_SCRUBBER = 3
683
};
683
};
684
 
684
 
685
/* Channel Command flags */
685
/* Channel Command flags */
686
 
686
 
687
#define ACPI_RASF_GENERATE_SCI          (1<<15)
687
#define ACPI_RASF_GENERATE_SCI          (1<<15)
688
 
688
 
689
/* Status values */
689
/* Status values */
690
 
690
 
691
enum acpi_rasf_status {
691
enum acpi_rasf_status {
692
	ACPI_RASF_SUCCESS = 0,
692
	ACPI_RASF_SUCCESS = 0,
693
	ACPI_RASF_NOT_VALID = 1,
693
	ACPI_RASF_NOT_VALID = 1,
694
	ACPI_RASF_NOT_SUPPORTED = 2,
694
	ACPI_RASF_NOT_SUPPORTED = 2,
695
	ACPI_RASF_BUSY = 3,
695
	ACPI_RASF_BUSY = 3,
696
	ACPI_RASF_FAILED = 4,
696
	ACPI_RASF_FAILED = 4,
697
	ACPI_RASF_ABORTED = 5,
697
	ACPI_RASF_ABORTED = 5,
698
	ACPI_RASF_INVALID_DATA = 6
698
	ACPI_RASF_INVALID_DATA = 6
699
};
699
};
700
 
700
 
701
/* Status flags */
701
/* Status flags */
702
 
702
 
703
#define ACPI_RASF_COMMAND_COMPLETE      (1)
703
#define ACPI_RASF_COMMAND_COMPLETE      (1)
704
#define ACPI_RASF_SCI_DOORBELL          (1<<1)
704
#define ACPI_RASF_SCI_DOORBELL          (1<<1)
705
#define ACPI_RASF_ERROR                 (1<<2)
705
#define ACPI_RASF_ERROR                 (1<<2)
706
#define ACPI_RASF_STATUS                (0x1F<<3)
706
#define ACPI_RASF_STATUS                (0x1F<<3)
707
 
707
 
708
/*******************************************************************************
708
/*******************************************************************************
709
 *
709
 *
710
 * STAO - Status Override Table (_STA override) - ACPI 6.0
710
 * STAO - Status Override Table (_STA override) - ACPI 6.0
711
 *        Version 1
711
 *        Version 1
712
 *
712
 *
713
 * Conforms to "ACPI Specification for Status Override Table"
713
 * Conforms to "ACPI Specification for Status Override Table"
714
 * 6 January 2015
714
 * 6 January 2015
715
 *
715
 *
716
 ******************************************************************************/
716
 ******************************************************************************/
717
 
717
 
718
struct acpi_table_stao {
718
struct acpi_table_stao {
719
	struct acpi_table_header header;	/* Common ACPI table header */
719
	struct acpi_table_header header;	/* Common ACPI table header */
720
	u8 ignore_uart;
720
	u8 ignore_uart;
721
};
721
};
722
 
722
 
723
/*******************************************************************************
723
/*******************************************************************************
724
 *
724
 *
725
 * WPBT - Windows Platform Environment Table (ACPI 6.0)
725
 * WPBT - Windows Platform Environment Table (ACPI 6.0)
726
 *        Version 1
726
 *        Version 1
727
 *
727
 *
728
 * Conforms to "Windows Platform Binary Table (WPBT)" 29 November 2011
728
 * Conforms to "Windows Platform Binary Table (WPBT)" 29 November 2011
729
 *
729
 *
730
 ******************************************************************************/
730
 ******************************************************************************/
731
 
731
 
732
struct acpi_table_wpbt {
732
struct acpi_table_wpbt {
733
	struct acpi_table_header header;	/* Common ACPI table header */
733
	struct acpi_table_header header;	/* Common ACPI table header */
734
	u32 handoff_size;
734
	u32 handoff_size;
735
	u64 handoff_address;
735
	u64 handoff_address;
736
	u8 layout;
736
	u8 layout;
737
	u8 type;
737
	u8 type;
738
	u16 arguments_length;
738
	u16 arguments_length;
739
};
739
};
740
 
740
 
741
/*******************************************************************************
741
/*******************************************************************************
742
 *
742
 *
743
 * XENV - Xen Environment Table (ACPI 6.0)
743
 * XENV - Xen Environment Table (ACPI 6.0)
744
 *        Version 1
744
 *        Version 1
745
 *
745
 *
746
 * Conforms to "ACPI Specification for Xen Environment Table" 4 January 2015
746
 * Conforms to "ACPI Specification for Xen Environment Table" 4 January 2015
747
 *
747
 *
748
 ******************************************************************************/
748
 ******************************************************************************/
749
 
749
 
750
struct acpi_table_xenv {
750
struct acpi_table_xenv {
751
	struct acpi_table_header header;	/* Common ACPI table header */
751
	struct acpi_table_header header;	/* Common ACPI table header */
752
	u64 grant_table_address;
752
	u64 grant_table_address;
753
	u64 grant_table_size;
753
	u64 grant_table_size;
754
	u32 event_interrupt;
754
	u32 event_interrupt;
755
	u8 event_flags;
755
	u8 event_flags;
756
};
756
};
757
 
757
 
758
/* Reset to default packing */
758
/* Reset to default packing */
759
 
759
 
760
#pragma pack()
760
#pragma pack()
761
 
761
 
762
#endif				/* __ACTBL3_H__ */
762
#endif				/* __ACTBL3_H__ */
763
 
763
 
764
/*******************************************************************************
764
/*******************************************************************************
765
>
765
>
766
 
766
 
767
/*******************************************************************************
767
/*******************************************************************************
768
>
768
>
769
#define>
769
#define>
770
#define>
770
#define>
771
#define>
771
#define>
772
#define>
772
#define>
773
 
773
 
774
/*>
774
/*>
775
 
775
 
776
/*>
776
/*>
777
 
777
 
778
/*>
778
/*>
779
 
779
 
780
/*>
780
/*>
781
#define>
781
#define>
782
#define>
782
#define>
783
#define>
783
#define>
784
#define>
784
#define>
785
#define>
785
#define>
786
#define>
786
#define>
787
 
787
 
788
/*
788
/*
789
>
789
>
790
 
790
 
791
/*
791
/*
792
>
792
>
793
 
793
 
794
/*******************************************************************************
794
/*******************************************************************************
795
>
795
>
796
 
796
 
797
/*******************************************************************************
797
/*******************************************************************************
798
>
798
>
799
#define>
799
#define>
800
#define>
800
#define>
801
 
801
 
802
/*>
802
/*>
803
 
803
 
804
/*>
804
/*>
805
 
805
 
806
/*>
806
/*>
807
 
807
 
808
/*>
808
/*>
809
 
809
 
810
/*>
810
/*>
811
 
811
 
812
/*>
812
/*>
813
#define>
813
#define>
814
#define>
814
#define>
815
 
815
 
816
/*>
816
/*>
817
 
817
 
818
/*>
818
/*>
819
#define>
819
#define>
820
#define>
820
#define>
821
#define>
821
#define>
822
#define>
822
#define>