]> git.proxmox.com Git - mirror_edk2.git/blob - MdePkg/Include/IndustryStandard/IpmiNetFnApp.h
MdePkg/IndustryStandard: Update IPMI definitions
[mirror_edk2.git] / MdePkg / Include / IndustryStandard / IpmiNetFnApp.h
1 /** @file
2 IPMI 2.0 definitions from the IPMI Specification Version 2.0, Revision 1.1.
3
4 This file contains all NetFn App commands, including:
5 IPM Device "Global" Commands (Chapter 20)
6 Firmware Firewall & Command Discovery Commands (Chapter 21)
7 BMC Watchdog Timer Commands (Chapter 27)
8 IPMI Messaging Support Commands (Chapter 22)
9 RMCP+ Support and Payload Commands (Chapter 24)
10
11 See IPMI specification, Appendix G, Command Assignments
12 and Appendix H, Sub-function Assignments.
13
14 Copyright (c) 1999 - 2018, Intel Corporation. All rights reserved.<BR>
15 Copyright (C) 2023 Advanced Micro Devices, Inc. All rights reserved.<BR>
16 SPDX-License-Identifier: BSD-2-Clause-Patent
17 **/
18
19 #ifndef _IPMI_NET_FN_APP_H_
20 #define _IPMI_NET_FN_APP_H_
21
22 #pragma pack(1)
23 //
24 // Net function definition for App command
25 //
26 #define IPMI_NETFN_APP 0x06
27
28 //
29 // Below is Definitions for IPM Device "Global" Commands (Chapter 20)
30 //
31
32 //
33 // Definitions for Get Device ID command
34 //
35 #define IPMI_APP_GET_DEVICE_ID 0x1
36
37 //
38 // Constants and Structure definitions for "Get Device ID" command to follow here
39 //
40 typedef union {
41 struct {
42 UINT8 DeviceRevision : 4;
43 UINT8 Reserved : 3;
44 UINT8 DeviceSdr : 1;
45 } Bits;
46 UINT8 Uint8;
47 } IPMI_GET_DEVICE_ID_DEVICE_REV;
48
49 typedef union {
50 struct {
51 UINT8 MajorFirmwareRev : 7;
52 UINT8 UpdateMode : 1;
53 } Bits;
54 UINT8 Uint8;
55 } IPMI_GET_DEVICE_ID_FIRMWARE_REV_1;
56
57 typedef union {
58 struct {
59 UINT8 SensorDeviceSupport : 1;
60 UINT8 SdrRepositorySupport : 1;
61 UINT8 SelDeviceSupport : 1;
62 UINT8 FruInventorySupport : 1;
63 UINT8 IpmbMessageReceiver : 1;
64 UINT8 IpmbMessageGenerator : 1;
65 UINT8 BridgeSupport : 1;
66 UINT8 ChassisSupport : 1;
67 } Bits;
68 UINT8 Uint8;
69 } IPMI_GET_DEVICE_ID_DEVICE_SUPPORT;
70
71 typedef struct {
72 UINT8 CompletionCode;
73 UINT8 DeviceId;
74 IPMI_GET_DEVICE_ID_DEVICE_REV DeviceRevision;
75 IPMI_GET_DEVICE_ID_FIRMWARE_REV_1 FirmwareRev1;
76 UINT8 MinorFirmwareRev;
77 UINT8 SpecificationVersion;
78 IPMI_GET_DEVICE_ID_DEVICE_SUPPORT DeviceSupport;
79 UINT8 ManufacturerId[3];
80 UINT16 ProductId;
81 UINT32 AuxFirmwareRevInfo;
82 } IPMI_GET_DEVICE_ID_RESPONSE;
83
84 //
85 // Definitions for Cold Reset command
86 //
87 #define IPMI_APP_COLD_RESET 0x2
88
89 //
90 // Constants and Structure definitions for "Cold Reset" command to follow here
91 //
92
93 //
94 // Definitions for Warm Reset command
95 //
96 #define IPMI_APP_WARM_RESET 0x3
97
98 //
99 // Constants and Structure definitions for "Warm Reset" command to follow here
100 //
101
102 //
103 // Definitions for Get Self Results command
104 //
105 #define IPMI_APP_GET_SELFTEST_RESULTS 0x4
106
107 //
108 // Constants and Structure definitions for "Get Self Test Results" command to follow here
109 //
110 typedef struct {
111 UINT8 CompletionCode;
112 UINT8 Result;
113 UINT8 Param;
114 } IPMI_SELF_TEST_RESULT_RESPONSE;
115
116 #define IPMI_APP_SELFTEST_NO_ERROR 0x55
117 #define IPMI_APP_SELFTEST_NOT_IMPLEMENTED 0x56
118 #define IPMI_APP_SELFTEST_ERROR 0x57
119 #define IPMI_APP_SELFTEST_FATAL_HW_ERROR 0x58
120 #define IPMI_APP_SELFTEST_INACCESSIBLE_SEL 0x80
121 #define IPMI_APP_SELFTEST_INACCESSIBLE_SDR 0x40
122 #define IPMI_APP_SELFTEST_INACCESSIBLE_FRU 0x20
123 #define IPMI_APP_SELFTEST_IPMB_SIGNAL_FAIL 0x10
124 #define IPMI_APP_SELFTEST_SDR_REPOSITORY_EMPTY 0x08
125 #define IPMI_APP_SELFTEST_FRU_CORRUPT 0x04
126 #define IPMI_APP_SELFTEST_FW_BOOTBLOCK_CORRUPT 0x02
127 #define IPMI_APP_SELFTEST_FW_CORRUPT 0x01
128
129 //
130 // Definitions for Manufacturing Test ON command
131 //
132 #define IPMI_APP_MANUFACTURING_TEST_ON 0x5
133
134 //
135 // Constants and Structure definitions for "Manufacturing Test ON" command to follow here
136 //
137
138 //
139 // Definitions for Set ACPI Power State command
140 //
141 #define IPMI_APP_SET_ACPI_POWERSTATE 0x6
142
143 //
144 // Constants and Structure definitions for "Set ACPI Power State" command to follow here
145 //
146
147 //
148 // Definitions for System Power State
149 //
150 // Working
151 #define IPMI_SYSTEM_POWER_STATE_S0_G0 0x0
152 #define IPMI_SYSTEM_POWER_STATE_S1 0x1
153 #define IPMI_SYSTEM_POWER_STATE_S2 0x2
154 #define IPMI_SYSTEM_POWER_STATE_S3 0x3
155 #define IPMI_SYSTEM_POWER_STATE_S4 0x4
156 // Soft off
157 #define IPMI_SYSTEM_POWER_STATE_S5_G2 0x5
158 // Sent when message source cannot differentiate between S4 and S5
159 #define IPMI_SYSTEM_POWER_STATE_S4_S5 0x6
160 // Mechanical off
161 #define IPMI_SYSTEM_POWER_STATE_G3 0x7
162 // Sleeping - cannot differentiate between S1-S3
163 #define IPMI_SYSTEM_POWER_STATE_SLEEPING 0x8
164 // Sleeping - cannot differentiate between S1-S4
165 #define IPMI_SYSTEM_POWER_STATE_G1_SLEEPING 0x9
166 // S5 entered by override
167 #define IPMI_SYSTEM_POWER_STATE_OVERRIDE 0xA
168 #define IPMI_SYSTEM_POWER_STATE_LEGACY_ON 0x20
169 #define IPMI_SYSTEM_POWER_STATE_LEGACY_OFF 0x21
170 #define IPMI_SYSTEM_POWER_STATE_UNKNOWN 0x2A
171 #define IPMI_SYSTEM_POWER_STATE_NO_CHANGE 0x7F
172
173 //
174 // Definitions for Device Power State
175 //
176 #define IPMI_DEVICE_POWER_STATE_D0 0x0
177 #define IPMI_DEVICE_POWER_STATE_D1 0x1
178 #define IPMI_DEVICE_POWER_STATE_D2 0x2
179 #define IPMI_DEVICE_POWER_STATE_D3 0x3
180 #define IPMI_DEVICE_POWER_STATE_UNKNOWN 0x2A
181 #define IPMI_DEVICE_POWER_STATE_NO_CHANGE 0x7F
182
183 typedef union {
184 struct {
185 UINT8 PowerState : 7;
186 UINT8 StateChange : 1;
187 } Bits;
188 UINT8 Uint8;
189 } IPMI_ACPI_POWER_STATE;
190
191 typedef struct {
192 IPMI_ACPI_POWER_STATE SystemPowerState;
193 IPMI_ACPI_POWER_STATE DevicePowerState;
194 } IPMI_SET_ACPI_POWER_STATE_REQUEST;
195
196 //
197 // Definitions for Get ACPI Power State command
198 //
199 #define IPMI_APP_GET_ACPI_POWERSTATE 0x7
200
201 //
202 // Constants and Structure definitions for "Get ACPI Power State" command to follow here
203 //
204
205 //
206 // Definitions for Get Device GUID command
207 //
208 #define IPMI_APP_GET_DEVICE_GUID 0x8
209
210 //
211 // Constants and Structure definitions for "Get Device GUID" command to follow here
212 //
213 //
214 // Message structure definition for "Get Device Guid" IPMI command
215 //
216 typedef struct {
217 UINT8 CompletionCode;
218 UINT8 Guid[16];
219 } IPMI_GET_DEVICE_GUID_RESPONSE;
220
221 //
222 // Below is Definitions for BMC Watchdog Timer Commands (Chapter 27)
223 //
224
225 //
226 // Definitions for Reset WatchDog Timer command
227 //
228 #define IPMI_APP_RESET_WATCHDOG_TIMER 0x22
229
230 //
231 // Definitions for Set WatchDog Timer command
232 //
233 #define IPMI_APP_SET_WATCHDOG_TIMER 0x24
234
235 //
236 // Constants and Structure definitions for "Set WatchDog Timer" command to follow here
237 //
238
239 //
240 // Definitions for watchdog timer use
241 //
242 #define IPMI_WATCHDOG_TIMER_BIOS_FRB2 0x1
243 #define IPMI_WATCHDOG_TIMER_BIOS_POST 0x2
244 #define IPMI_WATCHDOG_TIMER_OS_LOADER 0x3
245 #define IPMI_WATCHDOG_TIMER_SMS 0x4
246 #define IPMI_WATCHDOG_TIMER_OEM 0x5
247
248 //
249 // Structure definition for timer Use
250 //
251 typedef union {
252 struct {
253 UINT8 TimerUse : 3;
254 UINT8 Reserved : 3;
255 UINT8 TimerRunning : 1;
256 UINT8 TimerUseExpirationFlagLog : 1;
257 } Bits;
258 UINT8 Uint8;
259 } IPMI_WATCHDOG_TIMER_USE;
260
261 //
262 // Definitions for watchdog timeout action
263 //
264 #define IPMI_WATCHDOG_TIMER_ACTION_NO_ACTION 0x0
265 #define IPMI_WATCHDOG_TIMER_ACTION_HARD_RESET 0x1
266 #define IPMI_WATCHDOG_TIMER_ACTION_POWER_DONW 0x2
267 #define IPMI_WATCHDOG_TIMER_ACTION_POWER_CYCLE 0x3
268
269 //
270 // Definitions for watchdog pre-timeout interrupt
271 //
272 #define IPMI_WATCHDOG_PRE_TIMEOUT_INTERRUPT_NONE 0x0
273 #define IPMI_WATCHDOG_PRE_TIMEOUT_INTERRUPT_SMI 0x1
274 #define IPMI_WATCHDOG_PRE_TIMEOUT_INTERRUPT_NMI 0x2
275 #define IPMI_WATCHDOG_PRE_TIMEOUT_INTERRUPT_MESSAGING 0x3
276
277 //
278 // Structure definitions for Timer Actions
279 //
280 typedef union {
281 struct {
282 UINT8 TimeoutAction : 3;
283 UINT8 Reserved1 : 1;
284 UINT8 PreTimeoutInterrupt : 3;
285 UINT8 Reserved2 : 1;
286 } Bits;
287 UINT8 Uint8;
288 } IPMI_WATCHDOG_TIMER_ACTIONS;
289
290 //
291 // Bit definitions for Timer use expiration flags
292 //
293 #define IPMI_WATCHDOG_TIMER_EXPIRATION_FLAG_BIOS_FRB2 BIT1
294 #define IPMI_WATCHDOG_TIMER_EXPIRATION_FLAG_BIOS_POST BIT2
295 #define IPMI_WATCHDOG_TIMER_EXPIRATION_FLAG_OS_LOAD BIT3
296 #define IPMI_WATCHDOG_TIMER_EXPIRATION_FLAG_SMS_OS BIT4
297 #define IPMI_WATCHDOG_TIMER_EXPIRATION_FLAG_OEM BIT5
298
299 typedef struct {
300 IPMI_WATCHDOG_TIMER_USE TimerUse;
301 IPMI_WATCHDOG_TIMER_ACTIONS TimerActions;
302 UINT8 PretimeoutInterval;
303 UINT8 TimerUseExpirationFlagsClear;
304 UINT16 InitialCountdownValue;
305 } IPMI_SET_WATCHDOG_TIMER_REQUEST;
306
307 //
308 // Definitions for Get WatchDog Timer command
309 //
310 #define IPMI_APP_GET_WATCHDOG_TIMER 0x25
311
312 //
313 // Constants and Structure definitions for "Get WatchDog Timer" command to follow here
314 //
315 typedef struct {
316 UINT8 CompletionCode;
317 IPMI_WATCHDOG_TIMER_USE TimerUse;
318 IPMI_WATCHDOG_TIMER_ACTIONS TimerActions;
319 UINT8 PretimeoutInterval;
320 UINT8 TimerUseExpirationFlagsClear;
321 UINT16 InitialCountdownValue;
322 UINT16 PresentCountdownValue;
323 } IPMI_GET_WATCHDOG_TIMER_RESPONSE;
324
325 //
326 // Below is Definitions for IPMI Messaging Support Commands (Chapter 22)
327 //
328
329 //
330 // Definitions for Set BMC Global Enables command
331 //
332 #define IPMI_APP_SET_BMC_GLOBAL_ENABLES 0x2E
333
334 //
335 // Constants and Structure definitions for "Set BMC Global Enables " command to follow here
336 //
337 typedef union {
338 struct {
339 UINT8 ReceiveMessageQueueInterrupt : 1;
340 UINT8 EventMessageBufferFullInterrupt : 1;
341 UINT8 EventMessageBuffer : 1;
342 UINT8 SystemEventLogging : 1;
343 UINT8 Reserved : 1;
344 UINT8 Oem0Enable : 1;
345 UINT8 Oem1Enable : 1;
346 UINT8 Oem2Enable : 1;
347 } Bits;
348 UINT8 Uint8;
349 } IPMI_BMC_GLOBAL_ENABLES;
350
351 typedef struct {
352 IPMI_BMC_GLOBAL_ENABLES SetEnables;
353 } IPMI_SET_BMC_GLOBAL_ENABLES_REQUEST;
354
355 //
356 // Definitions for Get BMC Global Enables command
357 //
358 #define IPMI_APP_GET_BMC_GLOBAL_ENABLES 0x2F
359
360 //
361 // Constants and Structure definitions for "Get BMC Global Enables " command to follow here
362 //
363 typedef struct {
364 UINT8 CompletionCode;
365 IPMI_BMC_GLOBAL_ENABLES GetEnables;
366 } IPMI_GET_BMC_GLOBAL_ENABLES_RESPONSE;
367
368 //
369 // Definitions for Clear Message Flags command
370 //
371 #define IPMI_APP_CLEAR_MESSAGE_FLAGS 0x30
372
373 //
374 // Constants and Structure definitions for "Clear Message Flags" command to follow here
375 //
376 typedef union {
377 struct {
378 UINT8 ReceiveMessageQueue : 1;
379 UINT8 EventMessageBuffer : 1;
380 UINT8 Reserved1 : 1;
381 UINT8 WatchdogPerTimeoutInterrupt : 1;
382 UINT8 Reserved2 : 1;
383 UINT8 Oem0 : 1;
384 UINT8 Oem1 : 1;
385 UINT8 Oem2 : 1;
386 } Bits;
387 UINT8 Uint8;
388 } IPMI_MESSAGE_FLAGS;
389
390 typedef struct {
391 IPMI_MESSAGE_FLAGS ClearFlags;
392 } IPMI_CLEAR_MESSAGE_FLAGS_REQUEST;
393
394 //
395 // Definitions for Get Message Flags command
396 //
397 #define IPMI_APP_GET_MESSAGE_FLAGS 0x31
398
399 //
400 // Constants and Structure definitions for "Get Message Flags" command to follow here
401 //
402 typedef struct {
403 UINT8 CompletionCode;
404 IPMI_MESSAGE_FLAGS GetFlags;
405 } IPMI_GET_MESSAGE_FLAGS_RESPONSE;
406
407 //
408 // Definitions for Enable Message Channel Receive command
409 //
410 #define IPMI_APP_ENABLE_MESSAGE_CHANNEL_RECEIVE 0x32
411
412 //
413 // Constants and Structure definitions for "Enable Message Channel Receive" command to follow here
414 //
415
416 //
417 // Definitions for Get Message command
418 //
419 #define IPMI_APP_GET_MESSAGE 0x33
420
421 //
422 // Constants and Structure definitions for "Get Message" command to follow here
423 //
424 typedef union {
425 struct {
426 UINT8 ChannelNumber : 4;
427 UINT8 InferredPrivilegeLevel : 4;
428 } Bits;
429 UINT8 Uint8;
430 } IPMI_GET_MESSAGE_CHANNEL_NUMBER;
431
432 typedef struct {
433 UINT8 CompletionCode;
434 IPMI_GET_MESSAGE_CHANNEL_NUMBER ChannelNumber;
435 UINT8 MessageData[0];
436 } IPMI_GET_MESSAGE_RESPONSE;
437
438 //
439 // Definitions for Send Message command
440 //
441 #define IPMI_APP_SEND_MESSAGE 0x34
442
443 //
444 // Constants and Structure definitions for "Send Message" command to follow here
445 //
446 typedef union {
447 struct {
448 UINT8 ChannelNumber : 4;
449 UINT8 Authentication : 1;
450 UINT8 Encryption : 1;
451 UINT8 Tracking : 2;
452 } Bits;
453 UINT8 Uint8;
454 } IPMI_SEND_MESSAGE_CHANNEL_NUMBER;
455
456 typedef struct {
457 UINT8 CompletionCode;
458 IPMI_SEND_MESSAGE_CHANNEL_NUMBER ChannelNumber;
459 UINT8 MessageData[0];
460 } IPMI_SEND_MESSAGE_REQUEST;
461
462 typedef struct {
463 UINT8 CompletionCode;
464 UINT8 ResponseData[0];
465 } IPMI_SEND_MESSAGE_RESPONSE;
466
467 //
468 // Definitions for Read Event Message Buffer command
469 //
470 #define IPMI_APP_READ_EVENT_MSG_BUFFER 0x35
471
472 //
473 // Constants and Structure definitions for "Read Event Message Buffer" command to follow here
474 //
475
476 //
477 // Definitions for Get BT Interface Capabilities command
478 //
479 #define IPMI_APP_GET_BT_INTERFACE_CAPABILITY 0x36
480
481 //
482 // Constants and Structure definitions for "Get BT Interface Capabilities" command to follow here
483 //
484
485 //
486 // Definitions for Get System GUID command
487 //
488 #define IPMI_APP_GET_SYSTEM_GUID 0x37
489
490 typedef struct {
491 UINT8 CompletionCode;
492 EFI_GUID SystemUuid;
493 } IPMI_GET_SYSTEM_UUID_RESPONSE;
494
495 //
496 // Constants and Structure definitions for "Get System GUID" command to follow here
497 //
498
499 //
500 // Definitions for Get Channel Authentication Capabilities command
501 //
502 #define IPMI_APP_GET_CHANNEL_AUTHENTICATION_CAPABILITIES 0x38
503
504 //
505 // Constants and Structure definitions for "Get Channel Authentication Capabilities" command to follow here
506 //
507
508 //
509 // Definitions for Get Session Challenge command
510 //
511 #define IPMI_APP_GET_SESSION_CHALLENGE 0x39
512
513 //
514 // Constants and Structure definitions for "Get Session Challenge" command to follow here
515 //
516
517 //
518 // Definitions for Activate Session command
519 //
520 #define IPMI_APP_ACTIVATE_SESSION 0x3A
521
522 //
523 // Constants and Structure definitions for "Activate Session" command to follow here
524 //
525
526 //
527 // Definitions for Set Session Privelege Level command
528 //
529 #define IPMI_APP_SET_SESSION_PRIVELEGE_LEVEL 0x3B
530
531 //
532 // Constants and Structure definitions for "Set Session Privelege Level" command to follow here
533 //
534
535 //
536 // Definitions for Close Session command
537 //
538 #define IPMI_APP_CLOSE_SESSION 0x3C
539
540 //
541 // Constants and Structure definitions for "Close Session" command to follow here
542 //
543
544 //
545 // Definitions for Get Session Info command
546 //
547 #define IPMI_APP_GET_SESSION_INFO 0x3D
548
549 //
550 // Constants and Structure definitions for "Get Session Info" command to follow here
551 //
552
553 //
554 // Definitions for Get Auth Code command
555 //
556 #define IPMI_APP_GET_AUTHCODE 0x3F
557
558 //
559 // Constants and Structure definitions for "Get AuthCode" command to follow here
560 //
561
562 //
563 // Definitions for Set Channel Access command
564 //
565 #define IPMI_APP_SET_CHANNEL_ACCESS 0x40
566
567 //
568 // Constants and Structure definitions for "Set Channel Access" command to follow here
569 //
570
571 //
572 // Definitions for Get Channel Access command
573 //
574 #define IPMI_APP_GET_CHANNEL_ACCESS 0x41
575
576 //
577 // Constants and Structure definitions for "Get Channel Access" command to follow here
578 //
579
580 //
581 // Definitions for channel access memory type in Get Channel Access command request
582 //
583 #define IPMI_CHANNEL_ACCESS_MEMORY_TYPE_NON_VOLATILE 0x1
584 #define IPMI_CHANNEL_ACCESS_MEMORY_TYPE_PRESENT_VOLATILE_SETTING 0x2
585
586 //
587 // Definitions for channel access modes in Get Channel Access command response
588 //
589 #define IPMI_CHANNEL_ACCESS_MODES_DISABLED 0x0
590 #define IPMI_CHANNEL_ACCESS_MODES_PRE_BOOT_ONLY 0x1
591 #define IPMI_CHANNEL_ACCESS_MODES_ALWAYS_AVAILABLE 0x2
592 #define IPMI_CHANNEL_ACCESS_MODES_SHARED 0x3
593
594 typedef union {
595 struct {
596 UINT8 ChannelNo : 4;
597 UINT8 Reserved : 4;
598 } Bits;
599 UINT8 Uint8;
600 } IPMI_GET_CHANNEL_ACCESS_CHANNEL_NUMBER;
601
602 typedef union {
603 struct {
604 UINT8 Reserved : 6;
605 UINT8 MemoryType : 2;
606 } Bits;
607 UINT8 Uint8;
608 } IPMI_GET_CHANNEL_ACCESS_TYPE;
609
610 typedef struct {
611 IPMI_GET_CHANNEL_ACCESS_CHANNEL_NUMBER ChannelNumber;
612 IPMI_GET_CHANNEL_ACCESS_TYPE AccessType;
613 } IPMI_GET_CHANNEL_ACCESS_REQUEST;
614
615 typedef union {
616 struct {
617 UINT8 AccessMode : 3;
618 UINT8 UserLevelAuthEnabled : 1;
619 UINT8 MessageAuthEnable : 1;
620 UINT8 Alert : 1;
621 UINT8 Reserved : 2;
622 } Bits;
623 UINT8 Uint8;
624 } IPMI_GET_CHANNEL_ACCESS_CHANNEL_ACCESS;
625
626 typedef union {
627 struct {
628 UINT8 ChannelPriviledgeLimit : 4;
629 UINT8 Reserved : 4;
630 } Bits;
631 UINT8 Uint8;
632 } IPMI_GET_CHANNEL_ACCESS_PRIVILEGE_LIMIT;
633
634 typedef struct {
635 UINT8 CompletionCode;
636 IPMI_GET_CHANNEL_ACCESS_CHANNEL_ACCESS ChannelAccess;
637 IPMI_GET_CHANNEL_ACCESS_PRIVILEGE_LIMIT PrivilegeLimit;
638 } IPMI_GET_CHANNEL_ACCESS_RESPONSE;
639
640 //
641 // Definitions for Get Channel Info command
642 //
643 #define IPMI_APP_GET_CHANNEL_INFO 0x42
644
645 //
646 // Constants and Structure definitions for "Get Channel Info" command to follow here
647 //
648
649 //
650 // Definitions for channel media type
651 //
652 // IPMB (I2C)
653 #define IPMI_CHANNEL_MEDIA_TYPE_IPMB 0x1
654 // ICMB v1.0
655 #define IPMI_CHANNEL_MEDIA_TYPE_ICMB_1_0 0x2
656 // ICMB v0.9
657 #define IPMI_CHANNEL_MEDIA_TYPE_ICMB_0_9 0x3
658 // 802.3 LAN
659 #define IPMI_CHANNEL_MEDIA_TYPE_802_3_LAN 0x4
660 // Asynch. Serial/Modem (RS-232)
661 #define IPMI_CHANNEL_MEDIA_TYPE_RS_232 0x5
662 // Other LAN
663 #define IPMI_CHANNEL_MEDIA_TYPE_OTHER_LAN 0x6
664 // PCI SMBus
665 #define IPMI_CHANNEL_MEDIA_TYPE_PCI_SM_BUS 0x7
666 // SMBus v1.0/1.1
667 #define IPMI_CHANNEL_MEDIA_TYPE_SM_BUS_V1 0x8
668 // SMBus v2.0
669 #define IPMI_CHANNEL_MEDIA_TYPE_SM_BUS_V2 0x9
670 // USB 1.x
671 #define IPMI_CHANNEL_MEDIA_TYPE_USB1 0xA
672 // USB 2.x
673 #define IPMI_CHANNEL_MEDIA_TYPE_USB2 0xB
674 // System Interface (KCS, SMIC, or BT)
675 #define IPMI_CHANNEL_MEDIA_TYPE_SYSTEM_INTERFACE 0xC
676 // OEM
677 #define IPMI_CHANNEL_MEDIA_TYPE_OEM_START 0x60
678 #define IPMI_CHANNEL_MEDIA_TYPE_OEM_END 0x7F
679
680 //
681 // Definitions for channel protocol type
682 //
683 // Not available
684 #define IPMI_CHANNEL_PROTOCOL_TYPE_NA 0x00
685 // IPMB-1.0
686 #define IPMI_CHANNEL_PROTOCOL_TYPE_IPMB_1_0 0x01
687 // ICMB-1.0
688 #define IPMI_CHANNEL_PROTOCOL_TYPE_ICMB_1_0 0x02
689 // Reserved
690 #define IPMI_CHANNEL_PROTOCOL_TYPE_RESERVED 0x03
691 // IPMI SMBUS
692 #define IPMI_CHANNEL_PROTOCOL_TYPE_IPMI_SMBUS 0x04
693 // KCS
694 #define IPMI_CHANNEL_PROTOCOL_TYPE_KCS 0x05
695 // SMIC
696 #define IPMI_CHANNEL_PROTOCOL_TYPE_SMIC 0x06
697 // BT-10
698 #define IPMI_CHANNEL_PROTOCOL_TYPE_BT_10 0x07
699 // BT-15
700 #define IPMI_CHANNEL_PROTOCOL_TYPE_BT_15 0x08
701 // TMode
702 #define IPMI_CHANNEL_PROTOCOL_TYPE_TMODE 0x09
703
704 typedef union {
705 struct {
706 UINT8 ChannelNo : 4;
707 UINT8 Reserved : 4;
708 } Bits;
709 UINT8 Uint8;
710 } IPMI_CHANNEL_INFO_CHANNEL_NUMBER;
711
712 typedef union {
713 struct {
714 UINT8 ChannelMediumType : 7;
715 UINT8 Reserved : 1;
716 } Bits;
717 UINT8 Uint8;
718 } IPMI_CHANNEL_INFO_MEDIUM_TYPE;
719
720 typedef union {
721 struct {
722 UINT8 ChannelProtocolType : 5;
723 UINT8 Reserved : 3;
724 } Bits;
725 UINT8 Uint8;
726 } IPMI_CHANNEL_INFO_PROTOCOL_TYPE;
727
728 typedef union {
729 struct {
730 UINT8 ActiveSessionCount : 6;
731 UINT8 SessionSupport : 2;
732 } Bits;
733 UINT8 Uint8;
734 } IPMI_CHANNEL_INFO_SESSION_SUPPORT;
735
736 typedef struct {
737 UINT8 CompletionCode;
738 IPMI_CHANNEL_INFO_CHANNEL_NUMBER ChannelNumber;
739 IPMI_CHANNEL_INFO_MEDIUM_TYPE MediumType;
740 IPMI_CHANNEL_INFO_PROTOCOL_TYPE ProtocolType;
741 IPMI_CHANNEL_INFO_SESSION_SUPPORT SessionSupport;
742 UINT8 VendorId[3];
743 UINT16 AuxChannelInfo;
744 } IPMI_GET_CHANNEL_INFO_RESPONSE;
745
746 typedef struct {
747 IPMI_CHANNEL_INFO_CHANNEL_NUMBER ChannelNumber;
748 } IPMI_GET_CHANNEL_INFO_REQUEST;
749
750 //
751 // Constants and Structure definitions for "Get Channel Info" command to follow here
752 //
753
754 //
755 // Definitions for Set User Access command
756 //
757 #define IPMI_APP_SET_USER_ACCESS 0x43
758
759 //
760 // Constants and Structure definitions for "Set User Access" command to follow here
761 //
762
763 //
764 // Definitions for Get User Access command
765 //
766 #define IPMI_APP_GET_USER_ACCESS 0x44
767
768 //
769 // Constants and Structure definitions for "Get User Access" command to follow here
770 //
771 typedef union {
772 struct {
773 UINT8 ChannelNo : 4;
774 UINT8 Reserved : 4;
775 } Bits;
776 UINT8 Uint8;
777 } IPMI_GET_USER_ACCESS_CHANNEL_NUMBER;
778
779 typedef union {
780 struct {
781 UINT8 UserId : 6;
782 UINT8 Reserved : 2;
783 } Bits;
784 UINT8 Uint8;
785 } IPMI_USER_ID;
786
787 typedef struct {
788 IPMI_GET_USER_ACCESS_CHANNEL_NUMBER ChannelNumber;
789 IPMI_USER_ID UserId;
790 } IPMI_GET_USER_ACCESS_REQUEST;
791
792 typedef union {
793 struct {
794 UINT8 MaxUserId : 6;
795 UINT8 Reserved : 2;
796 } Bits;
797 UINT8 Uint8;
798 } IPMI_GET_USER_ACCESS_MAX_USER_ID;
799
800 typedef union {
801 struct {
802 UINT8 CurrentUserId : 6;
803 UINT8 UserIdEnableStatus : 2;
804 } Bits;
805 UINT8 Uint8;
806 } IPMI_GET_USER_ACCESS_CURRENT_USER;
807
808 typedef union {
809 struct {
810 UINT8 FixedUserId : 6;
811 UINT8 Reserved : 2;
812 } Bits;
813 UINT8 Uint8;
814 } IPMI_GET_USER_ACCESS_FIXED_NAME_USER;
815
816 typedef union {
817 struct {
818 UINT8 UserPrivilegeLimit : 4;
819 UINT8 EnableIpmiMessaging : 1;
820 UINT8 EnableUserLinkAuthetication : 1;
821 UINT8 UserAccessAvailable : 1;
822 UINT8 Reserved : 1;
823 } Bits;
824 UINT8 Uint8;
825 } IPMI_GET_USER_ACCESS_CHANNEL_ACCESS;
826
827 typedef struct {
828 UINT8 CompletionCode;
829 IPMI_GET_USER_ACCESS_MAX_USER_ID MaxUserId;
830 IPMI_GET_USER_ACCESS_CURRENT_USER CurrentUser;
831 IPMI_GET_USER_ACCESS_FIXED_NAME_USER FixedNameUser;
832 IPMI_GET_USER_ACCESS_CHANNEL_ACCESS ChannelAccess;
833 } IPMI_GET_USER_ACCESS_RESPONSE;
834
835 //
836 // Definitions for Set User Name command
837 //
838 #define IPMI_APP_SET_USER_NAME 0x45
839
840 //
841 // Constants and Structure definitions for "Set User Name" command to follow here
842 //
843 typedef struct {
844 IPMI_USER_ID UserId;
845 UINT8 UserName[16];
846 } IPMI_SET_USER_NAME_REQUEST;
847
848 //
849 // Definitions for Get User Name command
850 //
851 #define IPMI_APP_GET_USER_NAME 0x46
852
853 //
854 // Constants and Structure definitions for "Get User Name" command to follow here
855 //
856 typedef struct {
857 IPMI_USER_ID UserId;
858 } IPMI_GET_USER_NAME_REQUEST;
859
860 typedef struct {
861 UINT8 CompletionCode;
862 UINT8 UserName[16];
863 } IPMI_GET_USER_NAME_RESPONSE;
864
865 //
866 // Definitions for Set User Password command
867 //
868 #define IPMI_APP_SET_USER_PASSWORD 0x47
869
870 //
871 // Constants and Structure definitions for "Set User Password" command to follow here
872 //
873
874 //
875 // Definitions for Set User password command operation type
876 //
877 #define IPMI_SET_USER_PASSWORD_OPERATION_TYPE_DISABLE_USER 0x0
878 #define IPMI_SET_USER_PASSWORD_OPERATION_TYPE_ENABLE_USER 0x1
879 #define IPMI_SET_USER_PASSWORD_OPERATION_TYPE_SET_PASSWORD 0x2
880 #define IPMI_SET_USER_PASSWORD_OPERATION_TYPE_TEST_PASSWORD 0x3
881
882 //
883 // Definitions for Set user password command password size
884 //
885 #define IPMI_SET_USER_PASSWORD_PASSWORD_SIZE_16 0x0
886 #define IPMI_SET_USER_PASSWORD_PASSWORD_SIZE_20 0x1
887
888 typedef union {
889 struct {
890 UINT8 UserId : 6;
891 UINT8 Reserved : 1;
892 UINT8 PasswordSize : 1;
893 } Bits;
894 UINT8 Uint8;
895 } IPMI_SET_USER_PASSWORD_USER_ID;
896
897 typedef union {
898 struct {
899 UINT8 Operation : 2;
900 UINT8 Reserved : 6;
901 } Bits;
902 UINT8 Uint8;
903 } IPMI_SET_USER_PASSWORD_OPERATION;
904
905 typedef struct {
906 IPMI_SET_USER_PASSWORD_USER_ID UserId;
907 IPMI_SET_USER_PASSWORD_OPERATION Operation;
908 UINT8 PasswordData[0]; // 16 or 20 bytes, depending on the 'PasswordSize' field
909 } IPMI_SET_USER_PASSWORD_REQUEST;
910
911 //
912 // Below is Definitions for RMCP+ Support and Payload Commands (Chapter 24)
913 //
914
915 //
916 // Definitions for Activate Payload command
917 //
918 #define IPMI_APP_ACTIVATE_PAYLOAD 0x48
919
920 //
921 // Constants and Structure definitions for "Activate Payload" command to follow here
922 //
923
924 //
925 // Definitions for De-Activate Payload command
926 //
927 #define IPMI_APP_DEACTIVATE_PAYLOAD 0x49
928
929 //
930 // Constants and Structure definitions for "DeActivate Payload" command to follow here
931 //
932
933 //
934 // Definitions for Get Payload activation Status command
935 //
936 #define IPMI_APP_GET_PAYLOAD_ACTIVATION_STATUS 0x4a
937
938 //
939 // Constants and Structure definitions for "Get Payload activation Status" command to follow here
940 //
941
942 //
943 // Definitions for Get Payload Instance Info command
944 //
945 #define IPMI_APP_GET_PAYLOAD_INSTANCE_INFO 0x4b
946
947 //
948 // Constants and Structure definitions for "Get Payload Instance Info" command to follow here
949 //
950
951 //
952 // Definitions for Set User Payload Access command
953 //
954 #define IPMI_APP_SET_USER_PAYLOAD_ACCESS 0x4C
955
956 //
957 // Constants and Structure definitions for "Set User Payload Access" command to follow here
958 //
959
960 //
961 // Definitions for Get User Payload Access command
962 //
963 #define IPMI_APP_GET_USER_PAYLOAD_ACCESS 0x4D
964
965 //
966 // Constants and Structure definitions for "Get User Payload Access" command to follow here
967 //
968
969 //
970 // Definitions for Get Channel Payload Support command
971 //
972 #define IPMI_APP_GET_CHANNEL_PAYLOAD_SUPPORT 0x4E
973
974 //
975 // Constants and Structure definitions for "Get Channel Payload Support" command to follow here
976 //
977
978 //
979 // Definitions for Get Channel Payload Version command
980 //
981 #define IPMI_APP_GET_CHANNEL_PAYLOAD_VERSION 0x4F
982
983 //
984 // Constants and Structure definitions for "Get Channel Payload Version" command to follow here
985 //
986
987 //
988 // Definitions for Get Channel OEM Payload Info command
989 //
990 #define IPMI_APP_GET_CHANNEL_OEM_PAYLOAD_INFO 0x50
991
992 //
993 // Constants and Structure definitions for "Get Channel OEM Payload Info" command to follow here
994 //
995
996 //
997 // Definitions for Master Write-Read command
998 //
999 #define IPMI_APP_MASTER_WRITE_READ 0x52
1000
1001 //
1002 // Constants and Structure definitions for "Master Write Read" command to follow here
1003 //
1004
1005 //
1006 // Definitions for Get Channel Cipher Suites command
1007 //
1008 #define IPMI_APP_GET_CHANNEL_CIPHER_SUITES 0x54
1009
1010 //
1011 // Constants and Structure definitions for "Get Channel Cipher Suites" command to follow here
1012 //
1013
1014 //
1015 // Below is Definitions for RMCP+ Support and Payload Commands (Chapter 24, Section 3)
1016 //
1017
1018 //
1019 // Definitions for Suspend-Resume Payload Encryption command
1020 //
1021 #define IPMI_APP_SUSPEND_RESUME_PAYLOAD_ENCRYPTION 0x55
1022
1023 //
1024 // Constants and Structure definitions for "Suspend-Resume Payload Encryption" command to follow here
1025 //
1026
1027 //
1028 // Below is Definitions for IPMI Messaging Support Commands (Chapter 22, Section 25 and 9)
1029 //
1030
1031 //
1032 // Definitions for Set Channel Security Keys command
1033 //
1034 #define IPMI_APP_SET_CHANNEL_SECURITY_KEYS 0x56
1035
1036 //
1037 // Constants and Structure definitions for "Set Channel Security Keys" command to follow here
1038 //
1039
1040 //
1041 // Definitions for Get System Interface Capabilities command
1042 //
1043 #define IPMI_APP_GET_SYSTEM_INTERFACE_CAPABILITIES 0x57
1044
1045 //
1046 // Constants and Structure definitions for "Get System Interface Capabilities" command to follow here
1047 //
1048
1049 //
1050 // Definitions for Get System Interface Capabilities command SSIF transaction support
1051 //
1052 #define IPMI_GET_SYSTEM_INTERFACE_CAPABILITIES_SSIF_TRANSACTION_SUPPORT_SINGLE_PARTITION_RW 0x0
1053 #define IPMI_GET_SYSTEM_INTERFACE_CAPABILITIES_SSIF_TRANSACTION_SUPPORT_MULTI_PARTITION_RW 0x1
1054 #define IPMI_GET_SYSTEM_INTERFACE_CAPABILITIES_SSIF_TRANSACTION_SUPPORT_MULTI_PARTITION_RW_WITH_MIDDLE 0x2
1055
1056 #pragma pack()
1057 #endif