ChassisDevice.h 6.0 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. /******************************************************************************
  33. *
  34. * Chassis Command Bit Definitions
  35. *
  36. ******************************************************************************/
  37. // The chassis status 1st byte definitions:
  38. // [4] - power control fault
  39. // [3] - power fault in main power subsystem (NOT SUPPORT)
  40. // [2] - Interlock (NOT SUPPORT)
  41. // [1] - power overload (NOT SUPPORT)
  42. // [0] - system power is on
  43. #define CHASSIS_STATUS_POWER_CTRL_FAULT (1 << 4)
  44. #define CHASSIS_STATUS_POWER_FAULT (1 << 3)
  45. #define CHASSIS_STATUS_POWER_INTERLOCK (1 << 2)
  46. #define CHASSIS_STATUS_POWER_OVERLOAD (1 << 1)
  47. #define CHASSIS_STATUS_POWER_ON (1 << 0)
  48. // The chassis status 2nd byte definitions:
  49. // [4] - last "power is on" state was entered via IPMI command
  50. // [3] - last power down caused by power fault (NOT SUPPORT)
  51. // [2] - last power down caused by a power interlock being activated (NOT SUPPORT)
  52. // [1] - last power down caused by a power overload (NOT SUPPORT)
  53. // [0] - AC lost
  54. #define CHASSIS_STATUS_EVENT_POWER_IPMI (1 << 4)
  55. #define CHASSIS_STATUS_EVENT_POWER_FAULT (1 << 3)
  56. #define CHASSIS_STATUS_EVENT_POWER_INTERLOCK (1 << 2)
  57. #define CHASSIS_STATUS_EVENT_POWER_OVERLOAD (1 << 1)
  58. #define CHASSIS_STATUS_EVENT_AC_LOST (1 << 0)
  59. // The chassis status 3rd byte definitions:
  60. // [3] - Cooling / fan fault detected
  61. // [2] - Drive fault (NOT SUPPORT)
  62. // [1] - Front panel lockout active
  63. // [0] - Chassis intrusion active
  64. #define CHASSIS_STATUS_MISC_FAN_FAULT (1 << 3)
  65. #define CHASSIS_STATUS_MISC_DRIVE_FAULT (1 << 2)
  66. #define CHASSIS_STATUS_MISC_FP_LOCKOUT (1 << 1)
  67. #define CHASSIS_STATUS_MISC_INTRUSION (1 << 0)
  68. // front panel enables
  69. #define FP_DISENABLES_STANDBY_BUTTON (1 << 3)
  70. #define FP_DISENABLES_NMI_BUTTON (1 << 2)
  71. #define FP_DISENABLES_RESET_BUTTON (1 << 1)
  72. #define FP_DISENABLES_POWER_BUTTON (1 << 0)
  73. // system restart cause code defined by IPMI spec
  74. #define RESTART_CAUSE_UNKNOWN 0x0
  75. #define RESTART_CAUSE_CHASSIS_CTRL 0x1
  76. #define RESTART_CAUSE_RESET_BUTTON 0x2
  77. #define RESTART_CAUSE_POWER_BUTTON 0x3
  78. #define RESTART_CAUSE_WDT_EXPIRATION 0x4
  79. #define RESTART_CAUSE_OEM 0x5
  80. #define RESTART_CAUSE_AUTO_ALWAYS_ON 0x6
  81. #define RESTART_CAUSE_AUTO_PREV_STATE 0x7
  82. #define RESTART_CAUSE_PEF_RESET 0x8
  83. #define RESTART_CAUSE_PEF_POWER_CYCLE 0x9
  84. #define RESTART_CAUSE_SOFT_RESET 0xA
  85. #define RESTART_CAUSE_POWER_DOWN 0xFF // 0x0C - 0xFF reserved, 0xFF used internally only
  86. // BMC Boot flag valid bit clearing
  87. #define BMC_BOOT_FLAG_POWER_BUTTON (1 << 0)
  88. #define BMC_BOOT_FLAG_RESET_BUTTON (1 << 1)
  89. #define BMC_BOOT_FLAG_WDT_EXPIRATION (1 << 2)
  90. #define BMC_BOOT_FLAG_CHASSIS_CTRL (1 << 3)
  91. #define BMC_BOOT_FLAG_PEF (1 << 4)
  92. // BMC Boot Option "Set In Progress" parameter
  93. #define BMC_BOOT_OPTION_SET_COMPLETE 0x00
  94. #define BMC_BOOT_OPTION_SET_IN_PROGRESS 0x01
  95. #define BMC_BOOT_OPTION_COMMIT_WRITE 0x02
  96. /*** Function Prototypes ***/
  97. /**
  98. * @defgroup ccf1 Chassis Device Commands
  99. * @ingroup ccf
  100. * IPMI Chassis Device Command Handlers. Invoked by the message handler
  101. * @{
  102. **/
  103. extern int GetChassisCaps ( uint8_t* pReq, uint8_t ReqLen, uint8_t* pRes);
  104. extern int GetChassisStatus ( uint8_t* pReq, uint8_t ReqLen, uint8_t* pRes);
  105. extern int ChassisControl ( uint8_t* pReq, uint8_t ReqLen, uint8_t* pRes);
  106. extern int SetChassisCaps ( uint8_t* pReq, uint8_t ReqLen, uint8_t* pRes);
  107. extern int SetPowerRestorePolicy( uint8_t* pReq, uint8_t ReqLen, uint8_t* pRes);
  108. extern int GetChassisIdentify ( uint8_t* pReq, uint8_t ReqLen, uint8_t* pRes);
  109. extern int GetSysRestartCause ( uint8_t* pReq, uint8_t ReqLen, uint8_t* pRes);
  110. extern int GetPOHCounter ( uint8_t* pReq, uint8_t ReqLen, uint8_t* pRes);
  111. extern int SetSysBOOTOptions ( uint8_t* pReq, uint8_t ReqLen, uint8_t* pRes);
  112. extern int GetSysBOOTOptions ( uint8_t* pReq, uint8_t ReqLen, uint8_t* pRes);
  113. extern int SetFPButtonEnables ( uint8_t* pReq, uint8_t ReqLen, uint8_t* pRes);
  114. extern int SetPowerCycleInterval ( uint8_t* pReq, uint8_t ReqLen, uint8_t* pRes);
  115. extern void SetACPIState(uint8_t State);
  116. /** @} */
  117. /**
  118. * @brief Power On Hours timer tick, invoked every POH_MINS_PER_COUNT minutes by timer task
  119. **/
  120. #endif /* CHASSIS_DEVICE_H */