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