IPMI_SEL.h 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314
  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_sel.h
  17. * Sel device exports
  18. *
  19. * Author: Bakka Ravinder Reddy <bakkar@ami.com>
  20. *
  21. *****************************************************************/
  22. #ifndef IPMI_SEL_H
  23. #define IPMI_SEL_H
  24. #include "Types.h"
  25. /*** External Definitions ***/
  26. #define SEL_VERSION 0x51
  27. #define UNSPECIFIED_UTC_OFFSET 0x07FF
  28. #define SEL_UTC_MIN_RANGE -1440
  29. #define SEL_UTC_MAX_RANGE 1440
  30. #define SEL_RECORD_SIZE 16
  31. /**
  32. * @struct SELRecHdr_T
  33. * @brief SEL Record Header
  34. **/
  35. #pragma pack(1)
  36. typedef struct
  37. {
  38. INT16U ID;
  39. INT8U Type;
  40. INT32U TimeStamp;
  41. } PACKED SELRecHdr_T;
  42. /**
  43. * @struct SELEventRecord_T
  44. * @brief SEL Event Record
  45. **/
  46. typedef struct
  47. {
  48. /* SEL ENTRY RECORD HEADER */
  49. SELRecHdr_T hdr;
  50. /* RECORD BODY BYTES */
  51. INT8U GenID [2];
  52. INT8U EvMRev;
  53. INT8U SensorType;
  54. INT8U SensorNum;
  55. INT8U EvtDirType;
  56. INT8U EvtData1;
  57. INT8U EvtData2;
  58. INT8U EvtData3;
  59. } PACKED SELEventRecord_T;
  60. /**
  61. * @struct SELOEM1Record_T
  62. * @brief SEL OEM1 Record
  63. **/
  64. typedef struct
  65. {
  66. /* SEL ENTRY RECORD HEADER */
  67. INT16U ID;
  68. INT8U Type;
  69. /* RECORD BODY BYTES */
  70. INT32U TimeStamp;
  71. INT8U MftrID [3];
  72. INT8U OEMData [6];
  73. } PACKED SELOEM1Record_T;
  74. /**
  75. * @struct SELOEM2Record_T
  76. * @brief SEL OEM2 Record
  77. **/
  78. typedef struct
  79. {
  80. /* SEL ENTRY RECORD HEADER */
  81. // SELRecHdr_T hdr;
  82. INT16U ID;
  83. INT8U Type;
  84. /* RECORD BODY BYTES */
  85. INT8U OEMData [13];
  86. } PACKED SELOEM2Record_T;
  87. /* SELInfo_T */
  88. typedef struct
  89. {
  90. INT8U CompletionCode; /* Completion Code */
  91. INT8U Version; /* Version of the SEL 0x51 */
  92. INT16U RecCt; /* Record Count */
  93. INT16U FreeSpace; /* Free space LSB first */
  94. INT32U AddTimeStamp; /* Most recent addition timestamp */
  95. INT32U EraseTimeStamp; /* Most recent erase timestamp */
  96. INT8U OpSupport; /* Operation Support */
  97. } PACKED SELInfo_T;
  98. /* SELAllocInfo_T */
  99. typedef struct
  100. {
  101. INT8U CompletionCode;
  102. INT16U NumAllocUnits; /* Number of possible allocation units */
  103. INT16U AllocUnitSize; /* Allocation unit size in bytes */
  104. INT16U NumFreeAllocUnits; /* Number of free allocation units */
  105. INT16U LargestFreeBlock; /* Largest free block in allocation units */
  106. INT8U MaxRecSize; /* Maximimum record size in allocation units */
  107. } PACKED SELAllocInfo_T;
  108. /* ReserveSELRes_T */
  109. typedef struct
  110. {
  111. INT8U CompletionCode;
  112. INT16U ReservationID;
  113. } PACKED ReserveSELRes_T;
  114. /* GetSELReq_T */
  115. typedef struct
  116. {
  117. INT16U ReservationID;
  118. INT16U RecID;
  119. INT8U Offset;
  120. INT8U Size;
  121. } PACKED GetSELReq_T;
  122. /* GetSELRes_T */
  123. typedef struct
  124. {
  125. INT8U CompletionCode;
  126. INT16U NextRecID;
  127. } PACKED GetSELRes_T;
  128. /* AddSELRes_T */
  129. typedef struct
  130. {
  131. INT8U CompletionCode;
  132. INT16U RecID;
  133. } PACKED AddSELRes_T;
  134. /* PartialAddSELReq_T */
  135. typedef struct
  136. {
  137. INT8U LSBReservationID;
  138. INT8U MSBReservationID;
  139. INT8U LSBRecordID;
  140. INT8U MSBRecordID;
  141. INT8U Offset;
  142. INT8U Progress;
  143. //Added to support PartialAddselEntry Cmd ../
  144. INT8U RecordData[SEL_RECORD_SIZE];
  145. } PACKED PartialAddSELReq_T;
  146. /* PartialAddSELRes_T */
  147. typedef struct
  148. {
  149. INT8U CompletionCode;
  150. INT16U RecID;
  151. } PACKED PartialAddSELRes_T;
  152. /* DeleteSELReq_T */
  153. typedef struct
  154. {
  155. INT16U ReservationID;
  156. INT16U RecID;
  157. } PACKED DeleteSELReq_T;
  158. /* DeleteSELRes_T */
  159. typedef struct
  160. {
  161. INT8U CompletionCode;
  162. INT16U RecID;
  163. } PACKED DeleteSELRes_T;
  164. /* ClearSELReq_T */
  165. typedef struct
  166. {
  167. INT16U ReservationID;
  168. INT8U CLR [3];
  169. INT8U InitOrStatus;
  170. } PACKED ClearSELReq_T;
  171. /* ClearSELRes_T */
  172. typedef struct
  173. {
  174. INT8U CompletionCode;
  175. INT8U EraseProgress;
  176. } PACKED ClearSELRes_T;
  177. /* GetSELTimeRes_T */
  178. typedef struct
  179. {
  180. INT8U CompletionCode;
  181. INT32U Time;
  182. } PACKED GetSELTimeRes_T;
  183. /* SetSELTimeReq_T */
  184. typedef struct
  185. {
  186. INT32U Time;
  187. } PACKED SetSELTimeReq_T;
  188. /* GetSELAuxiliaryMCALogStatusRes_T */
  189. typedef struct
  190. {
  191. INT8U CompletionCode;
  192. INT32U Time;
  193. INT32U NumEntries;
  194. } PACKED GetSELAuxiliaryMCALogStatusRes_T;
  195. /* GetSELAuxiliaryOEMLogStatusRes_T */
  196. typedef struct
  197. {
  198. INT8U CompletionCode;
  199. INT32U Time;
  200. INT8U OEMId[3];
  201. INT8U LogStatusBytes[8];
  202. } PACKED GetSELAuxiliaryOEMLogStatusRes_T;
  203. /* SetSELAuxiliaryMCALogStatusReq_T */
  204. typedef struct
  205. {
  206. INT8U LogType;
  207. INT32U Time;
  208. INT32U NumEntries;
  209. } PACKED SetSELAuxiliaryMCALogStatusReq_T;
  210. /* SetSELAuxiliaryOEMLogStatusReq_T */
  211. typedef struct
  212. {
  213. INT8U LogType;
  214. INT32U Time;
  215. INT8U OEMId[3];
  216. INT8U LogStatusBytes[8];
  217. } PACKED SetSELAuxiliaryOEMLogStatusReq_T;
  218. /* GetSELTimeUTCoffsetRes_T */
  219. typedef struct
  220. {
  221. INT8U CompletionCode;
  222. INT16S UTCOffset;
  223. } PACKED GetSELTimeUTCOffsetRes_T;
  224. /* SetSELTimeUTCOffsetReq_T*/
  225. typedef struct
  226. {
  227. INT16S UTCOffset;
  228. } PACKED SetSELTimeUTCOffsetReq_T;
  229. /* SetSELTimeUTCOffsetRes_T*/
  230. typedef struct
  231. {
  232. INT8U CompletionCode;
  233. } PACKED SetSELTimeUTCOffsetRes_T;
  234. #pragma pack()
  235. #endif /* IPMI_SEL_H */