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__ */3) |
762 | #endif /* __ACTBL3_H__ */3) |
763 | 763 | ||
764 | /******************************************************************************* |
764 | /******************************************************************************* |
765 | ><3) |
765 | ><3) |
766 | 766 | ||
767 | /******************************************************************************* |
767 | /******************************************************************************* |
768 | >2) |
768 | >2) |
769 | #define><2) |
769 | #define><2) |
770 | #define>1) |
770 | #define>1) |
771 | #define><1) |
771 | #define><1) |
772 | #define>15) |
772 | #define>15) |
773 | 773 | ||
774 | /*><15) |
774 | /*><15) |
775 | 775 | ||
776 | /*>1) |
776 | /*>1) |
777 | 777 | ||
778 | /*><1) |
778 | /*><1) |
779 | 779 | ||
780 | /*>1) |
780 | /*>1) |
781 | #define><1) |
781 | #define><1) |
782 | #define>1) |
782 | #define>1) |
783 | #define><1) |
783 | #define><1) |
784 | #define>1) |
784 | #define>1) |
785 | #define><1) |
785 | #define><1) |
786 | #define>1) |
786 | #define>1) |
787 | 787 | ||
788 | /* |
788 | /* |
789 | ><1) |
789 | ><1) |
790 | 790 | ||
791 | /* |
791 | /* |
792 | >2) |
792 | >2) |
793 | 793 | ||
794 | /******************************************************************************* |
794 | /******************************************************************************* |
795 | ><2) |
795 | ><2) |
796 | 796 | ||
797 | /******************************************************************************* |
797 | /******************************************************************************* |
798 | >1) |
798 | >1) |
799 | #define><1) |
799 | #define><1) |
800 | #define>1) |
800 | #define>1) |
801 | 801 | ||
802 | /*><1) |
802 | /*><1) |
803 | 803 | ||
804 | /*>1) |
804 | /*>1) |
805 | 805 | ||
806 | /*><1) |
806 | /*><1) |
807 | 807 | ||
808 | /*>2) |
808 | /*>2) |
809 | 809 | ||
810 | /*><2) |
810 | /*><2) |
811 | 811 | ||
812 | /*>1) |
812 | /*>1) |
813 | #define><1) |
813 | #define><1) |
814 | #define>3) |
814 | #define>3) |
815 | 815 | ||
816 | /*><3) |
816 | /*><3) |
817 | 817 | ||
818 | /*>2) |
818 | /*>2) |
819 | #define><2) |
819 | #define><2) |
820 | #define>1) |
820 | #define>1) |
821 | #define><1) |
821 | #define><1) |
822 | #define> |
822 | #define> |