aboutsummaryrefslogtreecommitdiffstats
path: root/MdePkg/Include/IndustryStandard/IpmiNetFnStorage.h
diff options
context:
space:
mode:
Diffstat (limited to 'MdePkg/Include/IndustryStandard/IpmiNetFnStorage.h')
-rw-r--r--MdePkg/Include/IndustryStandard/IpmiNetFnStorage.h587
1 files changed, 414 insertions, 173 deletions
diff --git a/MdePkg/Include/IndustryStandard/IpmiNetFnStorage.h b/MdePkg/Include/IndustryStandard/IpmiNetFnStorage.h
index 210db1e7e933..c69df8f303fe 100644
--- a/MdePkg/Include/IndustryStandard/IpmiNetFnStorage.h
+++ b/MdePkg/Include/IndustryStandard/IpmiNetFnStorage.h
@@ -10,14 +10,8 @@
See IPMI specification, Appendix G, Command Assignments
and Appendix H, Sub-function Assignments.
- Copyright (c) 1999 - 2015, 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.
+ Copyright (c) 1999 - 2018, Intel Corporation. All rights reserved.<BR>
+ SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef _IPMI_NET_FN_STORAGE_H_
@@ -45,14 +39,23 @@
//
// Constants and Structure definitions for "Get Fru Inventory Area Info" command to follow here
//
+typedef struct {
+ UINT8 DeviceId;
+} IPMI_GET_FRU_INVENTORY_AREA_INFO_REQUEST;
+
+typedef struct {
+ UINT8 CompletionCode;
+ UINT16 InventoryAreaSize;
+ UINT8 AccessType;
+} IPMI_GET_FRU_INVENTORY_AREA_INFO_RESPONSE;
//
-// Definitions for Get Fru Data command
+// Definitions for Read Fru Data command
//
#define IPMI_STORAGE_READ_FRU_DATA 0x11
//
-// Constants and Structure definitions for "Get Fru Data" command to follow here
+// Constants and Structure definitions for "Read Fru Data" command to follow here
//
typedef struct {
UINT8 FruDeviceId;
@@ -64,6 +67,18 @@ typedef struct {
UINT8 Count;
} IPMI_FRU_READ_COMMAND;
+typedef struct {
+ UINT8 DeviceId;
+ UINT16 InventoryOffset;
+ UINT8 CountToRead;
+} IPMI_READ_FRU_DATA_REQUEST;
+
+typedef struct {
+ UINT8 CompletionCode;
+ UINT8 CountReturned;
+ UINT8 Data[0];
+} IPMI_READ_FRU_DATA_RESPONSE;
+
//
// Definitions for Write Fru Data command
//
@@ -77,6 +92,17 @@ typedef struct {
UINT8 FruData[16];
} IPMI_FRU_WRITE_COMMAND;
+typedef struct {
+ UINT8 DeviceId;
+ UINT16 InventoryOffset;
+ UINT8 Data[0];
+} IPMI_WRITE_FRU_DATA_REQUEST;
+
+typedef struct {
+ UINT8 CompletionCode;
+ UINT8 CountWritten;
+} IPMI_WRITE_FRU_DATA_RESPONSE;
+
//
// Below is Definitions for SDR Repository (Chapter 33)
//
@@ -89,21 +115,28 @@ typedef struct {
//
// Constants and Structure definitions for "Get SDR Repository Info" command to follow here
//
+typedef union {
+ struct {
+ UINT8 SdrRepAllocInfoCmd : 1;
+ UINT8 SdrRepReserveCmd : 1;
+ UINT8 PartialAddSdrCmd : 1;
+ UINT8 DeleteSdrRepCmd : 1;
+ UINT8 Reserved : 1;
+ UINT8 SdrRepUpdateOp : 2;
+ UINT8 Overflow : 1;
+ } Bits;
+ UINT8 Uint8;
+} IPMI_SDR_OPERATION_SUPPORT;
+
typedef struct {
- UINT8 CompletionCode;
- UINT8 Version;
- UINT16 RecordCount;
- UINT16 FreeSpace;
- UINT32 RecentAdditionTimeStamp;
- UINT32 RecentEraseTimeStamp;
- UINT8 SdrRepAllocInfoCmd : 1;
- UINT8 SdrRepReserveCmd : 1;
- UINT8 PartialAddSdrCmd : 1;
- UINT8 DeleteSdrRepCmd : 1;
- UINT8 Reserved : 1;
- UINT8 SdrRepUpdateOp : 2;
- UINT8 Overflow : 1;
-} IPMI_GET_SDR_REPOSITORY_INFO;
+ UINT8 CompletionCode;
+ UINT8 Version;
+ UINT16 RecordCount;
+ UINT16 FreeSpace;
+ UINT32 RecentAdditionTimeStamp;
+ UINT32 RecentEraseTimeStamp;
+ IPMI_SDR_OPERATION_SUPPORT OperationSupport;
+} IPMI_GET_SDR_REPOSITORY_INFO_RESPONSE;
//
// Definitions for Get SDR Repository Allocateion Info command
@@ -122,6 +155,10 @@ typedef struct {
//
// Constants and Structure definitions for "Reserve SDR Repository" command to follow here
//
+typedef struct {
+ UINT8 CompletionCode;
+ UINT8 ReservationId[2]; // Reservation ID. LS byte first.
+} IPMI_RESERVE_SDR_REPOSITORY_RESPONSE;
//
// Definitions for Get SDR command
@@ -131,149 +168,201 @@ typedef struct {
//
// Constants and Structure definitions for "Get SDR" command to follow here
//
+typedef union {
+ struct {
+ UINT8 EventScanningEnabled : 1;
+ UINT8 EventScanningDisabled : 1;
+ UINT8 InitSensorType : 1;
+ UINT8 InitHysteresis : 1;
+ UINT8 InitThresholds : 1;
+ UINT8 InitEvent : 1;
+ UINT8 InitScanning : 1;
+ UINT8 SettableSensor : 1;
+ } Bits;
+ UINT8 Uint8;
+} IPMI_SDR_RECORD_SENSOR_INIT;
+
+typedef union {
+ struct {
+ UINT8 EventMessageControl : 2;
+ UINT8 ThresholdAccessSupport : 2;
+ UINT8 HysteresisSupport : 2;
+ UINT8 ReArmSupport : 1;
+ UINT8 IgnoreSensor : 1;
+ } Bits;
+ UINT8 Uint8;
+} IPMI_SDR_RECORD_SENSOR_CAP;
+
+typedef union {
+ struct {
+ UINT8 Linearization : 7;
+ UINT8 Reserved : 1;
+ } Bits;
+ UINT8 Uint8;
+} IPMI_SDR_RECORD_LINEARIZATION;
+
+typedef union {
+ struct {
+ UINT8 Toleremce : 6;
+ UINT8 MHi : 2;
+ } Bits;
+ UINT8 Uint8;
+} IPMI_SDR_RECORD_M_TOLERANCE;
+
+typedef union {
+ struct {
+ UINT8 AccuracyLow : 6;
+ UINT8 BHi : 2;
+ } Bits;
+ UINT8 Uint8;
+} IPMI_SDR_RECORD_B_ACCURACY;
+
+typedef union {
+ struct {
+ UINT8 Reserved : 2;
+ UINT8 AccuracyExp : 2;
+ UINT8 AccuracyHi : 4;
+ } Bits;
+ UINT8 Uint8;
+} IPMI_SDR_RECORD_ACCURACY_SENSOR_DIR;
+
+typedef union {
+ struct {
+ UINT8 BExp : 4;
+ UINT8 RExp : 4;
+ } Bits;
+ UINT8 Uint8;
+} IPMI_SDR_RECORD_R_EXP_B_EXP;
+
+typedef union {
+ struct {
+ UINT8 NominalReadingSpscified : 1;
+ UINT8 NominalMaxSpscified : 1;
+ UINT8 NominalMinSpscified : 1;
+ UINT8 Reserved : 5;
+ } Bits;
+ UINT8 Uint8;
+} IPMI_SDR_RECORD_ANALOG_FLAGS;
typedef struct {
- UINT16 RecordId; // 1
- UINT8 Version; // 3
- UINT8 RecordType; // 4
- UINT8 RecordLength; // 5
- UINT8 OwnerId; // 6
- UINT8 OwnerLun; // 7
- UINT8 SensorNumber; // 8
- UINT8 EntityId; // 9
- UINT8 EntityInstance; // 10
- UINT8 EventScanningEnabled : 1; // 11
- UINT8 EventScanningDisabled : 1; // 11
- UINT8 InitSensorType : 1; // 11
- UINT8 InitHysteresis : 1; // 11
- UINT8 InitThresholds : 1; // 11
- UINT8 InitEvent : 1; // 11
- UINT8 InitScanning : 1; // 11
- UINT8 Reserved : 1; // 11
- UINT8 EventMessageControl : 2; // 12
- UINT8 ThresholdAccessSupport : 2; // 12
- UINT8 HysteresisSupport : 2; // 12
- UINT8 ReArmSupport : 1; // 12
- UINT8 IgnoreSensor : 1; // 12
- UINT8 SensorType; // 13
- UINT8 EventType; // 14
- UINT8 Reserved1[7]; // 15
- UINT8 UnitType; // 22
- UINT8 Reserved2; // 23
- UINT8 Linearization : 7; // 24
- UINT8 Reserved3 : 1; // 24
- UINT8 MLo; // 25
- UINT8 Toleremce : 6; // 26
- UINT8 MHi : 2; // 26
- UINT8 BLo; // 27
- UINT8 AccuracyLow : 6; // 28
- UINT8 BHi : 2; // 28
- UINT8 Reserved4 : 2; // 29
- UINT8 AccuracyExp : 2; // 29
- UINT8 AccuracyHi : 4; // 29
- UINT8 BExp : 4; // 30
- UINT8 RExp : 4; // 30
- UINT8 NominalReadingSpscified : 1; // 31
- UINT8 NominalMaxSpscified : 1; // 31
- UINT8 NominalMinSpscified : 1; // 31
- UINT8 Reserved5 : 5; // 31
- UINT8 NominalReading; // 32
- UINT8 Reserved6[4]; // 33
- UINT8 UpperNonRecoverThreshold; // 37
- UINT8 UpperCriticalThreshold; // 38
- UINT8 UpperNonCriticalThreshold; // 39
- UINT8 LowerNonRecoverThreshold; // 40
- UINT8 LowerCriticalThreshold; // 41
- UINT8 LowerNonCriticalThreshold; // 42
- UINT8 Reserved7[5]; // 43
- UINT8 IdStringLength; // 48
- UINT8 AsciiIdString[16]; // 49 - 64
+ UINT16 RecordId; // 1
+ UINT8 Version; // 3
+ UINT8 RecordType; // 4
+ UINT8 RecordLength; // 5
+ UINT8 OwnerId; // 6
+ UINT8 OwnerLun; // 7
+ UINT8 SensorNumber; // 8
+ UINT8 EntityId; // 9
+ UINT8 EntityInstance; // 10
+ IPMI_SDR_RECORD_SENSOR_INIT SensorInitialization; // 11
+ IPMI_SDR_RECORD_SENSOR_CAP SensorCapabilities; // 12
+ UINT8 SensorType; // 13
+ UINT8 EventType; // 14
+ UINT8 Reserved1[7]; // 15
+ UINT8 UnitType; // 22
+ UINT8 Reserved2; // 23
+ IPMI_SDR_RECORD_LINEARIZATION Linearization; // 24
+ UINT8 MLo; // 25
+ IPMI_SDR_RECORD_M_TOLERANCE MHiTolerance; // 26
+ UINT8 BLo; // 27
+ IPMI_SDR_RECORD_B_ACCURACY BHiAccuracyLo; // 28
+ IPMI_SDR_RECORD_ACCURACY_SENSOR_DIR AccuracySensorDirection; // 29
+ IPMI_SDR_RECORD_R_EXP_B_EXP RExpBExp; // 30
+ IPMI_SDR_RECORD_ANALOG_FLAGS AnalogFlags; // 31
+ UINT8 NominalReading; // 32
+ UINT8 Reserved3[4]; // 33
+ UINT8 UpperNonRecoverThreshold; // 37
+ UINT8 UpperCriticalThreshold; // 38
+ UINT8 UpperNonCriticalThreshold; // 39
+ UINT8 LowerNonRecoverThreshold; // 40
+ UINT8 LowerCriticalThreshold; // 41
+ UINT8 LowerNonCriticalThreshold; // 42
+ UINT8 Reserved4[5]; // 43
+ UINT8 IdStringLength; // 48
+ UINT8 AsciiIdString[16]; // 49 - 64
} IPMI_SDR_RECORD_STRUCT_1;
typedef struct {
- UINT16 RecordId; // 1
- UINT8 Version; // 3
- UINT8 RecordType; // 4
- UINT8 RecordLength; // 5
- UINT8 OwnerId; // 6
- UINT8 OwnerLun; // 7
- UINT8 SensorNumber; // 8
- UINT8 EntityId; // 9
- UINT8 EntityInstance; // 10
- UINT8 SensorScanning : 1; // 11
- UINT8 EventScanning : 1; // 11
- UINT8 InitSensorType : 1; // 11
- UINT8 InitHysteresis : 1; // 11
- UINT8 InitThresholds : 1; // 11
- UINT8 InitEvent : 1; // 11
- UINT8 InitScanning : 1; // 11
- UINT8 Reserved : 1; // 11
- UINT8 EventMessageControl : 2; // 12
- UINT8 ThresholdAccessSupport : 2; // 12
- UINT8 HysteresisSupport : 2; // 12
- UINT8 ReArmSupport : 1; // 12
- UINT8 IgnoreSensor : 1; // 12
- UINT8 SensorType; // 13
- UINT8 EventType; // 14
- UINT8 Reserved1[7]; // 15
- UINT8 UnitType; // 22
- UINT8 Reserved2[9]; // 23
- UINT8 IdStringLength; // 32
- UINT8 AsciiIdString[16]; // 33 - 48
+ UINT16 RecordId; // 1
+ UINT8 Version; // 3
+ UINT8 RecordType; // 4
+ UINT8 RecordLength; // 5
+ UINT8 OwnerId; // 6
+ UINT8 OwnerLun; // 7
+ UINT8 SensorNumber; // 8
+ UINT8 EntityId; // 9
+ UINT8 EntityInstance; // 10
+ IPMI_SDR_RECORD_SENSOR_INIT SensorInitialization; // 11
+ IPMI_SDR_RECORD_SENSOR_CAP SensorCapabilities; // 12
+ UINT8 SensorType; // 13
+ UINT8 EventType; // 14
+ UINT8 Reserved1[7]; // 15
+ UINT8 UnitType; // 22
+ UINT8 Reserved2[9]; // 23
+ UINT8 IdStringLength; // 32
+ UINT8 AsciiIdString[16]; // 33 - 48
} IPMI_SDR_RECORD_STRUCT_2;
-typedef struct {
- UINT8 Reserved1 : 1;
- UINT8 ControllerSlaveAddress : 7;
- UINT8 FruDeviceId;
- UINT8 BusId : 3;
- UINT8 Lun : 2;
- UINT8 Reserved : 2;
- UINT8 LogicalFruDevice : 1;
- UINT8 Reserved3 : 4;
- UINT8 ChannelNumber : 4;
+typedef union {
+ struct {
+ UINT8 Reserved1 : 1;
+ UINT8 ControllerSlaveAddress : 7;
+ UINT8 FruDeviceId;
+ UINT8 BusId : 3;
+ UINT8 Lun : 2;
+ UINT8 Reserved2 : 2;
+ UINT8 LogicalFruDevice : 1;
+ UINT8 Reserved3 : 4;
+ UINT8 ChannelNumber : 4;
+ } Bits;
+ UINT32 Uint32;
} IPMI_FRU_DATA_INFO;
+typedef union {
+ struct {
+ UINT8 Length : 4;
+ UINT8 Reserved : 1;
+ UINT8 StringType : 3;
+ } Bits;
+ UINT8 Uint8;
+} IPMI_SDR_RECORD_DEV_ID_STR_TYPE_LENGTH;
+
typedef struct {
- UINT16 RecordId; // 1
- UINT8 Version; // 3
- UINT8 RecordType; // 4
- UINT8 RecordLength; // 5
- IPMI_FRU_DATA_INFO FruDeviceData; // 6
- UINT8 Reserved1; // 10
- UINT8 DeviceType; // 11
- UINT8 DeviceTypeModifier; // 12
- UINT8 FruEntityId; // 13
- UINT8 FruEntityInstance; // 14
- UINT8 OemReserved; // 15
- UINT8 Length : 4; // 16
- UINT8 Reserved2 : 1; // 16
- UINT8 StringType : 3; // 16
- UINT8 String[16]; // 17
+ UINT16 RecordId; // 1
+ UINT8 Version; // 3
+ UINT8 RecordType; // 4
+ UINT8 RecordLength; // 5
+ IPMI_FRU_DATA_INFO FruDeviceData; // 6
+ UINT8 Reserved; // 10
+ UINT8 DeviceType; // 11
+ UINT8 DeviceTypeModifier; // 12
+ UINT8 FruEntityId; // 13
+ UINT8 FruEntityInstance; // 14
+ UINT8 OemReserved; // 15
+ IPMI_SDR_RECORD_DEV_ID_STR_TYPE_LENGTH StringTypeLength; // 16
+ UINT8 String[16]; // 17
} IPMI_SDR_RECORD_STRUCT_11;
typedef struct {
- UINT16 NextRecordId; //1
- UINT16 RecordId; //3
- UINT8 Version; //5
- UINT8 RecordType; //6
- UINT8 RecordLength; //7
- UINT8 ManufacturerId[3]; //8
+ UINT16 RecordId; //1
+ UINT8 Version; //3
+ UINT8 RecordType; //4
+ UINT8 RecordLength; //5
+ UINT8 ManufacturerId[3]; //6
UINT8 StringChars[20];
} IPMI_SDR_RECORD_STRUCT_C0;
typedef struct {
- UINT16 NextRecordId; //1
- UINT16 RecordId; //3
- UINT8 Version; //5
- UINT8 RecordType; //6
- UINT8 RecordLength; //7
+ UINT16 RecordId; //1
+ UINT8 Version; //3
+ UINT8 RecordType; //4
+ UINT8 RecordLength; //5
} IPMI_SDR_RECORD_STRUCT_HEADER;
typedef union {
- IPMI_SDR_RECORD_STRUCT_1 SensorType1;
- IPMI_SDR_RECORD_STRUCT_2 SensorType2;
- IPMI_SDR_RECORD_STRUCT_11 SensorType11;
+ IPMI_SDR_RECORD_STRUCT_1 SensorType1;
+ IPMI_SDR_RECORD_STRUCT_2 SensorType2;
+ IPMI_SDR_RECORD_STRUCT_11 SensorType11;
IPMI_SDR_RECORD_STRUCT_C0 SensorTypeC0;
IPMI_SDR_RECORD_STRUCT_HEADER SensorHeader;
} IPMI_SENSOR_RECORD_STRUCT;
@@ -285,6 +374,12 @@ typedef struct {
UINT8 BytesToRead;
} IPMI_GET_SDR_REQUEST;
+typedef struct {
+ UINT8 CompletionCode;
+ UINT16 NextRecordId;
+ IPMI_SENSOR_RECORD_STRUCT RecordData;
+} IPMI_GET_SDR_RESPONSE;
+
//
// Definitions for Add SDR command
//
@@ -378,6 +473,12 @@ typedef struct {
//
// Constants and Structure definitions for "Get SEL Info" command to follow here
//
+#define IPMI_GET_SEL_INFO_OPERATION_SUPPORT_GET_SEL_ALLOCATION_INFO_CMD BIT0
+#define IPMI_GET_SEL_INFO_OPERATION_SUPPORT_RESERVE_SEL_CMD BIT1
+#define IPMI_GET_SEL_INFO_OPERATION_SUPPORT_PARTIAL_ADD_SEL_ENTRY_CMD BIT2
+#define IPMI_GET_SEL_INFO_OPERATION_SUPPORT_DELETE_SEL_CMD BIT3
+#define IPMI_GET_SEL_INFO_OPERATION_SUPPORT_OVERFLOW_FLAG BIT7
+
typedef struct {
UINT8 CompletionCode;
UINT8 Version; // Version of SEL
@@ -405,6 +506,10 @@ typedef struct {
//
// Constants and Structure definitions for "Reserve SEL" command to follow here
//
+typedef struct {
+ UINT8 CompletionCode;
+ UINT8 ReservationId[2]; // Reservation ID. LS byte first.
+} IPMI_RESERVE_SEL_RESPONSE;
//
// Definitions for Get SEL Entry command
@@ -414,6 +519,38 @@ typedef struct {
//
// Constants and Structure definitions for "Get SEL Entry" command to follow here
//
+
+//
+// Below is Definitions for SEL Record Formats (Chapter 32)
+//
+typedef struct {
+ UINT16 RecordId;
+ UINT8 RecordType;
+ UINT32 TimeStamp;
+ UINT16 GeneratorId;
+ UINT8 EvMRevision;
+ UINT8 SensorType;
+ UINT8 SensorNumber;
+ UINT8 EventDirType;
+ UINT8 OEMEvData1;
+ UINT8 OEMEvData2;
+ UINT8 OEMEvData3;
+} IPMI_SEL_EVENT_RECORD_DATA;
+
+typedef struct {
+ UINT16 RecordId;
+ UINT8 RecordType; // C0h-DFh = OEM system event record
+ UINT32 TimeStamp;
+ UINT8 ManufacturerId[3];
+ UINT8 OEMDefined[6];
+} IPMI_TIMESTAMPED_OEM_SEL_RECORD_DATA;
+
+typedef struct {
+ UINT16 RecordId;
+ UINT8 RecordType; // E0h-FFh = OEM system event record
+ UINT8 OEMDefined[13];
+} IPMI_NON_TIMESTAMPED_OEM_SEL_RECORD_DATA;
+
typedef struct {
UINT8 ReserveId[2]; // Reservation ID, LS Byte First
UINT8 SelRecID[2]; // Sel Record ID, LS Byte First
@@ -421,6 +558,12 @@ typedef struct {
UINT8 BytesToRead; // Bytes to be Read, 0xFF for entire record
} IPMI_GET_SEL_ENTRY_REQUEST;
+typedef struct {
+ UINT8 CompletionCode;
+ UINT16 NextSelRecordId; // Next SEL Record ID, LS Byte first
+ IPMI_SEL_EVENT_RECORD_DATA RecordData;
+} IPMI_GET_SEL_ENTRY_RESPONSE;
+
//
// Definitions for Add SEL Entry command
//
@@ -429,6 +572,14 @@ typedef struct {
//
// Constants and Structure definitions for "Add SEL Entry" command to follow here
//
+typedef struct {
+ IPMI_SEL_EVENT_RECORD_DATA RecordData;
+} IPMI_ADD_SEL_ENTRY_REQUEST;
+
+typedef struct {
+ UINT8 CompletionCode;
+ UINT16 RecordId; // Record ID for added record, LS Byte first
+} IPMI_ADD_SEL_ENTRY_RESPONSE;
//
// Definitions for Partial Add SEL Entry command
@@ -438,6 +589,18 @@ typedef struct {
//
// Constants and Structure definitions for "Partial Add SEL Entry" command to follow here
//
+typedef struct {
+ UINT16 ReservationId;
+ UINT16 RecordId;
+ UINT8 OffsetIntoRecord;
+ UINT8 InProgress;
+ UINT8 RecordData[0];
+} IPMI_PARTIAL_ADD_SEL_ENTRY_REQUEST;
+
+typedef struct {
+ UINT8 CompletionCode;
+ UINT16 RecordId;
+} IPMI_PARTIAL_ADD_SEL_ENTRY_RESPONSE;
//
// Definitions for Delete SEL Entry command
@@ -450,7 +613,15 @@ typedef struct {
typedef struct {
UINT8 ReserveId[2]; // Reservation ID, LS byte first
UINT8 RecordToDelete[2]; // Record to Delete, LS Byte First
-} IPMI_DELETE_SEL_REQUEST;
+} IPMI_DELETE_SEL_ENTRY_REQUEST;
+
+#define IPMI_DELETE_SEL_ENTRY_RESPONSE_TYPE_UNSUPPORTED 0x80
+#define IPMI_DELETE_SEL_ENTRY_RESPONSE_ERASE_IN_PROGRESS 0x81
+
+typedef struct {
+ UINT8 CompletionCode;
+ UINT16 RecordId; // Record ID added. LS byte first
+} IPMI_DELETE_SEL_ENTRY_RESPONSE;
//
// Definitions for Clear SEL command
@@ -460,6 +631,12 @@ typedef struct {
//
// Constants and Structure definitions for "Clear SEL" command to follow here
//
+#define IPMI_CLEAR_SEL_REQUEST_C_CHAR_ASCII 0x43
+#define IPMI_CLEAR_SEL_REQUEST_L_CHAR_ASCII 0x4C
+#define IPMI_CLEAR_SEL_REQUEST_R_CHAR_ASCII 0x52
+#define IPMI_CLEAR_SEL_REQUEST_INITIALIZE_ERASE 0xAA
+#define IPMI_CLEAR_SEL_REQUEST_GET_ERASE_STATUS 0x00
+
typedef struct {
UINT8 Reserve[2]; // Reserve ID, LSB first
UINT8 AscC; // Ascii for 'C' (0x43)
@@ -468,6 +645,14 @@ typedef struct {
UINT8 Erase; // 0xAA, Initiate Erase, 0x00 Get Erase Status
} IPMI_CLEAR_SEL_REQUEST;
+#define IPMI_CLEAR_SEL_RESPONSE_ERASURE_IN_PROGRESS 0x00
+#define IPMI_CLEAR_SEL_RESPONSE_ERASURE_COMPLETED 0x01
+
+typedef struct {
+ UINT8 CompletionCode;
+ UINT8 ErasureProgress;
+} IPMI_CLEAR_SEL_RESPONSE;
+
//
// Definitions for Get SEL Time command
//
@@ -476,6 +661,10 @@ typedef struct {
//
// Constants and Structure definitions for "Get SEL Time" command to follow here
//
+typedef struct {
+ UINT8 CompletionCode;
+ UINT32 Timestamp; // Present Timestamp clock reading. LS byte first.
+} IPMI_GET_SEL_TIME_RESPONSE;
//
// Definitions for Set SEL Time command
@@ -485,6 +674,9 @@ typedef struct {
//
// Constants and Structure definitions for "Set SEL Time" command to follow here
//
+typedef struct {
+ UINT32 Timestamp;
+} IPMI_SET_SEL_TIME_REQUEST;
//
// Definitions for Get Auxillary Log Status command
@@ -504,39 +696,88 @@ typedef struct {
// Constants and Structure definitions for "Set Auxillary Log Status" command to follow here
//
-#define IPMI_COMPLETE_SEL_RECORD 0xFF
+//
+// Definitions for Get SEL Time UTC Offset command
+//
+#define IPMI_STORAGE_GET_SEL_TIME_UTC_OFFSET 0x5C
//
-// Below is Definitions for SEL Record Formats (Chapter 32)
+// Constants and Structure definitions for "Get SEL Time UTC Offset" command to follow here
//
typedef struct {
- UINT16 RecordId;
- UINT8 RecordType;
- UINT32 TimeStamp;
- UINT16 GeneratorId;
- UINT8 EvMRevision;
- UINT8 SensorType;
- UINT8 SensorNumber;
- UINT8 EventDirType;
- UINT8 OEMEvData1;
- UINT8 OEMEvData2;
- UINT8 OEMEvData3;
-} IPMI_SEL_EVENT_RECORD_DATA;
+ UINT8 CompletionCode;
+ //
+ // 16-bit, 2s-complement signed integer for the offset in minutes from UTC to SEL Time.
+ // LS-byte first. (ranges from -1440 to 1440)
+ //
+ INT16 UtcOffset;
+} IPMI_GET_SEL_TIME_UTC_OFFSET_RESPONSE;
-#define IPMI_SEL_SYSTEM_RECORD 0x02
+//
+// Definitions for Set SEL Time UTC Offset command
+//
+#define IPMI_STORAGE_SET_SEL_TIME_UTC_OFFSET 0x5D
-#define IPMI_EVM_REVISION 0x04
-#define IPMI_BIOS_ID 0x18
-#define IPMI_FORMAT_REV 0x00
-#define IPMI_FORMAT_REV1 0x01
-#define IPMI_SOFTWARE_ID 0x01
-#define IPMI_PLATFORM_VAL_ID 0x01
-#define IPMI_GENERATOR_ID(i,f) ((i << 1) | (f << 1) | IPMI_SOFTWARE_ID)
+//
+// Constants and Structure definitions for "Set SEL Time UTC Offset" command to follow here
+//
-#define IPMI_SENSOR_TYPE_EVENT_CODE_DISCRETE 0x6F
+#define IPMI_COMPLETE_SEL_RECORD 0xFF
-#define IPMI_OEM_SPECIFIC_DATA 0x02
-#define IPMI_SENSOR_SPECIFIC_DATA 0x03
+#define IPMI_SEL_SYSTEM_RECORD 0x02
+#define IPMI_SEL_OEM_TIME_STAMP_RECORD_START 0xC0
+#define IPMI_SEL_OEM_TIME_STAMP_RECORD_END 0xDF
+#define IPMI_SEL_OEM_NO_TIME_STAMP_RECORD_START 0xE0
+#define IPMI_SEL_OEM_NO_TIME_STAMP_RECORD_END 0xFF
+
+#define IPMI_SEL_EVENT_DIR(EventDirType) (EventDirType >> 7)
+#define IPMI_SEL_EVENT_DIR_ASSERTION_EVENT 0x00
+#define IPMI_SEL_EVENT_DIR_DEASSERTION_EVENT 0x01
+
+#define IPMI_SEL_EVENT_TYPE(EventDirType) (EventDirType & 0x7F)
+//
+// Event/Reading Type Code Ranges (Chapter 42)
+//
+#define IPMI_SEL_EVENT_TYPE_UNSPECIFIED 0x00
+#define IPMI_SEL_EVENT_TYPE_THRESHOLD 0x01
+#define IPMI_SEL_EVENT_TYPE_GENERIC_START 0x02
+#define IPMI_SEL_EVENT_TYPE_GENERIC_END 0x0C
+#define IPMI_SEL_EVENT_TYPE_SENSOR_SPECIFIC 0x6F
+#define IPMI_SEL_EVENT_TYPE_OEM_START 0x70
+#define IPMI_SEL_EVENT_TYPE_OEM_END 0x7F
+
+#define SOFTWARE_ID_FROM_GENERATOR_ID(GeneratorId) ((GeneratorId & 0xFF) >> 1)
+//
+// System Software IDs definitions (Section 5.5)
+//
+#define IPMI_SWID_BIOS_RANGE_START 0x00
+#define IPMI_SWID_BIOS_RANGE_END 0x0F
+#define IPMI_SWID_SMI_HANDLER_RANGE_START 0x10
+#define IPMI_SWID_SMI_HANDLER_RANGE_END 0x1F
+#define IPMI_SWID_SMS_RANGE_START 0x20
+#define IPMI_SWID_SMS_RANGE_END 0x2F
+#define IPMI_SWID_OEM_RANGE_START 0x30
+#define IPMI_SWID_OEM_RANGE_END 0x3F
+#define IPMI_SWID_REMOTE_CONSOLE_RANGE_START 0x40
+#define IPMI_SWID_REMOTE_CONSOLE_RANGE_END 0x46
+#define IPMI_SWID_TERMINAL_REMOTE_CONSOLE_ID 0x47
+
+#define SLAVE_ADDRESS_FROM_GENERATOR_ID(GeneratorId) ((GeneratorId & 0xFF) >> 1)
+#define LUN_FROM_GENERATOR_ID(GeneratorId) ((GeneratorId >> 8) & 0x03)
+#define CHANNEL_NUMBER_FROM_GENERATOR_ID(GeneratorId) ((GeneratorId >> 12) & 0x0F)
+
+#define IPMI_EVM_REVISION 0x04
+#define IPMI_BIOS_ID 0x18
+#define IPMI_FORMAT_REV 0x00
+#define IPMI_FORMAT_REV1 0x01
+#define IPMI_SOFTWARE_ID 0x01
+#define IPMI_PLATFORM_VAL_ID 0x01
+#define IPMI_GENERATOR_ID(i,f) ((i << 1) | (f << 1) | IPMI_SOFTWARE_ID)
+
+#define IPMI_SENSOR_TYPE_EVENT_CODE_DISCRETE 0x6F
+
+#define IPMI_OEM_SPECIFIC_DATA 0x02
+#define IPMI_SENSOR_SPECIFIC_DATA 0x03
#pragma pack()
#endif