Apml.h 10.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395
  1. /*******************************************************************
  2. *********************************************************************
  3. ***** **
  4. ***** (C)Copyright 2008-2009, American Megatrends Inc. **
  5. ***** **
  6. ***** All Rights Reserved. **
  7. ***** **
  8. ***** 5555 , Oakbrook Pkwy, Norcross, **
  9. ***** **
  10. ***** Georgia - 30093, USA. Phone-(770)-246-8600. **
  11. ***** **
  12. *********************************************************************
  13. *********************************************************************
  14. *********************************************************************
  15. ***
  16. *** Apml.h
  17. *** Apml Command Handler.
  18. ***
  19. *** Author:
  20. ********************************************************************/
  21. #ifndef _APML_H_
  22. #define _APML_H_
  23. #include "Types.h"
  24. #include "MsgHndlr.h"
  25. /*------------------ APML Command Numbers -------------------------*/
  26. //SB-RMI Commands
  27. #define CMD_APML_GET_INTERFACE_VERSION 0x01
  28. #define CMD_APML_READ_RMI_REG 0x02
  29. #define CMD_APML_WRITE_RMI_REG 0x03
  30. #define CMD_APML_READ_CPUID 0x04
  31. #define CMD_APML_READ_HTC_REG 0x05
  32. #define CMD_APML_WRITE_HTC_REG 0x06
  33. #define CMD_APML_READ_PSTATE 0x07
  34. #define CMD_APML_READ_MAX_PSTATE 0x08
  35. #define CMD_APML_READ_PSTATE_LIMIT 0x09
  36. #define CMD_APML_WRITE_PSTATE_LIMIT 0x0A
  37. #define CMD_APML_READ_MCR 0x0B
  38. #define CMD_APML_WRITE_MCR 0x0C
  39. // SB-TSI Commands
  40. #define CMD_APML_READ_TSI_REG 0x0D
  41. #define CMD_APML_WRITE_TSI_REG 0x0E
  42. #define CMD_APML_READ_TDP_LIMIT_REG 0x0F
  43. #define CMD_APML_WRITE_TDP_LIMIT_REG 0x10
  44. #define CMD_APML_READ_PROCESSOR_POWER_REG 0x11
  45. #define CMD_APML_READ_POWER_AVERAGING_REG 0x12
  46. #define CMD_APML_READ_DRAM_THROTTLE_REG 0x13
  47. #define CMD_APML_WRITE_DRAM_THROTTLE_REG 0x14
  48. /*APML Command Handler table */
  49. extern const CmdHndlrMap_T g_APML_CmdHndlr[];
  50. /* ApmlGetInterfaceVersionReq_T */
  51. typedef struct
  52. {
  53. INT8U Proc;
  54. } PACKED ApmlGetInterfaceVersionReq_T;
  55. /* ApmlGetInterfaceVersionResp_T */
  56. typedef struct
  57. {
  58. INT8U CompletionCode;
  59. INT8U Version;
  60. } PACKED ApmlGetInterfaceVersionRes_T;
  61. /* ApmlReadRMIReq_T */
  62. typedef struct
  63. {
  64. INT8U Proc;
  65. INT8U Register;
  66. } PACKED ApmlReadRMIReq_T;
  67. /* ApmlReadRMIRes_T */
  68. typedef struct
  69. {
  70. INT8U CompletionCode;
  71. INT8U Value;
  72. } PACKED ApmlReadRMIRes_T;
  73. /* ApmlWriteRMIReq_T */
  74. typedef struct
  75. {
  76. INT8U Proc;
  77. INT8U Register;
  78. INT8U Value;
  79. } PACKED ApmlWriteRMIReq_T;
  80. /* ApmlWriteRMIRes_T */
  81. typedef struct
  82. {
  83. INT8U CompletionCode;
  84. } PACKED ApmlWriteRMIRes_T;
  85. /* ApmlReadCPUIdReq_T */
  86. typedef struct
  87. {
  88. INT8U Proc;
  89. INT8U Core;
  90. INT32U Cpuid_func;
  91. } PACKED ApmlReadCPUIdReq_T;
  92. /* ApmlReadCPUIdRes_T */
  93. typedef struct
  94. {
  95. INT8U CompletionCode;
  96. INT32U eax;
  97. INT32U ebx;
  98. INT32U ecx;
  99. INT32U edx;
  100. } PACKED ApmlReadCPUIdRes_T;
  101. /* ApmlReadHTCReq_T */
  102. typedef struct
  103. {
  104. INT8U Proc;
  105. } PACKED ApmlReadHTCReq_T;
  106. /* ApmlReadHTCRes_T */
  107. typedef struct
  108. {
  109. INT8U CompletionCode;
  110. INT32U High;
  111. INT32U Low;
  112. } PACKED ApmlReadHTCRes_T;
  113. /* ApmlWriteHTCReq_T */
  114. typedef struct
  115. {
  116. INT8U Proc;
  117. INT8U RegisterValueSize;
  118. INT32U High;
  119. INT32U Low;
  120. } PACKED ApmlWriteHTCReq_T;
  121. /* ApmlWriteHTCRes_T */
  122. typedef struct
  123. {
  124. INT8U CompletionCode;
  125. } PACKED ApmlWriteHTCRes_T;
  126. /* ApmlReadPStateReq_T */
  127. typedef struct
  128. {
  129. INT8U Proc;
  130. INT8U Core;
  131. } PACKED ApmlReadPStateReq_T;
  132. /* ApmlReadPStateRes_T */
  133. typedef struct
  134. {
  135. INT8U CompletionCode;
  136. INT8U PState;
  137. } PACKED ApmlReadPStateRes_T;
  138. /* ApmlReadMaxPStateReq_T */
  139. typedef struct
  140. {
  141. INT8U Proc;
  142. } PACKED ApmlReadMaxPStateReq_T;
  143. /* ApmlReadMaxPStateReq_T */
  144. typedef struct
  145. {
  146. INT8U CompletionCode;
  147. INT8U MaxPState;
  148. } PACKED ApmlReadMaxPStateRes_T;
  149. /* ApmlReadPStateLimitReq_T */
  150. typedef struct
  151. {
  152. INT8U Proc;
  153. } PACKED ApmlReadPStateLimitReq_T;
  154. /* ApmlReadPStateLimitRes_T */
  155. typedef struct
  156. {
  157. INT8U CompletionCode;
  158. INT8U LimitActive;
  159. INT8U PStateLimit;
  160. } PACKED ApmlReadPStateLimitRes_T;
  161. /* ApmlWritePStateLimitReq_T */
  162. typedef struct
  163. {
  164. INT8U Proc;
  165. INT8U LimitActive;
  166. INT8U PStateLimit;
  167. } PACKED ApmlWritePStateLimitReq_T;
  168. /* ApmlWritePStateLimitRes_T */
  169. typedef struct
  170. {
  171. INT8U CompletionCode;
  172. } PACKED ApmlWritePStateLimitRes_T;
  173. /* ApmlReadMCRReq_T */
  174. typedef struct
  175. {
  176. INT8U Proc;
  177. INT8U Core;
  178. INT32U MCR_Addr;
  179. } PACKED ApmlReadMCRReq_T;
  180. /* ApmlReadMCRRes_T */
  181. typedef struct
  182. {
  183. INT8U CompletionCode;
  184. INT32U High;
  185. INT32U Low;
  186. } PACKED ApmlReadMCRRes_T;
  187. /* ApmlWriteMCRReq_T */
  188. typedef struct
  189. {
  190. INT8U Proc;
  191. INT8U Core;
  192. INT32U MCR_Addr;
  193. INT8U RegisterValueSize;
  194. INT32U High;
  195. INT32U Low;
  196. } PACKED ApmlWriteMCRReq_T;
  197. /* ApmlWriteMCRReq_T */
  198. typedef struct
  199. {
  200. INT8U CompletionCode;
  201. } PACKED ApmlWriteMCRRes_T;
  202. /* ApmlReadTSIReq_T */
  203. typedef struct
  204. {
  205. INT8U Proc;
  206. INT8U Register;
  207. } PACKED ApmlReadTSIReq_T;
  208. /* ApmlReadTSIRes_T */
  209. typedef struct
  210. {
  211. INT8U CompletionCode;
  212. INT8U Value;
  213. } PACKED ApmlReadTSIRes_T;
  214. /* ApmlWriteTSIReq_T */
  215. typedef struct
  216. {
  217. INT8U Proc;
  218. INT8U Register;
  219. INT8U Value;
  220. } PACKED ApmlWriteTSIReq_T;
  221. /* ApmlWriteTSIRes_T */
  222. typedef struct
  223. {
  224. INT8U CompletionCode;
  225. } PACKED ApmlWriteTSIRes_T;
  226. typedef struct
  227. {
  228. INT8U Proc;
  229. } PACKED ApmlReadTDPLimitReq_T;
  230. /* ApmlReadTDPLimitRes_T */
  231. typedef struct
  232. {
  233. INT8U CompletionCode;
  234. INT8U ApmlTdpLimiPercent;
  235. INT16U ApmlTdpLimit;
  236. } PACKED ApmlReadTDPLimitRes_T;
  237. /* ApmlWriteTDPLimitReq_T */
  238. typedef struct
  239. {
  240. INT8U Proc;
  241. INT8U ApmlTdpLimiPercent;
  242. INT16U ApmlTdpLimit;
  243. } PACKED ApmlWriteTDPLimitReq_T;
  244. /* ApmlWriteTDPLimitRes_T */
  245. typedef struct
  246. {
  247. INT8U CompletionCode;
  248. } PACKED ApmlWriteTDPLimitRes_T;
  249. /* ApmlReadProcessorPowerReq_T */
  250. typedef struct
  251. {
  252. INT8U Proc;
  253. } PACKED ApmlReadProcessorPowerReq_T;
  254. /* ApmlReadProcessorPowerRes_T */
  255. typedef struct
  256. {
  257. INT8U CompletionCode;
  258. INT16U Tdp2Watt;
  259. INT16U BaseTdp;
  260. INT16U ProcessorTdp;
  261. } PACKED ApmlReadProcessorPowerRes_T;
  262. /* ApmlReadPowerAveragingPeriodReq_T */
  263. typedef struct
  264. {
  265. INT8U Proc;
  266. } PACKED ApmlReadPowerAveragingPeriodReq_T;
  267. /* ApmlReadPowerAveragingPeriodRes_T */
  268. typedef struct
  269. {
  270. INT8U CompletionCode;
  271. uint8 RunAvgRange;
  272. uint16 ApmTdpLimit;
  273. uint32 TdpRunAvgAccCap;
  274. } PACKED ApmlReadPowerAveragingPeriodRes_T;
  275. /* ApmlReadDramThrottleReq_T */
  276. typedef struct
  277. {
  278. INT8U Proc;
  279. } PACKED ApmlReadDramThrottleReq_T;
  280. /* ApmlReadDramThrottleRes_T */
  281. typedef struct
  282. {
  283. INT8U CompletionCode;
  284. INT8U BwCapCmdThrottleMode;
  285. INT8U BwCapEn;
  286. } PACKED ApmlReadDramThrottleRes_T;
  287. /* ApmlWriteDramThrottleReq_T */
  288. typedef struct
  289. {
  290. INT8U Proc;
  291. INT8U BwCapCmdThrottleMode;
  292. INT8U BwCapEn;
  293. } PACKED ApmlWriteDramThrottleReq_T;
  294. /* ApmlWriteDramThrottleRes_T */
  295. typedef struct
  296. {
  297. INT8U CompletionCode;
  298. } PACKED ApmlWriteDramThrottleRes_T;
  299. extern int ApmlInit(int BMCInst);
  300. extern int ApmlClose(int BMCInst);
  301. extern int ApmlGetInterfaceVersion (_NEAR_ INT8U* pReq,INT8U ReqLen,_NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
  302. extern int ApmlReadRMIReg (_NEAR_ INT8U* pReq,INT8U ReqLen,_NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
  303. extern int ApmlWriteRMIReg (_NEAR_ INT8U* pReq,INT8U ReqLen,_NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
  304. extern int ApmlReadCPUId (_NEAR_ INT8U* pReq,INT8U ReqLen,_NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
  305. extern int ApmlReadHTCReg (_NEAR_ INT8U* pReq,INT8U ReqLen,_NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
  306. extern int ApmlWriteHTCReg (_NEAR_ INT8U* pReq,INT8U ReqLen,_NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
  307. extern int ApmlReadPState (_NEAR_ INT8U* pReq,INT8U ReqLen,_NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
  308. extern int ApmlReadMaxPState (_NEAR_ INT8U* pReq,INT8U ReqLen,_NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
  309. extern int ApmlReadPStateLimit (_NEAR_ INT8U* pReq,INT8U ReqLen,_NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
  310. extern int ApmlWritePStateLimit (_NEAR_ INT8U* pReq,INT8U ReqLen,_NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
  311. extern int ApmlReadMCR (_NEAR_ INT8U* pReq,INT8U ReqLen,_NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
  312. extern int ApmlWriteMCR (_NEAR_ INT8U* pReq,INT8U ReqLen,_NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
  313. extern int ApmlReadTSIReg (_NEAR_ INT8U* pReq,INT8U ReqLen,_NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
  314. extern int ApmlWriteTSIReg (_NEAR_ INT8U* pReq,INT8U ReqLen,_NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
  315. extern int ApmlReadTDPLimitReg (_NEAR_ INT8U* pReq,INT8U ReqLen,_NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
  316. extern int ApmlWriteTDPLimitReg (_NEAR_ INT8U* pReq,INT8U ReqLen,_NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
  317. extern int ApmlReadProcessorPowerReg (_NEAR_ INT8U* pReq,INT8U ReqLen,_NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
  318. extern int ApmlReadPowerAveragingReg (_NEAR_ INT8U* pReq,INT8U ReqLen,_NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
  319. extern int ApmlReadDramThrottleReg (_NEAR_ INT8U* pReq,INT8U ReqLen,_NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
  320. extern int ApmlWriteDramThrottleReg (_NEAR_ INT8U* pReq,INT8U ReqLen,_NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
  321. #endif //_APML_H_