aboutsummaryrefslogtreecommitdiffstats
path: root/include/acpi/actbl2.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/acpi/actbl2.h')
-rw-r--r--include/acpi/actbl2.h245
1 files changed, 109 insertions, 136 deletions
diff --git a/include/acpi/actbl2.h b/include/acpi/actbl2.h
index 84ce5abbd6f6..50305ce2681a 100644
--- a/include/acpi/actbl2.h
+++ b/include/acpi/actbl2.h
@@ -64,65 +64,56 @@
64#define FADT2_REVISION_ID 3 64#define FADT2_REVISION_ID 3
65#define FADT2_MINUS_REVISION_ID 2 65#define FADT2_MINUS_REVISION_ID 2
66 66
67
68#pragma pack(1) 67#pragma pack(1)
69 68
70/* 69/*
71 * ACPI 2.0 Root System Description Table (RSDT) 70 * ACPI 2.0 Root System Description Table (RSDT)
72 */ 71 */
73struct rsdt_descriptor_rev2 72struct rsdt_descriptor_rev2 {
74{ 73 ACPI_TABLE_HEADER_DEF /* ACPI common table header */
75 ACPI_TABLE_HEADER_DEF /* ACPI common table header */ 74 u32 table_offset_entry[1]; /* Array of pointers to ACPI tables */
76 u32 table_offset_entry[1]; /* Array of pointers to ACPI tables */
77}; 75};
78 76
79
80/* 77/*
81 * ACPI 2.0 Extended System Description Table (XSDT) 78 * ACPI 2.0 Extended System Description Table (XSDT)
82 */ 79 */
83struct xsdt_descriptor_rev2 80struct xsdt_descriptor_rev2 {
84{ 81 ACPI_TABLE_HEADER_DEF /* ACPI common table header */
85 ACPI_TABLE_HEADER_DEF /* ACPI common table header */ 82 u64 table_offset_entry[1]; /* Array of pointers to ACPI tables */
86 u64 table_offset_entry[1]; /* Array of pointers to ACPI tables */
87}; 83};
88 84
89
90/* 85/*
91 * ACPI 2.0 Firmware ACPI Control Structure (FACS) 86 * ACPI 2.0 Firmware ACPI Control Structure (FACS)
92 */ 87 */
93struct facs_descriptor_rev2 88struct facs_descriptor_rev2 {
94{ 89 char signature[4]; /* ASCII table signature */
95 char signature[4]; /* ASCII table signature */ 90 u32 length; /* Length of structure, in bytes */
96 u32 length; /* Length of structure, in bytes */ 91 u32 hardware_signature; /* Hardware configuration signature */
97 u32 hardware_signature; /* Hardware configuration signature */ 92 u32 firmware_waking_vector; /* 32-bit physical address of the Firmware Waking Vector. */
98 u32 firmware_waking_vector; /* 32-bit physical address of the Firmware Waking Vector. */ 93 u32 global_lock; /* Global Lock used to synchronize access to shared hardware resources */
99 u32 global_lock; /* Global Lock used to synchronize access to shared hardware resources */
100 94
101 /* Flags (32 bits) */ 95 /* Flags (32 bits) */
102 96
103 u8 S4bios_f : 1; /* 00: S4BIOS support is present */ 97 u8 S4bios_f:1; /* 00: S4BIOS support is present */
104 u8 : 7; /* 01-07: Reserved, must be zero */ 98 u8:7; /* 01-07: Reserved, must be zero */
105 u8 reserved1[3]; /* 08-31: Reserved, must be zero */ 99 u8 reserved1[3]; /* 08-31: Reserved, must be zero */
106 100
107 u64 xfirmware_waking_vector; /* 64-bit physical address of the Firmware Waking Vector. */ 101 u64 xfirmware_waking_vector; /* 64-bit physical address of the Firmware Waking Vector. */
108 u8 version; /* Version of this table */ 102 u8 version; /* Version of this table */
109 u8 reserved3[31]; /* Reserved, must be zero */ 103 u8 reserved3[31]; /* Reserved, must be zero */
110}; 104};
111 105
112
113/* 106/*
114 * ACPI 2.0+ Generic Address Structure (GAS) 107 * ACPI 2.0+ Generic Address Structure (GAS)
115 */ 108 */
116struct acpi_generic_address 109struct acpi_generic_address {
117{ 110 u8 address_space_id; /* Address space where struct or register exists. */
118 u8 address_space_id; /* Address space where struct or register exists. */ 111 u8 register_bit_width; /* Size in bits of given register */
119 u8 register_bit_width; /* Size in bits of given register */ 112 u8 register_bit_offset; /* Bit offset within the register */
120 u8 register_bit_offset; /* Bit offset within the register */ 113 u8 access_width; /* Minimum Access size (ACPI 3.0) */
121 u8 access_width; /* Minimum Access size (ACPI 3.0) */ 114 u64 address; /* 64-bit address of struct or register */
122 u64 address; /* 64-bit address of struct or register */
123}; 115};
124 116
125
126#define FADT_REV2_COMMON \ 117#define FADT_REV2_COMMON \
127 u32 V1_firmware_ctrl; /* 32-bit physical address of FACS */ \ 118 u32 V1_firmware_ctrl; /* 32-bit physical address of FACS */ \
128 u32 V1_dsdt; /* 32-bit physical address of DSDT */ \ 119 u32 V1_dsdt; /* 32-bit physical address of DSDT */ \
@@ -164,141 +155,123 @@ struct acpi_generic_address
164/* 155/*
165 * ACPI 2.0+ Fixed ACPI Description Table (FADT) 156 * ACPI 2.0+ Fixed ACPI Description Table (FADT)
166 */ 157 */
167struct fadt_descriptor_rev2 158struct fadt_descriptor_rev2 {
168{ 159 ACPI_TABLE_HEADER_DEF /* ACPI common table header */
169 ACPI_TABLE_HEADER_DEF /* ACPI common table header */ 160 FADT_REV2_COMMON u8 reserved2; /* Reserved, must be zero */
170 FADT_REV2_COMMON
171 u8 reserved2; /* Reserved, must be zero */
172 161
173 /* Flags (32 bits) */ 162 /* Flags (32 bits) */
174 163
175 u8 wb_invd : 1; /* 00: The wbinvd instruction works properly */ 164 u8 wb_invd:1; /* 00: The wbinvd instruction works properly */
176 u8 wb_invd_flush : 1; /* 01: The wbinvd flushes but does not invalidate */ 165 u8 wb_invd_flush:1; /* 01: The wbinvd flushes but does not invalidate */
177 u8 proc_c1 : 1; /* 02: All processors support C1 state */ 166 u8 proc_c1:1; /* 02: All processors support C1 state */
178 u8 plvl2_up : 1; /* 03: C2 state works on MP system */ 167 u8 plvl2_up:1; /* 03: C2 state works on MP system */
179 u8 pwr_button : 1; /* 04: Power button is handled as a generic feature */ 168 u8 pwr_button:1; /* 04: Power button is handled as a generic feature */
180 u8 sleep_button : 1; /* 05: Sleep button is handled as a generic feature, or not present */ 169 u8 sleep_button:1; /* 05: Sleep button is handled as a generic feature, or not present */
181 u8 fixed_rTC : 1; /* 06: RTC wakeup stat not in fixed register space */ 170 u8 fixed_rTC:1; /* 06: RTC wakeup stat not in fixed register space */
182 u8 rtcs4 : 1; /* 07: RTC wakeup stat not possible from S4 */ 171 u8 rtcs4:1; /* 07: RTC wakeup stat not possible from S4 */
183 u8 tmr_val_ext : 1; /* 08: tmr_val is 32 bits 0=24-bits */ 172 u8 tmr_val_ext:1; /* 08: tmr_val is 32 bits 0=24-bits */
184 u8 dock_cap : 1; /* 09: Docking supported */ 173 u8 dock_cap:1; /* 09: Docking supported */
185 u8 reset_reg_sup : 1; /* 10: System reset via the FADT RESET_REG supported */ 174 u8 reset_reg_sup:1; /* 10: System reset via the FADT RESET_REG supported */
186 u8 sealed_case : 1; /* 11: No internal expansion capabilities and case is sealed */ 175 u8 sealed_case:1; /* 11: No internal expansion capabilities and case is sealed */
187 u8 headless : 1; /* 12: No local video capabilities or local input devices */ 176 u8 headless:1; /* 12: No local video capabilities or local input devices */
188 u8 cpu_sw_sleep : 1; /* 13: Must execute native instruction after writing SLP_TYPx register */ 177 u8 cpu_sw_sleep:1; /* 13: Must execute native instruction after writing SLP_TYPx register */
189 178
190 u8 pci_exp_wak : 1; /* 14: System supports PCIEXP_WAKE (STS/EN) bits (ACPI 3.0) */ 179 u8 pci_exp_wak:1; /* 14: System supports PCIEXP_WAKE (STS/EN) bits (ACPI 3.0) */
191 u8 use_platform_clock : 1; /* 15: OSPM should use platform-provided timer (ACPI 3.0) */ 180 u8 use_platform_clock:1; /* 15: OSPM should use platform-provided timer (ACPI 3.0) */
192 u8 S4rtc_sts_valid : 1; /* 16: Contents of RTC_STS valid after S4 wake (ACPI 3.0) */ 181 u8 S4rtc_sts_valid:1; /* 16: Contents of RTC_STS valid after S4 wake (ACPI 3.0) */
193 u8 remote_power_on_capable : 1; /* 17: System is compatible with remote power on (ACPI 3.0) */ 182 u8 remote_power_on_capable:1; /* 17: System is compatible with remote power on (ACPI 3.0) */
194 u8 force_apic_cluster_model : 1; /* 18: All local APICs must use cluster model (ACPI 3.0) */ 183 u8 force_apic_cluster_model:1; /* 18: All local APICs must use cluster model (ACPI 3.0) */
195 u8 force_apic_physical_destination_mode : 1; /* 19: all local x_aPICs must use physical dest mode (ACPI 3.0) */ 184 u8 force_apic_physical_destination_mode:1; /* 19: all local x_aPICs must use physical dest mode (ACPI 3.0) */
196 u8 : 4; /* 20-23: Reserved, must be zero */ 185 u8:4; /* 20-23: Reserved, must be zero */
197 u8 reserved3; /* 24-31: Reserved, must be zero */ 186 u8 reserved3; /* 24-31: Reserved, must be zero */
198 187
199 struct acpi_generic_address reset_register; /* Reset register address in GAS format */ 188 struct acpi_generic_address reset_register; /* Reset register address in GAS format */
200 u8 reset_value; /* Value to write to the reset_register port to reset the system */ 189 u8 reset_value; /* Value to write to the reset_register port to reset the system */
201 u8 reserved4[3]; /* These three bytes must be zero */ 190 u8 reserved4[3]; /* These three bytes must be zero */
202 u64 xfirmware_ctrl; /* 64-bit physical address of FACS */ 191 u64 xfirmware_ctrl; /* 64-bit physical address of FACS */
203 u64 Xdsdt; /* 64-bit physical address of DSDT */ 192 u64 Xdsdt; /* 64-bit physical address of DSDT */
204 struct acpi_generic_address xpm1a_evt_blk; /* Extended Power Mgt 1a acpi_event Reg Blk address */ 193 struct acpi_generic_address xpm1a_evt_blk; /* Extended Power Mgt 1a acpi_event Reg Blk address */
205 struct acpi_generic_address xpm1b_evt_blk; /* Extended Power Mgt 1b acpi_event Reg Blk address */ 194 struct acpi_generic_address xpm1b_evt_blk; /* Extended Power Mgt 1b acpi_event Reg Blk address */
206 struct acpi_generic_address xpm1a_cnt_blk; /* Extended Power Mgt 1a Control Reg Blk address */ 195 struct acpi_generic_address xpm1a_cnt_blk; /* Extended Power Mgt 1a Control Reg Blk address */
207 struct acpi_generic_address xpm1b_cnt_blk; /* Extended Power Mgt 1b Control Reg Blk address */ 196 struct acpi_generic_address xpm1b_cnt_blk; /* Extended Power Mgt 1b Control Reg Blk address */
208 struct acpi_generic_address xpm2_cnt_blk; /* Extended Power Mgt 2 Control Reg Blk address */ 197 struct acpi_generic_address xpm2_cnt_blk; /* Extended Power Mgt 2 Control Reg Blk address */
209 struct acpi_generic_address xpm_tmr_blk; /* Extended Power Mgt Timer Ctrl Reg Blk address */ 198 struct acpi_generic_address xpm_tmr_blk; /* Extended Power Mgt Timer Ctrl Reg Blk address */
210 struct acpi_generic_address xgpe0_blk; /* Extended General Purpose acpi_event 0 Reg Blk address */ 199 struct acpi_generic_address xgpe0_blk; /* Extended General Purpose acpi_event 0 Reg Blk address */
211 struct acpi_generic_address xgpe1_blk; /* Extended General Purpose acpi_event 1 Reg Blk address */ 200 struct acpi_generic_address xgpe1_blk; /* Extended General Purpose acpi_event 1 Reg Blk address */
212}; 201};
213 202
214
215/* "Down-revved" ACPI 2.0 FADT descriptor */ 203/* "Down-revved" ACPI 2.0 FADT descriptor */
216 204
217struct fadt_descriptor_rev2_minus 205struct fadt_descriptor_rev2_minus {
218{ 206 ACPI_TABLE_HEADER_DEF /* ACPI common table header */
219 ACPI_TABLE_HEADER_DEF /* ACPI common table header */ 207 FADT_REV2_COMMON u8 reserved2; /* Reserved, must be zero */
220 FADT_REV2_COMMON 208 u32 flags;
221 u8 reserved2; /* Reserved, must be zero */ 209 struct acpi_generic_address reset_register; /* Reset register address in GAS format */
222 u32 flags; 210 u8 reset_value; /* Value to write to the reset_register port to reset the system. */
223 struct acpi_generic_address reset_register; /* Reset register address in GAS format */ 211 u8 reserved7[3]; /* Reserved, must be zero */
224 u8 reset_value; /* Value to write to the reset_register port to reset the system. */
225 u8 reserved7[3]; /* Reserved, must be zero */
226}; 212};
227 213
228
229/* ECDT - Embedded Controller Boot Resources Table */ 214/* ECDT - Embedded Controller Boot Resources Table */
230 215
231struct ec_boot_resources 216struct ec_boot_resources {
232{ 217 ACPI_TABLE_HEADER_DEF struct acpi_generic_address ec_control; /* Address of EC command/status register */
233 ACPI_TABLE_HEADER_DEF 218 struct acpi_generic_address ec_data; /* Address of EC data register */
234 struct acpi_generic_address ec_control; /* Address of EC command/status register */ 219 u32 uid; /* Unique ID - must be same as the EC _UID method */
235 struct acpi_generic_address ec_data; /* Address of EC data register */ 220 u8 gpe_bit; /* The GPE for the EC */
236 u32 uid; /* Unique ID - must be same as the EC _UID method */ 221 u8 ec_id[1]; /* Full namepath of the EC in the ACPI namespace */
237 u8 gpe_bit; /* The GPE for the EC */
238 u8 ec_id[1]; /* Full namepath of the EC in the ACPI namespace */
239}; 222};
240 223
241
242/* SRAT - System Resource Affinity Table */ 224/* SRAT - System Resource Affinity Table */
243 225
244struct static_resource_alloc 226struct static_resource_alloc {
245{ 227 u8 type;
246 u8 type; 228 u8 length;
247 u8 length; 229 u8 proximity_domain_lo;
248 u8 proximity_domain_lo; 230 u8 apic_id;
249 u8 apic_id;
250 231
251 /* Flags (32 bits) */ 232 /* Flags (32 bits) */
252 233
253 u8 enabled :1; /* 00: Use affinity structure */ 234 u8 enabled:1; /* 00: Use affinity structure */
254 u8 :7; /* 01-07: Reserved, must be zero */ 235 u8:7; /* 01-07: Reserved, must be zero */
255 u8 reserved3[3]; /* 08-31: Reserved, must be zero */ 236 u8 reserved3[3]; /* 08-31: Reserved, must be zero */
256 237
257 u8 local_sapic_eid; 238 u8 local_sapic_eid;
258 u8 proximity_domain_hi[3]; 239 u8 proximity_domain_hi[3];
259 u32 reserved4; /* Reserved, must be zero */ 240 u32 reserved4; /* Reserved, must be zero */
260}; 241};
261 242
262struct memory_affinity 243struct memory_affinity {
263{ 244 u8 type;
264 u8 type; 245 u8 length;
265 u8 length; 246 u32 proximity_domain;
266 u32 proximity_domain; 247 u16 reserved3;
267 u16 reserved3; 248 u64 base_address;
268 u64 base_address; 249 u64 address_length;
269 u64 address_length; 250 u32 reserved4;
270 u32 reserved4;
271 251
272 /* Flags (32 bits) */ 252 /* Flags (32 bits) */
273 253
274 u8 enabled :1; /* 00: Use affinity structure */ 254 u8 enabled:1; /* 00: Use affinity structure */
275 u8 hot_pluggable :1; /* 01: Memory region is hot pluggable */ 255 u8 hot_pluggable:1; /* 01: Memory region is hot pluggable */
276 u8 non_volatile :1; /* 02: Memory is non-volatile */ 256 u8 non_volatile:1; /* 02: Memory is non-volatile */
277 u8 :5; /* 03-07: Reserved, must be zero */ 257 u8:5; /* 03-07: Reserved, must be zero */
278 u8 reserved5[3]; /* 08-31: Reserved, must be zero */ 258 u8 reserved5[3]; /* 08-31: Reserved, must be zero */
279 259
280 u64 reserved6; /* Reserved, must be zero */ 260 u64 reserved6; /* Reserved, must be zero */
281}; 261};
282 262
283struct system_resource_affinity 263struct system_resource_affinity {
284{ 264 ACPI_TABLE_HEADER_DEF u32 reserved1; /* Must be value '1' */
285 ACPI_TABLE_HEADER_DEF 265 u64 reserved2; /* Reserved, must be zero */
286 u32 reserved1; /* Must be value '1' */
287 u64 reserved2; /* Reserved, must be zero */
288}; 266};
289 267
290
291/* SLIT - System Locality Distance Information Table */ 268/* SLIT - System Locality Distance Information Table */
292 269
293struct system_locality_info 270struct system_locality_info {
294{ 271 ACPI_TABLE_HEADER_DEF u64 locality_count;
295 ACPI_TABLE_HEADER_DEF 272 u8 entry[1][1];
296 u64 locality_count;
297 u8 entry[1][1];
298}; 273};
299 274
300
301#pragma pack() 275#pragma pack()
302 276
303#endif /* __ACTBL2_H__ */ 277#endif /* __ACTBL2_H__ */
304