Home | History | Annotate | Download | only in IndustryStandard
      1 /** @file
      2   IPMI 2.0 definitions from the IPMI Specification Version 2.0, Revision 1.1.
      3 
      4   This file contains all NetFn Chassis commands, including:
      5     Chassis Commands (Chapter 28)
      6 
      7   See IPMI specification, Appendix G, Command Assignments
      8   and Appendix H, Sub-function Assignments.
      9 
     10   Copyright (c) 1999 - 2015, Intel Corporation. All rights reserved.<BR>
     11   This program and the accompanying materials
     12   are licensed and made available under the terms and conditions of the BSD License
     13   which accompanies this distribution.  The full text of the license may be found at
     14   http://opensource.org/licenses/bsd-license.php
     15 
     16   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     17   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     18 **/
     19 
     20 #ifndef _IPMI_NET_FN_CHASSIS_H_
     21 #define _IPMI_NET_FN_CHASSIS_H_
     22 
     23 #pragma pack (1)
     24 //
     25 // Net function definition for Chassis command
     26 //
     27 #define IPMI_NETFN_CHASSIS  0x00
     28 
     29 //
     30 //  Below is Definitions for Chassis commands (Chapter 28)
     31 //
     32 
     33 //
     34 //  Definitions for Get Chassis Capabilities command
     35 //
     36 #define IPMI_CHASSIS_GET_CAPABILITIES  0x00
     37 
     38 //
     39 //  Constants and Structure definitions for "Get Chassis Capabilities" command to follow here
     40 //
     41 
     42 //
     43 //  Definitions for Get Chassis Status command
     44 //
     45 #define IPMI_CHASSIS_GET_STATUS  0x01
     46 
     47 //
     48 //  Constants and Structure definitions for "Get Chassis Status" command to follow here
     49 //
     50 
     51 //
     52 //  Definitions for Chassis Control command
     53 //
     54 #define IPMI_CHASSIS_CONTROL 0x02
     55 
     56 //
     57 //  Constants and Structure definitions for "Chassis Control" command to follow here
     58 //
     59 
     60 //
     61 //  Definitions for Chassis Reset command
     62 //
     63 #define IPMI_CHASSIS_RESET 0x03
     64 
     65 //
     66 //  Constants and Structure definitions for "Chassis Reset" command to follow here
     67 //
     68 
     69 //
     70 //  Definitions for Chassis Identify command
     71 //
     72 #define IPMI_CHASSIS_IDENTIFY  0x04
     73 
     74 //
     75 //  Constants and Structure definitions for "Chassis Identify" command to follow here
     76 //
     77 
     78 //
     79 //  Definitions for Set Chassis Capabilities command
     80 //
     81 #define IPMI_CHASSIS_SET_CAPABILITIES  0x05
     82 
     83 //
     84 //  Constants and Structure definitions for "Set Chassis Capabilities" command to follow here
     85 //
     86 
     87 //
     88 //  Definitions for Set Power Restore Policy command
     89 //
     90 #define IPMI_CHASSIS_SET_POWER_RESTORE_POLICY  0x06
     91 
     92 //
     93 //  Constants and Structure definitions for "Set Power Restore Policy" command to follow here
     94 //
     95 
     96 //
     97 //  Definitions for Get System Restart Cause command
     98 //
     99 #define IPMI_CHASSIS_GET_SYSTEM_RESTART_CAUSE  0x07
    100 
    101 //
    102 //  Constants and Structure definitions for "Get System Restart Cause" command to follow here
    103 //
    104 typedef enum {
    105   Unknown,
    106   ChassisControlCommand,
    107   ResetViaPushButton,
    108   PowerupViaPowerButton,
    109   WatchdogExpiration,
    110   Oem,
    111   AutoPowerOnAlwaysRestore,
    112   AutoPowerOnRestorePrevious,
    113   ResetViaPef,
    114   PowerCycleViaPef,
    115   SoftReset,
    116   PowerUpViaRtc
    117 } IPMI_SYSTEM_RESTART_CAUSE;
    118 
    119 typedef struct {
    120   UINT8  CompletionCode;
    121   UINT8  Cause:4;
    122   UINT8  Reserved:4;
    123   UINT8  ChannelNumber;
    124 } IPMI_GET_SYSTEM_RESTART_CAUSE_RESPONSE;
    125 
    126 //
    127 //  Definitions for Set System BOOT options command
    128 //
    129 #define IPMI_CHASSIS_SET_SYSTEM_BOOT_OPTIONS 0x08
    130 
    131 //
    132 //  Constants and Structure definitions for "Set System boot options" command to follow here
    133 //
    134 typedef struct {
    135   UINT8    ParameterSelector:7;
    136   UINT8    MarkParameterInvalid:1;
    137   UINT8    ParameterData[1];
    138 } IPMI_SET_BOOT_OPTIONS_REQUEST;
    139 
    140 //
    141 //  Definitions for Get System BOOT options command
    142 //
    143 #define IPMI_CHASSIS_GET_SYSTEM_BOOT_OPTIONS 0x09
    144 
    145 //
    146 //  Constants and Structure definitions for "Get System boot options" command to follow here
    147 //
    148 typedef struct {
    149   UINT8    ParameterSelector:7;
    150   UINT8    Reserved:1;
    151   UINT8    SetSelector;
    152   UINT8    BlockSelector;
    153 } IPMI_GET_BOOT_OPTIONS_REQUEST;
    154 
    155 typedef struct {
    156   UINT8 Parameter;
    157   UINT8 Valid;
    158   UINT8 Data1;
    159   UINT8 Data2;
    160   UINT8 Data3;
    161   UINT8 Data4;
    162   UINT8 Data5;
    163 } IPMI_GET_THE_SYSTEM_BOOT_OPTIONS;
    164 
    165 typedef struct {
    166   UINT8   ParameterVersion;
    167   UINT8   ParameterValid;
    168   UINT8   ChannelNumber;
    169   UINT32  SessionId;
    170   UINT32  TimeStamp;
    171   UINT8   Reserved[3];
    172 } IPMI_BOOT_INITIATOR;
    173 
    174 //
    175 // Response Parameters for IPMI Get Boot Options
    176 //
    177 typedef struct {
    178   UINT8   SetInProgress: 2;
    179   UINT8   Reserved: 6;
    180 } IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_0;
    181 
    182 typedef struct {
    183   UINT8   ServicePartitionSelector;
    184 } IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_1;
    185 
    186 typedef struct {
    187   UINT8   ServicePartitionDiscovered:1;
    188   UINT8   ServicePartitionScanRequest:1;
    189   UINT8   Reserved: 5;
    190 } IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_2;
    191 
    192 typedef struct {
    193   UINT8   BmcBootFlagValid: 5;
    194   UINT8   Reserved: 3;
    195 } IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_3;
    196 
    197 typedef struct {
    198   UINT8   WriteMask;
    199   UINT8   BootInitiatorAcknowledgeData;
    200 } IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_4;
    201 
    202 #define BOOT_OPTION_HANDLED_BY_BIOS 0x01
    203 
    204 typedef struct {
    205   //
    206   // Data 1
    207   //
    208   UINT8   Reserved0:6;
    209   UINT8   PersistentOptions:1;
    210   UINT8   BootFlagValid:1;
    211   //
    212   // Data 2
    213   //
    214   UINT8   LockReset:1;
    215   UINT8   ScreenBlank:1;
    216   UINT8   BootDeviceSelector:4;
    217   UINT8   LockKeyboard:1;
    218   UINT8   CmosClear:1;
    219   //
    220   //
    221   // Data 3
    222   UINT8   ConsoleRedirection:2;
    223   UINT8   LockSleep:1;
    224   UINT8   UserPasswordBypass:1;
    225   UINT8   ForceProgressEventTrap:1;
    226   UINT8   BiosVerbosity:2;
    227   UINT8   LockPower:1;
    228   //
    229   // Data 4
    230   //
    231   UINT8   BiosMuxControlOverride:2;
    232   UINT8   BiosSharedModeOverride:1;
    233   UINT8   Reserved1:4;
    234 } IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5;
    235 
    236 typedef struct {
    237   UINT8   ChannelNumber:4;
    238   UINT8   Reserved:4;
    239   UINT8   SessionId[4];
    240   UINT8   BootInfoTimeStamp[4];
    241 } IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_6;
    242 
    243 typedef struct {
    244   UINT8   SetSelector;
    245   UINT8   BlockData[16];
    246 } IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_7;
    247 
    248 typedef union {
    249   IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_0   Parm0;
    250   IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_1   Parm1;
    251   IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_2   Parm2;
    252   IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_3   Parm3;
    253   IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_4   Parm4;
    254   IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5   Parm5;
    255   IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_6   Parm6;
    256   IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_7   Parm7;
    257 } IPMI_BOOT_OPTIONS_PARAMETERS;
    258 
    259 typedef struct {
    260   UINT8    CompletionCode;
    261   UINT8    ParameterVersion:4;
    262   UINT8    Reserved:4;
    263   UINT8    ParameterSelector:7;
    264   UINT8    ParameterValid:1;
    265   UINT8    ParameterData[1];
    266 } IPMI_GET_BOOT_OPTIONS_RESPONSE;
    267 
    268 //
    269 //  Definitions for Set front panel button enables command
    270 //
    271 #define IPMI_CHASSIS_SET_FRONT_PANEL_BUTTON_ENABLES 0x0A
    272 
    273 typedef struct {
    274   UINT8    DisablePoweroffButton:1;
    275   UINT8    DisableResetButton:1;
    276   UINT8    DisableDiagnosticInterruptButton:1;
    277   UINT8    DisableStandbyButton:1;
    278   UINT8    Reserved:4;
    279 } IPMI_CHASSIS_SET_FRONT_PANEL_BUTTON_ENABLES_REQUEST;
    280 
    281 //
    282 //  Constants and Structure definitions for "Set front panel button enables" command to follow here
    283 //
    284 
    285 //
    286 //  Definitions for Set Power Cycle Interval command
    287 //
    288 #define IPMI_CHASSIS_SET_POWER_CYCLE_INTERVALS 0x0B
    289 
    290 //
    291 //  Constants and Structure definitions for "Set Power Cycle Interval" command to follow here
    292 //
    293 
    294 //
    295 //  Definitions for Get POH Counter command
    296 //
    297 #define IPMI_CHASSIS_GET_POH_COUNTER 0x0F
    298 
    299 //
    300 //  Constants and Structure definitions for "Get POH Counter" command to follow here
    301 //
    302 #pragma pack()
    303 #endif
    304