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