1048 lines · 27.9 KB · C
RawDownload
/****************************************************************************** * * Name: actbl2.h - ACPI Table Definitions (tables not in ACPI spec) * *****************************************************************************/ /* * Copyright (C) 2000 - 2011, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions, and the following disclaimer, *    without modification. * 2. Redistributions in binary form must reproduce at minimum a disclaimer *    substantially similar to the "NO WARRANTY" disclaimer below *    ("Disclaimer") and any redistribution must be conditioned upon *    including a substantially similar Disclaimer requirement for further *    binary redistribution. * 3. Neither the names of the above-listed copyright holders nor the names *    of any contributors may be used to endorse or promote products derived *    from this software without specific prior written permission. * * Alternatively, this software may be distributed under the terms of the * GNU General Public License ("GPL") version 2 as published by the Free * Software Foundation. * * NO WARRANTY * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGES. */ #ifndef __ACTBL2_H__#define __ACTBL2_H__ /******************************************************************************* * * Additional ACPI Tables (2) * * These tables are not consumed directly by the ACPICA subsystem, but are * included here to support device drivers and the AML disassembler. * * The tables in this file are defined by third-party specifications, and are * not defined directly by the ACPI specification itself. * ******************************************************************************/ /* * Values for description table header signatures for tables defined in this * file. Useful because they make it more difficult to inadvertently type in * the wrong signature. */#define ACPI_SIG_ASF            "ASF!"	/* Alert Standard Format table */#define ACPI_SIG_BOOT           "BOOT"	/* Simple Boot Flag Table */#define ACPI_SIG_DBGP           "DBGP"	/* Debug Port table */#define ACPI_SIG_DMAR           "DMAR"	/* DMA Remapping table */#define ACPI_SIG_HPET           "HPET"	/* High Precision Event Timer table */#define ACPI_SIG_IBFT           "IBFT"	/* i_sCSI Boot Firmware Table */#define ACPI_SIG_IVRS           "IVRS"	/* I/O Virtualization Reporting Structure */#define ACPI_SIG_MCFG           "MCFG"	/* PCI Memory Mapped Configuration table */#define ACPI_SIG_MCHI           "MCHI"	/* Management Controller Host Interface table */#define ACPI_SIG_SLIC           "SLIC"	/* Software Licensing Description Table */#define ACPI_SIG_SPCR           "SPCR"	/* Serial Port Console Redirection table */#define ACPI_SIG_SPMI           "SPMI"	/* Server Platform Management Interface table */#define ACPI_SIG_TCPA           "TCPA"	/* Trusted Computing Platform Alliance table */#define ACPI_SIG_UEFI           "UEFI"	/* Uefi Boot Optimization Table */#define ACPI_SIG_WAET           "WAET"	/* Windows ACPI Emulated devices Table */#define ACPI_SIG_WDAT           "WDAT"	/* Watchdog Action Table */#define ACPI_SIG_WDDT           "WDDT"	/* Watchdog Timer Description Table */#define ACPI_SIG_WDRT           "WDRT"	/* Watchdog Resource Table */ #ifdef ACPI_UNDEFINED_TABLES/* * These tables have been seen in the field, but no definition has been found */#define ACPI_SIG_ATKG           "ATKG"#define ACPI_SIG_GSCI           "GSCI"	/* GMCH SCI table */#define ACPI_SIG_IEIT           "IEIT"#endif /* * All tables must be byte-packed to match the ACPI specification, since * the tables are provided by the system BIOS. */#pragma pack(1) /* * Note about bitfields: The u8 type is used for bitfields in ACPI tables. * This is the only type that is even remotely portable. Anything else is not * portable, so do not use any other bitfield types. */ /******************************************************************************* * * ASF - Alert Standard Format table (Signature "ASF!") *       Revision 0x10 * * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003 * ******************************************************************************/ struct acpi_table_asf {	struct acpi_table_header header;	/* Common ACPI table header */}; /* ASF subtable header */ struct acpi_asf_header {	u8 type;	u8 reserved;	u16 length;}; /* Values for Type field above */ enum acpi_asf_type {	ACPI_ASF_TYPE_INFO = 0,	ACPI_ASF_TYPE_ALERT = 1,	ACPI_ASF_TYPE_CONTROL = 2,	ACPI_ASF_TYPE_BOOT = 3,	ACPI_ASF_TYPE_ADDRESS = 4,	ACPI_ASF_TYPE_RESERVED = 5}; /* * ASF subtables */ /* 0: ASF Information */ struct acpi_asf_info {	struct acpi_asf_header header;	u8 min_reset_value;	u8 min_poll_interval;	u16 system_id;	u32 mfg_id;	u8 flags;	u8 reserved2[3];}; /* Masks for Flags field above */ #define ACPI_ASF_SMBUS_PROTOCOLS    (1) /* 1: ASF Alerts */ struct acpi_asf_alert {	struct acpi_asf_header header;	u8 assert_mask;	u8 deassert_mask;	u8 alerts;	u8 data_length;}; struct acpi_asf_alert_data {	u8 address;	u8 command;	u8 mask;	u8 value;	u8 sensor_type;	u8 type;	u8 offset;	u8 source_type;	u8 severity;	u8 sensor_number;	u8 entity;	u8 instance;}; /* 2: ASF Remote Control */ struct acpi_asf_remote {	struct acpi_asf_header header;	u8 controls;	u8 data_length;	u16 reserved2;}; struct acpi_asf_control_data {	u8 function;	u8 address;	u8 command;	u8 value;}; /* 3: ASF RMCP Boot Options */ struct acpi_asf_rmcp {	struct acpi_asf_header header;	u8 capabilities[7];	u8 completion_code;	u32 enterprise_id;	u8 command;	u16 parameter;	u16 boot_options;	u16 oem_parameters;}; /* 4: ASF Address */ struct acpi_asf_address {	struct acpi_asf_header header;	u8 eprom_address;	u8 devices;}; /******************************************************************************* * * BOOT - Simple Boot Flag Table *        Version 1 * * Conforms to the "Simple Boot Flag Specification", Version 2.1 * ******************************************************************************/ struct acpi_table_boot {	struct acpi_table_header header;	/* Common ACPI table header */	u8 cmos_index;		/* Index in CMOS RAM for the boot register */	u8 reserved[3];}; /******************************************************************************* * * DBGP - Debug Port table *        Version 1 * * Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000 * ******************************************************************************/ struct acpi_table_dbgp {	struct acpi_table_header header;	/* Common ACPI table header */	u8 type;		/* 0=full 16550, 1=subset of 16550 */	u8 reserved[3];	struct acpi_generic_address debug_port;}; /******************************************************************************* * * DMAR - DMA Remapping table *        Version 1 * * Conforms to "Intel Virtualization Technology for Directed I/O", * Version 1.2, Sept. 2008 * ******************************************************************************/ struct acpi_table_dmar {	struct acpi_table_header header;	/* Common ACPI table header */	u8 width;		/* Host Address Width */	u8 flags;	u8 reserved[10];}; /* Masks for Flags field above */ #define ACPI_DMAR_INTR_REMAP        (1) /* DMAR subtable header */ struct acpi_dmar_header {	u16 type;	u16 length;}; /* Values for subtable type in struct acpi_dmar_header */ enum acpi_dmar_type {	ACPI_DMAR_TYPE_HARDWARE_UNIT = 0,	ACPI_DMAR_TYPE_RESERVED_MEMORY = 1,	ACPI_DMAR_TYPE_ATSR = 2,	ACPI_DMAR_HARDWARE_AFFINITY = 3,	ACPI_DMAR_TYPE_RESERVED = 4	/* 4 and greater are reserved */}; /* DMAR Device Scope structure */ struct acpi_dmar_device_scope {	u8 entry_type;	u8 length;	u16 reserved;	u8 enumeration_id;	u8 bus;}; /* Values for entry_type in struct acpi_dmar_device_scope */ enum acpi_dmar_scope_type {	ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0,	ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1,	ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2,	ACPI_DMAR_SCOPE_TYPE_IOAPIC = 3,	ACPI_DMAR_SCOPE_TYPE_HPET = 4,	ACPI_DMAR_SCOPE_TYPE_RESERVED = 5	/* 5 and greater are reserved */}; struct acpi_dmar_pci_path {	u8 dev;	u8 fn;}; /* * DMAR Sub-tables, correspond to Type in struct acpi_dmar_header */ /* 0: Hardware Unit Definition */ struct acpi_dmar_hardware_unit {	struct acpi_dmar_header header;	u8 flags;	u8 reserved;	u16 segment;	u64 address;		/* Register Base Address */}; /* Masks for Flags field above */ #define ACPI_DMAR_INCLUDE_ALL       (1) /* 1: Reserved Memory Defininition */ struct acpi_dmar_reserved_memory {	struct acpi_dmar_header header;	u16 reserved;	u16 segment;	u64 base_address;	/* 4_k aligned base address */	u64 end_address;	/* 4_k aligned limit address */}; /* Masks for Flags field above */ #define ACPI_DMAR_ALLOW_ALL         (1) /* 2: Root Port ATS Capability Reporting Structure */ struct acpi_dmar_atsr {	struct acpi_dmar_header header;	u8 flags;	u8 reserved;	u16 segment;}; /* Masks for Flags field above */ #define ACPI_DMAR_ALL_PORTS         (1) /* 3: Remapping Hardware Static Affinity Structure */ struct acpi_dmar_rhsa {	struct acpi_dmar_header header;	u32 reserved;	u64 base_address;	u32 proximity_domain;}; /******************************************************************************* * * HPET - High Precision Event Timer table *        Version 1 * * Conforms to "IA-PC HPET (High Precision Event Timers) Specification", * Version 1.0a, October 2004 * ******************************************************************************/ struct acpi_table_hpet {	struct acpi_table_header header;	/* Common ACPI table header */	u32 id;			/* Hardware ID of event timer block */	struct acpi_generic_address address;	/* Address of event timer block */	u8 sequence;		/* HPET sequence number */	u16 minimum_tick;	/* Main counter min tick, periodic mode */	u8 flags;}; /* Masks for Flags field above */ #define ACPI_HPET_PAGE_PROTECT_MASK (3) /* Values for Page Protect flags */ enum acpi_hpet_page_protect {	ACPI_HPET_NO_PAGE_PROTECT = 0,	ACPI_HPET_PAGE_PROTECT4 = 1,	ACPI_HPET_PAGE_PROTECT64 = 2}; /******************************************************************************* * * IBFT - Boot Firmware Table *        Version 1 * * Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b * Specification", Version 1.01, March 1, 2007 * * Note: It appears that this table is not intended to appear in the RSDT/XSDT. * Therefore, it is not currently supported by the disassembler. * ******************************************************************************/ struct acpi_table_ibft {	struct acpi_table_header header;	/* Common ACPI table header */	u8 reserved[12];}; /* IBFT common subtable header */ struct acpi_ibft_header {	u8 type;	u8 version;	u16 length;	u8 index;	u8 flags;}; /* Values for Type field above */ enum acpi_ibft_type {	ACPI_IBFT_TYPE_NOT_USED = 0,	ACPI_IBFT_TYPE_CONTROL = 1,	ACPI_IBFT_TYPE_INITIATOR = 2,	ACPI_IBFT_TYPE_NIC = 3,	ACPI_IBFT_TYPE_TARGET = 4,	ACPI_IBFT_TYPE_EXTENSIONS = 5,	ACPI_IBFT_TYPE_RESERVED = 6	/* 6 and greater are reserved */}; /* IBFT subtables */ struct acpi_ibft_control {	struct acpi_ibft_header header;	u16 extensions;	u16 initiator_offset;	u16 nic0_offset;	u16 target0_offset;	u16 nic1_offset;	u16 target1_offset;}; struct acpi_ibft_initiator {	struct acpi_ibft_header header;	u8 sns_server[16];	u8 slp_server[16];	u8 primary_server[16];	u8 secondary_server[16];	u16 name_length;	u16 name_offset;}; struct acpi_ibft_nic {	struct acpi_ibft_header header;	u8 ip_address[16];	u8 subnet_mask_prefix;	u8 origin;	u8 gateway[16];	u8 primary_dns[16];	u8 secondary_dns[16];	u8 dhcp[16];	u16 vlan;	u8 mac_address[6];	u16 pci_address;	u16 name_length;	u16 name_offset;}; struct acpi_ibft_target {	struct acpi_ibft_header header;	u8 target_ip_address[16];	u16 target_ip_socket;	u8 target_boot_lun[8];	u8 chap_type;	u8 nic_association;	u16 target_name_length;	u16 target_name_offset;	u16 chap_name_length;	u16 chap_name_offset;	u16 chap_secret_length;	u16 chap_secret_offset;	u16 reverse_chap_name_length;	u16 reverse_chap_name_offset;	u16 reverse_chap_secret_length;	u16 reverse_chap_secret_offset;}; /******************************************************************************* * * IVRS - I/O Virtualization Reporting Structure *        Version 1 * * Conforms to "AMD I/O Virtualization Technology (IOMMU) Specification",

Lines 1–500 of 1048.