linux/include/acpi/actbl3.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */
   2/******************************************************************************
   3 *
   4 * Name: actbl3.h - ACPI Table Definitions
   5 *
   6 * Copyright (C) 2000 - 2021, 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"  /* Software Licensing Description Table */
  28#define ACPI_SIG_SLIT           "SLIT"  /* System Locality Distance Information Table */
  29#define ACPI_SIG_SPCR           "SPCR"  /* Serial Port Console Redirection table */
  30#define ACPI_SIG_SPMI           "SPMI"  /* Server Platform Management Interface table */
  31#define ACPI_SIG_SRAT           "SRAT"  /* System Resource Affinity Table */
  32#define ACPI_SIG_STAO           "STAO"  /* Status Override table */
  33#define ACPI_SIG_TCPA           "TCPA"  /* Trusted Computing Platform Alliance table */
  34#define ACPI_SIG_TPM2           "TPM2"  /* Trusted Platform Module 2.0 H/W interface table */
  35#define ACPI_SIG_UEFI           "UEFI"  /* Uefi Boot Optimization Table */
  36#define ACPI_SIG_VIOT           "VIOT"  /* Virtual I/O Translation Table */
  37#define ACPI_SIG_WAET           "WAET"  /* Windows ACPI Emulated devices Table */
  38#define ACPI_SIG_WDAT           "WDAT"  /* Watchdog Action Table */
  39#define ACPI_SIG_WDDT           "WDDT"  /* Watchdog Timer Description Table */
  40#define ACPI_SIG_WDRT           "WDRT"  /* Watchdog Resource Table */
  41#define ACPI_SIG_WPBT           "WPBT"  /* Windows Platform Binary Table */
  42#define ACPI_SIG_WSMT           "WSMT"  /* Windows SMM Security Mitigations Table */
  43#define ACPI_SIG_XENV           "XENV"  /* Xen Environment table */
  44#define ACPI_SIG_XXXX           "XXXX"  /* Intermediate AML header for ASL/ASL+ converter */
  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/* Basic SLIC table is only the common ACPI header */
  74
  75struct acpi_table_slic {
  76        struct acpi_table_header header;        /* Common ACPI table header */
  77};
  78
  79/*******************************************************************************
  80 *
  81 * SLIT - System Locality Distance Information Table
  82 *        Version 1
  83 *
  84 ******************************************************************************/
  85
  86struct acpi_table_slit {
  87        struct acpi_table_header header;        /* Common ACPI table header */
  88        u64 locality_count;
  89        u8 entry[1];            /* Real size = localities^2 */
  90};
  91
  92/*******************************************************************************
  93 *
  94 * SPCR - Serial Port Console Redirection table
  95 *        Version 2
  96 *
  97 * Conforms to "Serial Port Console Redirection Table",
  98 * Version 1.03, August 10, 2015
  99 *
 100 ******************************************************************************/
 101
 102struct acpi_table_spcr {
 103        struct acpi_table_header header;        /* Common ACPI table header */
 104        u8 interface_type;      /* 0=full 16550, 1=subset of 16550 */
 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 reserved1;
 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 reserved2;
 124};
 125
 126/* Masks for pci_flags field above */
 127
 128#define ACPI_SPCR_DO_NOT_DISABLE    (1)
 129
 130/* Values for Interface Type: See the definition of the DBG2 table */
 131
 132/*******************************************************************************
 133 *
 134 * SPMI - Server Platform Management Interface table
 135 *        Version 5
 136 *
 137 * Conforms to "Intelligent Platform Management Interface Specification
 138 * Second Generation v2.0", Document Revision 1.0, February 12, 2004 with
 139 * June 12, 2009 markup.
 140 *
 141 ******************************************************************************/
 142
 143struct acpi_table_spmi {
 144        struct acpi_table_header header;        /* Common ACPI table header */
 145        u8 interface_type;
 146        u8 reserved;            /* Must be 1 */
 147        u16 spec_revision;      /* Version of IPMI */
 148        u8 interrupt_type;
 149        u8 gpe_number;          /* GPE assigned */
 150        u8 reserved1;
 151        u8 pci_device_flag;
 152        u32 interrupt;
 153        struct acpi_generic_address ipmi_register;
 154        u8 pci_segment;
 155        u8 pci_bus;
 156        u8 pci_device;
 157        u8 pci_function;
 158        u8 reserved2;
 159};
 160
 161/* Values for interface_type above */
 162
 163enum acpi_spmi_interface_types {
 164        ACPI_SPMI_NOT_USED = 0,
 165        ACPI_SPMI_KEYBOARD = 1,
 166        ACPI_SPMI_SMI = 2,
 167        ACPI_SPMI_BLOCK_TRANSFER = 3,
 168        ACPI_SPMI_SMBUS = 4,
 169        ACPI_SPMI_RESERVED = 5  /* 5 and above are reserved */
 170};
 171
 172/*******************************************************************************
 173 *
 174 * SRAT - System Resource Affinity Table
 175 *        Version 3
 176 *
 177 ******************************************************************************/
 178
 179struct acpi_table_srat {
 180        struct acpi_table_header header;        /* Common ACPI table header */
 181        u32 table_revision;     /* Must be value '1' */
 182        u64 reserved;           /* Reserved, must be zero */
 183};
 184
 185/* Values for subtable type in struct acpi_subtable_header */
 186
 187enum acpi_srat_type {
 188        ACPI_SRAT_TYPE_CPU_AFFINITY = 0,
 189        ACPI_SRAT_TYPE_MEMORY_AFFINITY = 1,
 190        ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY = 2,
 191        ACPI_SRAT_TYPE_GICC_AFFINITY = 3,
 192        ACPI_SRAT_TYPE_GIC_ITS_AFFINITY = 4,    /* ACPI 6.2 */
 193        ACPI_SRAT_TYPE_GENERIC_AFFINITY = 5,    /* ACPI 6.3 */
 194        ACPI_SRAT_TYPE_RESERVED = 6     /* 5 and greater are reserved */
 195};
 196
 197/*
 198 * SRAT Subtables, correspond to Type in struct acpi_subtable_header
 199 */
 200
 201/* 0: Processor Local APIC/SAPIC Affinity */
 202
 203struct acpi_srat_cpu_affinity {
 204        struct acpi_subtable_header header;
 205        u8 proximity_domain_lo;
 206        u8 apic_id;
 207        u32 flags;
 208        u8 local_sapic_eid;
 209        u8 proximity_domain_hi[3];
 210        u32 clock_domain;
 211};
 212
 213/* Flags */
 214
 215#define ACPI_SRAT_CPU_USE_AFFINITY  (1) /* 00: Use affinity structure */
 216
 217/* 1: Memory Affinity */
 218
 219struct acpi_srat_mem_affinity {
 220        struct acpi_subtable_header header;
 221        u32 proximity_domain;
 222        u16 reserved;           /* Reserved, must be zero */
 223        u64 base_address;
 224        u64 length;
 225        u32 reserved1;
 226        u32 flags;
 227        u64 reserved2;          /* Reserved, must be zero */
 228};
 229
 230/* Flags */
 231
 232#define ACPI_SRAT_MEM_ENABLED       (1) /* 00: Use affinity structure */
 233#define ACPI_SRAT_MEM_HOT_PLUGGABLE (1<<1)      /* 01: Memory region is hot pluggable */
 234#define ACPI_SRAT_MEM_NON_VOLATILE  (1<<2)      /* 02: Memory region is non-volatile */
 235
 236/* 2: Processor Local X2_APIC Affinity (ACPI 4.0) */
 237
 238struct acpi_srat_x2apic_cpu_affinity {
 239        struct acpi_subtable_header header;
 240        u16 reserved;           /* Reserved, must be zero */
 241        u32 proximity_domain;
 242        u32 apic_id;
 243        u32 flags;
 244        u32 clock_domain;
 245        u32 reserved2;
 246};
 247
 248/* Flags for struct acpi_srat_cpu_affinity and struct acpi_srat_x2apic_cpu_affinity */
 249
 250#define ACPI_SRAT_CPU_ENABLED       (1) /* 00: Use affinity structure */
 251
 252/* 3: GICC Affinity (ACPI 5.1) */
 253
 254struct acpi_srat_gicc_affinity {
 255        struct acpi_subtable_header header;
 256        u32 proximity_domain;
 257        u32 acpi_processor_uid;
 258        u32 flags;
 259        u32 clock_domain;
 260};
 261
 262/* Flags for struct acpi_srat_gicc_affinity */
 263
 264#define ACPI_SRAT_GICC_ENABLED     (1)  /* 00: Use affinity structure */
 265
 266/* 4: GCC ITS Affinity (ACPI 6.2) */
 267
 268struct acpi_srat_gic_its_affinity {
 269        struct acpi_subtable_header header;
 270        u32 proximity_domain;
 271        u16 reserved;
 272        u32 its_id;
 273};
 274
 275/* 5: Generic Initiator Affinity Structure (ACPI 6.3) */
 276
 277struct acpi_srat_generic_affinity {
 278        struct acpi_subtable_header header;
 279        u8 reserved;
 280        u8 device_handle_type;
 281        u32 proximity_domain;
 282        u8 device_handle[16];
 283        u32 flags;
 284        u32 reserved1;
 285};
 286
 287/* Flags for struct acpi_srat_generic_affinity */
 288
 289#define ACPI_SRAT_GENERIC_AFFINITY_ENABLED     (1)      /* 00: Use affinity structure */
 290#define ACPI_SRAT_ARCHITECTURAL_TRANSACTIONS   (1<<1)   /* ACPI 6.4 */
 291
 292/*******************************************************************************
 293 *
 294 * STAO - Status Override Table (_STA override) - ACPI 6.0
 295 *        Version 1
 296 *
 297 * Conforms to "ACPI Specification for Status Override Table"
 298 * 6 January 2015
 299 *
 300 ******************************************************************************/
 301
 302struct acpi_table_stao {
 303        struct acpi_table_header header;        /* Common ACPI table header */
 304        u8 ignore_uart;
 305};
 306
 307/*******************************************************************************
 308 *
 309 * TCPA - Trusted Computing Platform Alliance table
 310 *        Version 2
 311 *
 312 * TCG Hardware Interface Table for TPM 1.2 Clients and Servers
 313 *
 314 * Conforms to "TCG ACPI Specification, Family 1.2 and 2.0",
 315 * Version 1.2, Revision 8
 316 * February 27, 2017
 317 *
 318 * NOTE: There are two versions of the table with the same signature --
 319 * the client version and the server version. The common platform_class
 320 * field is used to differentiate the two types of tables.
 321 *
 322 ******************************************************************************/
 323
 324struct acpi_table_tcpa_hdr {
 325        struct acpi_table_header header;        /* Common ACPI table header */
 326        u16 platform_class;
 327};
 328
 329/*
 330 * Values for platform_class above.
 331 * This is how the client and server subtables are differentiated
 332 */
 333#define ACPI_TCPA_CLIENT_TABLE          0
 334#define ACPI_TCPA_SERVER_TABLE          1
 335
 336struct acpi_table_tcpa_client {
 337        u32 minimum_log_length; /* Minimum length for the event log area */
 338        u64 log_address;        /* Address of the event log area */
 339};
 340
 341struct acpi_table_tcpa_server {
 342        u16 reserved;
 343        u64 minimum_log_length; /* Minimum length for the event log area */
 344        u64 log_address;        /* Address of the event log area */
 345        u16 spec_revision;
 346        u8 device_flags;
 347        u8 interrupt_flags;
 348        u8 gpe_number;
 349        u8 reserved2[3];
 350        u32 global_interrupt;
 351        struct acpi_generic_address address;
 352        u32 reserved3;
 353        struct acpi_generic_address config_address;
 354        u8 group;
 355        u8 bus;                 /* PCI Bus/Segment/Function numbers */
 356        u8 device;
 357        u8 function;
 358};
 359
 360/* Values for device_flags above */
 361
 362#define ACPI_TCPA_PCI_DEVICE            (1)
 363#define ACPI_TCPA_BUS_PNP               (1<<1)
 364#define ACPI_TCPA_ADDRESS_VALID         (1<<2)
 365
 366/* Values for interrupt_flags above */
 367
 368#define ACPI_TCPA_INTERRUPT_MODE        (1)
 369#define ACPI_TCPA_INTERRUPT_POLARITY    (1<<1)
 370#define ACPI_TCPA_SCI_VIA_GPE           (1<<2)
 371#define ACPI_TCPA_GLOBAL_INTERRUPT      (1<<3)
 372
 373/*******************************************************************************
 374 *
 375 * TPM2 - Trusted Platform Module (TPM) 2.0 Hardware Interface Table
 376 *        Version 4
 377 *
 378 * TCG Hardware Interface Table for TPM 2.0 Clients and Servers
 379 *
 380 * Conforms to "TCG ACPI Specification, Family 1.2 and 2.0",
 381 * Version 1.2, Revision 8
 382 * February 27, 2017
 383 *
 384 ******************************************************************************/
 385
 386/* Revision 3 */
 387
 388struct acpi_table_tpm23 {
 389        struct acpi_table_header header;        /* Common ACPI table header */
 390        u32 reserved;
 391        u64 control_address;
 392        u32 start_method;
 393};
 394
 395/* Value for start_method above */
 396
 397#define ACPI_TPM23_ACPI_START_METHOD                 2
 398
 399/*
 400 * Optional trailer for revision 3. If start method is 2, there is a 4 byte
 401 * reserved area of all zeros.
 402 */
 403struct acpi_tmp23_trailer {
 404        u32 reserved;
 405};
 406
 407/* Revision 4 */
 408
 409struct acpi_table_tpm2 {
 410        struct acpi_table_header header;        /* Common ACPI table header */
 411        u16 platform_class;
 412        u16 reserved;
 413        u64 control_address;
 414        u32 start_method;
 415
 416        /* Platform-specific data follows */
 417};
 418
 419/* Optional trailer for revision 4 holding platform-specific data */
 420struct acpi_tpm2_phy {
 421        u8  start_method_specific[12];
 422        u32 log_area_minimum_length;
 423        u64 log_area_start_address;
 424};
 425
 426/* Values for start_method above */
 427
 428#define ACPI_TPM2_NOT_ALLOWED                       0
 429#define ACPI_TPM2_RESERVED1                         1
 430#define ACPI_TPM2_START_METHOD                      2
 431#define ACPI_TPM2_RESERVED3                         3
 432#define ACPI_TPM2_RESERVED4                         4
 433#define ACPI_TPM2_RESERVED5                         5
 434#define ACPI_TPM2_MEMORY_MAPPED                     6
 435#define ACPI_TPM2_COMMAND_BUFFER                    7
 436#define ACPI_TPM2_COMMAND_BUFFER_WITH_START_METHOD  8
 437#define ACPI_TPM2_RESERVED9                         9
 438#define ACPI_TPM2_RESERVED10                        10
 439#define ACPI_TPM2_COMMAND_BUFFER_WITH_ARM_SMC       11  /* V1.2 Rev 8 */
 440#define ACPI_TPM2_RESERVED                          12
 441
 442/* Optional trailer appears after any start_method subtables */
 443
 444struct acpi_tpm2_trailer {
 445        u8 method_parameters[12];
 446        u32 minimum_log_length; /* Minimum length for the event log area */
 447        u64 log_address;        /* Address of the event log area */
 448};
 449
 450/*
 451 * Subtables (start_method-specific)
 452 */
 453
 454/* 11: Start Method for ARM SMC (V1.2 Rev 8) */
 455
 456struct acpi_tpm2_arm_smc {
 457        u32 global_interrupt;
 458        u8 interrupt_flags;
 459        u8 operation_flags;
 460        u16 reserved;
 461        u32 function_id;
 462};
 463
 464/* Values for interrupt_flags above */
 465
 466#define ACPI_TPM2_INTERRUPT_SUPPORT     (1)
 467
 468/* Values for operation_flags above */
 469
 470#define ACPI_TPM2_IDLE_SUPPORT          (1)
 471
 472/*******************************************************************************
 473 *
 474 * UEFI - UEFI Boot optimization Table
 475 *        Version 1
 476 *
 477 * Conforms to "Unified Extensible Firmware Interface Specification",
 478 * Version 2.3, May 8, 2009
 479 *
 480 ******************************************************************************/
 481
 482struct acpi_table_uefi {
 483        struct acpi_table_header header;        /* Common ACPI table header */
 484        u8 identifier[16];      /* UUID identifier */
 485        u16 data_offset;        /* Offset of remaining data in table */
 486};
 487
 488/*******************************************************************************
 489 *
 490 * VIOT - Virtual I/O Translation Table
 491 *        Version 1
 492 *
 493 ******************************************************************************/
 494
 495struct acpi_table_viot {
 496        struct acpi_table_header header;        /* Common ACPI table header */
 497        u16 node_count;
 498        u16 node_offset;
 499        u8 reserved[8];
 500};
 501
 502/* VIOT subtable header */
 503
 504struct acpi_viot_header {
 505        u8 type;
 506        u8 reserved;
 507        u16 length;
 508};
 509
 510/* Values for Type field above */
 511
 512enum acpi_viot_node_type {
 513        ACPI_VIOT_NODE_PCI_RANGE = 0x01,
 514        ACPI_VIOT_NODE_MMIO = 0x02,
 515        ACPI_VIOT_NODE_VIRTIO_IOMMU_PCI = 0x03,
 516        ACPI_VIOT_NODE_VIRTIO_IOMMU_MMIO = 0x04,
 517        ACPI_VIOT_RESERVED = 0x05
 518};
 519
 520/* VIOT subtables */
 521
 522struct acpi_viot_pci_range {
 523        struct acpi_viot_header header;
 524        u32 endpoint_start;
 525        u16 segment_start;
 526        u16 segment_end;
 527        u16 bdf_start;
 528        u16 bdf_end;
 529        u16 output_node;
 530        u8 reserved[6];
 531};
 532
 533struct acpi_viot_mmio {
 534        struct acpi_viot_header header;
 535        u32 endpoint;
 536        u64 base_address;
 537        u16 output_node;
 538        u8 reserved[6];
 539};
 540
 541struct acpi_viot_virtio_iommu_pci {
 542        struct acpi_viot_header header;
 543        u16 segment;
 544        u16 bdf;
 545        u8 reserved[8];
 546};
 547
 548struct acpi_viot_virtio_iommu_mmio {
 549        struct acpi_viot_header header;
 550        u8 reserved[4];
 551        u64 base_address;
 552};
 553
 554/*******************************************************************************
 555 *
 556 * WAET - Windows ACPI Emulated devices Table
 557 *        Version 1
 558 *
 559 * Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009
 560 *
 561 ******************************************************************************/
 562
 563struct acpi_table_waet {
 564        struct acpi_table_header header;        /* Common ACPI table header */
 565        u32 flags;
 566};
 567
 568/* Masks for Flags field above */
 569
 570#define ACPI_WAET_RTC_NO_ACK        (1) /* RTC requires no int acknowledge */
 571#define ACPI_WAET_TIMER_ONE_READ    (1<<1)      /* PM timer requires only one read */
 572
 573/*******************************************************************************
 574 *
 575 * WDAT - Watchdog Action Table
 576 *        Version 1
 577 *
 578 * Conforms to "Hardware Watchdog Timers Design Specification",
 579 * Copyright 2006 Microsoft Corporation.
 580 *
 581 ******************************************************************************/
 582
 583struct acpi_table_wdat {
 584        struct acpi_table_header header;        /* Common ACPI table header */
 585        u32 header_length;      /* Watchdog Header Length */
 586        u16 pci_segment;        /* PCI Segment number */
 587        u8 pci_bus;             /* PCI Bus number */
 588        u8 pci_device;          /* PCI Device number */
 589        u8 pci_function;        /* PCI Function number */
 590        u8 reserved[3];
 591        u32 timer_period;       /* Period of one timer count (msec) */
 592        u32 max_count;          /* Maximum counter value supported */
 593        u32 min_count;          /* Minimum counter value */
 594        u8 flags;
 595        u8 reserved2[3];
 596        u32 entries;            /* Number of watchdog entries that follow */
 597};
 598
 599/* Masks for Flags field above */
 600
 601#define ACPI_WDAT_ENABLED           (1)
 602#define ACPI_WDAT_STOPPED           0x80
 603
 604/* WDAT Instruction Entries (actions) */
 605
 606struct acpi_wdat_entry {
 607        u8 action;
 608        u8 instruction;
 609        u16 reserved;
 610        struct acpi_generic_address register_region;
 611        u32 value;              /* Value used with Read/Write register */
 612        u32 mask;               /* Bitmask required for this register instruction */
 613};
 614
 615/* Values for Action field above */
 616
 617enum acpi_wdat_actions {
 618        ACPI_WDAT_RESET = 1,
 619        ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4,
 620        ACPI_WDAT_GET_COUNTDOWN = 5,
 621        ACPI_WDAT_SET_COUNTDOWN = 6,
 622        ACPI_WDAT_GET_RUNNING_STATE = 8,
 623        ACPI_WDAT_SET_RUNNING_STATE = 9,
 624        ACPI_WDAT_GET_STOPPED_STATE = 10,
 625        ACPI_WDAT_SET_STOPPED_STATE = 11,
 626        ACPI_WDAT_GET_REBOOT = 16,
 627        ACPI_WDAT_SET_REBOOT = 17,
 628        ACPI_WDAT_GET_SHUTDOWN = 18,
 629        ACPI_WDAT_SET_SHUTDOWN = 19,
 630        ACPI_WDAT_GET_STATUS = 32,
 631        ACPI_WDAT_SET_STATUS = 33,
 632        ACPI_WDAT_ACTION_RESERVED = 34  /* 34 and greater are reserved */
 633};
 634
 635/* Values for Instruction field above */
 636
 637enum acpi_wdat_instructions {
 638        ACPI_WDAT_READ_VALUE = 0,
 639        ACPI_WDAT_READ_COUNTDOWN = 1,
 640        ACPI_WDAT_WRITE_VALUE = 2,
 641        ACPI_WDAT_WRITE_COUNTDOWN = 3,
 642        ACPI_WDAT_INSTRUCTION_RESERVED = 4,     /* 4 and greater are reserved */
 643        ACPI_WDAT_PRESERVE_REGISTER = 0x80      /* Except for this value */
 644};
 645
 646/*******************************************************************************
 647 *
 648 * WDDT - Watchdog Descriptor Table
 649 *        Version 1
 650 *
 651 * Conforms to "Using the Intel ICH Family Watchdog Timer (WDT)",
 652 * Version 001, September 2002
 653 *
 654 ******************************************************************************/
 655
 656struct acpi_table_wddt {
 657        struct acpi_table_header header;        /* Common ACPI table header */
 658        u16 spec_version;
 659        u16 table_version;
 660        u16 pci_vendor_id;
 661        struct acpi_generic_address address;
 662        u16 max_count;          /* Maximum counter value supported */
 663        u16 min_count;          /* Minimum counter value supported */
 664        u16 period;
 665        u16 status;
 666        u16 capability;
 667};
 668
 669/* Flags for Status field above */
 670
 671#define ACPI_WDDT_AVAILABLE     (1)
 672#define ACPI_WDDT_ACTIVE        (1<<1)
 673#define ACPI_WDDT_TCO_OS_OWNED  (1<<2)
 674#define ACPI_WDDT_USER_RESET    (1<<11)
 675#define ACPI_WDDT_WDT_RESET     (1<<12)
 676#define ACPI_WDDT_POWER_FAIL    (1<<13)
 677#define ACPI_WDDT_UNKNOWN_RESET (1<<14)
 678
 679/* Flags for Capability field above */
 680
 681#define ACPI_WDDT_AUTO_RESET    (1)
 682#define ACPI_WDDT_ALERT_SUPPORT (1<<1)
 683
 684/*******************************************************************************
 685 *
 686 * WDRT - Watchdog Resource Table
 687 *        Version 1
 688 *
 689 * Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003",
 690 * Version 1.01, August 28, 2006
 691 *
 692 ******************************************************************************/
 693
 694struct acpi_table_wdrt {
 695        struct acpi_table_header header;        /* Common ACPI table header */
 696        struct acpi_generic_address control_register;
 697        struct acpi_generic_address count_register;
 698        u16 pci_device_id;
 699        u16 pci_vendor_id;
 700        u8 pci_bus;             /* PCI Bus number */
 701        u8 pci_device;          /* PCI Device number */
 702        u8 pci_function;        /* PCI Function number */
 703        u8 pci_segment;         /* PCI Segment number */
 704        u16 max_count;          /* Maximum counter value supported */
 705        u8 units;
 706};
 707
 708/*******************************************************************************
 709 *
 710 * WPBT - Windows Platform Environment Table (ACPI 6.0)
 711 *        Version 1
 712 *
 713 * Conforms to "Windows Platform Binary Table (WPBT)" 29 November 2011
 714 *
 715 ******************************************************************************/
 716
 717struct acpi_table_wpbt {
 718        struct acpi_table_header header;        /* Common ACPI table header */
 719        u32 handoff_size;
 720        u64 handoff_address;
 721        u8 layout;
 722        u8 type;
 723        u16 arguments_length;
 724};
 725
 726struct acpi_wpbt_unicode {
 727        u16 *unicode_string;
 728};
 729
 730/*******************************************************************************
 731 *
 732 * WSMT - Windows SMM Security Mitigations Table
 733 *        Version 1
 734 *
 735 * Conforms to "Windows SMM Security Mitigations Table",
 736 * Version 1.0, April 18, 2016
 737 *
 738 ******************************************************************************/
 739
 740struct acpi_table_wsmt {
 741        struct acpi_table_header header;        /* Common ACPI table header */
 742        u32 protection_flags;
 743};
 744
 745/* Flags for protection_flags field above */
 746
 747#define ACPI_WSMT_FIXED_COMM_BUFFERS                (1)
 748#define ACPI_WSMT_COMM_BUFFER_NESTED_PTR_PROTECTION (2)
 749#define ACPI_WSMT_SYSTEM_RESOURCE_PROTECTION        (4)
 750
 751/*******************************************************************************
 752 *
 753 * XENV - Xen Environment Table (ACPI 6.0)
 754 *        Version 1
 755 *
 756 * Conforms to "ACPI Specification for Xen Environment Table" 4 January 2015
 757 *
 758 ******************************************************************************/
 759
 760struct acpi_table_xenv {
 761        struct acpi_table_header header;        /* Common ACPI table header */
 762        u64 grant_table_address;
 763        u64 grant_table_size;
 764        u32 event_interrupt;
 765        u8 event_flags;
 766};
 767
 768/* Reset to default packing */
 769
 770#pragma pack()
 771
 772#endif                          /* __ACTBL3_H__ */
 773