| /** @file |
| IPMI 2.0 definitions from the IPMI Specification Version 2.0, Revision 1.1. |
| |
| This file contains all NetFn Storage commands, including: |
| FRU Inventory Commands (Chapter 34) |
| SDR Repository (Chapter 33) |
| System Event Log(SEL) Commands (Chapter 31) |
| SEL Record Formats (Chapter 32) |
| |
| See IPMI specification, Appendix G, Command Assignments |
| and Appendix H, Sub-function Assignments. |
| |
| Copyright (c) 1999 - 2018, Intel Corporation. All rights reserved.<BR> |
| SPDX-License-Identifier: BSD-2-Clause-Patent |
| **/ |
| |
| #ifndef _IPMI_NET_FN_STORAGE_H_ |
| #define _IPMI_NET_FN_STORAGE_H_ |
| |
| #pragma pack(1) |
| // |
| // Net function definition for Storage command |
| // |
| #define IPMI_NETFN_STORAGE 0x0A |
| |
| // |
| // All Storage commands and their structure definitions to follow here |
| // |
| |
| // |
| // Below is Definitions for FRU Inventory Commands (Chapter 34) |
| // |
| |
| // |
| // Definitions for Get Fru Inventory Area Info command |
| // |
| #define IPMI_STORAGE_GET_FRU_INVENTORY_AREAINFO 0x10 |
| |
| // |
| // 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 Read Fru Data command |
| // |
| #define IPMI_STORAGE_READ_FRU_DATA 0x11 |
| |
| // |
| // Constants and Structure definitions for "Read Fru Data" command to follow here |
| // |
| typedef struct { |
| UINT8 FruDeviceId; |
| UINT16 FruOffset; |
| } IPMI_FRU_COMMON_DATA; |
| |
| typedef struct { |
| IPMI_FRU_COMMON_DATA Data; |
| 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 |
| // |
| #define IPMI_STORAGE_WRITE_FRU_DATA 0x12 |
| |
| // |
| // Constants and Structure definitions for "Write Fru Data" command to follow here |
| // |
| typedef struct { |
| IPMI_FRU_COMMON_DATA Data; |
| 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) |
| // |
| |
| // |
| // Definitions for Get SDR Repository Info command |
| // |
| #define IPMI_STORAGE_GET_SDR_REPOSITORY_INFO 0x20 |
| |
| // |
| // 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; |
| IPMI_SDR_OPERATION_SUPPORT OperationSupport; |
| } IPMI_GET_SDR_REPOSITORY_INFO_RESPONSE; |
| |
| // |
| // Definitions for Get SDR Repository Allocateion Info command |
| // |
| #define IPMI_STORAGE_GET_SDR_REPOSITORY_ALLOCATION_INFO 0x21 |
| |
| // |
| // Constants and Structure definitions for "Get SDR Repository Allocateion Info" command to follow here |
| // |
| |
| // |
| // Definitions for Reserve SDR Repository command |
| // |
| #define IPMI_STORAGE_RESERVE_SDR_REPOSITORY 0x22 |
| |
| // |
| // 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 |
| // |
| #define IPMI_STORAGE_GET_SDR 0x23 |
| |
| // |
| // 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 |
| 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 |
| 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 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 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 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 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_C0 SensorTypeC0; |
| IPMI_SDR_RECORD_STRUCT_HEADER SensorHeader; |
| } IPMI_SENSOR_RECORD_STRUCT; |
| |
| typedef struct { |
| UINT16 ReservationId; |
| UINT16 RecordId; |
| UINT8 RecordOffset; |
| 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 |
| // |
| #define IPMI_STORAGE_ADD_SDR 0x24 |
| |
| // |
| // Constants and Structure definitions for "Add SDR" command to follow here |
| // |
| |
| // |
| // Definitions for Partial Add SDR command |
| // |
| #define IPMI_STORAGE_PARTIAL_ADD_SDR 0x25 |
| |
| // |
| // Constants and Structure definitions for "Partial Add SDR" command to follow here |
| // |
| |
| // |
| // Definitions for Delete SDR command |
| // |
| #define IPMI_STORAGE_DELETE_SDR 0x26 |
| |
| // |
| // Constants and Structure definitions for "Delete SDR" command to follow here |
| // |
| |
| // |
| // Definitions for Clear SDR Repository command |
| // |
| #define IPMI_STORAGE_CLEAR_SDR 0x27 |
| |
| // |
| // Constants and Structure definitions for "Clear SDR Repository" command to follow here |
| // |
| |
| // |
| // Definitions for Get SDR Repository Time command |
| // |
| #define IPMI_STORAGE_GET_SDR_REPOSITORY_TIME 0x28 |
| |
| // |
| // Constants and Structure definitions for "Get SDR Repository Time" command to follow here |
| // |
| |
| // |
| // Definitions for Set SDR Repository Time command |
| // |
| #define IPMI_STORAGE_SET_SDR_REPOSITORY_TIME 0x29 |
| |
| // |
| // Constants and Structure definitions for "Set SDR Repository Time" command to follow here |
| // |
| |
| // |
| // Definitions for Enter SDR Repository Update Mode command |
| // |
| #define IPMI_STORAGE_ENTER_SDR_UPDATE_MODE 0x2A |
| |
| // |
| // Constants and Structure definitions for "Enter SDR Repository Update Mode" command to follow here |
| // |
| |
| // |
| // Definitions for Exit SDR Repository Update Mode command |
| // |
| #define IPMI_STORAGE_EXIT_SDR_UPDATE_MODE 0x2B |
| |
| // |
| // Constants and Structure definitions for "Exit SDR Repository Update Mode" command to follow here |
| // |
| |
| // |
| // Definitions for Run Initialize Agent command |
| // |
| #define IPMI_STORAGE_RUN_INIT_AGENT 0x2C |
| |
| // |
| // Constants and Structure definitions for "Run Initialize Agent" command to follow here |
| // |
| |
| // |
| // Below is Definitions for System Event Log(SEL) Commands (Chapter 31) |
| // |
| |
| // |
| // Definitions for Get SEL Info command |
| // |
| #define IPMI_STORAGE_GET_SEL_INFO 0x40 |
| |
| // |
| // 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 |
| UINT16 NoOfEntries; // No of Entries in the SEL |
| UINT16 FreeSpace; // Free space in Bytes |
| UINT32 RecentAddTimeStamp; // Most Recent Addition of Time Stamp |
| UINT32 RecentEraseTimeStamp; // Most Recent Erasure of Time Stamp |
| UINT8 OperationSupport; // Operation Support |
| } IPMI_GET_SEL_INFO_RESPONSE; |
| |
| // |
| // Definitions for Get SEL Allocation Info command |
| // |
| #define IPMI_STORAGE_GET_SEL_ALLOCATION_INFO 0x41 |
| |
| // |
| // Constants and Structure definitions for "Get SEL Allocation Info" command to follow here |
| // |
| |
| // |
| // Definitions for Reserve SEL command |
| // |
| #define IPMI_STORAGE_RESERVE_SEL 0x42 |
| |
| // |
| // 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 |
| // |
| #define IPMI_STORAGE_GET_SEL_ENTRY 0x43 |
| |
| // |
| // 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 |
| UINT8 Offset; // Offset Into Record |
| 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 |
| // |
| #define IPMI_STORAGE_ADD_SEL_ENTRY 0x44 |
| |
| // |
| // 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 |
| // |
| #define IPMI_STORAGE_PARTIAL_ADD_SEL_ENTRY 0x45 |
| |
| // |
| // 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 |
| // |
| #define IPMI_STORAGE_DELETE_SEL_ENTRY 0x46 |
| |
| // |
| // Constants and Structure definitions for "Delete SEL Entry" command to follow here |
| // |
| typedef struct { |
| UINT8 ReserveId[2]; // Reservation ID, LS byte first |
| UINT8 RecordToDelete[2]; // Record to Delete, LS Byte First |
| } 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 |
| // |
| #define IPMI_STORAGE_CLEAR_SEL 0x47 |
| |
| // |
| // 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) |
| UINT8 AscL; // Ascii for 'L' (0x4c) |
| UINT8 AscR; // Ascii for 'R' (0x52) |
| 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 |
| // |
| #define IPMI_STORAGE_GET_SEL_TIME 0x48 |
| |
| // |
| // 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 |
| // |
| #define IPMI_STORAGE_SET_SEL_TIME 0x49 |
| |
| // |
| // 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 |
| // |
| #define IPMI_STORAGE_GET_AUXILLARY_LOG_STATUS 0x5A |
| |
| // |
| // Constants and Structure definitions for "Get Auxillary Log Status" command to follow here |
| // |
| |
| // |
| // Definitions for Set Auxillary Log Status command |
| // |
| #define IPMI_STORAGE_SET_AUXILLARY_LOG_STATUS 0x5B |
| |
| // |
| // Constants and Structure definitions for "Set Auxillary Log Status" command to follow here |
| // |
| |
| // |
| // Definitions for Get SEL Time UTC Offset command |
| // |
| #define IPMI_STORAGE_GET_SEL_TIME_UTC_OFFSET 0x5C |
| |
| // |
| // Constants and Structure definitions for "Get SEL Time UTC Offset" command to follow here |
| // |
| typedef struct { |
| 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; |
| |
| // |
| // Definitions for Set SEL Time UTC Offset command |
| // |
| #define IPMI_STORAGE_SET_SEL_TIME_UTC_OFFSET 0x5D |
| |
| // |
| // Constants and Structure definitions for "Set SEL Time UTC Offset" command to follow here |
| // |
| |
| #define IPMI_COMPLETE_SEL_RECORD 0xFF |
| |
| #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 |