blob: 37f8724e42202efbea5dcaa71cdd92dd74ced433 [file] [log] [blame]
Ronak Kanabar1ae366f2023-06-07 01:21:56 +05301/** @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//
40typedef 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
49typedef 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
57typedef 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
71typedef 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//
110typedef 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
183typedef union {
184 struct {
185 UINT8 PowerState : 7;
186 UINT8 StateChange : 1;
187 } Bits;
188 UINT8 Uint8;
189} IPMI_ACPI_POWER_STATE;
190
191typedef 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//
216typedef 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//
251typedef 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//
280typedef 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
299typedef 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//
315typedef 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//
337typedef 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
351typedef 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//
363typedef 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//
376typedef 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
390typedef 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//
402typedef 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//
424typedef union {
425 struct {
426 UINT8 ChannelNumber : 4;
427 UINT8 InferredPrivilegeLevel : 4;
428 } Bits;
429 UINT8 Uint8;
430} IPMI_GET_MESSAGE_CHANNEL_NUMBER;
431
432typedef struct {
433 UINT8 CompletionCode;
434 IPMI_GET_MESSAGE_CHANNEL_NUMBER ChannelNumber;
Elyes Haouasce655f52023-07-30 12:53:47 +0200435 UINT8 MessageData[];
Ronak Kanabar1ae366f2023-06-07 01:21:56 +0530436} 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//
446typedef 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
456typedef struct {
457 UINT8 CompletionCode;
458 IPMI_SEND_MESSAGE_CHANNEL_NUMBER ChannelNumber;
Elyes Haouasce655f52023-07-30 12:53:47 +0200459 UINT8 MessageData[];
Ronak Kanabar1ae366f2023-06-07 01:21:56 +0530460} IPMI_SEND_MESSAGE_REQUEST;
461
462typedef struct {
463 UINT8 CompletionCode;
Elyes Haouasce655f52023-07-30 12:53:47 +0200464 UINT8 ResponseData[];
Ronak Kanabar1ae366f2023-06-07 01:21:56 +0530465} 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
490typedef 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
594typedef union {
595 struct {
596 UINT8 ChannelNo : 4;
597 UINT8 Reserved : 4;
598 } Bits;
599 UINT8 Uint8;
600} IPMI_GET_CHANNEL_ACCESS_CHANNEL_NUMBER;
601
602typedef union {
603 struct {
604 UINT8 Reserved : 6;
605 UINT8 MemoryType : 2;
606 } Bits;
607 UINT8 Uint8;
608} IPMI_GET_CHANNEL_ACCESS_TYPE;
609
610typedef struct {
611 IPMI_GET_CHANNEL_ACCESS_CHANNEL_NUMBER ChannelNumber;
612 IPMI_GET_CHANNEL_ACCESS_TYPE AccessType;
613} IPMI_GET_CHANNEL_ACCESS_REQUEST;
614
615typedef 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
626typedef union {
627 struct {
628 UINT8 ChannelPriviledgeLimit : 4;
629 UINT8 Reserved : 4;
630 } Bits;
631 UINT8 Uint8;
632} IPMI_GET_CHANNEL_ACCESS_PRIVILEGE_LIMIT;
633
634typedef 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
704typedef union {
705 struct {
706 UINT8 ChannelNo : 4;
707 UINT8 Reserved : 4;
708 } Bits;
709 UINT8 Uint8;
710} IPMI_CHANNEL_INFO_CHANNEL_NUMBER;
711
712typedef union {
713 struct {
714 UINT8 ChannelMediumType : 7;
715 UINT8 Reserved : 1;
716 } Bits;
717 UINT8 Uint8;
718} IPMI_CHANNEL_INFO_MEDIUM_TYPE;
719
720typedef union {
721 struct {
722 UINT8 ChannelProtocolType : 5;
723 UINT8 Reserved : 3;
724 } Bits;
725 UINT8 Uint8;
726} IPMI_CHANNEL_INFO_PROTOCOL_TYPE;
727
728typedef union {
729 struct {
730 UINT8 ActiveSessionCount : 6;
731 UINT8 SessionSupport : 2;
732 } Bits;
733 UINT8 Uint8;
734} IPMI_CHANNEL_INFO_SESSION_SUPPORT;
735
736typedef 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
746typedef 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//
771typedef union {
772 struct {
773 UINT8 ChannelNo : 4;
774 UINT8 Reserved : 4;
775 } Bits;
776 UINT8 Uint8;
777} IPMI_GET_USER_ACCESS_CHANNEL_NUMBER;
778
779typedef union {
780 struct {
781 UINT8 UserId : 6;
782 UINT8 Reserved : 2;
783 } Bits;
784 UINT8 Uint8;
785} IPMI_USER_ID;
786
787typedef struct {
788 IPMI_GET_USER_ACCESS_CHANNEL_NUMBER ChannelNumber;
789 IPMI_USER_ID UserId;
790} IPMI_GET_USER_ACCESS_REQUEST;
791
792typedef 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
800typedef union {
801 struct {
802 UINT8 CurrentUserId : 6;
803 UINT8 UserIdEnableStatus : 2;
804 } Bits;
805 UINT8 Uint8;
806} IPMI_GET_USER_ACCESS_CURRENT_USER;
807
808typedef 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
816typedef 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
827typedef 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//
843typedef 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//
856typedef struct {
857 IPMI_USER_ID UserId;
858} IPMI_GET_USER_NAME_REQUEST;
859
860typedef 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
888typedef 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
897typedef union {
898 struct {
899 UINT8 Operation : 2;
900 UINT8 Reserved : 6;
901 } Bits;
902 UINT8 Uint8;
903} IPMI_SET_USER_PASSWORD_OPERATION;
904
905typedef struct {
906 IPMI_SET_USER_PASSWORD_USER_ID UserId;
907 IPMI_SET_USER_PASSWORD_OPERATION Operation;
Elyes Haouasce655f52023-07-30 12:53:47 +0200908 UINT8 PasswordData[]; // 16 or 20 bytes, depending on the 'PasswordSize' field
Ronak Kanabar1ae366f2023-06-07 01:21:56 +0530909} 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