audk/MdePkg/Include/IndustryStandard/ServiceProcessorManagementI...

105 lines
3.7 KiB
C

/** @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