MdePkg: Add Ipmi2.0 definitions head file.
authorDaocheng Bu <daocheng.bu@intel.com>
Mon, 7 Dec 2015 02:04:22 +0000 (02:04 +0000)
committerlgao4 <lgao4@Edk2>
Mon, 7 Dec 2015 02:04:22 +0000 (02:04 +0000)
Add Ipmi2.0 definitions head file based on Ipmi category:
App, Storage and etc.

In V2, correct #include IndustryStandard/IpmiNetFnSensorEventDefinitions.h,
and remove trailing space.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Daocheng Bu <daocheng.bu@intel.com>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@19125 6f19259b-4bc3-4df7-8a09-765794883524

MdePkg/Include/IndustryStandard/Ipmi.h [new file with mode: 0644]
MdePkg/Include/IndustryStandard/IpmiNetFnAppDefinitions.h [new file with mode: 0644]
MdePkg/Include/IndustryStandard/IpmiNetFnBridgeDefinitions.h [new file with mode: 0644]
MdePkg/Include/IndustryStandard/IpmiNetFnChassisDefinitions.h [new file with mode: 0644]
MdePkg/Include/IndustryStandard/IpmiNetFnFirmwareDefinitions.h [new file with mode: 0644]
MdePkg/Include/IndustryStandard/IpmiNetFnGroupExtensionDefinitions.h [new file with mode: 0644]
MdePkg/Include/IndustryStandard/IpmiNetFnSensorEventDefinitions.h [new file with mode: 0644]
MdePkg/Include/IndustryStandard/IpmiNetFnStorageDefinitions.h [new file with mode: 0644]
MdePkg/Include/IndustryStandard/IpmiNetFnTransportDefinitions.h [new file with mode: 0644]

diff --git a/MdePkg/Include/IndustryStandard/Ipmi.h b/MdePkg/Include/IndustryStandard/Ipmi.h
new file mode 100644 (file)
index 0000000..fbf55c8
--- /dev/null
@@ -0,0 +1,29 @@
+/** @file\r
+  IPMI 2.0 definitions from the IPMI Specification Version 2.0, Revision 1.1.\r
+\r
+  See IPMI specification, Appendix G, Command Assignments\r
+  and Appendix H, Sub-function Assignments.\r
+\r
+  Copyright (c) 1999 - 2015, 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
+\r
+#ifndef _IPMIDEFINITIONS_H_\r
+#define _IPMIDEFINITIONS_H_\r
+\r
+#include <IndustryStandard/IpmiNetFnChassisDefinitions.h>\r
+#include <IndustryStandard/IpmiNetFnBridgeDefinitions.h>\r
+#include <IndustryStandard/IpmiNetFnSensorEventDefinitions.h>\r
+#include <IndustryStandard/IpmiNetFnAppDefinitions.h>\r
+#include <IndustryStandard/IpmiNetFnFirmwareDefinitions.h>\r
+#include <IndustryStandard/IpmiNetFnStorageDefinitions.h>\r
+#include <IndustryStandard/IpmiNetFnTransportDefinitions.h>\r
+#include <IndustryStandard/IpmiNetFnGroupExtensionDefinitions.h>\r
+\r
+#endif\r
diff --git a/MdePkg/Include/IndustryStandard/IpmiNetFnAppDefinitions.h b/MdePkg/Include/IndustryStandard/IpmiNetFnAppDefinitions.h
new file mode 100644 (file)
index 0000000..d722c9e
--- /dev/null
@@ -0,0 +1,647 @@
+/** @file\r
+  IPMI 2.0 definitions from the IPMI Specification Version 2.0, Revision 1.1.\r
+\r
+  This file contains all NetFn App commands, including:\r
+    IPM Device "Global" Commands (Chapter 20)\r
+    Firmware Firewall & Command Discovery Commands (Chapter 21)\r
+    BMC Watchdog Timer Commands (Chapter 27)\r
+    IPMI Messaging Support Commands (Chapter 22)\r
+    RMCP+ Support and Payload Commands (Chapter 24)\r
+\r
+  See IPMI specification, Appendix G, Command Assignments\r
+  and Appendix H, Sub-function Assignments.\r
+\r
+  Copyright (c) 1999 - 2015, 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
+\r
+#ifndef _IPMINETFNAPPDEFINITIONS_H_\r
+#define _IPMINETFNAPPDEFINITIONS_H_\r
+\r
+#pragma pack(1)\r
+//\r
+// Net function definition for App command\r
+//\r
+#define IPMI_NETFN_APP  0x06\r
+\r
+//\r
+//  Below is Definitions for IPM Device "Global" Commands  (Chapter 20)\r
+//\r
+\r
+//\r
+//  Definitions for Get Device ID command\r
+//\r
+#define IPMI_APP_GET_DEVICE_ID 0x1\r
+\r
+//\r
+//  Constants and Structure definitions for "Get Device ID" command to follow here\r
+//\r
+typedef struct {\r
+  UINT8   DeviceId;\r
+  UINT8   DeviceRevision : 4;\r
+  UINT8   Reserved : 3;\r
+  UINT8   DeviceSdr : 1;\r
+  UINT8   MajorFirmwareRev : 7;\r
+  UINT8   UpdateMode : 1;\r
+  UINT8   MinorFirmwareRev;\r
+  UINT8   SpecificationVersion;\r
+  UINT8   SensorDeviceSupport : 1;\r
+  UINT8   SdrRepositorySupport : 1;\r
+  UINT8   SelDeviceSupport : 1;\r
+  UINT8   FruInventorySupport : 1;\r
+  UINT8   IpmbMessageReceiver : 1;\r
+  UINT8   IpmbMessageGenerator : 1;\r
+  UINT8   BridgeSupport : 1;\r
+  UINT8   ChassisSupport : 1;\r
+  UINT8   ManufacturerId[3];\r
+  UINT16  ProductId;\r
+  UINT32  AuxFirmwareRevInfo;\r
+} IPMI_MSG_GET_DEVICE_ID_RSP;\r
+\r
+\r
+//\r
+//  Definitions for Cold Reset command\r
+//\r
+#define IPMI_APP_COLD_RESET  0x2\r
+\r
+//\r
+//  Constants and Structure definitions for "Cold Reset" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Warm Reset command\r
+//\r
+#define IPMI_APP_WARM_RESET  0x3\r
+\r
+//\r
+//  Constants and Structure definitions for "Warm Reset" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get Self Results command\r
+//\r
+#define IPMI_APP_GET_SELFTEST_RESULTS  0x4\r
+\r
+//\r
+//  Constants and Structure definitions for "Get Self Results" command to follow here\r
+//\r
+typedef struct {\r
+  UINT8  Result;\r
+  UINT8  Param;\r
+} IPMI_MSG_SELFTEST_RESULT_RSP;\r
+\r
+#define IPMI_APP_SELFTEST_NO_ERROR             0x55\r
+#define IPMI_APP_SELFTEST_NOT_IMPLEMENTED      0x56\r
+#define IPMI_APP_SELFTEST_ERROR                0x57\r
+#define IPMI_APP_SELFTEST_FATAL_HW_ERROR       0x58\r
+#define IPMI_APP_SELFTEST_INACCESSIBLE_SEL     0x80\r
+#define IPMI_APP_SELFTEST_INACCESSIBLE_SDR     0x40\r
+#define IPMI_APP_SELFTEST_INACCESSIBLE_FRU     0x20\r
+#define IPMI_APP_SELFTEST_IPMB_SIGNAL_FAIL     0x10\r
+#define IPMI_APP_SELFTEST_SDR_REPOSITORY_EMPTY 0x08\r
+#define IPMI_APP_SELFTEST_FRU_CORRUPT          0x04\r
+#define IPMI_APP_SELFTEST_FW_BOOTBLOCK_CORRUPT 0x02\r
+#define IPMI_APP_SELFTEST_FW_CORRUPT           0x01\r
+\r
+//\r
+//  Definitions for Manufacturing Test ON command\r
+//\r
+#define IPMI_APP_MANUFACTURING_TEST_ON 0x5\r
+\r
+//\r
+//  Constants and Structure definitions for "Manufacturing Test ON" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Set ACPI Power State command\r
+//\r
+#define IPMI_APP_SET_ACPI_POWERSTATE 0x6\r
+\r
+//\r
+//  Constants and Structure definitions for "Set ACPI Power State" command to follow here\r
+//\r
+typedef struct {\r
+  UINT8 SystemPowerState : 7;\r
+  UINT8 SystemStateChange : 1;\r
+  UINT8 DevicePowerState : 7;\r
+  UINT8 DeviceStateChange : 1;\r
+} IPMI_ACPI_POWER_STATE;\r
+\r
+//\r
+//  Definitions for Get ACPI Power State command\r
+//\r
+#define IPMI_APP_GET_ACPI_POWERSTATE 0x7\r
+\r
+//\r
+//  Constants and Structure definitions for "Get ACPI Power State" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get Device GUID command\r
+//\r
+#define IPMI_APP_GET_DEVICE_GUID 0x8\r
+\r
+//\r
+//  Constants and Structure definitions for "Get Device GUID" command to follow here\r
+//\r
+//\r
+//  Message structure definition for "Get Device Guid" IPMI command\r
+//\r
+typedef struct {\r
+  UINT8 Guid[16];\r
+} IPMI_MSG_GET_DEVICE_GUID_RSP;\r
+\r
+//\r
+//  Below is Definitions for BMC Watchdog Timer Commands (Chapter 27)\r
+//\r
+\r
+//\r
+//  Definitions for Reset WatchDog Timer command\r
+//\r
+#define IPMI_APP_RESET_WATCHDOG_TIMER  0x22\r
+\r
+//\r
+//  Constants and Structure definitions for "Reset WatchDog Timer" command to follow here\r
+//\r
+typedef struct {\r
+  UINT8 TimerUse : 3;\r
+  UINT8 Reserved : 3;\r
+  UINT8 TimerRunning : 1;\r
+  UINT8 TimerUseExpirationFlagLog : 1;\r
+} IPMI_WATCHDOG_TIMER_USE;\r
+\r
+//\r
+//  Definitions for Set WatchDog Timer command\r
+//\r
+#define IPMI_APP_SET_WATCHDOG_TIMER  0x24\r
+\r
+//\r
+//  Constants and Structure definitions for "Set WatchDog Timer" command to follow here\r
+//\r
+typedef struct {\r
+  IPMI_WATCHDOG_TIMER_USE         TimerUse;\r
+  UINT8                           TimerActions;\r
+  UINT8                           PretimeoutInterval;\r
+  UINT8                           TimerUseExpirationFlagsClear;\r
+  UINT16                          InitialCountdownValue;\r
+} IPMI_SET_WATCHDOG_TIMER;\r
+\r
+//\r
+//  Definitions for Get WatchDog Timer command\r
+//\r
+#define IPMI_APP_GET_WATCHDOG_TIMER  0x25\r
+\r
+//\r
+//  Constants and Structure definitions for "Get WatchDog Timer" command to follow here\r
+//\r
+typedef struct {\r
+  IPMI_WATCHDOG_TIMER_USE         TimerUse;\r
+  UINT8                           TimerActions;\r
+  UINT8                           PretimeoutInterval;\r
+  UINT8                           TimerUseExpirationFlagsClear;\r
+  UINT16                          InitialCountdownValue;\r
+  UINT16                          PresentCountdownValue;\r
+} IPMI_WATCHDOG_TIMER;\r
+\r
+//\r
+// The following srucure is temporary, need to be removed later\r
+//\r
+typedef struct {\r
+  UINT8 TimerUse : 3;\r
+  UINT8 Reserved1 : 3;\r
+  UINT8 StartTimer : 1;\r
+  UINT8 DontLog : 1;\r
+  union {\r
+    struct {\r
+      UINT8 TimeoutAction : 3;\r
+      UINT8 Reserved2 : 1;\r
+      UINT8 PreTimeoutIntr : 3;\r
+      UINT8 Reserved3 : 1;\r
+    } Byte2Bmp;\r
+    UINT8 Data8;\r
+  } Byte2;\r
+\r
+  UINT8   PreTimeoutInterval;\r
+  UINT8   ExpirationReserved1 : 1;\r
+  UINT8   BiosFrb2TimerExpirationFlag : 1;\r
+  UINT8   BiosPostTimerExpirationFlag : 1;\r
+  UINT8   OsLoadTimerExpirationFlag : 1;\r
+  UINT8   ExpirationReserved2 : 4;\r
+  UINT16  Timeout;\r
+  UINT16  CurrCountdown;\r
+  UINT16  Reserved4;\r
+} IPMI_FRB_TIMER;\r
+\r
+//\r
+//  Below is Definitions for IPMI Messaging Support Commands (Chapter 22)\r
+//\r
+\r
+//\r
+//  Definitions for Set BMC Global Enables command\r
+//\r
+#define IPMI_APP_SET_BMC_GLOBAL_ENABLES  0x2E\r
+\r
+//\r
+//  Constants and Structure definitions for "Set BMC Global Enables " command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get BMC Global Enables command\r
+//\r
+#define IPMI_APP_GET_BMC_GLOBAL_ENABLES  0x2F\r
+\r
+//\r
+//  Constants and Structure definitions for "Get BMC Global Enables " command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Clear Message Flags command\r
+//\r
+#define IPMI_APP_CLEAR_MESSAGE_FLAGS 0x30\r
+\r
+//\r
+//  Constants and Structure definitions for "Clear Message Flags" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get Message Flags command\r
+//\r
+#define IPMI_APP_GET_MESSAGE_FLAGS 0x31\r
+\r
+//\r
+//  Constants and Structure definitions for "Get Message Flags" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Enable Message Channel Receive command\r
+//\r
+#define IPMI_APP_ENABLE_MESSAGE_CHANNEL_RECEIVE  0x32\r
+\r
+//\r
+//  Constants and Structure definitions for "Enable Message Channel Receive" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get Message command\r
+//\r
+#define IPMI_APP_GET_MESSAGE 0x33\r
+\r
+//\r
+//  Constants and Structure definitions for "Get Message" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Send Message command\r
+//\r
+#define IPMI_APP_SEND_MESSAGE  0x34\r
+\r
+//\r
+//  Constants and Structure definitions for "Send Message" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Read Event Message Buffer command\r
+//\r
+#define IPMI_APP_READ_EVENT_MSG_BUFFER 0x35\r
+\r
+//\r
+//  Constants and Structure definitions for "Read Event Message Buffer" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get BT Interface Capabilities command\r
+//\r
+#define IPMI_APP_GET_BT_INTERFACE_CAPABILITY 0x36\r
+\r
+//\r
+//  Constants and Structure definitions for "Get BT Interface Capabilities" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get System GUID command\r
+//\r
+#define IPMI_APP_GET_SYSTEM_GUID 0x37\r
+\r
+//\r
+//  Constants and Structure definitions for "Get System GUID" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get Channel Authentication Capabilities command\r
+//\r
+#define IPMI_APP_GET_CHANNEL_AUTHENTICATION_CAPABILITIES 0x38\r
+\r
+//\r
+//  Constants and Structure definitions for "Get Channel Authentication Capabilities" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get Session Challenge command\r
+//\r
+#define IPMI_APP_GET_SESSION_CHALLENGE 0x39\r
+\r
+//\r
+//  Constants and Structure definitions for "Get Session Challenge" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Activate Session command\r
+//\r
+#define IPMI_APP_ACTIVATE_SESSION  0x3A\r
+\r
+//\r
+//  Constants and Structure definitions for "Activate Session" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Set Session Privelege Level command\r
+//\r
+#define IPMI_APP_SET_SESSION_PRIVELEGE_LEVEL 0x3B\r
+\r
+//\r
+//  Constants and Structure definitions for "Set Session Privelege Level" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Close Session command\r
+//\r
+#define IPMI_APP_CLOSE_SESSION 0x3C\r
+\r
+//\r
+//  Constants and Structure definitions for "Close Session" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get Session Info command\r
+//\r
+#define IPMI_APP_GET_SESSION_INFO  0x3D\r
+\r
+//\r
+//  Constants and Structure definitions for "Get Session Info" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get Auth Code command\r
+//\r
+#define IPMI_APP_GET_AUTHCODE  0x3F\r
+\r
+//\r
+//  Constants and Structure definitions for "Get AuthCode" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Set Channel Access command\r
+//\r
+#define IPMI_APP_SET_CHANNEL_ACCESS  0x40\r
+\r
+//\r
+//  Constants and Structure definitions for "Set Channel Access" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get Channel Access command\r
+//\r
+#define IPMI_APP_GET_CHANNEL_ACCESS  0x41\r
+\r
+//\r
+//  Constants and Structure definitions for "Get Channel Access" command to follow here\r
+//\r
+typedef struct {\r
+  UINT8 ChannelNo : 4;\r
+  UINT8 Reserve1 : 4;\r
+  UINT8 Reserve2 : 6;\r
+  UINT8 MemoryType : 2;\r
+} IPMI_GET_CHANNEL_ACCESS_COMMAND;\r
+\r
+typedef struct {\r
+  UINT8 AccessMode : 3;\r
+  UINT8 UserLevelAuthEnabled : 1;\r
+  UINT8 MessageAuthEnable : 1;\r
+  UINT8 Alert : 1;\r
+  UINT8 Reserve1 : 2;\r
+  UINT8 ChannelPriviledgeLimit : 4;\r
+  UINT8 Reserve2 : 4;\r
+} IPMI_GET_CHANNEL_ACCESS_RESPONSE;\r
+\r
+//\r
+//  Definitions for Get Channel Info command\r
+//\r
+#define IPMI_APP_GET_CHANNEL_INFO  0x42\r
+\r
+//\r
+//  Constants and Structure definitions for "Get Channel Info" command to follow here\r
+//\r
+typedef struct {\r
+  UINT8   ChannelNo : 4;\r
+  UINT8   Reserve1 : 4;\r
+  UINT8   ChannelMediumType : 7;\r
+  UINT8   Reserve2 : 1;\r
+  UINT8   ChannelProtocolType : 5;\r
+  UINT8   Reserve3 : 3;\r
+  UINT8   ActiveSessionCount : 6;\r
+  UINT8   SessionSupport : 2;\r
+  UINT32  VendorId : 24;\r
+  UINT16  AuxChannelInfo : 16;\r
+  UINT8   Dummy;\r
+} IPMI_CHANNEL_INFO;\r
+\r
+//\r
+//  Definitions for Get Channel Info command\r
+//\r
+#define IPMI_APP_GET_CHANNEL_INFO  0x42\r
+\r
+//\r
+//  Constants and Structure definitions for "Get Channel Info" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Set User Access command\r
+//\r
+#define IPMI_APP_SET_USER_ACCESS 0x43\r
+\r
+//\r
+//  Constants and Structure definitions for "Set User Access" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get User Access command\r
+//\r
+#define IPMI_APP_GET_USER_ACCESS 0x44\r
+\r
+//\r
+//  Constants and Structure definitions for "Get User Access" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Set User Name command\r
+//\r
+#define IPMI_APP_SET_USER_NAME 0x45\r
+\r
+//\r
+//  Constants and Structure definitions for "Set User Name" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get User Name command\r
+//\r
+#define IPMI_APP_GET_USER_NAME 0x46\r
+\r
+//\r
+//  Constants and Structure definitions for "Get User Name" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Set User Password command\r
+//\r
+#define IPMI_APP_SET_USER_PASSWORD 0x47\r
+\r
+//\r
+//  Constants and Structure definitions for "Set User Password" command to follow here\r
+//\r
+\r
+//\r
+//  Below is Definitions for RMCP+ Support and Payload Commands (Chapter 24)\r
+//\r
+\r
+//\r
+//  Definitions for Activate Payload command\r
+//\r
+#define IPMI_APP_ACTIVATE_PAYLOAD  0x48\r
+\r
+//\r
+//  Constants and Structure definitions for "Activate Payload" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for De-Activate Payload command\r
+//\r
+#define IPMI_APP_DEACTIVATE_PAYLOAD  0x49\r
+\r
+//\r
+//  Constants and Structure definitions for "DeActivate Payload" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get Payload activation Status command\r
+//\r
+#define IPMI_APP_GET_PAYLOAD_ACTIVATION_STATUS 0x4a\r
+\r
+//\r
+//  Constants and Structure definitions for "Get Payload activation Status" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get Payload Instance Info command\r
+//\r
+#define IPMI_APP_GET_PAYLOAD_INSTANCE_INFO 0x4b\r
+\r
+//\r
+//  Constants and Structure definitions for "Get Payload Instance Info" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Set User Payload Access command\r
+//\r
+#define IPMI_APP_SET_USER_PAYLOAD_ACCESS 0x4C\r
+\r
+//\r
+//  Constants and Structure definitions for "Set User Payload Access" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get User Payload Access command\r
+//\r
+#define IPMI_APP_GET_USER_PAYLOAD_ACCESS 0x4D\r
+\r
+//\r
+//  Constants and Structure definitions for "Get User Payload Access" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get Channel Payload Support command\r
+//\r
+#define IPMI_APP_GET_CHANNEL_PAYLOAD_SUPPORT 0x4E\r
+\r
+//\r
+//  Constants and Structure definitions for "Get Channel Payload Support" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get Channel Payload Version command\r
+//\r
+#define IPMI_APP_GET_CHANNEL_PAYLOAD_VERSION 0x4F\r
+\r
+//\r
+//  Constants and Structure definitions for "Get Channel Payload Version" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get Channel OEM Payload Info command\r
+//\r
+#define IPMI_APP_GET_CHANNEL_OEM_PAYLOAD_INFO  0x50\r
+\r
+//\r
+//  Constants and Structure definitions for "Get Channel OEM Payload Info" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for  Master Write-Read command\r
+//\r
+#define IPMI_APP_MASTER_WRITE_READ 0x52\r
+\r
+//\r
+//  Constants and Structure definitions for "Master Write Read" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for  Get Channel Cipher Suites command\r
+//\r
+#define IPMI_APP_GET_CHANNEL_CIPHER_SUITES 0x54\r
+\r
+//\r
+//  Constants and Structure definitions for "Get Channel Cipher Suites" command to follow here\r
+//\r
+\r
+//\r
+//  Below is Definitions for RMCP+ Support and Payload Commands (Chapter 24, Section 3)\r
+//\r
+\r
+//\r
+//  Definitions for  Suspend-Resume Payload Encryption command\r
+//\r
+#define IPMI_APP_SUSPEND_RESUME_PAYLOAD_ENCRYPTION 0x55\r
+\r
+//\r
+//  Constants and Structure definitions for "Suspend-Resume Payload Encryption" command to follow here\r
+//\r
+\r
+//\r
+//  Below is Definitions for IPMI Messaging Support Commands (Chapter 22, Section 25 and 9)\r
+//\r
+\r
+//\r
+//  Definitions for  Set Channel Security Keys command\r
+//\r
+#define IPMI_APP_SET_CHANNEL_SECURITY_KEYS 0x56\r
+\r
+//\r
+//  Constants and Structure definitions for "Set Channel Security Keys" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for  Get System Interface Capabilities command\r
+//\r
+#define IPMI_APP_GET_SYSTEM_INTERFACE_CAPABILITIES 0x57\r
+\r
+//\r
+//  Constants and Structure definitions for "Get System Interface Capabilities" command to follow here\r
+//\r
+\r
+#pragma pack()\r
+#endif\r
diff --git a/MdePkg/Include/IndustryStandard/IpmiNetFnBridgeDefinitions.h b/MdePkg/Include/IndustryStandard/IpmiNetFnBridgeDefinitions.h
new file mode 100644 (file)
index 0000000..9189028
--- /dev/null
@@ -0,0 +1,243 @@
+/** @file\r
+  IPMI 2.0 definitions from the IPMI Specification Version 2.0, Revision 1.1.\r
+  IPMI Intelligent Chassis Management Bus Bridge Specification Version 1.0,\r
+  Revision 1.3.\r
+\r
+  See IPMI specification, Appendix G, Command Assignments\r
+  and Appendix H, Sub-function Assignments.\r
+\r
+  Copyright (c) 1999 - 2015, 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
+\r
+#ifndef _IPMINETFNBRIDGEDEFINITIONS_H_\r
+#define _IPMINETFNBRIDGEDEFINITIONS_H_\r
+\r
+//\r
+// Net function definition for Bridge command\r
+//\r
+#define IPMI_NETFN_BRIDGE 0x02\r
+\r
+//\r
+//  Definitions for Get Bridge State command\r
+//\r
+#define IPMI_BRIDGE_GET_STATE  0x00\r
+\r
+//\r
+//  Constants and Structure definitions for "Get Bridge State" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Set Bridge State command\r
+//\r
+#define IPMI_BRIDGE_SET_STATE  0x01\r
+\r
+//\r
+//  Constants and Structure definitions for "Set Bridge State" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get ICMB Address command\r
+//\r
+#define IPMI_BRIDGE_GET_ICMB_ADDRESS 0x02\r
+\r
+//\r
+//  Constants and Structure definitions for "Get ICMB Address" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Set ICMB Address command\r
+//\r
+#define IPMI_BRIDGE_SET_ICMB_ADDRESS 0x03\r
+\r
+//\r
+//  Constants and Structure definitions for "Set ICMB Address" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Set Bridge Proxy Address command\r
+//\r
+#define IPMI_BRIDGE_SET_PROXY_ADDRESS  0x04\r
+\r
+//\r
+//  Constants and Structure definitions for "Set Bridge Proxy Address" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get Bridge Statistics command\r
+//\r
+#define IPMI_BRIDGE_GET_BRIDGE_STATISTICS  0x05\r
+\r
+//\r
+//  Constants and Structure definitions for "Get Bridge Statistics" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get ICMB Capabilities command\r
+//\r
+#define IPMI_BRIDGE_GET_ICMB_CAPABILITIES  0x06\r
+\r
+//\r
+//  Constants and Structure definitions for "Get ICMB Capabilities" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Clear Bridge Statistics command\r
+//\r
+#define IPMI_BRIDGE_CLEAR_STATISTICS 0x08\r
+\r
+//\r
+//  Constants and Structure definitions for "Clear Bridge Statistics" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get Bridge Proxy Address command\r
+//\r
+#define IPMI_BRIDGE_GET_PROXY_ADDRESS  0x09\r
+\r
+//\r
+//  Constants and Structure definitions for "Get Bridge Proxy Address" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get ICMB Connector Info command\r
+//\r
+#define IPMI_BRIDGE_GET_ICMB_CONNECTOR_INFO  0x0A\r
+\r
+//\r
+//  Constants and Structure definitions for "Get ICMB Connector Info " command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get ICMB Connection ID command\r
+//\r
+#define IPMI_BRIDGE_GET_ICMB_CONNECTION_ID 0x0B\r
+\r
+//\r
+//  Constants and Structure definitions for "Get ICMB Connection ID" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get ICMB Connection ID command\r
+//\r
+#define IPMI_BRIDGE_SEND_ICMB_CONNECTION_ID  0x0C\r
+\r
+//\r
+//  Constants and Structure definitions for "Send ICMB Connection ID" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Prepare for Discoveery command\r
+//\r
+#define IPMI_BRIDGE_PREPARE_FOR_DISCOVERY  0x10\r
+\r
+//\r
+//  Constants and Structure definitions for "Prepare for Discoveery" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get Addresses command\r
+//\r
+#define IPMI_BRIDGE_GET_ADDRESSES  0x11\r
+\r
+//\r
+//  Constants and Structure definitions for "Get Addresses" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Set Discovered command\r
+//\r
+#define IPMI_BRIDGE_SET_DISCOVERED 0x12\r
+\r
+//\r
+//  Constants and Structure definitions for "Set Discovered" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get Chassis Device ID command\r
+//\r
+#define IPMI_BRIDGE_GET_CHASSIS_DEVICEID 0x13\r
+\r
+//\r
+//  Constants and Structure definitions for "Get Chassis Device ID" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Set Chassis Device ID command\r
+//\r
+#define IPMI_BRIDGE_SET_CHASSIS_DEVICEID 0x14\r
+\r
+//\r
+//  Constants and Structure definitions for "Set Chassis Device ID" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Bridge Request command\r
+//\r
+#define IPMI_BRIDGE_REQUEST  0x20\r
+\r
+//\r
+//  Constants and Structure definitions for "Bridge Request" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Bridge Message command\r
+//\r
+#define IPMI_BRIDGE_MESSAGE  0x21\r
+\r
+//\r
+//  Constants and Structure definitions for "Bridge Message" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get Event Count command\r
+//\r
+#define IPMI_BRIDGE_GET_EVENT_COUNT  0x30\r
+\r
+//\r
+//  Constants and Structure definitions for "Get Event Count" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Set Event Destination command\r
+//\r
+#define IPMI_BRIDGE_SET_EVENT_DESTINATION  0x31\r
+\r
+//\r
+//  Constants and Structure definitions for "Set Event Destination" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Set Event Reception State command\r
+//\r
+#define IPMI_BRIDGE_SET_EVENT_RECEPTION_STATE  0x32\r
+\r
+//\r
+//  Constants and Structure definitions for "Set Event Reception State" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Set Event Reception State command\r
+//\r
+#define IPMI_BRIDGE_SET_EVENT_RECEPTION_STATE  0x32\r
+\r
+//\r
+//  Constants and Structure definitions for "Set Event Reception State" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Send ICMB Event Message command\r
+//\r
+#define IPMI_BRIDGE_SEND_ICMB_EVENT_MESSAGE  0x33\r
+\r
+//\r
+//  Constants and Structure definitions for "Send ICMB Event Message" command to follow here\r
+//\r
+\r
+#endif\r
diff --git a/MdePkg/Include/IndustryStandard/IpmiNetFnChassisDefinitions.h b/MdePkg/Include/IndustryStandard/IpmiNetFnChassisDefinitions.h
new file mode 100644 (file)
index 0000000..b0b776f
--- /dev/null
@@ -0,0 +1,304 @@
+/** @file\r
+  IPMI 2.0 definitions from the IPMI Specification Version 2.0, Revision 1.1.\r
+\r
+  This file contains all NetFn Chassis commands, including:\r
+    Chassis Commands (Chapter 28)\r
+\r
+  See IPMI specification, Appendix G, Command Assignments\r
+  and Appendix H, Sub-function Assignments.\r
+\r
+  Copyright (c) 1999 - 2015, 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
+\r
+#ifndef _IPMINETFNCHASSISDEFINITIONS_H_\r
+#define _IPMINETFNCHASSISDEFINITIONS_H_\r
+\r
+#pragma pack (1)\r
+//\r
+// Net function definition for Chassis command\r
+//\r
+#define IPMI_NETFN_CHASSIS  0x00\r
+\r
+//\r
+//  Below is Definitions for Chassis commands (Chapter 28)\r
+//\r
+\r
+//\r
+//  Definitions for Get Chassis Capabilities command\r
+//\r
+#define IPMI_CHASSIS_GET_CAPABILITIES  0x00\r
+\r
+//\r
+//  Constants and Structure definitions for "Get Chassis Capabilities" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get Chassis Status command\r
+//\r
+#define IPMI_CHASSIS_GET_STATUS  0x01\r
+\r
+//\r
+//  Constants and Structure definitions for "Get Chassis Status" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Chassis Control command\r
+//\r
+#define IPMI_CHASSIS_CONTROL 0x02\r
+\r
+//\r
+//  Constants and Structure definitions for "Chassis Control" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Chassis Reset command\r
+//\r
+#define IPMI_CHASSIS_RESET 0x03\r
+\r
+//\r
+//  Constants and Structure definitions for "Chassis Reset" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Chassis Identify command\r
+//\r
+#define IPMI_CHASSIS_IDENTIFY  0x04\r
+\r
+//\r
+//  Constants and Structure definitions for "Chassis Identify" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Set Chassis Capabilities command\r
+//\r
+#define IPMI_CHASSIS_SET_CAPABILITIES  0x05\r
+\r
+//\r
+//  Constants and Structure definitions for "Set Chassis Capabilities" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Set Power Restore Policy command\r
+//\r
+#define IPMI_CHASSIS_SET_POWER_RESTORE_POLICY  0x06\r
+\r
+//\r
+//  Constants and Structure definitions for "Set Power Restore Policy" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get System Restart Cause command\r
+//\r
+#define IPMI_CHASSIS_GET_SYSTEM_RESTART_CAUSE  0x07\r
+\r
+//\r
+//  Constants and Structure definitions for "Get System Restart Cause" command to follow here\r
+//\r
+typedef enum {\r
+  Unknown,\r
+  ChassisControlCommand,\r
+  ResetViaPushButton,\r
+  PowerupViaPowerButton,\r
+  WatchdogExpiration,\r
+  Oem,\r
+  AutoPowerOnAlwaysRestore,\r
+  AutoPowerOnRestorePrevious,\r
+  ResetViaPef,\r
+  PowerCycleViaPef,\r
+  SoftReset,\r
+  PowerUpViaRtc\r
+} IPMI_SYSTEM_RESTART_CAUSE;\r
+\r
+typedef struct {\r
+  UINT8   Cause:4;\r
+  UINT8   Reserved:4;\r
+  UINT8   ChannelNumber;\r
+} GET_SYSTEM_RESTART_CAUSE_RESPONSE;\r
+\r
+//\r
+//  Definitions for Set System BOOT options command\r
+//\r
+#define IPMI_CHASSIS_SET_SYSTEM_BOOT_OPTIONS 0x08\r
+\r
+//\r
+//  Constants and Structure definitions for "Set System boot options" command to follow here\r
+//\r
+typedef struct {\r
+  UINT8    ParameterSelector:7;\r
+  UINT8    MarkParameterInvalid:1;\r
+  UINT8    ParameterData[1];\r
+} IPMI_SET_BOOT_OPTIONS_REQUEST;\r
+\r
+typedef struct {\r
+  UINT8   CompletionCode:8;\r
+} IPMI_SET_BOOT_OPTIONS_RESPONSE;\r
+\r
+//\r
+//  Definitions for Get System BOOT options command\r
+//\r
+#define IPMI_CHASSIS_GET_SYSTEM_BOOT_OPTIONS 0x09\r
+\r
+//\r
+//  Constants and Structure definitions for "Get System boot options" command to follow here\r
+//\r
+typedef struct {\r
+  UINT8 Parameter;\r
+  UINT8 Valid;\r
+  UINT8 Data1;\r
+  UINT8 Data2;\r
+  UINT8 Data3;\r
+  UINT8 Data4;\r
+  UINT8 Data5;\r
+} IPMI_GET_THE_SYSTEM_BOOT_OPTIONS;\r
+\r
+typedef struct {\r
+  UINT8   ParameterVersion;\r
+  UINT8   ParameterValid;\r
+  UINT8   ChannelNumber;\r
+  UINT32  SessionId;\r
+  UINT32  TimeStamp;\r
+  UINT8   Reserved[3];\r
+} IPMI_BOOT_INITIATOR;\r
+\r
+typedef struct {\r
+  UINT8    ParameterSelector;\r
+  UINT8    SetSelector;\r
+  UINT8    BlockSelector;\r
+} IPMI_GET_BOOT_OPTIONS_REQUEST;\r
+\r
+//\r
+// Response Parameters for IPMI Get Boot Options\r
+//\r
+typedef struct {\r
+  UINT8   SetInProgress: 2;\r
+  UINT8   Reserved: 6;\r
+} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_0;\r
+\r
+typedef struct {\r
+  UINT8   ServicePartitionSelector;\r
+} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_1;\r
+\r
+typedef struct {\r
+  UINT8   ServicePartitionDiscovered:1;\r
+  UINT8   ServicePartitionScanRequest:1;\r
+  UINT8   Reserved: 5;\r
+} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_2;\r
+\r
+typedef struct {\r
+  UINT8   BmcBootFlagValid: 5;\r
+  UINT8   Reserved: 3;\r
+} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_3;\r
+\r
+typedef struct {\r
+  UINT8   WriteMask;\r
+  UINT8   BootInitiatorAcknowledgeData;\r
+} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_4;\r
+\r
+#define BOOT_OPTION_HANDLED_BY_BIOS 0x01\r
+\r
+typedef struct {\r
+  //\r
+  // Data 1\r
+  //\r
+  UINT8   Reserved0:6;\r
+  UINT8   PersistentOptions:1;\r
+  UINT8   BootFlagValid:1;\r
+  //\r
+  // Data 2\r
+  //\r
+  UINT8   LockReset:1;\r
+  UINT8   ScreenBlank:1;\r
+  UINT8   BootDeviceSelector:4;\r
+  UINT8   LockKeyboard:1;\r
+  UINT8   CmosClear:1;\r
+  //\r
+  //\r
+  // Data 3\r
+  UINT8   ConsoleRedirection:2;\r
+  UINT8   LockSleep:1;\r
+  UINT8   UserPasswordBypass:1;\r
+  UINT8   ForceProgressEventTrap:1;\r
+  UINT8   BiosVerbosity:2;\r
+  UINT8   LockPower:1;\r
+  //\r
+  // Data 4\r
+  //\r
+  UINT8   BiosMuxControlOverride:2;\r
+  UINT8   BiosSharedModeOverride:1;\r
+  UINT8   Reserved1:4;\r
+} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5;\r
+\r
+typedef struct {\r
+  UINT8   ChannelNumber:4;\r
+  UINT8   Reserved:4;\r
+  UINT8   SessionId[4];\r
+  UINT8   BootInfoTimeStamp[4];\r
+} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_6;\r
+\r
+typedef struct {\r
+  UINT8   SetSelector;\r
+  UINT8   BlockData[16];\r
+} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_7;\r
+\r
+typedef union {\r
+  IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_0   Parm0;\r
+  IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_1   Parm1;\r
+  IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_2   Parm2;\r
+  IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_3   Parm3;\r
+  IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_4   Parm4;\r
+  IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5   Parm5;\r
+  IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_6   Parm6;\r
+  IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_7   Parm7;\r
+} IPMI_BOOT_OPTIONS_PARAMETERS;\r
+\r
+typedef struct {\r
+  UINT8    ParameterVersion:4;\r
+  UINT8    Reserved:4;\r
+  UINT8    ParameterSelector:7;\r
+  UINT8    ParameterValid:1;\r
+  UINT8    ParameterData[1];\r
+} IPMI_GET_BOOT_OPTIONS_RESPONSE;\r
+\r
+//\r
+//  Definitions for Set front panel button enables command\r
+//\r
+#define IPMI_CHASSIS_SET_FP_BUTTON_ENABLES 0x0A\r
+\r
+typedef struct {\r
+  UINT8    DisablePoweroffButton:1;\r
+  UINT8    DisableResetButton:1;\r
+  UINT8    DisableDiagnosticInterruptButton:1;\r
+  UINT8    DisableStandbyButton:1;\r
+  UINT8    Reserved:4;\r
+} IPMI_SET_FRONT_PANEL_BUTTON_ENABLES_REQUEST;\r
+\r
+//\r
+//  Constants and Structure definitions for "Set front panel button enables" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Set Power Cycle Interval command\r
+//\r
+#define IPMI_CHASSIS_SET_POWER_CYCLE_INTERVALS 0x0B\r
+\r
+//\r
+//  Constants and Structure definitions for "Set Power Cycle Interval" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get POH Counter command\r
+//\r
+#define IPMI_CHASSIS_GET_POH_COUNTER 0x0F\r
+\r
+//\r
+//  Constants and Structure definitions for "Get POH Counter" command to follow here\r
+//\r
+#pragma pack()\r
+#endif\r
diff --git a/MdePkg/Include/IndustryStandard/IpmiNetFnFirmwareDefinitions.h b/MdePkg/Include/IndustryStandard/IpmiNetFnFirmwareDefinitions.h
new file mode 100644 (file)
index 0000000..a282b1a
--- /dev/null
@@ -0,0 +1,26 @@
+/** @file\r
+  IPMI 2.0 definitions from the IPMI Specification Version 2.0, Revision 1.1.\r
+\r
+  Copyright (c) 1999 - 2015, 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
+\r
+#ifndef _IPMINETFNFIRMWAREDEFINITIONS_H_\r
+#define _IPMINETFNFIRMWAREDEFINITIONS_H_\r
+\r
+//\r
+// Net function definition for Firmware command\r
+//\r
+#define IPMI_NETFN_FIRMWARE 0x08\r
+\r
+//\r
+// All Firmware commands and their structure definitions to follow here\r
+//\r
+\r
+#endif\r
diff --git a/MdePkg/Include/IndustryStandard/IpmiNetFnGroupExtensionDefinitions.h b/MdePkg/Include/IndustryStandard/IpmiNetFnGroupExtensionDefinitions.h
new file mode 100644 (file)
index 0000000..aa97d5f
--- /dev/null
@@ -0,0 +1,26 @@
+/** @file\r
+  IPMI 2.0 definitions from the IPMI Specification Version 2.0, Revision 1.1.\r
+\r
+  Copyright (c) 1999 - 2015, 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
+\r
+#ifndef _IPMINETFNGROUPEXTDEFINITIONS_H_\r
+#define _IPMINETFNGROUPEXTDEFINITIONS_H_\r
+\r
+//\r
+// Net function definition for Group Extension command\r
+//\r
+#define IPMI_NETFN_GROUP_EXT  0x2C\r
+\r
+//\r
+// All Group Extension commands and their structure definitions to follow here\r
+//\r
+\r
+#endif\r
diff --git a/MdePkg/Include/IndustryStandard/IpmiNetFnSensorEventDefinitions.h b/MdePkg/Include/IndustryStandard/IpmiNetFnSensorEventDefinitions.h
new file mode 100644 (file)
index 0000000..0fd1d5f
--- /dev/null
@@ -0,0 +1,52 @@
+/** @file\r
+  IPMI 2.0 definitions from the IPMI Specification Version 2.0, Revision 1.1.\r
+\r
+  This file contains all NetFn Sensor/Event commands, including:\r
+    Event Commands (Chapter 29)\r
+    PEF and Alerting Commands (Chapter 30)\r
+    Sensor Device Commands (Chapter 35)\r
+\r
+  See IPMI specification, Appendix G, Command Assignments\r
+  and Appendix H, Sub-function Assignments.\r
+\r
+  Copyright (c) 1999 - 2015, 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
+\r
+#ifndef _IPMINETFNSENSORDEFINITIONS_H_\r
+#define _IPMINETFNSENSORDEFINITIONS_H_\r
+\r
+#pragma pack(1)\r
+//\r
+// Net function definition for Sensor command\r
+//\r
+#define IPMI_NETFN_SENSOR_EVENT 0x04\r
+\r
+//\r
+// All Sensor commands and their structure definitions to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Send Platform Event Message command\r
+//\r
+#define IPMI_SENSOR_PLATFORM_EVENT_MESSAGE   0x02\r
+\r
+typedef struct {\r
+  UINT8   GeneratorId;\r
+  UINT8   EvMRevision;\r
+  UINT8   SensorType;\r
+  UINT8   SensorNumber;\r
+  UINT8   EventDirType;\r
+  UINT8   OEMEvData1;\r
+  UINT8   OEMEvData2;\r
+  UINT8   OEMEvData3;\r
+} IPMI_PLATFORM_EVENT_MESSAGE_DATA;\r
+\r
+#pragma pack()\r
+#endif\r
diff --git a/MdePkg/Include/IndustryStandard/IpmiNetFnStorageDefinitions.h b/MdePkg/Include/IndustryStandard/IpmiNetFnStorageDefinitions.h
new file mode 100644 (file)
index 0000000..2395f25
--- /dev/null
@@ -0,0 +1,534 @@
+/** @file\r
+  IPMI 2.0 definitions from the IPMI Specification Version 2.0, Revision 1.1.\r
+\r
+  This file contains all NetFn Storage commands, including:\r
+    FRU Inventory Commands (Chapter 34)\r
+    SDR Repository (Chapter 33)\r
+    System Event Log(SEL) Commands (Chapter 31)\r
+\r
+  See IPMI specification, Appendix G, Command Assignments\r
+  and Appendix H, Sub-function Assignments.\r
+\r
+  Copyright (c) 1999 - 2015, 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
+\r
+#ifndef _IPMINETFNSTORAGEDEFINITIONS_H_\r
+#define _IPMINETFNSTORAGEDEFINITIONS_H_\r
+\r
+#pragma pack(1)\r
+//\r
+// Net function definition for Storage command\r
+//\r
+#define IPMI_NETFN_STORAGE  0x0A\r
+\r
+//\r
+// All Storage commands and their structure definitions to follow here\r
+//\r
+\r
+//\r
+//  Below is Definitions for FRU Inventory Commands (Chapter 34)\r
+//\r
+\r
+//\r
+//  Definitions for Get Fru Inventory Area Info command\r
+//\r
+#define IPMI_STORAGE_GET_FRU_INVENTORY_AREAINFO  0x10\r
+\r
+//\r
+//  Constants and Structure definitions for "Get Fru Inventory Area Info" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get Fru Data command\r
+//\r
+#define IPMI_STORAGE_READ_FRU_DATA 0x11\r
+\r
+//\r
+//  Constants and Structure definitions for "Get Fru Data" command to follow here\r
+//\r
+typedef struct {\r
+  UINT8   FruDeviceId;\r
+  UINT16  FruOffset;\r
+} IPMI_FRU_COMMON_DATA;\r
+\r
+typedef struct {\r
+  IPMI_FRU_COMMON_DATA Data;\r
+  UINT8                Count;\r
+} IPMI_FRU_READ_COMMAND;\r
+\r
+//\r
+//  Definitions for Write Fru Data command\r
+//\r
+#define IPMI_STORAGE_WRITE_FRU_DATA  0x12\r
+\r
+//\r
+//  Constants and Structure definitions for "Write Fru Data" command to follow here\r
+//\r
+typedef struct {\r
+  IPMI_FRU_COMMON_DATA Data;\r
+  UINT8                FruData[16];\r
+} IPMI_FRU_WRITE_COMMAND;\r
+\r
+//\r
+//  Below is Definitions for SDR Repository (Chapter 33)\r
+//\r
+\r
+//\r
+//  Definitions for Get SDR Repository Info command\r
+//\r
+#define IPMI_STORAGE_GET_SDR_REPOSITORY_INFO 0x20\r
+\r
+//\r
+//  Constants and Structure definitions for "Get SDR Repository Info" command to follow here\r
+//\r
+typedef struct {\r
+  UINT8   Version;\r
+  UINT16  RecordCount;\r
+  UINT16  FreeSpace;\r
+  UINT32  RecentAdditionTimeStamp;\r
+  UINT32  RecentEraseTimeStamp;\r
+  UINT8   SdrRepAllocInfoCmd : 1;\r
+  UINT8   SdrRepReserveCmd : 1;\r
+  UINT8   PartialAddSdrCmd : 1;\r
+  UINT8   DeleteSdrRepCmd : 1;\r
+  UINT8   Reserved : 1;\r
+  UINT8   SdrRepUpdateOp : 2;\r
+  UINT8   Overflow : 1;\r
+} IPMI_SDR_REPOSITORY_INFO;\r
+\r
+//\r
+//  Definitions for Get SDR Repository Allocateion Info command\r
+//\r
+#define IPMI_STORAGE_GET_SDR_REPOSITORY_ALLOCATION_INFO  0x21\r
+\r
+//\r
+//  Constants and Structure definitions for "Get SDR Repository Allocateion Info" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Reserve SDR Repository command\r
+//\r
+#define IPMI_STORAGE_RESERVE_SDR_REPOSITORY  0x22\r
+\r
+//\r
+//  Constants and Structure definitions for "Reserve SDR Repository" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get SDR command\r
+//\r
+#define IPMI_STORAGE_GET_SDR 0x23\r
+\r
+//\r
+//  Constants and Structure definitions for "Get SDR" command to follow here\r
+//\r
+\r
+typedef struct {\r
+  UINT16  RecordId;                     // 1\r
+  UINT8   Version;                      // 3\r
+  UINT8   RecordType;                   // 4\r
+  UINT8   RecordLength;                 // 5\r
+  UINT8   OwnerId;                      // 6\r
+  UINT8   OwnerLun;                     // 7\r
+  UINT8   SensorNumber;                 // 8\r
+  UINT8   EntityId;                     // 9\r
+  UINT8   EntityInstance;               // 10\r
+  UINT8   EventScanningEnabled : 1;     // 11\r
+  UINT8   EventScanningDisabled : 1;    // 11\r
+  UINT8   InitSensorType : 1;           // 11\r
+  UINT8   InitHysteresis : 1;           // 11\r
+  UINT8   InitThresholds : 1;           // 11\r
+  UINT8   InitEvent : 1;                // 11\r
+  UINT8   InitScanning : 1;             // 11\r
+  UINT8   Reserved : 1;                 // 11\r
+  UINT8   EventMessageControl : 2;      // 12\r
+  UINT8   ThresholdAccessSupport : 2;   // 12\r
+  UINT8   HysteresisSupport : 2;        // 12\r
+  UINT8   ReArmSupport : 1;             // 12\r
+  UINT8   IgnoreSensor : 1;             // 12\r
+  UINT8   SensorType;                   // 13\r
+  UINT8   EventType;                    // 14\r
+  UINT8   Reserved1[7];                 // 15\r
+  UINT8   UnitType;                     // 22\r
+  UINT8   Reserved2;                    // 23\r
+  UINT8   Linearization : 7;            // 24\r
+  UINT8   Reserved3 : 1;                // 24\r
+  UINT8   MLo;                          // 25\r
+  UINT8   Toleremce : 6;                // 26\r
+  UINT8   MHi : 2;                      // 26\r
+  UINT8   BLo;                          // 27\r
+  UINT8   AccuracyLow : 6;              // 28\r
+  UINT8   BHi : 2;                      // 28\r
+  UINT8   Reserved4 : 2;                // 29\r
+  UINT8   AccuracyExp : 2;              // 29\r
+  UINT8   AccuracyHi : 4;               // 29\r
+  UINT8   BExp : 4;                     // 30\r
+  UINT8   RExp : 4;                     // 30\r
+  UINT8   NominalReadingSpscified : 1;  // 31\r
+  UINT8   NominalMaxSpscified : 1;      // 31\r
+  UINT8   NominalMinSpscified : 1;      // 31\r
+  UINT8   Reserved5 : 5;                // 31\r
+  UINT8   NominalReading;               // 32\r
+  UINT8   Reserved6[4];                 // 33\r
+  UINT8   UpperNonRecoverThreshold;     // 37\r
+  UINT8   UpperCriticalThreshold;       // 38\r
+  UINT8   UpperNonCriticalThreshold;    // 39\r
+  UINT8   LowerNonRecoverThreshold;     // 40\r
+  UINT8   LowerCriticalThreshold;       // 41\r
+  UINT8   LowerNonCriticalThreshold;    // 42\r
+  UINT8   Reserved7[5];                 // 43\r
+  UINT8   IdStringLength;               // 48\r
+  UINT8   AsciiIdString[16];            // 49 - 64\r
+} IPMI_SDR_RECORD_STRUCT_1;\r
+\r
+typedef struct {\r
+  UINT16  RecordId;                     // 1\r
+  UINT8   Version;                      // 3\r
+  UINT8   RecordType;                   // 4\r
+  UINT8   RecordLength;                 // 5\r
+  UINT8   OwnerId;                      // 6\r
+  UINT8   OwnerLun;                     // 7\r
+  UINT8   SensorNumber;                 // 8\r
+  UINT8   EntityId;                     // 9\r
+  UINT8   EntityInstance;               // 10\r
+  UINT8   SensorScanning : 1;           // 11\r
+  UINT8   EventScanning : 1;            // 11\r
+  UINT8   InitSensorType : 1;           // 11\r
+  UINT8   InitHysteresis : 1;           // 11\r
+  UINT8   InitThresholds : 1;           // 11\r
+  UINT8   InitEvent : 1;                // 11\r
+  UINT8   InitScanning : 1;             // 11\r
+  UINT8   Reserved : 1;                 // 11\r
+  UINT8   EventMessageControl : 2;      // 12\r
+  UINT8   ThresholdAccessSupport : 2;   // 12\r
+  UINT8   HysteresisSupport : 2;        // 12\r
+  UINT8   ReArmSupport : 1;             // 12\r
+  UINT8   IgnoreSensor : 1;             // 12\r
+  UINT8   SensorType;                   // 13\r
+  UINT8   EventType;                    // 14\r
+  UINT8   Reserved1[7];                 // 15\r
+  UINT8   UnitType;                     // 22\r
+  UINT8   Reserved2[9];                 // 23\r
+  UINT8   IdStringLength;               // 32\r
+  UINT8   AsciiIdString[16];            // 33 - 48\r
+} IPMI_SDR_RECORD_STRUCT_2;\r
+\r
+typedef struct {\r
+  UINT8 Reserved1 : 1;\r
+  UINT8 ControllerSlaveAddress : 7;\r
+  UINT8 FruDeviceId;\r
+  UINT8 BusId : 3;\r
+  UINT8 Lun : 2;\r
+  UINT8 Reserved : 2;\r
+  UINT8 LogicalFruDevice : 1;\r
+  UINT8 Reserved3 : 4;\r
+  UINT8 ChannelNumber : 4;\r
+} IPMI_FRU_DATA_INFO;\r
+\r
+typedef struct {\r
+  UINT16            RecordId;           // 1\r
+  UINT8             Version;            // 3\r
+  UINT8             RecordType;         // 4\r
+  UINT8             RecordLength;       // 5\r
+  IPMI_FRU_DATA_INFO FruDeviceData;      // 6\r
+  UINT8             Reserved1;          // 10\r
+  UINT8             DeviceType;         // 11\r
+  UINT8             DeviceTypeModifier; // 12\r
+  UINT8             FruEntityId;        // 13\r
+  UINT8             FruEntityInstance;  // 14\r
+  UINT8             OemReserved;        // 15\r
+  UINT8             Length : 4;         // 16\r
+  UINT8             Reserved2 : 1;      // 16\r
+  UINT8             StringType : 3;     // 16\r
+  UINT8             String[16];         // 17\r
+} IPMI_SDR_RECORD_STRUCT_11;\r
+\r
+typedef struct {\r
+  UINT16              NextRecordId;       //1\r
+  UINT16              RecordId;           //3\r
+  UINT8               Version;            //5\r
+  UINT8               RecordType;         //6\r
+  UINT8               RecordLength;       //7\r
+  UINT8               ManufacturerId[3];  //8\r
+  UINT8               StringChars[20];\r
+} IPMI_SDR_RECORD_STRUCT_C0;\r
+\r
+typedef struct {\r
+  UINT16              NextRecordId;       //1\r
+  UINT16              RecordId;           //3\r
+  UINT8               Version;            //5\r
+  UINT8               RecordType;         //6\r
+  UINT8               RecordLength;       //7\r
+} IPMI_SDR_RECORD_STRUCT_HEADER;\r
+\r
+typedef union {\r
+  IPMI_SDR_RECORD_STRUCT_1  SensorType1;\r
+  IPMI_SDR_RECORD_STRUCT_2  SensorType2;\r
+  IPMI_SDR_RECORD_STRUCT_11 SensorType11;\r
+  IPMI_SDR_RECORD_STRUCT_C0       SensorTypeC0;\r
+  IPMI_SDR_RECORD_STRUCT_HEADER   SensorHeader;\r
+} IPMI_SENSOR_RECORD_STRUCT;\r
+\r
+typedef struct {\r
+  UINT16      ReservationId;\r
+  UINT16      RecordId;\r
+  UINT8       RecordOffset;\r
+  UINT8       BytesToRead;\r
+} IPMI_GET_SDR;\r
+\r
+//\r
+//  Definitions for Add SDR command\r
+//\r
+#define IPMI_STORAGE_ADD_SDR 0x24\r
+\r
+//\r
+//  Constants and Structure definitions for "Add SDR" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Partial Add SDR command\r
+//\r
+#define IPMI_STORAGE_PARTIAL_ADD_SDR 0x25\r
+\r
+//\r
+//  Constants and Structure definitions for "Partial Add SDR" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Delete SDR command\r
+//\r
+#define IPMI_STORAGE_DELETE_SDR  0x26\r
+\r
+//\r
+//  Constants and Structure definitions for "Delete SDR" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Clear SDR Repository command\r
+//\r
+#define IPMI_STORAGE_CLEAR_SDR 0x27\r
+\r
+//\r
+//  Constants and Structure definitions for "Clear SDR Repository" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get SDR Repository Time command\r
+//\r
+#define IPMI_STORAGE_GET_SDR_REPOSITORY_TIME 0x28\r
+\r
+//\r
+//  Constants and Structure definitions for "Get SDR Repository Time" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Set SDR Repository Time command\r
+//\r
+#define IPMI_STORAGE_SET_SDR_REPOSITORY_TIME 0x29\r
+\r
+//\r
+//  Constants and Structure definitions for "Set SDR Repository Time" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Enter SDR Repository Update Mode command\r
+//\r
+#define IPMI_STORAGE_ENTER_SDR_UPDATE_MODE 0x2A\r
+\r
+//\r
+//  Constants and Structure definitions for "Enter SDR Repository Update Mode" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Exit SDR Repository Update Mode command\r
+//\r
+#define IPMI_STORAGE_EXIT_SDR_UPDATE_MODE  0x2B\r
+\r
+//\r
+//  Constants and Structure definitions for "Exit SDR Repository Update Mode" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Run Initialize Agent command\r
+//\r
+#define IPMI_STORAGE_RUN_INIT_AGENT  0x2C\r
+\r
+//\r
+//  Constants and Structure definitions for "Run Initialize Agent" command to follow here\r
+//\r
+\r
+//\r
+//  Below is Definitions for System Event Log(SEL) Commands (Chapter 31)\r
+//\r
+\r
+//\r
+//  Definitions for Get SEL Info command\r
+//\r
+#define IPMI_STORAGE_GET_SEL_INFO  0x40\r
+\r
+//\r
+//  Constants and Structure definitions for "Get SEL Info" command to follow here\r
+//\r
+typedef struct {\r
+  UINT8   Version;              // Version of SEL\r
+  UINT16  NoOfEntries;          // No of Entries in the SEL\r
+  UINT16  FreeSpace;            // Free space in Bytes\r
+  UINT32  RecentAddTimeStamp;   // Most Recent Addition of Time Stamp\r
+  UINT32  RecentEraseTimeStamp; // Most Recent Erasure of Time Stamp\r
+  UINT8   OperationSupport;     // Operation Support\r
+} IPMI_SEL_INFO;\r
+\r
+//\r
+//  Definitions for Get SEL Allocation Info command\r
+//\r
+#define IPMI_STORAGE_GET_SEL_ALLOCATION_INFO 0x41\r
+\r
+//\r
+//  Constants and Structure definitions for "Get SEL Allocation Info" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Reserve SEL command\r
+//\r
+#define IPMI_STORAGE_RESERVE_SEL 0x42\r
+\r
+//\r
+//  Constants and Structure definitions for "Reserve SEL" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get SEL Entry command\r
+//\r
+#define IPMI_STORAGE_GET_SEL_ENTRY 0x43\r
+\r
+//\r
+//  Constants and Structure definitions for "Get SEL Entry" command to follow here\r
+//\r
+#define IPMI_COMPLETE_SEL_RECORD 0xFF\r
+\r
+typedef struct {\r
+  UINT8 ReserveId[2]; // Reservation ID, LS Byte First\r
+  UINT8 SelRecID[2];  // Sel Record ID, LS Byte First\r
+  UINT8 Offset;       // Offset Into Record\r
+  UINT8 BytesToRead;  // Bytes to be Read, 0xFF for entire record\r
+} IPMI_GET_SEL_ENTRY;\r
+\r
+//\r
+//  Definitions for Add SEL Entry command\r
+//\r
+#define IPMI_STORAGE_ADD_SEL_ENTRY 0x44\r
+\r
+//\r
+//  Constants and Structure definitions for "Add SEL Entry" command to follow here\r
+//\r
+typedef struct {\r
+  UINT16  RecordId;\r
+  UINT8   RecordType;\r
+  UINT32  TimeStamp;\r
+  UINT16  GeneratorId;\r
+  UINT8   EvMRevision;\r
+  UINT8   SensorType;\r
+  UINT8   SensorNumber;\r
+  UINT8   EventDirType;\r
+  UINT8   OEMEvData1;\r
+  UINT8   OEMEvData2;\r
+  UINT8   OEMEvData3;\r
+} IPMI_SEL_RECORD_DATA;\r
+\r
+#define IPMI_SEL_SYSTEM_RECORD                     0x02\r
+\r
+#define IPMI_EVM_REVISION                          0x04\r
+#define IPMI_BIOS_ID                               0x18\r
+#define IPMI_FORMAT_REV                            0x00\r
+#define IPMI_FORMAT_REV1                           0x01\r
+#define IPMI_SOFTWARE_ID                           0x01\r
+#define IPMI_PLATFORM_VAL_ID                       0x01\r
+#define IPMI_GENERATOR_ID(i,f)                     ((i << 1) | (f << 1) | IPMI_SOFTWARE_ID)\r
+\r
+#define IPMI_SENSOR_TYPE_EVENT_CODE_DISCRETE       0x6F\r
+\r
+#define IPMI_OEM_SPECIFIC_DATA                     0x02\r
+#define IPMI_SENSOR_SPECIFIC_DATA                  0x03\r
+\r
+//\r
+//  Definitions for Partial Add SEL Entry command\r
+//\r
+#define IPMI_STORAGE_PARTIAL_ADD_SEL_ENTRY 0x45\r
+\r
+//\r
+//  Constants and Structure definitions for "Partial Add SEL Entry" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Delete SEL Entry command\r
+//\r
+#define IPMI_STORAGE_DELETE_SEL_ENTRY  0x46\r
+\r
+//\r
+//  Constants and Structure definitions for "Delete SEL Entry" command to follow here\r
+//\r
+typedef struct {\r
+  UINT8 ReserveId[2];       // Reservation ID, LS byte first\r
+  UINT8 RecordToDelete[2];  // Record to Delete, LS Byte First\r
+} IPMI_DELETE_SEL;\r
+\r
+//\r
+//  Definitions for Clear SEL command\r
+//\r
+#define IPMI_STORAGE_CLEAR_SEL 0x47\r
+\r
+//\r
+//  Constants and Structure definitions for "Clear SEL" command to follow here\r
+//\r
+typedef struct {\r
+  UINT8 Reserve[2]; // Reserve ID, LSB first\r
+  UINT8 AscC;       // Ascii for 'C' (0x43)\r
+  UINT8 AscL;       // Ascii for 'L' (0x4c)\r
+  UINT8 AscR;       // Ascii for 'R' (0x52)\r
+  UINT8 Erase;      // 0xAA, Initiate Erase, 0x00 Get Erase Status\r
+} IPMI_CLEAR_SEL;\r
+\r
+//\r
+//  Definitions for Get SEL Time command\r
+//\r
+#define IPMI_STORAGE_GET_SEL_TIME  0x48\r
+\r
+//\r
+//  Constants and Structure definitions for "Get SEL Time" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Set SEL Time command\r
+//\r
+#define IPMI_STORAGE_SET_SEL_TIME  0x49\r
+\r
+//\r
+//  Constants and Structure definitions for "Set SEL Time" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get Auxillary Log Status command\r
+//\r
+#define IPMI_STORAGE_GET_AUXILLARY_LOG_STATUS  0x5A\r
+\r
+//\r
+//  Constants and Structure definitions for "Get Auxillary Log Status" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Set Auxillary Log Status command\r
+//\r
+#define IPMI_STORAGE_SET_AUXILLARY_LOG_STATUS  0x5B\r
+\r
+//\r
+//  Constants and Structure definitions for "Set Auxillary Log Status" command to follow here\r
+//\r
+#pragma pack()\r
+#endif\r
diff --git a/MdePkg/Include/IndustryStandard/IpmiNetFnTransportDefinitions.h b/MdePkg/Include/IndustryStandard/IpmiNetFnTransportDefinitions.h
new file mode 100644 (file)
index 0000000..929b506
--- /dev/null
@@ -0,0 +1,556 @@
+/** @file\r
+  IPMI 2.0 definitions from the IPMI Specification Version 2.0, Revision 1.1.\r
+\r
+  This file contains all NetFn Transport commands, including:\r
+    IPM LAN Commands (Chapter 23)\r
+    IPMI Serial/Modem Commands (Chapter 25)\r
+    SOL Commands (Chapter 26)\r
+    Command Forwarding Commands (Chapter 35b)\r
+\r
+  See IPMI specification, Appendix G, Command Assignments\r
+  and Appendix H, Sub-function Assignments.\r
+\r
+  Copyright (c) 1999 - 2015, 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
+\r
+#ifndef _IPMINETFNTRANSPORTDEFINITIONS_H_\r
+#define _IPMINETFNTRANSPORTDEFINITIONS_H_\r
+\r
+#pragma pack(1)\r
+//\r
+// Net function definition for Transport command\r
+//\r
+#define IPMI_NETFN_TRANSPORT  0x0C\r
+\r
+//\r
+//  Below is Definitions for IPM LAN Commands (Chapter 23)\r
+//\r
+\r
+//\r
+//  Definitions for Set Lan Configuration Parameters command\r
+//\r
+#define IPMI_TRANSPORT_SET_LAN_CONFIG_PARAMETERS 0x01\r
+\r
+//\r
+//  Constants and Structure definitions for "Set Lan Configuration Parameters" command to follow here\r
+//\r
+\r
+//\r
+// LAN Management Structure\r
+//\r
+typedef enum {\r
+  IpmiLanReserved1,\r
+  IpmiLanReserved2,\r
+  IpmiLanAuthType,\r
+  IpmiLanIpAddress,\r
+  IpmiLanIpAddressSource,\r
+  IpmiLanMacAddress,\r
+  IpmiLanSubnetMask,\r
+  IpmiLanIpv4HeaderParam,\r
+  IpmiLanPrimaryRcmpPort,\r
+  IpmiLanSecondaryRcmpPort,\r
+  IpmiLanBmcGeneratedArpCtrl,\r
+  IpmiLanArpInterval,\r
+  IpmiLanDefaultGateway,\r
+  IpmiLanDefaultGatewayMac,\r
+  IpmiLanBackupGateway,\r
+  IpmiLanBackupGatewayMac,\r
+  IpmiLanCommunityString,\r
+  IpmiLanReserved3,\r
+  IpmiLanDestinationType,\r
+  IpmiLanDestinationAddress\r
+} IPMI_LAN_OPTION_TYPE;\r
+\r
+//\r
+// IP Address Source\r
+//\r
+typedef enum {\r
+  IpmiUnspecified,\r
+  IpmiStaticAddrsss,\r
+  IpmiDynamicAddressBmcDhcp,\r
+  IpmiDynamicAddressBiosDhcp,\r
+  IpmiDynamicAddressBmcNonDhcp\r
+} IPMI_IP_ADDRESS_SRC;\r
+\r
+//\r
+// Destination Type\r
+//\r
+typedef enum {\r
+  IpmiPetTrapDestination,\r
+  IpmiDirectedEventDestination,\r
+  IpmiReserved1,\r
+  IpmiReserved2,\r
+  IpmiReserved3,\r
+  IpmiReserved4,\r
+  IpmiReserved5,\r
+  IpmiOem1,\r
+  IpmiOem2\r
+} IPMI_LAN_DEST_TYPE_DEST_TYPE;\r
+\r
+typedef struct {\r
+  UINT8 NoAuth : 1;\r
+  UINT8 MD2Auth : 1;\r
+  UINT8 MD5Auth : 1;\r
+  UINT8 Reserved1 : 1;\r
+  UINT8 StraightPswd : 1;\r
+  UINT8 OemType : 1;\r
+  UINT8 Reserved2 : 2;\r
+} IPMI_LAN_AUTH_TYPE;\r
+\r
+typedef struct {\r
+  UINT8 IpAddress[4];\r
+} IPMI_LAN_IP_ADDRESS;\r
+\r
+typedef struct {\r
+  UINT8 AddressSrc : 4;\r
+  UINT8 Reserved : 4;\r
+} IPMI_LAN_IP_ADDRESS_SRC;\r
+\r
+typedef struct {\r
+  UINT8 MacAddress[6];\r
+} IPMI_LAN_MAC_ADDRESS;\r
+\r
+typedef struct {\r
+  UINT8 IpAddress[4];\r
+} IPMI_LAN_SUBNET_MASK;\r
+\r
+typedef struct {\r
+  UINT8 TimeToLive;\r
+  UINT8 IpFlag : 3;\r
+  UINT8 Reserved1 : 5;\r
+  UINT8 Precedence : 3;\r
+  UINT8 Reserved2 : 1;\r
+  UINT8 ServiceType : 4;\r
+} IPMI_LAN_IPV4_HDR_PARAM;\r
+\r
+typedef struct {\r
+  UINT8 RcmpPortMsb;\r
+  UINT8 RcmpPortLsb;\r
+} IPMI_LAN_RCMP_PORT;\r
+\r
+typedef struct {\r
+  UINT8 EnableBmcArpResponse : 1;\r
+  UINT8 EnableBmcGratuitousArp : 1;\r
+  UINT8 Reserved : 6;\r
+} IPMI_LAN_BMC_GENERATED_ARP_CONTROL;\r
+\r
+typedef struct {\r
+  UINT8 ArpInterval;\r
+} IPMI_LAN_ARP_INTERVAL;\r
+\r
+typedef struct {\r
+  UINT8 Data[18];\r
+} IPMI_LAN_COMMUNITY_STRING;\r
+\r
+typedef struct {\r
+  UINT8 DestinationSelector : 4;\r
+  UINT8 Reserved2 : 4;\r
+  UINT8 DestinationType : 3;\r
+  UINT8 Reserved1 : 4;\r
+  UINT8 AlertAcknowledged : 1;\r
+} IPMI_LAN_DEST_TYPE;\r
+\r
+typedef struct {\r
+  UINT8               DestinationSelector : 4;\r
+  UINT8               Reserved1 : 4;\r
+  UINT8               AlertingIpAddressSelector : 4;\r
+  UINT8               AddressFormat : 4;\r
+  UINT8               UseDefaultGateway : 1;\r
+  UINT8               Reserved2 : 7;\r
+  IPMI_LAN_IP_ADDRESS  AlertingIpAddress;\r
+  IPMI_LAN_MAC_ADDRESS AlertingMacAddress;\r
+} IPMI_LAN_DEST_ADDRESS;\r
+\r
+typedef union {\r
+  IPMI_LAN_AUTH_TYPE                 IpmiLanAuthType;\r
+  IPMI_LAN_IP_ADDRESS                IpmiLanIpAddress;\r
+  IPMI_LAN_IP_ADDRESS_SRC            IpmiLanIpAddressSrc;\r
+  IPMI_LAN_MAC_ADDRESS               IpmiLanMacAddress;\r
+  IPMI_LAN_SUBNET_MASK               IpmiLanSubnetMask;\r
+  IPMI_LAN_IPV4_HDR_PARAM            IpmiLanIpv4HdrParam;\r
+  IPMI_LAN_RCMP_PORT                 IpmiLanPrimaryRcmpPort;\r
+  IPMI_LAN_BMC_GENERATED_ARP_CONTROL IpmiLanArpControl;\r
+  IPMI_LAN_ARP_INTERVAL              IpmiLanArpInterval;\r
+  IPMI_LAN_COMMUNITY_STRING          IpmiLanCommunityString;\r
+  IPMI_LAN_DEST_TYPE                 IpmiLanDestType;\r
+  IPMI_LAN_DEST_ADDRESS              IpmiLanDestAddress;\r
+} IPMI_LAN_OPTIONS;\r
+\r
+//\r
+//  Definitions for Get Lan Configuration Parameters command\r
+//\r
+#define IPMI_TRANSPORT_GET_LAN_CONFIG_PARAMETERS 0x02\r
+\r
+//\r
+//  Constants and Structure definitions for "Get Lan Configuration Parameters" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Suspend BMC ARPs command\r
+//\r
+#define IPMI_TRANSPORT_SUSPEND_BMC_ARPS  0x03\r
+\r
+//\r
+//  Constants and Structure definitions for "Suspend BMC ARPs" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get IP-UDP-RMCP Statistics command\r
+//\r
+#define IPMI_TRANSPORT_GET_PACKET_STATISTICS 0x04\r
+\r
+//\r
+//  Constants and Structure definitions for "Get IP-UDP-RMCP Statistics" command to follow here\r
+//\r
+\r
+//\r
+//  Below is Definitions for IPMI Serial/Modem Commands (Chapter 25)\r
+//\r
+\r
+//\r
+//  Definitions for Set Serial/Modem Configuration command\r
+//\r
+#define IPMI_TRANSPORT_SET_SERIAL_CONFIGURATION  0x10\r
+\r
+//\r
+//  Constants and Structure definitions for "Set Serial/Modem Configuration" command to follow here\r
+//\r
+\r
+//\r
+// EMP OPTION DATA\r
+//\r
+typedef struct {\r
+  UINT8 NoAuthentication : 1;\r
+  UINT8 MD2Authentication : 1;\r
+  UINT8 MD5Authentication : 1;\r
+  UINT8 Reserved1 : 1;\r
+  UINT8 StraightPassword : 1;\r
+  UINT8 OemProprietary : 1;\r
+  UINT8 Reservd2 : 2;\r
+} IPMI_EMP_AUTH_TYPE;\r
+\r
+typedef struct {\r
+  UINT8 EnableBasicMode : 1;\r
+  UINT8 EnablePPPMode : 1;\r
+  UINT8 EnableTerminalMode : 1;\r
+  UINT8 Reserved1 : 2;\r
+  UINT8 SnoopOsPPPNegotiation : 1;\r
+  UINT8 Reserved2 : 1;\r
+  UINT8 DirectConnect : 1;\r
+} IPMI_EMP_CONNECTION_TYPE;\r
+\r
+typedef struct {\r
+  UINT8 InactivityTimeout : 4;\r
+  UINT8 Reserved : 4;\r
+} IPMI_EMP_INACTIVITY_TIMEOUT;\r
+\r
+typedef struct {\r
+  UINT8 IpmiCallback : 1;\r
+  UINT8 CBCPCallback : 1;\r
+  UINT8 Reserved1 : 6;\r
+  UINT8 CbcpEnableNoCallback : 1;\r
+  UINT8 CbcpEnablePreSpecifiedNumber : 1;\r
+  UINT8 CbcpEnableUserSpecifiedNumber : 1;\r
+  UINT8 CbcpEnableCallbackFromList : 1;\r
+  UINT8 Reserved : 4;\r
+  UINT8 CallbackDestination1;\r
+  UINT8 CallbackDestination2;\r
+  UINT8 CallbackDestination3;\r
+} IPMI_EMP_CHANNEL_CALLBACK_CONTROL;\r
+\r
+typedef struct {\r
+  UINT8 CloseSessionOnDCDLoss : 1;\r
+  UINT8 EnableSessionInactivityTimeout : 1;\r
+  UINT8 Reserved : 6;\r
+} IPMI_EMP_SESSION_TERMINATION;\r
+\r
+typedef struct {\r
+  UINT8 Reserved1 : 5;\r
+  UINT8 EnableDtrHangup : 1;\r
+  UINT8 FlowControl : 2;\r
+  UINT8 BitRate : 4;\r
+  UINT8 Reserved2 : 4;\r
+  UINT8 SaveSetting : 1;\r
+  UINT8 SetComPort : 1;\r
+  UINT8 Reserved3 : 6;\r
+} IPMI_EMP_MESSAGING_COM_SETTING;\r
+\r
+typedef struct {\r
+  UINT8 RingDurationInterval : 6;\r
+  UINT8 Reserved1 : 2;\r
+  UINT8 RingDeadTime : 4;\r
+  UINT8 Reserved : 4;\r
+} IPMI_EMP_MODEM_RING_TIME;\r
+\r
+typedef struct {\r
+  UINT8 Reserved;\r
+  UINT8 InitString[48];\r
+} IPMI_EMP_MODEM_INIT_STRING;\r
+\r
+typedef struct {\r
+  UINT8 EscapeSequence[5];\r
+} IPMI_EMP_MODEM_ESC_SEQUENCE;\r
+\r
+typedef struct {\r
+  UINT8 HangupSequence[8];\r
+} IPMI_EMP_MODEM_HANGUP_SEQUENCE;\r
+\r
+typedef struct {\r
+  UINT8 ModelDialCommend[8];\r
+} IPMI_MODEM_DIALUP_COMMAND;\r
+\r
+typedef struct {\r
+  UINT8 PageBlackoutInterval;\r
+} IPMI_PAGE_BLACKOUT_INTERVAL;\r
+\r
+typedef struct {\r
+  UINT8 CommunityString[18];\r
+} IPMI_EMP_COMMUNITY_STRING;\r
+\r
+typedef struct {\r
+  UINT8 DestinationSelector : 4;\r
+  UINT8 Reserved1 : 4;\r
+  UINT8 DestinationType : 4;\r
+  UINT8 Reserved2 : 3;\r
+  UINT8 AlertAckRequired : 1;\r
+  UINT8 AlertAckTimeoutSeconds;\r
+  UINT8 NumRetriesCall : 3;\r
+  UINT8 Reserved3 : 1;\r
+  UINT8 NumRetryAlert : 3;\r
+  UINT8 Reserved4 : 1;\r
+  union {\r
+    struct {\r
+      UINT8 Reserved5 : 4;\r
+      UINT8 DialStringSelector : 4;\r
+    } DIAL_PAGE_DESTINATION;\r
+    struct {\r
+      UINT8 TapAccountSelector : 4;\r
+      UINT8 Reserved : 4;\r
+    } TAP_PAGE_DESTINATION;\r
+    struct {\r
+      UINT8 PPPAccountSetSelector;\r
+      UINT8 DialStringSelector;\r
+    } PPP_ALERT_DESTINATION;\r
+  } DEST_TYPE_SPECIFIC;\r
+} IPMI_EMP_DESTINATION_INFO;\r
+\r
+typedef struct {\r
+  UINT8 DestinationSelector : 4;\r
+  UINT8 Reserved1 : 4;\r
+  UINT8 Parity : 3;\r
+  UINT8 CharacterSize : 1;\r
+  UINT8 StopBit : 1;\r
+  UINT8 DtrHangup : 1;\r
+  UINT8 FlowControl : 2;\r
+  UINT8 BitRate : 4;\r
+  UINT8 Reserved2 : 4;\r
+  UINT8 SaveSetting : 1;\r
+  UINT8 SetComPort : 1;\r
+  UINT8 Reserved3 : 6;\r
+} IPMI_EMP_DESTINATION_COM_SETTING;\r
+\r
+typedef struct {\r
+  UINT8 DialStringSelector : 4;\r
+  UINT8 Reserved1 : 4;\r
+  UINT8 Reserved2;\r
+  UINT8 DialString[48];\r
+} IPMI_DESTINATION_DIAL_STRING;\r
+\r
+typedef struct {\r
+  UINT8 IpAddressSelector : 4;\r
+  UINT8 Reserved1 : 4;\r
+  union {\r
+    UINT32  IpAddressLong;\r
+    UINT8   IpAddress[4];\r
+  } PPP_IP_ADDRESS;\r
+} IPMI_DESTINATION_IP_ADDRESS;\r
+\r
+typedef struct {\r
+  UINT8 TapSelector;\r
+  UINT8 TapServiceSelector : 4;\r
+  UINT8 TapDialStringSelector : 4;\r
+} IPMI_DESTINATION_TAP_ACCOUNT;\r
+\r
+typedef struct {\r
+  UINT8 TapSelector;\r
+  UINT8 PagerIdString[16];\r
+} IPMI_TAP_PAGER_ID_STRING;\r
+\r
+typedef union {\r
+  UINT8                              OptionData;\r
+  IPMI_EMP_AUTH_TYPE                 EmpAuthType;\r
+  IPMI_EMP_CONNECTION_TYPE           EmpConnectionType;\r
+  IPMI_EMP_INACTIVITY_TIMEOUT        EmpInactivityTimeout;\r
+  IPMI_EMP_CHANNEL_CALLBACK_CONTROL  EmpCallbackControl;\r
+  IPMI_EMP_SESSION_TERMINATION       EmpSessionTermination;\r
+  IPMI_EMP_MESSAGING_COM_SETTING     EmpMessagingComSetting;\r
+  IPMI_EMP_MODEM_RING_TIME           EmpModemRingTime;\r
+  IPMI_EMP_MODEM_INIT_STRING         EmpModemInitString;\r
+  IPMI_EMP_MODEM_ESC_SEQUENCE        EmpModemEscSequence;\r
+  IPMI_EMP_MODEM_HANGUP_SEQUENCE     EmpModemHangupSequence;\r
+  IPMI_MODEM_DIALUP_COMMAND          EmpModemDialupCommand;\r
+  IPMI_PAGE_BLACKOUT_INTERVAL        EmpPageBlackoutInterval;\r
+  IPMI_EMP_COMMUNITY_STRING          EmpCommunityString;\r
+  IPMI_EMP_DESTINATION_INFO          EmpDestinationInfo;\r
+  IPMI_EMP_DESTINATION_COM_SETTING   EmpDestinationComSetting;\r
+  UINT8                              CallRetryBusySignalInterval;\r
+  IPMI_DESTINATION_DIAL_STRING       DestinationDialString;\r
+  IPMI_DESTINATION_IP_ADDRESS        DestinationIpAddress;\r
+  IPMI_DESTINATION_TAP_ACCOUNT       DestinationTapAccount;\r
+  IPMI_TAP_PAGER_ID_STRING           TapPagerIdString;\r
+} IPMI_EMP_OPTIONS;\r
+\r
+//\r
+//  Definitions for Get Serial/Modem Configuration command\r
+//\r
+#define IPMI_TRANSPORT_GET_SERIAL_CONFIGURATION  0x11\r
+\r
+//\r
+//  Constants and Structure definitions for "Get Serial/Modem Configuration" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Set Serial/Modem Mux command\r
+//\r
+#define IPMI_TRANSPORT_SET_SERIAL_MUX  0x12\r
+\r
+//\r
+//  Constants and Structure definitions for "Set Serial/Modem Mux" command to follow here\r
+//\r
+typedef struct {\r
+  UINT8 ChannelNo : 4;\r
+  UINT8 Reserved1 : 4;\r
+  UINT8 MuxSetting : 4;\r
+  UINT8 Reserved2 : 4;\r
+} IPMI_SET_MUX_COMMAND;\r
+\r
+typedef struct {\r
+  UINT8 MuxSetToBmc : 1;\r
+  UINT8 CommandStatus : 1;\r
+  UINT8 MessagingSessionActive : 1;\r
+  UINT8 AlertInProgress : 1;\r
+  UINT8 Reserved2 : 2;\r
+  UINT8 MuxToBmcAllowed : 1;\r
+  UINT8 MuxToSystemBlocked : 1;\r
+} IPMI_MUX_CONFIG;\r
+\r
+//\r
+//  Definitions for Get TAP Response Code command\r
+//\r
+#define IPMI_TRANSPORT_GET_TAP_RESPONSE_CODE 0x13\r
+\r
+//\r
+//  Constants and Structure definitions for "Get TAP Response Code" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Set PPP UDP Proxy Transmit Data command\r
+//\r
+#define IPMI_TRANSPORT_SET_PPP_UDP_PROXY_TXDATA  0x14\r
+\r
+//\r
+//  Constants and Structure definitions for "Set PPP UDP Proxy Transmit Data" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get PPP UDP Proxy Transmit Data command\r
+//\r
+#define IPMI_TRANSPORT_GET_PPP_UDP_PROXY_TXDATA  0x15\r
+\r
+//\r
+//  Constants and Structure definitions for "Get PPP UDP Proxy Transmit Data" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Send PPP UDP Proxy Packet command\r
+//\r
+#define IPMI_TRANSPORT_SEND_PPP_UDP_PROXY_PACKET 0x16\r
+\r
+//\r
+//  Constants and Structure definitions for "Send PPP UDP Proxy Packet" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get PPP UDP Proxy Receive Data command\r
+//\r
+#define IPMI_TRANSPORT_GET_PPP_UDP_PROXY_RX  0x17\r
+\r
+//\r
+//  Constants and Structure definitions for "Get PPP UDP Proxy Receive Data" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Serial/Modem connection active command\r
+//\r
+#define IPMI_TRANSPORT_SERIAL_CONNECTION_ACTIVE  0x18\r
+\r
+//\r
+//  Constants and Structure definitions for "Serial/Modem connection active" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Callback command\r
+//\r
+#define IPMI_TRANSPORT_CALLBACK  0x19\r
+\r
+//\r
+//  Constants and Structure definitions for "Callback" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Set user Callback Options command\r
+//\r
+#define IPMI_TRANSPORT_SET_USER_CALLBACK_OPTIONS 0x1A\r
+\r
+//\r
+//  Constants and Structure definitions for "Set user Callback Options" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get user Callback Options command\r
+//\r
+#define IPMI_TRANSPORT_GET_USER_CALLBACK_OPTIONS 0x1B\r
+\r
+//\r
+//  Constants and Structure definitions for "Get user Callback Options" command to follow here\r
+//\r
+\r
+//\r
+//  Below is Definitions for SOL Commands (Chapter 26)\r
+//\r
+\r
+//\r
+//  Definitions for SOL activating command\r
+//\r
+#define IPMI_TRANSPORT_SOL_ACTIVATING  0x20\r
+\r
+//\r
+//  Constants and Structure definitions for "SOL activating" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Set SOL Configuration Parameters command\r
+//\r
+#define IPMI_TRANSPORT_SET_SOL_CONFIG_PARAM  0x21\r
+\r
+//\r
+//  Constants and Structure definitions for "Set SOL Configuration Parameters" command to follow here\r
+//\r
+\r
+//\r
+//  Definitions for Get SOL Configuration Parameters command\r
+//\r
+#define IPMI_TRANSPORT_GET_SOL_CONFIG_PARAM  0x22\r
+\r
+//\r
+//  Constants and Structure definitions for "Get SOL Configuration Parameters" command to follow here\r
+//\r
+#pragma pack()\r
+#endif\r