]> git.proxmox.com Git - mirror_edk2.git/blob - MdePkg/Include/IndustryStandard/ServiceProcessorManagementInterfaceTable.h
MdePkg/IndustryStandard: Add header file for SPMI ACPI table
[mirror_edk2.git] / MdePkg / Include / IndustryStandard / ServiceProcessorManagementInterfaceTable.h
1 /** @file
2 Service Processor Management Interface (SPMI) ACPI table definition from
3 Intelligent Platform Management Interface Specification Second Generation.
4
5 Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
6 This program and the accompanying materials
7 are licensed and made available under the terms and conditions of the BSD License
8 which accompanies this distribution. The full text of the license may be found at
9 http://opensource.org/licenses/bsd-license.php
10
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13
14 @par Revision Reference:
15 - Intelligent Platform Management Interface Specification Second Generation
16 v2.0 Revision 1.1, Dated October 2013.
17 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
18 **/
19 #ifndef _SERVICE_PROCESSOR_MANAGEMENT_INTERFACE_TABLE_H_
20 #define _SERVICE_PROCESSOR_MANAGEMENT_INTERFACE_TABLE_H_
21
22 #include <IndustryStandard/Acpi.h>
23
24 #pragma pack(1)
25
26 ///
27 /// Definition for the device identification information used by the Service
28 /// Processor Management Interface Description Table
29 ///
30 typedef union {
31 ///
32 /// For PCI IPMI device
33 ///
34 struct {
35 UINT8 SegmentGroup;
36 UINT8 Bus;
37 UINT8 Device;
38 UINT8 Function;
39 } Pci;
40 ///
41 /// For non-PCI IPMI device, the ACPI _UID value of the device
42 ///
43 UINT32 Uid;
44 } EFI_ACPI_SERVICE_PROCESSOR_MANAGEMENT_INTERFACE_TABLE_DEVICE_ID;
45
46
47 ///
48 /// Definition for Service Processor Management Interface Description Table
49 ///
50 typedef struct {
51 EFI_ACPI_DESCRIPTION_HEADER Header;
52 ///
53 /// Indicates the type of IPMI interface.
54 ///
55 UINT8 InterfaceType;
56 ///
57 /// This field must always be 01h to be compatible with any software that
58 /// implements previous versions of this spec.
59 ///
60 UINT8 Reserved1;
61 ///
62 /// Identifies the IPMI specification revision, in BCD format.
63 ///
64 UINT16 SpecificationRevision;
65 ///
66 /// Interrupt type(s) used by the interface.
67 ///
68 UINT8 InterruptType;
69 ///
70 /// The bit assignment of the SCI interrupt within the GPEx_STS register of a
71 /// GPE described if the FADT that the interface triggers.
72 ///
73 UINT8 Gpe;
74 ///
75 /// Reserved, must be 00h.
76 ///
77 UINT8 Reserved2;
78 ///
79 /// PCI Device Flag.
80 ///
81 UINT8 PciDeviceFlag;
82 ///
83 /// The I/O APIC or I/O SAPIC Global System Interrupt used by the interface.
84 ///
85 UINT32 GlobalSystemInterrupt;
86 ///
87 /// The base address of the interface register set described using the
88 /// Generic Address Structure (GAS, See [ACPI 2.0] for the definition).
89 ///
90 EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE BaseAddress;
91 ///
92 /// Device identification information.
93 ///
94 EFI_ACPI_SERVICE_PROCESSOR_MANAGEMENT_INTERFACE_TABLE_DEVICE_ID DeviceId;
95 ///
96 /// This field must always be null (0x00) to be compatible with any software
97 /// that implements previous versions of this spec.
98 ///
99 UINT8 Reserved3;
100 } EFI_ACPI_SERVICE_PROCESSOR_MANAGEMENT_INTERFACE_TABLE;
101
102 #pragma pack()
103
104 #endif