MdePkg/IndustryStandard: Add header file for SPMI ACPI table

REF:https://bugzilla.tianocore.org/show_bug.cgi?id=840

Add the header file for Service Processor Management Interface ACPI table
definition.

Cc: Younas Khan <pmdyounaskhan786@gmail.com>
Cc: Michael Kinney <michael.d.kinney@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
This commit is contained in:
Hao Wu 2018-03-22 15:52:31 +08:00
parent 1d4f84f9f4
commit 77ca824c65
1 changed files with 104 additions and 0 deletions

View File

@ -0,0 +1,104 @@
/** @file
Service Processor Management Interface (SPMI) ACPI table definition from
Intelligent Platform Management Interface Specification Second Generation.
Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
@par Revision Reference:
- Intelligent Platform Management Interface Specification Second Generation
v2.0 Revision 1.1, Dated October 2013.
https://www.intel.com/content/dam/www/public/us/en/documents/specification-updates/ipmi-intelligent-platform-mgt-interface-spec-2nd-gen-v2-0-spec-update.pdf
**/
#ifndef _SERVICE_PROCESSOR_MANAGEMENT_INTERFACE_TABLE_H_
#define _SERVICE_PROCESSOR_MANAGEMENT_INTERFACE_TABLE_H_
#include <IndustryStandard/Acpi.h>
#pragma pack(1)
///
/// Definition for the device identification information used by the Service
/// Processor Management Interface Description Table
///
typedef union {
///
/// For PCI IPMI device
///
struct {
UINT8 SegmentGroup;
UINT8 Bus;
UINT8 Device;
UINT8 Function;
} Pci;
///
/// For non-PCI IPMI device, the ACPI _UID value of the device
///
UINT32 Uid;
} EFI_ACPI_SERVICE_PROCESSOR_MANAGEMENT_INTERFACE_TABLE_DEVICE_ID;
///
/// Definition for Service Processor Management Interface Description Table
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
///
/// Indicates the type of IPMI interface.
///
UINT8 InterfaceType;
///
/// This field must always be 01h to be compatible with any software that
/// implements previous versions of this spec.
///
UINT8 Reserved1;
///
/// Identifies the IPMI specification revision, in BCD format.
///
UINT16 SpecificationRevision;
///
/// Interrupt type(s) used by the interface.
///
UINT8 InterruptType;
///
/// The bit assignment of the SCI interrupt within the GPEx_STS register of a
/// GPE described if the FADT that the interface triggers.
///
UINT8 Gpe;
///
/// Reserved, must be 00h.
///
UINT8 Reserved2;
///
/// PCI Device Flag.
///
UINT8 PciDeviceFlag;
///
/// The I/O APIC or I/O SAPIC Global System Interrupt used by the interface.
///
UINT32 GlobalSystemInterrupt;
///
/// The base address of the interface register set described using the
/// Generic Address Structure (GAS, See [ACPI 2.0] for the definition).
///
EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE BaseAddress;
///
/// Device identification information.
///
EFI_ACPI_SERVICE_PROCESSOR_MANAGEMENT_INTERFACE_TABLE_DEVICE_ID DeviceId;
///
/// This field must always be null (0x00) to be compatible with any software
/// that implements previous versions of this spec.
///
UINT8 Reserved3;
} EFI_ACPI_SERVICE_PROCESSOR_MANAGEMENT_INTERFACE_TABLE;
#pragma pack()
#endif