2 IPMI 2.0 definitions from the IPMI Specification Version 2.0, Revision 1.1.
4 This file contains all NetFn Storage commands, including:
5 FRU Inventory Commands (Chapter 34)
6 SDR Repository (Chapter 33)
7 System Event Log(SEL) Commands (Chapter 31)
8 SEL Record Formats (Chapter 32)
10 See IPMI specification, Appendix G, Command Assignments
11 and Appendix H, Sub-function Assignments.
13 Copyright (c) 1999 - 2018, Intel Corporation. All rights reserved.<BR>
14 SPDX-License-Identifier: BSD-2-Clause-Patent
17 #ifndef _IPMI_NET_FN_STORAGE_H_
18 #define _IPMI_NET_FN_STORAGE_H_
22 // Net function definition for Storage command
24 #define IPMI_NETFN_STORAGE 0x0A
27 // All Storage commands and their structure definitions to follow here
31 // Below is Definitions for FRU Inventory Commands (Chapter 34)
35 // Definitions for Get Fru Inventory Area Info command
37 #define IPMI_STORAGE_GET_FRU_INVENTORY_AREAINFO 0x10
40 // Constants and Structure definitions for "Get Fru Inventory Area Info" command to follow here
44 } IPMI_GET_FRU_INVENTORY_AREA_INFO_REQUEST
;
48 UINT16 InventoryAreaSize
;
50 } IPMI_GET_FRU_INVENTORY_AREA_INFO_RESPONSE
;
53 // Definitions for Read Fru Data command
55 #define IPMI_STORAGE_READ_FRU_DATA 0x11
58 // Constants and Structure definitions for "Read Fru Data" command to follow here
63 } IPMI_FRU_COMMON_DATA
;
66 IPMI_FRU_COMMON_DATA Data
;
68 } IPMI_FRU_READ_COMMAND
;
72 UINT16 InventoryOffset
;
74 } IPMI_READ_FRU_DATA_REQUEST
;
80 } IPMI_READ_FRU_DATA_RESPONSE
;
83 // Definitions for Write Fru Data command
85 #define IPMI_STORAGE_WRITE_FRU_DATA 0x12
88 // Constants and Structure definitions for "Write Fru Data" command to follow here
91 IPMI_FRU_COMMON_DATA Data
;
93 } IPMI_FRU_WRITE_COMMAND
;
97 UINT16 InventoryOffset
;
99 } IPMI_WRITE_FRU_DATA_REQUEST
;
102 UINT8 CompletionCode
;
104 } IPMI_WRITE_FRU_DATA_RESPONSE
;
107 // Below is Definitions for SDR Repository (Chapter 33)
111 // Definitions for Get SDR Repository Info command
113 #define IPMI_STORAGE_GET_SDR_REPOSITORY_INFO 0x20
116 // Constants and Structure definitions for "Get SDR Repository Info" command to follow here
120 UINT8 SdrRepAllocInfoCmd
: 1;
121 UINT8 SdrRepReserveCmd
: 1;
122 UINT8 PartialAddSdrCmd
: 1;
123 UINT8 DeleteSdrRepCmd
: 1;
125 UINT8 SdrRepUpdateOp
: 2;
129 } IPMI_SDR_OPERATION_SUPPORT
;
132 UINT8 CompletionCode
;
136 UINT32 RecentAdditionTimeStamp
;
137 UINT32 RecentEraseTimeStamp
;
138 IPMI_SDR_OPERATION_SUPPORT OperationSupport
;
139 } IPMI_GET_SDR_REPOSITORY_INFO_RESPONSE
;
142 // Definitions for Get SDR Repository Allocateion Info command
144 #define IPMI_STORAGE_GET_SDR_REPOSITORY_ALLOCATION_INFO 0x21
147 // Constants and Structure definitions for "Get SDR Repository Allocateion Info" command to follow here
151 // Definitions for Reserve SDR Repository command
153 #define IPMI_STORAGE_RESERVE_SDR_REPOSITORY 0x22
156 // Constants and Structure definitions for "Reserve SDR Repository" command to follow here
159 UINT8 CompletionCode
;
160 UINT8 ReservationId
[2]; // Reservation ID. LS byte first.
161 } IPMI_RESERVE_SDR_REPOSITORY_RESPONSE
;
164 // Definitions for Get SDR command
166 #define IPMI_STORAGE_GET_SDR 0x23
169 // Constants and Structure definitions for "Get SDR" command to follow here
173 UINT8 EventScanningEnabled
: 1;
174 UINT8 EventScanningDisabled
: 1;
175 UINT8 InitSensorType
: 1;
176 UINT8 InitHysteresis
: 1;
177 UINT8 InitThresholds
: 1;
179 UINT8 InitScanning
: 1;
180 UINT8 SettableSensor
: 1;
183 } IPMI_SDR_RECORD_SENSOR_INIT
;
187 UINT8 EventMessageControl
: 2;
188 UINT8 ThresholdAccessSupport
: 2;
189 UINT8 HysteresisSupport
: 2;
190 UINT8 ReArmSupport
: 1;
191 UINT8 IgnoreSensor
: 1;
194 } IPMI_SDR_RECORD_SENSOR_CAP
;
198 UINT8 Linearization
: 7;
202 } IPMI_SDR_RECORD_LINEARIZATION
;
210 } IPMI_SDR_RECORD_M_TOLERANCE
;
214 UINT8 AccuracyLow
: 6;
218 } IPMI_SDR_RECORD_B_ACCURACY
;
223 UINT8 AccuracyExp
: 2;
224 UINT8 AccuracyHi
: 4;
227 } IPMI_SDR_RECORD_ACCURACY_SENSOR_DIR
;
235 } IPMI_SDR_RECORD_R_EXP_B_EXP
;
239 UINT8 NominalReadingSpscified
: 1;
240 UINT8 NominalMaxSpscified
: 1;
241 UINT8 NominalMinSpscified
: 1;
245 } IPMI_SDR_RECORD_ANALOG_FLAGS
;
248 UINT16 RecordId
; // 1
250 UINT8 RecordType
; // 4
251 UINT8 RecordLength
; // 5
254 UINT8 SensorNumber
; // 8
256 UINT8 EntityInstance
; // 10
257 IPMI_SDR_RECORD_SENSOR_INIT SensorInitialization
; // 11
258 IPMI_SDR_RECORD_SENSOR_CAP SensorCapabilities
; // 12
259 UINT8 SensorType
; // 13
260 UINT8 EventType
; // 14
261 UINT8 Reserved1
[7]; // 15
262 UINT8 UnitType
; // 22
263 UINT8 Reserved2
; // 23
264 IPMI_SDR_RECORD_LINEARIZATION Linearization
; // 24
266 IPMI_SDR_RECORD_M_TOLERANCE MHiTolerance
; // 26
268 IPMI_SDR_RECORD_B_ACCURACY BHiAccuracyLo
; // 28
269 IPMI_SDR_RECORD_ACCURACY_SENSOR_DIR AccuracySensorDirection
; // 29
270 IPMI_SDR_RECORD_R_EXP_B_EXP RExpBExp
; // 30
271 IPMI_SDR_RECORD_ANALOG_FLAGS AnalogFlags
; // 31
272 UINT8 NominalReading
; // 32
273 UINT8 Reserved3
[4]; // 33
274 UINT8 UpperNonRecoverThreshold
; // 37
275 UINT8 UpperCriticalThreshold
; // 38
276 UINT8 UpperNonCriticalThreshold
; // 39
277 UINT8 LowerNonRecoverThreshold
; // 40
278 UINT8 LowerCriticalThreshold
; // 41
279 UINT8 LowerNonCriticalThreshold
; // 42
280 UINT8 Reserved4
[5]; // 43
281 UINT8 IdStringLength
; // 48
282 UINT8 AsciiIdString
[16]; // 49 - 64
283 } IPMI_SDR_RECORD_STRUCT_1
;
286 UINT16 RecordId
; // 1
288 UINT8 RecordType
; // 4
289 UINT8 RecordLength
; // 5
292 UINT8 SensorNumber
; // 8
294 UINT8 EntityInstance
; // 10
295 IPMI_SDR_RECORD_SENSOR_INIT SensorInitialization
; // 11
296 IPMI_SDR_RECORD_SENSOR_CAP SensorCapabilities
; // 12
297 UINT8 SensorType
; // 13
298 UINT8 EventType
; // 14
299 UINT8 Reserved1
[7]; // 15
300 UINT8 UnitType
; // 22
301 UINT8 Reserved2
[9]; // 23
302 UINT8 IdStringLength
; // 32
303 UINT8 AsciiIdString
[16]; // 33 - 48
304 } IPMI_SDR_RECORD_STRUCT_2
;
309 UINT8 ControllerSlaveAddress
: 7;
314 UINT8 LogicalFruDevice
: 1;
316 UINT8 ChannelNumber
: 4;
319 } IPMI_FRU_DATA_INFO
;
325 UINT8 StringType
: 3;
328 } IPMI_SDR_RECORD_DEV_ID_STR_TYPE_LENGTH
;
331 UINT16 RecordId
; // 1
333 UINT8 RecordType
; // 4
334 UINT8 RecordLength
; // 5
335 IPMI_FRU_DATA_INFO FruDeviceData
; // 6
336 UINT8 Reserved
; // 10
337 UINT8 DeviceType
; // 11
338 UINT8 DeviceTypeModifier
; // 12
339 UINT8 FruEntityId
; // 13
340 UINT8 FruEntityInstance
; // 14
341 UINT8 OemReserved
; // 15
342 IPMI_SDR_RECORD_DEV_ID_STR_TYPE_LENGTH StringTypeLength
; // 16
343 UINT8 String
[16]; // 17
344 } IPMI_SDR_RECORD_STRUCT_11
;
347 UINT16 RecordId
; // 1
349 UINT8 RecordType
; // 4
350 UINT8 RecordLength
; // 5
351 UINT8 ManufacturerId
[3]; // 6
352 UINT8 StringChars
[20];
353 } IPMI_SDR_RECORD_STRUCT_C0
;
356 UINT16 RecordId
; // 1
358 UINT8 RecordType
; // 4
359 UINT8 RecordLength
; // 5
360 } IPMI_SDR_RECORD_STRUCT_HEADER
;
363 IPMI_SDR_RECORD_STRUCT_1 SensorType1
;
364 IPMI_SDR_RECORD_STRUCT_2 SensorType2
;
365 IPMI_SDR_RECORD_STRUCT_11 SensorType11
;
366 IPMI_SDR_RECORD_STRUCT_C0 SensorTypeC0
;
367 IPMI_SDR_RECORD_STRUCT_HEADER SensorHeader
;
368 } IPMI_SENSOR_RECORD_STRUCT
;
371 UINT16 ReservationId
;
375 } IPMI_GET_SDR_REQUEST
;
378 UINT8 CompletionCode
;
380 IPMI_SENSOR_RECORD_STRUCT RecordData
;
381 } IPMI_GET_SDR_RESPONSE
;
384 // Definitions for Add SDR command
386 #define IPMI_STORAGE_ADD_SDR 0x24
389 // Constants and Structure definitions for "Add SDR" command to follow here
393 // Definitions for Partial Add SDR command
395 #define IPMI_STORAGE_PARTIAL_ADD_SDR 0x25
398 // Constants and Structure definitions for "Partial Add SDR" command to follow here
402 // Definitions for Delete SDR command
404 #define IPMI_STORAGE_DELETE_SDR 0x26
407 // Constants and Structure definitions for "Delete SDR" command to follow here
411 // Definitions for Clear SDR Repository command
413 #define IPMI_STORAGE_CLEAR_SDR 0x27
416 // Constants and Structure definitions for "Clear SDR Repository" command to follow here
420 // Definitions for Get SDR Repository Time command
422 #define IPMI_STORAGE_GET_SDR_REPOSITORY_TIME 0x28
425 // Constants and Structure definitions for "Get SDR Repository Time" command to follow here
429 // Definitions for Set SDR Repository Time command
431 #define IPMI_STORAGE_SET_SDR_REPOSITORY_TIME 0x29
434 // Constants and Structure definitions for "Set SDR Repository Time" command to follow here
438 // Definitions for Enter SDR Repository Update Mode command
440 #define IPMI_STORAGE_ENTER_SDR_UPDATE_MODE 0x2A
443 // Constants and Structure definitions for "Enter SDR Repository Update Mode" command to follow here
447 // Definitions for Exit SDR Repository Update Mode command
449 #define IPMI_STORAGE_EXIT_SDR_UPDATE_MODE 0x2B
452 // Constants and Structure definitions for "Exit SDR Repository Update Mode" command to follow here
456 // Definitions for Run Initialize Agent command
458 #define IPMI_STORAGE_RUN_INIT_AGENT 0x2C
461 // Constants and Structure definitions for "Run Initialize Agent" command to follow here
465 // Below is Definitions for System Event Log(SEL) Commands (Chapter 31)
469 // Definitions for Get SEL Info command
471 #define IPMI_STORAGE_GET_SEL_INFO 0x40
474 // Constants and Structure definitions for "Get SEL Info" command to follow here
476 #define IPMI_GET_SEL_INFO_OPERATION_SUPPORT_GET_SEL_ALLOCATION_INFO_CMD BIT0
477 #define IPMI_GET_SEL_INFO_OPERATION_SUPPORT_RESERVE_SEL_CMD BIT1
478 #define IPMI_GET_SEL_INFO_OPERATION_SUPPORT_PARTIAL_ADD_SEL_ENTRY_CMD BIT2
479 #define IPMI_GET_SEL_INFO_OPERATION_SUPPORT_DELETE_SEL_CMD BIT3
480 #define IPMI_GET_SEL_INFO_OPERATION_SUPPORT_OVERFLOW_FLAG BIT7
483 UINT8 CompletionCode
;
484 UINT8 Version
; // Version of SEL
485 UINT16 NoOfEntries
; // No of Entries in the SEL
486 UINT16 FreeSpace
; // Free space in Bytes
487 UINT32 RecentAddTimeStamp
; // Most Recent Addition of Time Stamp
488 UINT32 RecentEraseTimeStamp
; // Most Recent Erasure of Time Stamp
489 UINT8 OperationSupport
; // Operation Support
490 } IPMI_GET_SEL_INFO_RESPONSE
;
493 // Definitions for Get SEL Allocation Info command
495 #define IPMI_STORAGE_GET_SEL_ALLOCATION_INFO 0x41
498 // Constants and Structure definitions for "Get SEL Allocation Info" command to follow here
502 // Definitions for Reserve SEL command
504 #define IPMI_STORAGE_RESERVE_SEL 0x42
507 // Constants and Structure definitions for "Reserve SEL" command to follow here
510 UINT8 CompletionCode
;
511 UINT8 ReservationId
[2]; // Reservation ID. LS byte first.
512 } IPMI_RESERVE_SEL_RESPONSE
;
515 // Definitions for Get SEL Entry command
517 #define IPMI_STORAGE_GET_SEL_ENTRY 0x43
520 // Constants and Structure definitions for "Get SEL Entry" command to follow here
524 // Below is Definitions for SEL Record Formats (Chapter 32)
538 } IPMI_SEL_EVENT_RECORD_DATA
;
542 UINT8 RecordType
; // C0h-DFh = OEM system event record
544 UINT8 ManufacturerId
[3];
546 } IPMI_TIMESTAMPED_OEM_SEL_RECORD_DATA
;
550 UINT8 RecordType
; // E0h-FFh = OEM system event record
551 UINT8 OEMDefined
[13];
552 } IPMI_NON_TIMESTAMPED_OEM_SEL_RECORD_DATA
;
555 UINT8 ReserveId
[2]; // Reservation ID, LS Byte First
556 UINT8 SelRecID
[2]; // Sel Record ID, LS Byte First
557 UINT8 Offset
; // Offset Into Record
558 UINT8 BytesToRead
; // Bytes to be Read, 0xFF for entire record
559 } IPMI_GET_SEL_ENTRY_REQUEST
;
562 UINT8 CompletionCode
;
563 UINT16 NextSelRecordId
; // Next SEL Record ID, LS Byte first
564 IPMI_SEL_EVENT_RECORD_DATA RecordData
;
565 } IPMI_GET_SEL_ENTRY_RESPONSE
;
568 // Definitions for Add SEL Entry command
570 #define IPMI_STORAGE_ADD_SEL_ENTRY 0x44
573 // Constants and Structure definitions for "Add SEL Entry" command to follow here
576 IPMI_SEL_EVENT_RECORD_DATA RecordData
;
577 } IPMI_ADD_SEL_ENTRY_REQUEST
;
580 UINT8 CompletionCode
;
581 UINT16 RecordId
; // Record ID for added record, LS Byte first
582 } IPMI_ADD_SEL_ENTRY_RESPONSE
;
585 // Definitions for Partial Add SEL Entry command
587 #define IPMI_STORAGE_PARTIAL_ADD_SEL_ENTRY 0x45
590 // Constants and Structure definitions for "Partial Add SEL Entry" command to follow here
593 UINT16 ReservationId
;
595 UINT8 OffsetIntoRecord
;
598 } IPMI_PARTIAL_ADD_SEL_ENTRY_REQUEST
;
601 UINT8 CompletionCode
;
603 } IPMI_PARTIAL_ADD_SEL_ENTRY_RESPONSE
;
606 // Definitions for Delete SEL Entry command
608 #define IPMI_STORAGE_DELETE_SEL_ENTRY 0x46
611 // Constants and Structure definitions for "Delete SEL Entry" command to follow here
614 UINT8 ReserveId
[2]; // Reservation ID, LS byte first
615 UINT8 RecordToDelete
[2]; // Record to Delete, LS Byte First
616 } IPMI_DELETE_SEL_ENTRY_REQUEST
;
618 #define IPMI_DELETE_SEL_ENTRY_RESPONSE_TYPE_UNSUPPORTED 0x80
619 #define IPMI_DELETE_SEL_ENTRY_RESPONSE_ERASE_IN_PROGRESS 0x81
622 UINT8 CompletionCode
;
623 UINT16 RecordId
; // Record ID added. LS byte first
624 } IPMI_DELETE_SEL_ENTRY_RESPONSE
;
627 // Definitions for Clear SEL command
629 #define IPMI_STORAGE_CLEAR_SEL 0x47
632 // Constants and Structure definitions for "Clear SEL" command to follow here
634 #define IPMI_CLEAR_SEL_REQUEST_C_CHAR_ASCII 0x43
635 #define IPMI_CLEAR_SEL_REQUEST_L_CHAR_ASCII 0x4C
636 #define IPMI_CLEAR_SEL_REQUEST_R_CHAR_ASCII 0x52
637 #define IPMI_CLEAR_SEL_REQUEST_INITIALIZE_ERASE 0xAA
638 #define IPMI_CLEAR_SEL_REQUEST_GET_ERASE_STATUS 0x00
641 UINT8 Reserve
[2]; // Reserve ID, LSB first
642 UINT8 AscC
; // Ascii for 'C' (0x43)
643 UINT8 AscL
; // Ascii for 'L' (0x4c)
644 UINT8 AscR
; // Ascii for 'R' (0x52)
645 UINT8 Erase
; // 0xAA, Initiate Erase, 0x00 Get Erase Status
646 } IPMI_CLEAR_SEL_REQUEST
;
648 #define IPMI_CLEAR_SEL_RESPONSE_ERASURE_IN_PROGRESS 0x00
649 #define IPMI_CLEAR_SEL_RESPONSE_ERASURE_COMPLETED 0x01
652 UINT8 CompletionCode
;
653 UINT8 ErasureProgress
;
654 } IPMI_CLEAR_SEL_RESPONSE
;
657 // Definitions for Get SEL Time command
659 #define IPMI_STORAGE_GET_SEL_TIME 0x48
662 // Constants and Structure definitions for "Get SEL Time" command to follow here
665 UINT8 CompletionCode
;
666 UINT32 Timestamp
; // Present Timestamp clock reading. LS byte first.
667 } IPMI_GET_SEL_TIME_RESPONSE
;
670 // Definitions for Set SEL Time command
672 #define IPMI_STORAGE_SET_SEL_TIME 0x49
675 // Constants and Structure definitions for "Set SEL Time" command to follow here
679 } IPMI_SET_SEL_TIME_REQUEST
;
682 // Definitions for Get Auxillary Log Status command
684 #define IPMI_STORAGE_GET_AUXILLARY_LOG_STATUS 0x5A
687 // Constants and Structure definitions for "Get Auxillary Log Status" command to follow here
691 // Definitions for Set Auxillary Log Status command
693 #define IPMI_STORAGE_SET_AUXILLARY_LOG_STATUS 0x5B
696 // Constants and Structure definitions for "Set Auxillary Log Status" command to follow here
700 // Definitions for Get SEL Time UTC Offset command
702 #define IPMI_STORAGE_GET_SEL_TIME_UTC_OFFSET 0x5C
705 // Constants and Structure definitions for "Get SEL Time UTC Offset" command to follow here
708 UINT8 CompletionCode
;
710 // 16-bit, 2s-complement signed integer for the offset in minutes from UTC to SEL Time.
711 // LS-byte first. (ranges from -1440 to 1440)
714 } IPMI_GET_SEL_TIME_UTC_OFFSET_RESPONSE
;
717 // Definitions for Set SEL Time UTC Offset command
719 #define IPMI_STORAGE_SET_SEL_TIME_UTC_OFFSET 0x5D
722 // Constants and Structure definitions for "Set SEL Time UTC Offset" command to follow here
725 #define IPMI_COMPLETE_SEL_RECORD 0xFF
727 #define IPMI_SEL_SYSTEM_RECORD 0x02
728 #define IPMI_SEL_OEM_TIME_STAMP_RECORD_START 0xC0
729 #define IPMI_SEL_OEM_TIME_STAMP_RECORD_END 0xDF
730 #define IPMI_SEL_OEM_NO_TIME_STAMP_RECORD_START 0xE0
731 #define IPMI_SEL_OEM_NO_TIME_STAMP_RECORD_END 0xFF
733 #define IPMI_SEL_EVENT_DIR(EventDirType) (EventDirType >> 7)
734 #define IPMI_SEL_EVENT_DIR_ASSERTION_EVENT 0x00
735 #define IPMI_SEL_EVENT_DIR_DEASSERTION_EVENT 0x01
737 #define IPMI_SEL_EVENT_TYPE(EventDirType) (EventDirType & 0x7F)
739 // Event/Reading Type Code Ranges (Chapter 42)
741 #define IPMI_SEL_EVENT_TYPE_UNSPECIFIED 0x00
742 #define IPMI_SEL_EVENT_TYPE_THRESHOLD 0x01
743 #define IPMI_SEL_EVENT_TYPE_GENERIC_START 0x02
744 #define IPMI_SEL_EVENT_TYPE_GENERIC_END 0x0C
745 #define IPMI_SEL_EVENT_TYPE_SENSOR_SPECIFIC 0x6F
746 #define IPMI_SEL_EVENT_TYPE_OEM_START 0x70
747 #define IPMI_SEL_EVENT_TYPE_OEM_END 0x7F
749 #define SOFTWARE_ID_FROM_GENERATOR_ID(GeneratorId) ((GeneratorId & 0xFF) >> 1)
751 // System Software IDs definitions (Section 5.5)
753 #define IPMI_SWID_BIOS_RANGE_START 0x00
754 #define IPMI_SWID_BIOS_RANGE_END 0x0F
755 #define IPMI_SWID_SMI_HANDLER_RANGE_START 0x10
756 #define IPMI_SWID_SMI_HANDLER_RANGE_END 0x1F
757 #define IPMI_SWID_SMS_RANGE_START 0x20
758 #define IPMI_SWID_SMS_RANGE_END 0x2F
759 #define IPMI_SWID_OEM_RANGE_START 0x30
760 #define IPMI_SWID_OEM_RANGE_END 0x3F
761 #define IPMI_SWID_REMOTE_CONSOLE_RANGE_START 0x40
762 #define IPMI_SWID_REMOTE_CONSOLE_RANGE_END 0x46
763 #define IPMI_SWID_TERMINAL_REMOTE_CONSOLE_ID 0x47
765 #define SLAVE_ADDRESS_FROM_GENERATOR_ID(GeneratorId) ((GeneratorId & 0xFF) >> 1)
766 #define LUN_FROM_GENERATOR_ID(GeneratorId) ((GeneratorId >> 8) & 0x03)
767 #define CHANNEL_NUMBER_FROM_GENERATOR_ID(GeneratorId) ((GeneratorId >> 12) & 0x0F)
769 #define IPMI_EVM_REVISION 0x04
770 #define IPMI_BIOS_ID 0x18
771 #define IPMI_FORMAT_REV 0x00
772 #define IPMI_FORMAT_REV1 0x01
773 #define IPMI_SOFTWARE_ID 0x01
774 #define IPMI_PLATFORM_VAL_ID 0x01
775 #define IPMI_GENERATOR_ID(i, f) ((i << 1) | (f << 1) | IPMI_SOFTWARE_ID)
777 #define IPMI_SENSOR_TYPE_EVENT_CODE_DISCRETE 0x6F
779 #define IPMI_OEM_SPECIFIC_DATA 0x02
780 #define IPMI_SENSOR_SPECIFIC_DATA 0x03