com_IPMI_IPM.h 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307
  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. *
  16. * IPMI_IPM.h
  17. * IPMDevice Commands Handler
  18. *
  19. * Author: Govind Kothandapani <govindk@ami.com>
  20. * : Rama Bisa <ramab@ami.com>
  21. * : Basavaraj Astekar <basavaraja@ami.com>
  22. * : Bakka Ravinder <Reddy bakkar@ami.com>
  23. *
  24. *****************************************************************/
  25. #ifndef IPMI_IPMDEV_H
  26. #define IPMI_IPMDEV_H
  27. #include <stdint.h>
  28. #pragma pack( 1 )
  29. /*** Macro Definitions ***/
  30. /**
  31. * @def DEVICE_ID
  32. * @brief Device ID
  33. **/
  34. #define DEVICE_ID 0x20
  35. /**
  36. * @def SDR_SUPPORT
  37. * @brief SDR support bit flag
  38. **/
  39. #define SDR_SUPPORT 0x80
  40. /**
  41. * @def DEV_REVISION
  42. * @brief Device Revision
  43. **/
  44. #define DEV_REVISION 0x01
  45. #define IPMI_DEV_REVISION DEV_REVISION
  46. /**
  47. * @def DEV_AVAILABLE
  48. * @brief Device availability bit flag
  49. **/
  50. #define DEV_AVAILABLE 0x80
  51. /**
  52. * @def IPMI_VERSION
  53. * @brief IPMI version
  54. **/
  55. #define IPMI_VERSION 0x02
  56. /**
  57. * @def CHASSIS_DEVICE_SUPPORT
  58. * @brief Chassis Device support bit flag
  59. **/
  60. #define CHASSIS_DEVICE_SUPPORT ( CHASSIS_DEVICE << 7 )
  61. /**
  62. * @def BRIDGE_COMMAND_SUPPORT
  63. * @brief Bridge Device support bit flag
  64. **/
  65. #define BRIDGE_COMMAND_SUPPORT ( BRIDGE_DEVICE << 6 )
  66. /**
  67. * @def IPMB_EVENT_GENERATOR_SUPPORT
  68. * @brief IPMB Event generator support bit flag
  69. **/
  70. #define IPMB_EVENT_GENERATOR_SUPPORT ( EVENT_GENERATOR << 5 )
  71. /**
  72. * @def IPMB_EVENT_RECEIVER_SUPPORT
  73. * @brief IPMB Event receiver support bit flag
  74. **/
  75. #define IPMB_EVENT_RECEIVER_SUPPORT ( EVENT_RECEIVER << 4 )
  76. /**
  77. * @def FRU_INVENTORY_DEVICE_SUPPORT
  78. * @brief FRU Device support bit flag
  79. **/
  80. #define FRU_INVENTORY_DEVICE_SUPPORT ( FRU_DEVICE << 3 )
  81. /**
  82. * @def SEL_DEVICE_SUPPORT
  83. * @brief SEL Device support bit flag
  84. **/
  85. #define SEL_DEVICE_SUPPORT ( SEL_DEVICE << 2 )
  86. /**
  87. * @def SDR_REPOSITORY_DEVICE_SUPPORT
  88. * @brief SDR Device support bit flag
  89. **/
  90. #define SDR_REPOSITORY_DEVICE_SUPPORT ( SDR_DEVICE << 1 )
  91. /**
  92. * @def SENSOR_DEVICE_SUPPORT
  93. * @brief Sensor Device support bit flag
  94. **/
  95. #define SENSOR_DEVICE_SUPPORT ( SENSOR_DEVICE )
  96. #define DEV_SUPPORT CHASSIS_DEVICE_SUPPORT | BRIDGE_COMMAND_SUPPORT | \
  97. IPMB_EVENT_GENERATOR_SUPPORT | IPMB_EVENT_RECEIVER_SUPPORT | \
  98. FRU_INVENTORY_DEVICE_SUPPORT | SEL_DEVICE_SUPPORT | \
  99. SDR_REPOSITORY_DEVICE_SUPPORT | SENSOR_DEVICE_SUPPORT
  100. /**
  101. * @def MFG_ID_AMI
  102. * @brief IANA number for AMI
  103. **/
  104. #define MFG_ID_AMI {0x00,0x00,0x00}
  105. /**
  106. * @def PROD_ID_AMI_PM
  107. * @brief AMI Product ID {'E','M'}
  108. **/
  109. #define PROD_ID_AMI_PM 0x0000
  110. /**
  111. * @def DEV_GUID_NODE
  112. * @brief node - Mac Address
  113. **/
  114. #define DEV_GUID_NODE {0x45,0xDF,0x44,0xAC,0x25,0xD4}
  115. /**
  116. * @def DEV_GUID_CLOCK_SEQ
  117. * @brief GUID Clolck Sequenbce
  118. **/
  119. #define DEV_GUID_CLOCK_SEQ 0xB24A
  120. /**
  121. * @def DEV_GUID_TIME_HIGH
  122. * @brief GUID Time High
  123. **/
  124. #define DEV_GUID_TIME_HIGH 0x48F3
  125. /**
  126. * @def DEV_GUID_TIME_MID
  127. * @brief GUID Time Mid
  128. **/
  129. #define DEV_GUID_TIME_MID 0x4F46
  130. /**
  131. * @def DEV_GUID_TIME_LOW
  132. * @brief GUID Time Low
  133. **/
  134. #define DEV_GUID_TIME_LOW 0xBD2C300A
  135. /**
  136. * @def GST_NO_ERROR
  137. * @brief Error Code for Get Self Test Results
  138. **/
  139. #define GST_NO_ERROR 0x55
  140. /**
  141. * @def GST_CORRUPTED_DEVICES
  142. * @brief Error code for Get Self Test Results
  143. **/
  144. #define GST_CORRUPTED_DEVICES 0x57
  145. /**
  146. * @def GST_CANNOT_ACCESS_SEL
  147. * @brief Error code for Get Self Test Results
  148. **/
  149. #define GST_CANNOT_ACCESS_SEL 0x80
  150. /**
  151. * @def GST_CANNOT_ACCESS_SDR
  152. * @brief Error code for Get Self Test Results
  153. **/
  154. #define GST_CANNOT_ACCESS_SDR 0x40
  155. /**
  156. * @def GST_CANNOT_ACCESS_FRU
  157. * @brief Error code for Get Self Test Results
  158. **/
  159. #define GST_CANNOT_ACCESS_FRU 0x20
  160. /**
  161. * @def GST_IPMB_DO_NOT_RESPOND
  162. * @brief Error code for Get Self Test Results
  163. **/
  164. #define GST_IPMB_DO_NOT_RESPOND 0x10
  165. /**
  166. * @def GST_SDR_EMPTY
  167. * @brief Error code for Get Self Test Results
  168. **/
  169. #define GST_SDR_EMPTY 0x08
  170. /**
  171. * @def GST_FRU_CORRUPTED
  172. * @brief Error code for Get Self Test Results
  173. **/
  174. #define GST_FRU_CORRUPTED 0x04
  175. /**
  176. * @def GST_BBLK_CORRUPTED
  177. * @brief Error code for Get Self Test Results
  178. **/
  179. #define GST_BBLK_CORRUPTED 0x02
  180. /**
  181. * @def GST_FIRMWARE_CORRUPTED
  182. * @brief Error code for Get Self Test Results
  183. **/
  184. #define GST_FIRMWARE_CORRUPTED 0x01
  185. /**
  186. * @def IPMI_ACPI_S0
  187. * @brief ACPI State
  188. **/
  189. #define IPMI_ACPI_S0 0x00
  190. /**
  191. * @def IPMI_ACPI_S1
  192. * @brief ACPI State
  193. **/
  194. #define IPMI_ACPI_S1 0x01
  195. /**
  196. * @def IPMI_ACPI_S2
  197. * @brief ACPI State
  198. **/
  199. #define IPMI_ACPI_S2 0x02
  200. /**
  201. * @def IPMI_ACPI_S3
  202. * @brief ACPI State
  203. **/
  204. #define IPMI_ACPI_S3 0x03
  205. /**
  206. * @def IPMI_ACPI_S4
  207. * @brief ACPI State
  208. **/
  209. #define IPMI_ACPI_S4 0x04
  210. /**
  211. * @def IPMI_ACPI_S5
  212. * @brief ACPI State
  213. **/
  214. #define IPMI_ACPI_S5 0x05
  215. /**
  216. * @def IPMI_ACPI_S4_S5
  217. * @brief ACPI State
  218. **/
  219. #define IPMI_ACPI_S4_S5 0x06
  220. /**
  221. * @def IPMI_ACPI_G3
  222. * @brief ACPI State
  223. **/
  224. #define IPMI_ACPI_G3 0x07
  225. /**
  226. * @def IPMI_ACPI_LEGACY_ON
  227. * @brief ACPI State
  228. **/
  229. #define IPMI_ACPI_LEGACY_ON 0x20
  230. /**
  231. * @def IPMI_ACPI_LEGACY_OFF
  232. * @brief ACPI State
  233. **/
  234. #define IPMI_ACPI_LEGACY_OFF 0x21
  235. /**
  236. * @def IPMI_ACPI_SLEEPING_S1_S3
  237. * @brief ACPI State
  238. **/
  239. #define IPMI_ACPI_SLEEPING_S1_S3 0x08
  240. /**
  241. * @def IPMI_ACPI_G1_SLEPPING_S1_S4
  242. * @brief ACPI State
  243. **/
  244. #define IPMI_ACPI_G1_SLEPPING_S1_S4 0x09
  245. /**
  246. * @def IPMI_S5_OVERRIDE
  247. * @brief ACPI State
  248. **/
  249. #define IPMI_S5_OVERRIDE 0x0A
  250. /* GetDevIDRes_T */
  251. typedef struct {
  252. uint8_t CompletionCode;
  253. uint8_t DeviceID;
  254. uint8_t DevRevision;
  255. uint8_t FirmwareRevision1;
  256. uint8_t FirmwareRevision2;
  257. uint8_t IPMIVersion;
  258. uint8_t DevSupport;
  259. uint8_t MfgID[3];
  260. uint16_t ProdID;
  261. uint32_t AuxFirmwareRevision;
  262. } GetDevIDRes_T;
  263. /* GetSelfTestRes_T */
  264. typedef struct {
  265. uint8_t CompletionCode;
  266. uint8_t TestResultByte1;
  267. uint8_t TestResultByte2;
  268. } GetSelfTestRes_T;
  269. /* SetACPIPwrStateReq_T */
  270. typedef struct {
  271. uint8_t ACPISysPwrState;
  272. uint8_t ACPIDevPwrState;
  273. } SetACPIPwrStateReq_T;
  274. /* getACPIPwrStateRes_T */
  275. typedef struct {
  276. uint8_t CompletionCode;
  277. uint8_t ACPISysPwrState;
  278. uint8_t ACPIDevPwrState;
  279. } GetACPIPwrStateRes_T;
  280. /* GetDevGUIDRes_T */
  281. typedef struct {
  282. uint8_t CompletionCode;
  283. uint8_t Node[6];
  284. uint16_t ClockSeq;
  285. uint16_t TimeHigh;
  286. uint16_t TimeMid;
  287. uint32_t TimeLow;
  288. } GetDevGUIDRes_T;
  289. #pragma pack( )
  290. #endif /* IPMI_IPMDEV_H */