linux/include/acpi/actbl2.h
<<
>>
Prefs
   1#ifndef __ACTBL2_H__
   2#define __ACTBL2_H__
   3
   4/*******************************************************************************
   5 *
   6 * Additional ACPI Tables (2)
   7 *
   8 * These tables are not consumed directly by the ACPICA subsystem, but are
   9 * included here to support device drivers and the AML disassembler.
  10 *
  11 * The tables in this file are defined by third-party specifications, and are
  12 * not defined directly by the ACPI specification itself.
  13 *
  14 ******************************************************************************/
  15
  16/*
  17 * Values for description table header signatures for tables defined in this
  18 * file. Useful because they make it more difficult to inadvertently type in
  19 * the wrong signature.
  20 */
  21#define ACPI_SIG_ASF            "ASF!"  /* Alert Standard Format table */
  22#define ACPI_SIG_BOOT           "BOOT"  /* Simple Boot Flag Table */
  23#define ACPI_SIG_DBGP           "DBGP"  /* Debug Port table */
  24#define ACPI_SIG_DMAR           "DMAR"  /* DMA Remapping table */
  25#define ACPI_SIG_HPET           "HPET"  /* High Precision Event Timer table */
  26#define ACPI_SIG_IBFT           "IBFT"  /* i_sCSI Boot Firmware Table */
  27#define ACPI_SIG_IVRS           "IVRS"  /* I/O Virtualization Reporting Structure */
  28#define ACPI_SIG_MCFG           "MCFG"  /* PCI Memory Mapped Configuration table */
  29#define ACPI_SIG_SLIC           "SLIC"  /* Software Licensing Description Table */
  30#define ACPI_SIG_SPCR           "SPCR"  /* Serial Port Console Redirection table */
  31#define ACPI_SIG_SPMI           "SPMI"  /* Server Platform Management Interface table */
  32#define ACPI_SIG_TCPA           "TCPA"  /* Trusted Computing Platform Alliance table */
  33#define ACPI_SIG_UEFI           "UEFI"  /* Uefi Boot Optimization Table */
  34#define ACPI_SIG_WAET           "WAET"  /* Windows ACPI Emulated devices Table */
  35#define ACPI_SIG_WDAT           "WDAT"  /* Watchdog Action Table */
  36#define ACPI_SIG_WDRT           "WDRT"  /* Watchdog Resource Table */
  37
  38/*
  39 * All tables must be byte-packed to match the ACPI specification, since
  40 * the tables are provided by the system BIOS.
  41 */
  42#pragma pack(1)
  43
  44/*
  45 * Note about bitfields: The u8 type is used for bitfields in ACPI tables.
  46 * This is the only type that is even remotely portable. Anything else is not
  47 * portable, so do not use any other bitfield types.
  48 */
  49
  50/*******************************************************************************
  51 *
  52 * ASF - Alert Standard Format table (Signature "ASF!")
  53 *       Revision 0x10
  54 *
  55 * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003
  56 *
  57 ******************************************************************************/
  58
  59struct acpi_table_asf {
  60        struct acpi_table_header header;        /* Common ACPI table header */
  61};
  62
  63/* ASF subtable header */
  64
  65struct acpi_asf_header {
  66        u8 type;
  67        u8 reserved;
  68        u16 length;
  69};
  70
  71/* Values for Type field above */
  72
  73enum acpi_asf_type {
  74        ACPI_ASF_TYPE_INFO = 0,
  75        ACPI_ASF_TYPE_ALERT = 1,
  76        ACPI_ASF_TYPE_CONTROL = 2,
  77        ACPI_ASF_TYPE_BOOT = 3,
  78        ACPI_ASF_TYPE_ADDRESS = 4,
  79        ACPI_ASF_TYPE_RESERVED = 5
  80};
  81
  82/*
  83 * ASF subtables
  84 */
  85
  86/* 0: ASF Information */
  87
  88struct acpi_asf_info {
  89        struct acpi_asf_header header;
  90        u8 min_reset_value;
  91        u8 min_poll_interval;
  92        u16 system_id;
  93        u32 mfg_id;
  94        u8 flags;
  95        u8 reserved2[3];
  96};
  97
  98/* Masks for Flags field above */
  99
 100#define ACPI_ASF_SMBUS_PROTOCOLS    (1)
 101
 102/* 1: ASF Alerts */
 103
 104struct acpi_asf_alert {
 105        struct acpi_asf_header header;
 106        u8 assert_mask;
 107        u8 deassert_mask;
 108        u8 alerts;
 109        u8 data_length;
 110};
 111
 112struct acpi_asf_alert_data {
 113        u8 address;
 114        u8 command;
 115        u8 mask;
 116        u8 value;
 117        u8 sensor_type;
 118        u8 type;
 119        u8 offset;
 120        u8 source_type;
 121        u8 severity;
 122        u8 sensor_number;
 123        u8 entity;
 124        u8 instance;
 125};
 126
 127/* 2: ASF Remote Control */
 128
 129struct acpi_asf_remote {
 130        struct acpi_asf_header header;
 131        u8 controls;
 132        u8 data_length;
 133        u16 reserved2;
 134};
 135
 136struct acpi_asf_control_data {
 137        u8 function;
 138        u8 address;
 139        u8 command;
 140        u8 value;
 141};
 142
 143/* 3: ASF RMCP Boot Options */
 144
 145struct acpi_asf_rmcp {
 146        struct acpi_asf_header header;
 147        u8 capabilities[7];
 148        u8 completion_code;
 149        u32 enterprise_id;
 150        u8 command;
 151        u16 parameter;
 152        u16 boot_options;
 153        u16 oem_parameters;
 154};
 155
 156/* 4: ASF Address */
 157
 158struct acpi_asf_address {
 159        struct acpi_asf_header header;
 160        u8 eprom_address;
 161        u8 devices;
 162};
 163
 164/*******************************************************************************
 165 *
 166 * BOOT - Simple Boot Flag Table
 167 *        Version 1
 168 *
 169 * Conforms to the "Simple Boot Flag Specification", Version 2.1
 170 *
 171 ******************************************************************************/
 172
 173struct acpi_table_boot {
 174        struct acpi_table_header header;        /* Common ACPI table header */
 175        u8 cmos_index;          /* Index in CMOS RAM for the boot register */
 176        u8 reserved[3];
 177};
 178
 179/*******************************************************************************
 180 *
 181 * DBGP - Debug Port table
 182 *        Version 1
 183 *
 184 * Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000
 185 *
 186 ******************************************************************************/
 187
 188struct acpi_table_dbgp {
 189        struct acpi_table_header header;        /* Common ACPI table header */
 190        u8 type;                /* 0=full 16550, 1=subset of 16550 */
 191        u8 reserved[3];
 192        struct acpi_generic_address debug_port;
 193};
 194
 195/*******************************************************************************
 196 *
 197 * DMAR - DMA Remapping table
 198 *        Version 1
 199 *
 200 * Conforms to "Intel Virtualization Technology for Directed I/O",
 201 * Version 1.2, Sept. 2008
 202 *
 203 ******************************************************************************/
 204
 205struct acpi_table_dmar {
 206        struct acpi_table_header header;        /* Common ACPI table header */
 207        u8 width;               /* Host Address Width */
 208        u8 flags;
 209        u8 reserved[10];
 210};
 211
 212/* Masks for Flags field above */
 213
 214#define ACPI_DMAR_INTR_REMAP        (1)
 215
 216/* DMAR subtable header */
 217
 218struct acpi_dmar_header {
 219        u16 type;
 220        u16 length;
 221};
 222
 223/* Values for subtable type in struct acpi_dmar_header */
 224
 225enum acpi_dmar_type {
 226        ACPI_DMAR_TYPE_HARDWARE_UNIT = 0,
 227        ACPI_DMAR_TYPE_RESERVED_MEMORY = 1,
 228        ACPI_DMAR_TYPE_ATSR = 2,
 229        ACPI_DMAR_HARDWARE_AFFINITY = 3,
 230        ACPI_DMAR_TYPE_RESERVED = 4     /* 4 and greater are reserved */
 231};
 232
 233/* DMAR Device Scope structure */
 234
 235struct acpi_dmar_device_scope {
 236        u8 entry_type;
 237        u8 length;
 238        u16 reserved;
 239        u8 enumeration_id;
 240        u8 bus;
 241};
 242
 243/* Values for entry_type in struct acpi_dmar_device_scope */
 244
 245enum acpi_dmar_scope_type {
 246        ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0,
 247        ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1,
 248        ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2,
 249        ACPI_DMAR_SCOPE_TYPE_IOAPIC = 3,
 250        ACPI_DMAR_SCOPE_TYPE_HPET = 4,
 251        ACPI_DMAR_SCOPE_TYPE_RESERVED = 5       /* 5 and greater are reserved */
 252};
 253
 254struct acpi_dmar_pci_path {
 255        u8 dev;
 256        u8 fn;
 257};
 258
 259/*
 260 * DMAR Sub-tables, correspond to Type in struct acpi_dmar_header
 261 */
 262
 263/* 0: Hardware Unit Definition */
 264
 265struct acpi_dmar_hardware_unit {
 266        struct acpi_dmar_header header;
 267        u8 flags;
 268        u8 reserved;
 269        u16 segment;
 270        u64 address;            /* Register Base Address */
 271};
 272
 273/* Masks for Flags field above */
 274
 275#define ACPI_DMAR_INCLUDE_ALL       (1)
 276
 277/* 1: Reserved Memory Defininition */
 278
 279struct acpi_dmar_reserved_memory {
 280        struct acpi_dmar_header header;
 281        u16 reserved;
 282        u16 segment;
 283        u64 base_address;       /* 4_k aligned base address */
 284        u64 end_address;        /* 4_k aligned limit address */
 285};
 286
 287/* Masks for Flags field above */
 288
 289#define ACPI_DMAR_ALLOW_ALL         (1)
 290
 291/* 2: Root Port ATS Capability Reporting Structure */
 292
 293struct acpi_dmar_atsr {
 294        struct acpi_dmar_header header;
 295        u8 flags;
 296        u8 reserved;
 297        u16 segment;
 298};
 299
 300/* Masks for Flags field above */
 301
 302#define ACPI_DMAR_ALL_PORTS         (1)
 303
 304/* 3: Remapping Hardware Static Affinity Structure */
 305
 306struct acpi_dmar_rhsa {
 307        struct acpi_dmar_header header;
 308        u32 reserved;
 309        u64 base_address;
 310        u32 proximity_domain;
 311};
 312
 313/*******************************************************************************
 314 *
 315 * HPET - High Precision Event Timer table
 316 *        Version 1
 317 *
 318 * Conforms to "IA-PC HPET (High Precision Event Timers) Specification",
 319 * Version 1.0a, October 2004
 320 *
 321 ******************************************************************************/
 322
 323struct acpi_table_hpet {
 324        struct acpi_table_header header;        /* Common ACPI table header */
 325        u32 id;                 /* Hardware ID of event timer block */
 326        struct acpi_generic_address address;    /* Address of event timer block */
 327        u8 sequence;            /* HPET sequence number */
 328        u16 minimum_tick;       /* Main counter min tick, periodic mode */
 329        u8 flags;
 330};
 331
 332/* Masks for Flags field above */
 333
 334#define ACPI_HPET_PAGE_PROTECT_MASK (3)
 335
 336/* Values for Page Protect flags */
 337
 338enum acpi_hpet_page_protect {
 339        ACPI_HPET_NO_PAGE_PROTECT = 0,
 340        ACPI_HPET_PAGE_PROTECT4 = 1,
 341        ACPI_HPET_PAGE_PROTECT64 = 2
 342};
 343
 344/*******************************************************************************
 345 *
 346 * IBFT - Boot Firmware Table
 347 *        Version 1
 348 *
 349 * Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b
 350 * Specification", Version 1.01, March 1, 2007
 351 *
 352 * Note: It appears that this table is not intended to appear in the RSDT/XSDT.
 353 * Therefore, it is not currently supported by the disassembler.
 354 *
 355 ******************************************************************************/
 356
 357struct acpi_table_ibft {
 358        struct acpi_table_header header;        /* Common ACPI table header */
 359        u8 reserved[12];
 360};
 361
 362/* IBFT common subtable header */
 363
 364struct acpi_ibft_header {
 365        u8 type;
 366        u8 version;
 367        u16 length;
 368        u8 index;
 369        u8 flags;
 370};
 371
 372/* Values for Type field above */
 373
 374enum acpi_ibft_type {
 375        ACPI_IBFT_TYPE_NOT_USED = 0,
 376        ACPI_IBFT_TYPE_CONTROL = 1,
 377        ACPI_IBFT_TYPE_INITIATOR = 2,
 378        ACPI_IBFT_TYPE_NIC = 3,
 379        ACPI_IBFT_TYPE_TARGET = 4,
 380        ACPI_IBFT_TYPE_EXTENSIONS = 5,
 381        ACPI_IBFT_TYPE_RESERVED = 6     /* 6 and greater are reserved */
 382};
 383
 384/* IBFT subtables */
 385
 386struct acpi_ibft_control {
 387        struct acpi_ibft_header header;
 388        u16 extensions;
 389        u16 initiator_offset;
 390        u16 nic0_offset;
 391        u16 target0_offset;
 392        u16 nic1_offset;
 393        u16 target1_offset;
 394};
 395
 396struct acpi_ibft_initiator {
 397        struct acpi_ibft_header header;
 398        u8 sns_server[16];
 399        u8 slp_server[16];
 400        u8 primary_server[16];
 401        u8 secondary_server[16];
 402        u16 name_length;
 403        u16 name_offset;
 404};
 405
 406struct acpi_ibft_nic {
 407        struct acpi_ibft_header header;
 408        u8 ip_address[16];
 409        u8 subnet_mask_prefix;
 410        u8 origin;
 411        u8 gateway[16];
 412        u8 primary_dns[16];
 413        u8 secondary_dns[16];
 414        u8 dhcp[16];
 415        u16 vlan;
 416        u8 mac_address[6];
 417        u16 pci_address;
 418        u16 name_length;
 419        u16 name_offset;
 420};
 421
 422struct acpi_ibft_target {
 423        struct acpi_ibft_header header;
 424        u8 target_ip_address[16];
 425        u16 target_ip_socket;
 426        u8 target_boot_lun[8];
 427        u8 chap_type;
 428        u8 nic_association;
 429        u16 target_name_length;
 430        u16 target_name_offset;
 431        u16 chap_name_length;
 432        u16 chap_name_offset;
 433        u16 chap_secret_length;
 434        u16 chap_secret_offset;
 435        u16 reverse_chap_name_length;
 436        u16 reverse_chap_name_offset;
 437        u16 reverse_chap_secret_length;
 438        u16 reverse_chap_secret_offset;
 439};
 440
 441/*******************************************************************************
 442 *
 443 * IVRS - I/O Virtualization Reporting Structure
 444 *        Version 1
 445 *
 446 * Conforms to "AMD I/O Virtualization Technology (IOMMU) Specification",
 447 * Revision 1.26, February 2009.
 448 *
 449 ******************************************************************************/
 450
 451struct acpi_table_ivrs {
 452        struct acpi_table_header header;        /* Common ACPI table header */
 453        u32 info;               /* Common virtualization info */
 454        u64 reserved;
 455};
 456
 457/* Values for Info field above */
 458
 459#define ACPI_IVRS_PHYSICAL_SIZE     0x00007F00  /* 7 bits, physical address size */
 460#define ACPI_IVRS_VIRTUAL_SIZE      0x003F8000  /* 7 bits, virtual address size */
 461#define ACPI_IVRS_ATS_RESERVED      0x00400000  /* ATS address translation range reserved */
 462
 463/* IVRS subtable header */
 464
 465struct acpi_ivrs_header {
 466        u8 type;                /* Subtable type */
 467        u8 flags;
 468        u16 length;             /* Subtable length */
 469        u16 device_id;          /* ID of IOMMU */
 470};
 471
 472/* Values for subtable Type above */
 473
 474enum acpi_ivrs_type {
 475        ACPI_IVRS_TYPE_HARDWARE = 0x10,
 476        ACPI_IVRS_TYPE_MEMORY1 = 0x20,
 477        ACPI_IVRS_TYPE_MEMORY2 = 0x21,
 478        ACPI_IVRS_TYPE_MEMORY3 = 0x22
 479};
 480
 481/* Masks for Flags field above for IVHD subtable */
 482
 483#define ACPI_IVHD_TT_ENABLE         (1)
 484#define ACPI_IVHD_PASS_PW           (1<<1)
 485#define ACPI_IVHD_RES_PASS_PW       (1<<2)
 486#define ACPI_IVHD_ISOC              (1<<3)
 487#define ACPI_IVHD_IOTLB             (1<<4)
 488
 489/* Masks for Flags field above for IVMD subtable */
 490
 491#define ACPI_IVMD_UNITY             (1)
 492#define ACPI_IVMD_READ              (1<<1)
 493#define ACPI_IVMD_WRITE             (1<<2)
 494#define ACPI_IVMD_EXCLUSION_RANGE   (1<<3)
 495
 496/*
 497 * IVRS subtables, correspond to Type in struct acpi_ivrs_header
 498 */
 499
 500/* 0x10: I/O Virtualization Hardware Definition Block (IVHD) */
 501
 502struct acpi_ivrs_hardware {
 503        struct acpi_ivrs_header header;
 504        u16 capability_offset;  /* Offset for IOMMU control fields */
 505        u64 base_address;       /* IOMMU control registers */
 506        u16 pci_segment_group;
 507        u16 info;               /* MSI number and unit ID */
 508        u32 reserved;
 509};
 510
 511/* Masks for Info field above */
 512
 513#define ACPI_IVHD_MSI_NUMBER_MASK   0x001F      /* 5 bits, MSI message number */
 514#define ACPI_IVHD_UNIT_ID_MASK      0x1F00      /* 5 bits, unit_iD */
 515
 516/*
 517 * Device Entries for IVHD subtable, appear after struct acpi_ivrs_hardware structure.
 518 * Upper two bits of the Type field are the (encoded) length of the structure.
 519 * Currently, only 4 and 8 byte entries are defined. 16 and 32 byte entries
 520 * are reserved for future use but not defined.
 521 */
 522struct acpi_ivrs_de_header {
 523        u8 type;
 524        u16 id;
 525        u8 data_setting;
 526};
 527
 528/* Length of device entry is in the top two bits of Type field above */
 529
 530#define ACPI_IVHD_ENTRY_LENGTH      0xC0
 531
 532/* Values for device entry Type field above */
 533
 534enum acpi_ivrs_device_entry_type {
 535        /* 4-byte device entries, all use struct acpi_ivrs_device4 */
 536
 537        ACPI_IVRS_TYPE_PAD4 = 0,
 538        ACPI_IVRS_TYPE_ALL = 1,
 539        ACPI_IVRS_TYPE_SELECT = 2,
 540        ACPI_IVRS_TYPE_START = 3,
 541        ACPI_IVRS_TYPE_END = 4,
 542
 543        /* 8-byte device entries */
 544
 545        ACPI_IVRS_TYPE_PAD8 = 64,
 546        ACPI_IVRS_TYPE_NOT_USED = 65,
 547        ACPI_IVRS_TYPE_ALIAS_SELECT = 66,       /* Uses struct acpi_ivrs_device8a */
 548        ACPI_IVRS_TYPE_ALIAS_START = 67,        /* Uses struct acpi_ivrs_device8a */
 549        ACPI_IVRS_TYPE_EXT_SELECT = 70, /* Uses struct acpi_ivrs_device8b */
 550        ACPI_IVRS_TYPE_EXT_START = 71,  /* Uses struct acpi_ivrs_device8b */
 551        ACPI_IVRS_TYPE_SPECIAL = 72     /* Uses struct acpi_ivrs_device8c */
 552};
 553
 554/* Values for Data field above */
 555
 556#define ACPI_IVHD_INIT_PASS         (1)
 557#define ACPI_IVHD_EINT_PASS         (1<<1)
 558#define ACPI_IVHD_NMI_PASS          (1<<2)
 559#define ACPI_IVHD_SYSTEM_MGMT       (3<<4)
 560#define ACPI_IVHD_LINT0_PASS        (1<<6)
 561#define ACPI_IVHD_LINT1_PASS        (1<<7)
 562
 563/* Types 0-4: 4-byte device entry */
 564
 565struct acpi_ivrs_device4 {
 566        struct acpi_ivrs_de_header header;
 567};
 568
 569/* Types 66-67: 8-byte device entry */
 570
 571struct acpi_ivrs_device8a {
 572        struct acpi_ivrs_de_header header;
 573        u8 reserved1;
 574        u16 used_id;
 575        u8 reserved2;
 576};
 577
 578/* Types 70-71: 8-byte device entry */
 579
 580struct acpi_ivrs_device8b {
 581        struct acpi_ivrs_de_header header;
 582        u32 extended_data;
 583};
 584
 585/* Values for extended_data above */
 586
 587#define ACPI_IVHD_ATS_DISABLED      (1<<31)
 588
 589/* Type 72: 8-byte device entry */
 590
 591struct acpi_ivrs_device8c {
 592        struct acpi_ivrs_de_header header;
 593        u8 handle;
 594        u16 used_id;
 595        u8 variety;
 596};
 597
 598/* Values for Variety field above */
 599
 600#define ACPI_IVHD_IOAPIC            1
 601#define ACPI_IVHD_HPET              2
 602
 603/* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition Block (IVMD) */
 604
 605struct acpi_ivrs_memory {
 606        struct acpi_ivrs_header header;
 607        u16 aux_data;
 608        u64 reserved;
 609        u64 start_address;
 610        u64 memory_length;
 611};
 612
 613/*******************************************************************************
 614 *
 615 * MCFG - PCI Memory Mapped Configuration table and sub-table
 616 *        Version 1
 617 *
 618 * Conforms to "PCI Firmware Specification", Revision 3.0, June 20, 2005
 619 *
 620 ******************************************************************************/
 621
 622struct acpi_table_mcfg {
 623        struct acpi_table_header header;        /* Common ACPI table header */
 624        u8 reserved[8];
 625};
 626
 627/* Subtable */
 628
 629struct acpi_mcfg_allocation {
 630        u64 address;            /* Base address, processor-relative */
 631        u16 pci_segment;        /* PCI segment group number */
 632        u8 start_bus_number;    /* Starting PCI Bus number */
 633        u8 end_bus_number;      /* Final PCI Bus number */
 634        u32 reserved;
 635};
 636
 637/*******************************************************************************
 638 *
 639 * SPCR - Serial Port Console Redirection table
 640 *        Version 1
 641 *
 642 * Conforms to "Serial Port Console Redirection Table",
 643 * Version 1.00, January 11, 2002
 644 *
 645 ******************************************************************************/
 646
 647struct acpi_table_spcr {
 648        struct acpi_table_header header;        /* Common ACPI table header */
 649        u8 interface_type;      /* 0=full 16550, 1=subset of 16550 */
 650        u8 reserved[3];
 651        struct acpi_generic_address serial_port;
 652        u8 interrupt_type;
 653        u8 pc_interrupt;
 654        u32 interrupt;
 655        u8 baud_rate;
 656        u8 parity;
 657        u8 stop_bits;
 658        u8 flow_control;
 659        u8 terminal_type;
 660        u8 reserved1;
 661        u16 pci_device_id;
 662        u16 pci_vendor_id;
 663        u8 pci_bus;
 664        u8 pci_device;
 665        u8 pci_function;
 666        u32 pci_flags;
 667        u8 pci_segment;
 668        u32 reserved2;
 669};
 670
 671/* Masks for pci_flags field above */
 672
 673#define ACPI_SPCR_DO_NOT_DISABLE    (1)
 674
 675/*******************************************************************************
 676 *
 677 * SPMI - Server Platform Management Interface table
 678 *        Version 5
 679 *
 680 * Conforms to "Intelligent Platform Management Interface Specification
 681 * Second Generation v2.0", Document Revision 1.0, February 12, 2004 with
 682 * June 12, 2009 markup.
 683 *
 684 ******************************************************************************/
 685
 686struct acpi_table_spmi {
 687        struct acpi_table_header header;        /* Common ACPI table header */
 688        u8 interface_type;
 689        u8 reserved;            /* Must be 1 */
 690        u16 spec_revision;      /* Version of IPMI */
 691        u8 interrupt_type;
 692        u8 gpe_number;          /* GPE assigned */
 693        u8 reserved1;
 694        u8 pci_device_flag;
 695        u32 interrupt;
 696        struct acpi_generic_address ipmi_register;
 697        u8 pci_segment;
 698        u8 pci_bus;
 699        u8 pci_device;
 700        u8 pci_function;
 701        u8 reserved2;
 702};
 703
 704/* Values for interface_type above */
 705
 706enum acpi_spmi_interface_types {
 707        ACPI_SPMI_NOT_USED = 0,
 708        ACPI_SPMI_KEYBOARD = 1,
 709        ACPI_SPMI_SMI = 2,
 710        ACPI_SPMI_BLOCK_TRANSFER = 3,
 711        ACPI_SPMI_SMBUS = 4,
 712        ACPI_SPMI_RESERVED = 5  /* 5 and above are reserved */
 713};
 714
 715/*******************************************************************************
 716 *
 717 * TCPA - Trusted Computing Platform Alliance table
 718 *        Version 1
 719 *
 720 * Conforms to "TCG PC Specific Implementation Specification",
 721 * Version 1.1, August 18, 2003
 722 *
 723 ******************************************************************************/
 724
 725struct acpi_table_tcpa {
 726        struct acpi_table_header header;        /* Common ACPI table header */
 727        u16 reserved;
 728        u32 max_log_length;     /* Maximum length for the event log area */
 729        u64 log_address;        /* Address of the event log area */
 730};
 731
 732/*******************************************************************************
 733 *
 734 * UEFI - UEFI Boot optimization Table
 735 *        Version 1
 736 *
 737 * Conforms to "Unified Extensible Firmware Interface Specification",
 738 * Version 2.3, May 8, 2009
 739 *
 740 ******************************************************************************/
 741
 742struct acpi_table_uefi {
 743        struct acpi_table_header header;        /* Common ACPI table header */
 744        u8 identifier[16];      /* UUID identifier */
 745        u16 data_offset;        /* Offset of remaining data in table */
 746};
 747
 748/*******************************************************************************
 749 *
 750 * WAET - Windows ACPI Emulated devices Table
 751 *        Version 1
 752 *
 753 * Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009
 754 *
 755 ******************************************************************************/
 756
 757struct acpi_table_waet {
 758        struct acpi_table_header header;        /* Common ACPI table header */
 759        u32 flags;
 760};
 761
 762/* Masks for Flags field above */
 763
 764#define ACPI_WAET_RTC_NO_ACK        (1) /* RTC requires no int acknowledge */
 765#define ACPI_WAET_TIMER_ONE_READ    (1<<1)      /* PM timer requires only one read */
 766
 767/*******************************************************************************
 768 *
 769 * WDAT - Watchdog Action Table
 770 *        Version 1
 771 *
 772 * Conforms to "Hardware Watchdog Timers Design Specification",
 773 * Copyright 2006 Microsoft Corporation.
 774 *
 775 ******************************************************************************/
 776
 777struct acpi_table_wdat {
 778        struct acpi_table_header header;        /* Common ACPI table header */
 779        u32 header_length;      /* Watchdog Header Length */
 780        u16 pci_segment;        /* PCI Segment number */
 781        u8 pci_bus;             /* PCI Bus number */
 782        u8 pci_device;          /* PCI Device number */
 783        u8 pci_function;        /* PCI Function number */
 784        u8 reserved[3];
 785        u32 timer_period;       /* Period of one timer count (msec) */
 786        u32 max_count;          /* Maximum counter value supported */
 787        u32 min_count;          /* Minimum counter value */
 788        u8 flags;
 789        u8 reserved2[3];
 790        u32 entries;            /* Number of watchdog entries that follow */
 791};
 792
 793/* Masks for Flags field above */
 794
 795#define ACPI_WDAT_ENABLED           (1)
 796#define ACPI_WDAT_STOPPED           0x80
 797
 798/* WDAT Instruction Entries (actions) */
 799
 800struct acpi_wdat_entry {
 801        u8 action;
 802        u8 instruction;
 803        u16 reserved;
 804        struct acpi_generic_address register_region;
 805        u32 value;              /* Value used with Read/Write register */
 806        u32 mask;               /* Bitmask required for this register instruction */
 807};
 808
 809/* Values for Action field above */
 810
 811enum acpi_wdat_actions {
 812        ACPI_WDAT_RESET = 1,
 813        ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4,
 814        ACPI_WDAT_GET_COUNTDOWN = 5,
 815        ACPI_WDAT_SET_COUNTDOWN = 6,
 816        ACPI_WDAT_GET_RUNNING_STATE = 8,
 817        ACPI_WDAT_SET_RUNNING_STATE = 9,
 818        ACPI_WDAT_GET_STOPPED_STATE = 10,
 819        ACPI_WDAT_SET_STOPPED_STATE = 11,
 820        ACPI_WDAT_GET_REBOOT = 16,
 821        ACPI_WDAT_SET_REBOOT = 17,
 822        ACPI_WDAT_GET_SHUTDOWN = 18,
 823        ACPI_WDAT_SET_SHUTDOWN = 19,
 824        ACPI_WDAT_GET_STATUS = 32,
 825        ACPI_WDAT_SET_STATUS = 33,
 826        ACPI_WDAT_ACTION_RESERVED = 34  /* 34 and greater are reserved */
 827};
 828
 829/* Values for Instruction field above */
 830
 831enum acpi_wdat_instructions {
 832        ACPI_WDAT_READ_VALUE = 0,
 833        ACPI_WDAT_READ_COUNTDOWN = 1,
 834        ACPI_WDAT_WRITE_VALUE = 2,
 835        ACPI_WDAT_WRITE_COUNTDOWN = 3,
 836        ACPI_WDAT_INSTRUCTION_RESERVED = 4,     /* 4 and greater are reserved */
 837        ACPI_WDAT_PRESERVE_REGISTER = 0x80      /* Except for this value */
 838};
 839
 840/*******************************************************************************
 841 *
 842 * WDRT - Watchdog Resource Table
 843 *        Version 1
 844 *
 845 * Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003",
 846 * Version 1.01, August 28, 2006
 847 *
 848 ******************************************************************************/
 849
 850struct acpi_table_wdrt {
 851        struct acpi_table_header header;        /* Common ACPI table header */
 852        struct acpi_generic_address control_register;
 853        struct acpi_generic_address count_register;
 854        u16 pci_device_id;
 855        u16 pci_vendor_id;
 856        u8 pci_bus;             /* PCI Bus number */
 857        u8 pci_device;          /* PCI Device number */
 858        u8 pci_function;        /* PCI Function number */
 859        u8 pci_segment;         /* PCI Segment number */
 860        u16 max_count;          /* Maximum counter value supported */
 861        u8 units;
 862};
 863
 864/* Reset to default packing */
 865
 866#pragma pack()
 867
 868#endif                          /* __ACTBL2_H__ */
 869