ChassisDevice.h 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. /*****************************************************************
  2. *****************************************************************
  3. *** **
  4. *** (C)Copyright 2005-2006, American Megatrends Inc. **
  5. *** **
  6. *** All Rights Reserved. **
  7. *** **
  8. *** 6145-F, Northbelt Parkway, Norcross, **
  9. *** **
  10. *** Georgia - 30071, USA. Phone-(770)-246-8600. **
  11. *** **
  12. *****************************************************************
  13. ******************************************************************
  14. *
  15. * ChassisDevice.h
  16. * ChassisDevice.c extern declarations
  17. *
  18. * Author: Rama Bisa <ramab@ami.com>
  19. *
  20. ******************************************************************/
  21. #ifndef CHASSIS_DEVICE_H
  22. #define CHASSIS_DEVICE_H
  23. #include "com_BmcType.h"
  24. /*** Definitions and Macros ***/
  25. #define CHASSIS_POWER_DOWN 0x00
  26. #define CHASSIS_POWER_UP 0x01
  27. #define CHASSIS_POWER_CYCLE 0x02
  28. #define CHASSIS_HARD_RESET 0x03
  29. #define CHASSIS_PULSE_DIAGNOSTIC_INTERRUPT 0x04
  30. #define CHASSIS_SOFT_SHUTDOWN 0x05
  31. #define CHASSIS_PARAMETER_VERSION 0x01
  32. #define POH_MINS_PER_COUNT 60
  33. /******************************************************************************
  34. *
  35. * Chassis Command Bit Definitions
  36. *
  37. ******************************************************************************/
  38. // The chassis status 1st byte definitions:
  39. // [4] - power control fault
  40. // [3] - power fault in main power subsystem (NOT SUPPORT)
  41. // [2] - Interlock (NOT SUPPORT)
  42. // [1] - power overload (NOT SUPPORT)
  43. // [0] - system power is on
  44. #define CHASSIS_STATUS_POWER_CTRL_FAULT (1 << 4)
  45. #define CHASSIS_STATUS_POWER_FAULT (1 << 3)
  46. #define CHASSIS_STATUS_POWER_INTERLOCK (1 << 2)
  47. #define CHASSIS_STATUS_POWER_OVERLOAD (1 << 1)
  48. #define CHASSIS_STATUS_POWER_ON (1 << 0)
  49. // The chassis status 2nd byte definitions:
  50. // [4] - last "power is on" state was entered via IPMI command
  51. // [3] - last power down caused by power fault (NOT SUPPORT)
  52. // [2] - last power down caused by a power interlock being activated (NOT SUPPORT)
  53. // [1] - last power down caused by a power overload (NOT SUPPORT)
  54. // [0] - AC lost
  55. #define CHASSIS_STATUS_EVENT_POWER_IPMI (1 << 4)
  56. #define CHASSIS_STATUS_EVENT_POWER_FAULT (1 << 3)
  57. #define CHASSIS_STATUS_EVENT_POWER_INTERLOCK (1 << 2)
  58. #define CHASSIS_STATUS_EVENT_POWER_OVERLOAD (1 << 1)
  59. #define CHASSIS_STATUS_EVENT_AC_LOST (1 << 0)
  60. // The chassis status 3rd byte definitions:
  61. // [3] - Cooling / fan fault detected
  62. // [2] - Drive fault (NOT SUPPORT)
  63. // [1] - Front panel lockout active
  64. // [0] - Chassis intrusion active
  65. #define CHASSIS_STATUS_MISC_FAN_FAULT (1 << 3)
  66. #define CHASSIS_STATUS_MISC_DRIVE_FAULT (1 << 2)
  67. #define CHASSIS_STATUS_MISC_FP_LOCKOUT (1 << 1)
  68. #define CHASSIS_STATUS_MISC_INTRUSION (1 << 0)
  69. // front panel enables
  70. #define FP_DISENABLES_STANDBY_BUTTON (1 << 3)
  71. #define FP_DISENABLES_NMI_BUTTON (1 << 2)
  72. #define FP_DISENABLES_RESET_BUTTON (1 << 1)
  73. #define FP_DISENABLES_POWER_BUTTON (1 << 0)
  74. // system restart cause code defined by IPMI spec
  75. #define RESTART_CAUSE_UNKNOWN 0x0
  76. #define RESTART_CAUSE_CHASSIS_CTRL 0x1
  77. #define RESTART_CAUSE_RESET_BUTTON 0x2
  78. #define RESTART_CAUSE_POWER_BUTTON 0x3
  79. #define RESTART_CAUSE_WDT_EXPIRATION 0x4
  80. #define RESTART_CAUSE_OEM 0x5
  81. #define RESTART_CAUSE_AUTO_ALWAYS_ON 0x6
  82. #define RESTART_CAUSE_AUTO_PREV_STATE 0x7
  83. #define RESTART_CAUSE_PEF_RESET 0x8
  84. #define RESTART_CAUSE_PEF_POWER_CYCLE 0x9
  85. #define RESTART_CAUSE_SOFT_RESET 0xA
  86. #define RESTART_CAUSE_POWER_DOWN 0xFF // 0x0C - 0xFF reserved, 0xFF used internally only
  87. // BMC Boot flag valid bit clearing
  88. #define BMC_BOOT_FLAG_POWER_BUTTON (1 << 0)
  89. #define BMC_BOOT_FLAG_RESET_BUTTON (1 << 1)
  90. #define BMC_BOOT_FLAG_WDT_EXPIRATION (1 << 2)
  91. #define BMC_BOOT_FLAG_CHASSIS_CTRL (1 << 3)
  92. #define BMC_BOOT_FLAG_PEF (1 << 4)
  93. // BMC Boot Option "Set In Progress" parameter
  94. #define BMC_BOOT_OPTION_SET_COMPLETE 0x00
  95. #define BMC_BOOT_OPTION_SET_IN_PROGRESS 0x01
  96. #define BMC_BOOT_OPTION_COMMIT_WRITE 0x02
  97. /*** Function Prototypes ***/
  98. /**
  99. * @defgroup ccf1 Chassis Device Commands
  100. * @ingroup ccf
  101. * IPMI Chassis Device Command Handlers. Invoked by the message handler
  102. * @{
  103. **/
  104. extern int GetChassisCaps ( uint8_t* pReq, uint8_t ReqLen, uint8_t* pRes);
  105. extern int GetChassisStatus ( uint8_t* pReq, uint8_t ReqLen, uint8_t* pRes);
  106. extern int ChassisControl ( uint8_t* pReq, uint8_t ReqLen, uint8_t* pRes);
  107. extern int SetChassisCaps ( uint8_t* pReq, uint8_t ReqLen, uint8_t* pRes);
  108. extern int SetPowerRestorePolicy( uint8_t* pReq, uint8_t ReqLen, uint8_t* pRes);
  109. extern int GetChassisIdentify ( uint8_t* pReq, uint8_t ReqLen, uint8_t* pRes);
  110. extern int GetSysRestartCause ( uint8_t* pReq, uint8_t ReqLen, uint8_t* pRes);
  111. extern int GetPOHCounter ( uint8_t* pReq, uint8_t ReqLen, uint8_t* pRes);
  112. extern int SetSysBOOTOptions ( uint8_t* pReq, uint8_t ReqLen, uint8_t* pRes);
  113. extern int GetSysBOOTOptions ( uint8_t* pReq, uint8_t ReqLen, uint8_t* pRes);
  114. extern int SetFPButtonEnables ( uint8_t* pReq, uint8_t ReqLen, uint8_t* pRes);
  115. extern int SetPowerCycleInterval ( uint8_t* pReq, uint8_t ReqLen, uint8_t* pRes);
  116. extern void SetACPIState(uint8_t State);
  117. /** @} */
  118. /**
  119. * @brief Power On Hours timer tick, invoked every POH_MINS_PER_COUNT minutes by timer task
  120. **/
  121. #endif /* CHASSIS_DEVICE_H */