1231 lines · 32.8 KB · C
RawDownload
/****************************************************************************** * * Name: actbl2.h - ACPI Table Definitions (tables not in ACPI spec) * *****************************************************************************/ /* * Copyright (C) 2000 - 2013, 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_CSRT           "CSRT"	/* Core System Resource Table */#define ACPI_SIG_DBG2           "DBG2"	/* Debug Port table type 2 */#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"	/* iSCSI 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_MTMR           "MTMR"	/* MID Timer 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_VRTC           "VRTC"	/* Virtual Real Time Clock 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: C bitfields are not used for this reason: * * "Bitfields are great and easy to read, but unfortunately the C language * does not specify the layout of bitfields in memory, which means they are * essentially useless for dealing with packed data in on-disk formats or * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me, * this decision was a design error in C. Ritchie could have picked an order * and stuck with it." Norman Ramsey. * See http://stackoverflow.com/a/1053662/41661 */ /******************************************************************************* * * 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];}; /******************************************************************************* * * CSRT - Core System Resource Table *        Version 0 * * Conforms to the "Core System Resource Table (CSRT)", November 14, 2011 * ******************************************************************************/ struct acpi_table_csrt {	struct acpi_table_header header;	/* Common ACPI table header */}; /* Resource Group subtable */ struct acpi_csrt_group {	u32 length;	u32 vendor_id;	u32 subvendor_id;	u16 device_id;	u16 subdevice_id;	u16 revision;	u16 reserved;	u32 shared_info_length; 	/* Shared data immediately follows (Length = shared_info_length) */}; /* Shared Info subtable */ struct acpi_csrt_shared_info {	u16 major_version;	u16 minor_version;	u32 mmio_base_low;	u32 mmio_base_high;	u32 gsi_interrupt;	u8 interrupt_polarity;	u8 interrupt_mode;	u8 num_channels;	u8 dma_address_width;	u16 base_request_line;	u16 num_handshake_signals;	u32 max_block_size; 	/* Resource descriptors immediately follow (Length = Group length - shared_info_length) */}; /* Resource Descriptor subtable */ struct acpi_csrt_descriptor {	u32 length;	u16 type;	u16 subtype;	u32 uid; 	/* Resource-specific information immediately follows */}; /* Resource Types */ #define ACPI_CSRT_TYPE_INTERRUPT    0x0001#define ACPI_CSRT_TYPE_TIMER        0x0002#define ACPI_CSRT_TYPE_DMA          0x0003 /* Resource Subtypes */ #define ACPI_CSRT_XRUPT_LINE        0x0000#define ACPI_CSRT_XRUPT_CONTROLLER  0x0001#define ACPI_CSRT_TIMER             0x0000#define ACPI_CSRT_DMA_CHANNEL       0x0000#define ACPI_CSRT_DMA_CONTROLLER    0x0001 /******************************************************************************* * * DBG2 - Debug Port Table 2 *        Version 0 (Both main table and subtables) * * Conforms to "Microsoft Debug Port Table 2 (DBG2)", May 22 2012. * ******************************************************************************/ struct acpi_table_dbg2 {	struct acpi_table_header header;	/* Common ACPI table header */	u32 info_offset;	u32 info_count;}; /* Debug Device Information Subtable */ struct acpi_dbg2_device {	u8 revision;	u16 length;	u8 register_count;	/* Number of base_address registers */	u16 namepath_length;	u16 namepath_offset;	u16 oem_data_length;	u16 oem_data_offset;	u16 port_type;	u16 port_subtype;	u16 reserved;	u16 base_address_offset;	u16 address_size_offset;	/*	 * Data that follows:	 *    base_address (required) - Each in 12-byte Generic Address Structure format.	 *    address_size (required) - Array of u32 sizes corresponding to each base_address register.	 *    Namepath    (required) - Null terminated string. Single dot if not supported.	 *    oem_data    (optional) - Length is oem_data_length.	 */}; /* Types for port_type field above */ #define ACPI_DBG2_SERIAL_PORT       0x8000#define ACPI_DBG2_1394_PORT         0x8001#define ACPI_DBG2_USB_PORT          0x8002#define ACPI_DBG2_NET_PORT          0x8003 /* Subtypes for port_subtype field above */ #define ACPI_DBG2_16550_COMPATIBLE  0x0000#define ACPI_DBG2_16550_SUBSET      0x0001 #define ACPI_DBG2_1394_STANDARD     0x0000 #define ACPI_DBG2_USB_XHCI          0x0000#define ACPI_DBG2_USB_EHCI          0x0001 /******************************************************************************* * * 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 device;	u8 function;}; /* * 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;	/* 4K aligned base address */	u64 end_address;	/* 4K 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;

Lines 1–500 of 1231.

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t