PDKCmds.c 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406
  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. * PDKCmds.c
  17. * Hooks that are invoked at different points of the Firmware
  18. * execution.
  19. *
  20. * Author: Govind Kothandapani <govindk@ami.com>
  21. ******************************************************************/
  22. #include "PDKCmds.h"
  23. #include "OemSMMCmds.h"
  24. #include "com_IPMIDefs.h"
  25. #include "Storlead.h"
  26. /*NetFn -Application OEM Command Handler to override generic IPMI cmd
  27. Commands can be added to the Handler as explained below
  28. { CMD_GET_DEV_ID, PRIV_USER, GETDEV_ID, 0x00, 0xAAAA },
  29. where CMD_GET_DEV_ID - Command no.
  30. PRIV_USER - Privilege level like administrator,user
  31. GETDEV_ID - Function for the command to override
  32. 0x00 - Request length for the command
  33. 0xAAAA - Firewall settings
  34. GETDEV_ID function definition can be as shown below
  35. int GETDEV_ID (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes)
  36. {
  37. *pRes= CC_NORMAL;
  38. return sizeof (*pRes);
  39. }
  40. */
  41. const CmdHndlrMap_T g_Oem_App_CmdHndlr [] =
  42. {
  43. { 0x00, 0x00, 0x00, 0x00, 0x0000 }
  44. };
  45. /*Netfn - Chasiss OEM Command Handler to override generic IPMI cmd */
  46. const CmdHndlrMap_T g_Oem_Chassis_CmdHndlr [] =
  47. {
  48. { 0x00, 0x00, 0x00, 0x00, 0x0000 }
  49. };
  50. /*Netfn - Bridging OEM Command Handler to override generic IPMI cmd */
  51. const CmdHndlrMap_T g_Oem_Bridge_CmdHndlr [] =
  52. {
  53. { 0x00, 0x00, 0x00, 0x00, 0x0000 }
  54. };
  55. /*Netfn - Sensor OEM Command Handler to override generic IPMI cmd */
  56. const CmdHndlrMap_T g_Oem_SensorEvent_CmdHndlr [] =
  57. {
  58. { 0x00, 0x00, 0x00, 0x00, 0x0000 }
  59. };
  60. /*Netfn - Storage OEM Command Handler to override generic IPMI cmd */
  61. const CmdHndlrMap_T g_Oem_Storage_CmdHndlr [] =
  62. {
  63. { 0x00, 0x00, 0x00, 0x00, 0x0000 }
  64. };
  65. /*Netfn - Transport OEM Command Handler to override generic IPMI cmd */
  66. const CmdHndlrMap_T g_Oem_Config_CmdHndlr [] =
  67. {
  68. { 0x00, 0x00, 0x00, 0x00, 0x0000 }
  69. };
  70. /*Netfn - OEM cmd */
  71. const CmdHndlrMap_T g_Oem_CmdHndlr [] = //jimbo add
  72. {
  73. { CMD_EXAMPLE_0h, PRIV_USER, SMMExample_0h, 0xff, 0xAAAA, 0xFFFF },
  74. { CMD_EXAMPLE_1h, PRIV_USER, SMMExample_1h, 0xff, 0xAAAA, 0xFFFF },
  75. { CMD_EXAMPLE_2h, PRIV_USER, SMMExample_2h, 0xff, 0xAAAA, 0xFFFF },
  76. { CMD_EXAMPLE_3h, PRIV_USER, SMMExample_3h, 0xff, 0xAAAA, 0xFFFF },
  77. { CMD_EXAMPLE_4h, PRIV_USER, SMMExample_4h, 0xff, 0xAAAA, 0xFFFF },
  78. { CMD_EXAMPLE_5h, PRIV_USER, SMMExample_5h, 0xff, 0xAAAA, 0xFFFF },
  79. { CMD_EXAMPLE_6h, PRIV_USER, SMMExample_6h, 0xff, 0xAAAA, 0xFFFF },
  80. { CMD_EXAMPLE_7h, PRIV_USER, SMMExample_7h, 0xff, 0xAAAA, 0xFFFF },
  81. { CMD_EXAMPLE_8h, PRIV_USER, SMMExample_8h, 0xff, 0xAAAA, 0xFFFF },
  82. { CMD_EXAMPLE_9h, PRIV_USER, SMMExample_9h, 0xff, 0xAAAA, 0xFFFF },
  83. { CMD_EXAMPLE_ah, PRIV_USER, SMMExample_ah, 0xff, 0xAAAA, 0xFFFF },
  84. { CMD_EXAMPLE_bh, PRIV_USER, SMMExample_bh, 0xff, 0xAAAA, 0xFFFF },
  85. { CMD_EXAMPLE_ch, PRIV_USER, SMMExample_ch, 0xff, 0xAAAA, 0xFFFF },
  86. { CMD_EXAMPLE_dh, PRIV_USER, SMMExample_dh, 0xff, 0xAAAA, 0xFFFF },
  87. { CMD_EXAMPLE_eh, PRIV_USER, SMMExample_eh, 0xff, 0xAAAA, 0xFFFF },
  88. { CMD_EXAMPLE_fh, PRIV_USER, SMMExample_fh, 0xff, 0xAAAA, 0xFFFF },
  89. { CMD_EXAMPLE_10h, PRIV_USER, SMMExample_10h, 0xff, 0xAAAA, 0xFFFF },
  90. { CMD_EXAMPLE_11h, PRIV_USER, SMMExample_11h, 0xff, 0xAAAA, 0xFFFF },
  91. { CMD_EXAMPLE_12h, PRIV_USER, SMMExample_12h, 0xff, 0xAAAA, 0xFFFF },
  92. { CMD_EXAMPLE_13h, PRIV_USER, SMMExample_13h, 0xff, 0xAAAA, 0xFFFF },
  93. { CMD_EXAMPLE_14h, PRIV_USER, SMMExample_14h, 0xff, 0xAAAA, 0xFFFF },
  94. { CMD_EXAMPLE_15h, PRIV_USER, SMMExample_15h, 0xff, 0xAAAA, 0xFFFF },
  95. { CMD_EXAMPLE_16h, PRIV_USER, SMMExample_16h, 0xff, 0xAAAA, 0xFFFF },
  96. { CMD_EXAMPLE_17h, PRIV_USER, SMMExample_17h, 0xff, 0xAAAA, 0xFFFF },
  97. { CMD_EXAMPLE_18h, PRIV_USER, SMMExample_18h, 0xff, 0xAAAA, 0xFFFF },
  98. { CMD_EXAMPLE_19h, PRIV_USER, SMMExample_19h, 0xff, 0xAAAA, 0xFFFF },
  99. { CMD_EXAMPLE_20h, PRIV_USER, SMMExample_20h, 0xff, 0xAAAA, 0xFFFF },
  100. { CMD_EXAMPLE_21h, PRIV_USER, SMMExample_21h, 0xff, 0xAAAA, 0xFFFF },
  101. { CMD_EXAMPLE_22h, PRIV_USER, SMMExample_22h, 0xff, 0xAAAA, 0xFFFF },
  102. { CMD_EXAMPLE_23h, PRIV_USER, SMMExample_23h, 0xff, 0xAAAA, 0xFFFF },
  103. { CMD_EXAMPLE_24h, PRIV_USER, SMMExample_24h, 0xff, 0xAAAA, 0xFFFF },
  104. { CMD_EXAMPLE_25h, PRIV_USER, SMMExample_25h, 0xff, 0xAAAA, 0xFFFF },
  105. { CMD_EXAMPLE_26h, PRIV_USER, SMMExample_26h, 0xff, 0xAAAA, 0xFFFF },
  106. { CMD_EXAMPLE_27h, PRIV_USER, SMMExample_27h, 0xff, 0xAAAA, 0xFFFF },
  107. { CMD_EXAMPLE_28h, PRIV_USER, SMMExample_28h, 0xff, 0xAAAA, 0xFFFF },
  108. { CMD_EXAMPLE_29h, PRIV_USER, SMMExample_29h, 0xff, 0xAAAA, 0xFFFF },
  109. { CMD_EXAMPLE_2ah, PRIV_USER, SMMExample_2ah, 0xff, 0xAAAA, 0xFFFF },
  110. { CMD_EXAMPLE_2bh, PRIV_USER, SMMExample_2bh, 0xff, 0xAAAA, 0xFFFF },
  111. { CMD_EXAMPLE_2ch, PRIV_USER, SMMExample_2ch, 0xff, 0xAAAA, 0xFFFF },
  112. { CMD_EXAMPLE_2dh, PRIV_USER, SMMExample_2dh, 0xff, 0xAAAA, 0xFFFF },
  113. { CMD_EXAMPLE_2eh, PRIV_USER, SMMExample_2eh, 0xff, 0xAAAA, 0xFFFF },
  114. { CMD_EXAMPLE_2fh, PRIV_USER, SMMExample_2fh, 0xff, 0xAAAA, 0xFFFF },
  115. { CMD_EXAMPLE_30h, PRIV_USER, SMMExample_30h, 0xff, 0xAAAA, 0xFFFF },
  116. { CMD_EXAMPLE_31h, PRIV_USER, SMMExample_31h, 0xff, 0xAAAA, 0xFFFF },
  117. { CMD_EXAMPLE_32h, PRIV_USER, SMMExample_32h, 0xff, 0xAAAA, 0xFFFF },
  118. { CMD_EXAMPLE_33h, PRIV_USER, SMMExample_33h, 0xff, 0xAAAA, 0xFFFF },
  119. { CMD_EXAMPLE_34h, PRIV_USER, SMMExample_34h, 0xff, 0xAAAA, 0xFFFF },
  120. { CMD_EXAMPLE_35h, PRIV_USER, SMMExample_35h, 0xff, 0xAAAA, 0xFFFF },
  121. { CMD_EXAMPLE_36h, PRIV_USER, SMMExample_36h, 0xff, 0xAAAA, 0xFFFF },
  122. { CMD_EXAMPLE_37h, PRIV_USER, SMMExample_37h, 0xff, 0xAAAA, 0xFFFF },
  123. { CMD_EXAMPLE_38h, PRIV_USER, SMMExample_38h, 0xff, 0xAAAA, 0xFFFF },
  124. { CMD_EXAMPLE_39h, PRIV_USER, SMMExample_39h, 0xff, 0xAAAA, 0xFFFF },
  125. { CMD_EXAMPLE_3ah, PRIV_USER, SMMExample_3ah, 0xff, 0xAAAA, 0xFFFF },
  126. { CMD_EXAMPLE_3bh, PRIV_USER, SMMExample_3bh, 0xff, 0xAAAA, 0xFFFF },
  127. { CMD_EXAMPLE_3ch, PRIV_USER, SMMExample_3ch, 0xff, 0xAAAA, 0xFFFF },
  128. { CMD_EXAMPLE_3dh, PRIV_USER, SMMExample_3dh, 0xff, 0xAAAA, 0xFFFF },
  129. { CMD_EXAMPLE_3eh, PRIV_USER, SMMExample_3eh, 0xff, 0xAAAA, 0xFFFF },
  130. { CMD_EXAMPLE_3fh, PRIV_USER, SMMExample_3fh, 0xff, 0xAAAA, 0xFFFF },
  131. { CMD_EXAMPLE_40h, PRIV_USER, SMMExample_40h, 0xff, 0xAAAA, 0xFFFF },
  132. { CMD_EXAMPLE_41h, PRIV_USER, SMMExample_41h, 0xff, 0xAAAA, 0xFFFF },
  133. { CMD_EXAMPLE_42h, PRIV_USER, SMMExample_42h, 0xff, 0xAAAA, 0xFFFF },
  134. { CMD_EXAMPLE_43h, PRIV_USER, SMMExample_43h, 0xff, 0xAAAA, 0xFFFF },
  135. { CMD_EXAMPLE_44h, PRIV_USER, SMMExample_44h, 0xff, 0xAAAA, 0xFFFF },
  136. { CMD_EXAMPLE_45h, PRIV_USER, SMMExample_45h, 0xff, 0xAAAA, 0xFFFF },
  137. { CMD_EXAMPLE_46h, PRIV_USER, SMMExample_46h, 0xff, 0xAAAA, 0xFFFF },
  138. { CMD_EXAMPLE_47h, PRIV_USER, SMMExample_47h, 0xff, 0xAAAA, 0xFFFF },
  139. { CMD_EXAMPLE_48h, PRIV_USER, SMMExample_48h, 0xff, 0xAAAA, 0xFFFF },
  140. { CMD_EXAMPLE_49h, PRIV_USER, SMMExample_49h, 0xff, 0xAAAA, 0xFFFF },
  141. { CMD_EXAMPLE_4ah, PRIV_USER, SMMExample_4ah, 0xff, 0xAAAA, 0xFFFF },
  142. { CMD_EXAMPLE_4bh, PRIV_USER, SMMExample_4bh, 0xff, 0xAAAA, 0xFFFF },
  143. { CMD_EXAMPLE_4ch, PRIV_USER, SMMExample_4ch, 0xff, 0xAAAA, 0xFFFF },
  144. { CMD_EXAMPLE_4dh, PRIV_USER, SMMExample_4dh, 0xff, 0xAAAA, 0xFFFF },
  145. { CMD_EXAMPLE_4eh, PRIV_USER, SMMExample_4eh, 0xff, 0xAAAA, 0xFFFF },
  146. { CMD_EXAMPLE_4fh, PRIV_USER, SMMExample_4fh, 0xff, 0xAAAA, 0xFFFF },
  147. { CMD_EXAMPLE_50h, PRIV_USER, SMMExample_50h, 0xff, 0xAAAA, 0xFFFF },
  148. { CMD_EXAMPLE_51h, PRIV_USER, SMMExample_51h, 0xff, 0xAAAA, 0xFFFF },
  149. { CMD_EXAMPLE_52h, PRIV_USER, SMMExample_52h, 0xff, 0xAAAA, 0xFFFF },
  150. { CMD_EXAMPLE_53h, PRIV_USER, SMMExample_53h, 0xff, 0xAAAA, 0xFFFF },
  151. { CMD_EXAMPLE_54h, PRIV_USER, SMMExample_54h, 0xff, 0xAAAA, 0xFFFF },
  152. { CMD_EXAMPLE_55h, PRIV_USER, SMMExample_55h, 0xff, 0xAAAA, 0xFFFF },
  153. { CMD_EXAMPLE_56h, PRIV_USER, SMMExample_56h, 0xff, 0xAAAA, 0xFFFF },
  154. { CMD_EXAMPLE_57h, PRIV_USER, SMMExample_57h, 0xff, 0xAAAA, 0xFFFF },
  155. { CMD_EXAMPLE_58h, PRIV_USER, SMMExample_58h, 0xff, 0xAAAA, 0xFFFF },
  156. { CMD_EXAMPLE_59h, PRIV_USER, SMMExample_59h, 0xff, 0xAAAA, 0xFFFF },
  157. { CMD_EXAMPLE_5ah, PRIV_USER, SMMExample_5ah, 0xff, 0xAAAA, 0xFFFF },
  158. { CMD_EXAMPLE_5bh, PRIV_USER, SMMExample_5bh, 0xff, 0xAAAA, 0xFFFF },
  159. { CMD_EXAMPLE_5ch, PRIV_USER, SMMExample_5ch, 0xff, 0xAAAA, 0xFFFF },
  160. { CMD_EXAMPLE_5dh, PRIV_USER, SMMExample_5dh, 0xff, 0xAAAA, 0xFFFF },
  161. { CMD_EXAMPLE_5eh, PRIV_USER, SMMExample_5eh, 0xff, 0xAAAA, 0xFFFF },
  162. { CMD_EXAMPLE_5fh, PRIV_USER, SMMExample_5fh, 0xff, 0xAAAA, 0xFFFF },
  163. { CMD_EXAMPLE_60h, PRIV_USER, SMMExample_60h, 0xff, 0xAAAA, 0xFFFF },
  164. { CMD_EXAMPLE_61h, PRIV_USER, SMMExample_61h, 0xff, 0xAAAA, 0xFFFF },
  165. { CMD_EXAMPLE_62h, PRIV_USER, SMMExample_62h, 0xff, 0xAAAA, 0xFFFF },
  166. { CMD_EXAMPLE_63h, PRIV_USER, SMMExample_63h, 0xff, 0xAAAA, 0xFFFF },
  167. { CMD_EXAMPLE_64h, PRIV_USER, SMMExample_64h, 0xff, 0xAAAA, 0xFFFF },
  168. { CMD_EXAMPLE_65h, PRIV_USER, SMMExample_65h, 0xff, 0xAAAA, 0xFFFF },
  169. { CMD_EXAMPLE_66h, PRIV_USER, SMMExample_66h, 0xff, 0xAAAA, 0xFFFF },
  170. { CMD_EXAMPLE_67h, PRIV_USER, SMMExample_67h, 0xff, 0xAAAA, 0xFFFF },
  171. { CMD_EXAMPLE_68h, PRIV_USER, SMMExample_68h, 0xff, 0xAAAA, 0xFFFF },
  172. { CMD_EXAMPLE_69h, PRIV_USER, SMMExample_69h, 0xff, 0xAAAA, 0xFFFF },
  173. { CMD_EXAMPLE_6ah, PRIV_USER, SMMExample_6ah, 0xff, 0xAAAA, 0xFFFF },
  174. { CMD_EXAMPLE_6bh, PRIV_USER, SMMExample_6bh, 0xff, 0xAAAA, 0xFFFF },
  175. { CMD_EXAMPLE_6ch, PRIV_USER, SMMExample_6ch, 0xff, 0xAAAA, 0xFFFF },
  176. { CMD_EXAMPLE_6dh, PRIV_USER, SMMExample_6dh, 0xff, 0xAAAA, 0xFFFF },
  177. { CMD_EXAMPLE_6eh, PRIV_USER, SMMExample_6eh, 0xff, 0xAAAA, 0xFFFF },
  178. { CMD_EXAMPLE_6fh, PRIV_USER, SMMExample_6fh, 0xff, 0xAAAA, 0xFFFF },
  179. { CMD_EXAMPLE_70h, PRIV_USER, SMMExample_70h, 0xff, 0xAAAA, 0xFFFF },
  180. { CMD_EXAMPLE_71h, PRIV_USER, SMMExample_71h, 0xff, 0xAAAA, 0xFFFF },
  181. { CMD_EXAMPLE_72h, PRIV_USER, SMMExample_72h, 0xff, 0xAAAA, 0xFFFF },
  182. { CMD_EXAMPLE_73h, PRIV_USER, SMMExample_73h, 0xff, 0xAAAA, 0xFFFF },
  183. { CMD_EXAMPLE_74h, PRIV_USER, SMMExample_74h, 0xff, 0xAAAA, 0xFFFF },
  184. { CMD_EXAMPLE_75h, PRIV_USER, SMMExample_75h, 0xff, 0xAAAA, 0xFFFF },
  185. { CMD_EXAMPLE_76h, PRIV_USER, SMMExample_76h, 0xff, 0xAAAA, 0xFFFF },
  186. { CMD_EXAMPLE_77h, PRIV_USER, SMMExample_77h, 0xff, 0xAAAA, 0xFFFF },
  187. { CMD_EXAMPLE_78h, PRIV_USER, SMMExample_78h, 0xff, 0xAAAA, 0xFFFF },
  188. { CMD_EXAMPLE_79h, PRIV_USER, SMMExample_79h, 0xff, 0xAAAA, 0xFFFF },
  189. { CMD_EXAMPLE_7ah, PRIV_USER, SMMExample_7ah, 0xff, 0xAAAA, 0xFFFF },
  190. { CMD_EXAMPLE_7bh, PRIV_USER, SMMExample_7bh, 0xff, 0xAAAA, 0xFFFF },
  191. { CMD_EXAMPLE_7ch, PRIV_USER, SMMExample_7ch, 0xff, 0xAAAA, 0xFFFF },
  192. { CMD_EXAMPLE_7dh, PRIV_USER, SMMExample_7dh, 0xff, 0xAAAA, 0xFFFF },
  193. { CMD_EXAMPLE_7eh, PRIV_USER, SMMExample_7eh, 0xff, 0xAAAA, 0xFFFF },
  194. { CMD_EXAMPLE_7fh, PRIV_USER, SMMExample_7fh, 0xff, 0xAAAA, 0xFFFF },
  195. { CMD_EXAMPLE_80h, PRIV_USER, SMMExample_80h, 0xff, 0xAAAA, 0xFFFF },
  196. { CMD_EXAMPLE_81h, PRIV_USER, SMMExample_81h, 0xff, 0xAAAA, 0xFFFF },
  197. { CMD_EXAMPLE_82h, PRIV_USER, SMMExample_82h, 0xff, 0xAAAA, 0xFFFF },
  198. { CMD_EXAMPLE_83h, PRIV_USER, SMMExample_83h, 0xff, 0xAAAA, 0xFFFF },
  199. { CMD_EXAMPLE_84h, PRIV_USER, SMMExample_84h, 0xff, 0xAAAA, 0xFFFF },
  200. { CMD_EXAMPLE_85h, PRIV_USER, SMMExample_85h, 0xff, 0xAAAA, 0xFFFF },
  201. { CMD_EXAMPLE_86h, PRIV_USER, SMMExample_86h, 0xff, 0xAAAA, 0xFFFF },
  202. { CMD_EXAMPLE_87h, PRIV_USER, SMMExample_87h, 0xff, 0xAAAA, 0xFFFF },
  203. { CMD_EXAMPLE_88h, PRIV_USER, SMMExample_88h, 0xff, 0xAAAA, 0xFFFF },
  204. { CMD_EXAMPLE_89h, PRIV_USER, SMMExample_89h, 0xff, 0xAAAA, 0xFFFF },
  205. { CMD_EXAMPLE_8ah, PRIV_USER, SMMExample_8ah, 0xff, 0xAAAA, 0xFFFF },
  206. { CMD_EXAMPLE_8bh, PRIV_USER, SMMExample_8bh, 0xff, 0xAAAA, 0xFFFF },
  207. { CMD_EXAMPLE_8ch, PRIV_USER, SMMExample_8ch, 0xff, 0xAAAA, 0xFFFF },
  208. { CMD_EXAMPLE_8dh, PRIV_USER, SMMExample_8dh, 0xff, 0xAAAA, 0xFFFF },
  209. { CMD_EXAMPLE_8eh, PRIV_USER, SMMExample_8eh, 0xff, 0xAAAA, 0xFFFF },
  210. { CMD_EXAMPLE_8fh, PRIV_USER, SMMExample_8fh, 0xff, 0xAAAA, 0xFFFF },
  211. { CMD_EXAMPLE_90h, PRIV_USER, SMMExample_90h, 0xff, 0xAAAA, 0xFFFF },
  212. { CMD_EXAMPLE_91h, PRIV_USER, SMMExample_91h, 0xff, 0xAAAA, 0xFFFF },
  213. { CMD_EXAMPLE_92h, PRIV_USER, SMMExample_92h, 0xff, 0xAAAA, 0xFFFF },
  214. { CMD_EXAMPLE_93h, PRIV_USER, SMMExample_93h, 0xff, 0xAAAA, 0xFFFF },
  215. { CMD_EXAMPLE_94h, PRIV_USER, SMMExample_94h, 0xff, 0xAAAA, 0xFFFF },
  216. { CMD_EXAMPLE_95h, PRIV_USER, SMMExample_95h, 0xff, 0xAAAA, 0xFFFF },
  217. { CMD_EXAMPLE_96h, PRIV_USER, SMMExample_96h, 0xff, 0xAAAA, 0xFFFF },
  218. { CMD_EXAMPLE_97h, PRIV_USER, SMMExample_97h, 0xff, 0xAAAA, 0xFFFF },
  219. { CMD_EXAMPLE_98h, PRIV_USER, SMMExample_98h, 0xff, 0xAAAA, 0xFFFF },
  220. { CMD_EXAMPLE_99h, PRIV_USER, SMMExample_99h, 0xff, 0xAAAA, 0xFFFF },
  221. { CMD_EXAMPLE_9ah, PRIV_USER, SMMExample_9ah, 0xff, 0xAAAA, 0xFFFF },
  222. { CMD_EXAMPLE_9bh, PRIV_USER, SMMExample_9bh, 0xff, 0xAAAA, 0xFFFF },
  223. { CMD_EXAMPLE_9ch, PRIV_USER, SMMExample_9ch, 0xff, 0xAAAA, 0xFFFF },
  224. { CMD_EXAMPLE_9dh, PRIV_USER, SMMExample_9dh, 0xff, 0xAAAA, 0xFFFF },
  225. { CMD_EXAMPLE_9eh, PRIV_USER, SMMExample_9eh, 0xff, 0xAAAA, 0xFFFF },
  226. { CMD_EXAMPLE_9fh, PRIV_USER, SMMExample_9fh, 0xff, 0xAAAA, 0xFFFF },
  227. { CMD_EXAMPLE_a0h, PRIV_USER, SMMExample_a0h, 0xff, 0xAAAA, 0xFFFF },
  228. { CMD_EXAMPLE_a1h, PRIV_USER, SMMExample_a1h, 0xff, 0xAAAA, 0xFFFF },
  229. { CMD_EXAMPLE_a2h, PRIV_USER, SMMExample_a2h, 0xff, 0xAAAA, 0xFFFF },
  230. { CMD_EXAMPLE_a3h, PRIV_USER, SMMExample_a3h, 0xff, 0xAAAA, 0xFFFF },
  231. { CMD_EXAMPLE_a4h, PRIV_USER, SMMExample_a4h, 0xff, 0xAAAA, 0xFFFF },
  232. { CMD_EXAMPLE_a5h, PRIV_USER, SMMExample_a5h, 0xff, 0xAAAA, 0xFFFF },
  233. { CMD_EXAMPLE_a6h, PRIV_USER, SMMExample_a6h, 0xff, 0xAAAA, 0xFFFF },
  234. { CMD_EXAMPLE_a7h, PRIV_USER, SMMExample_a7h, 0xff, 0xAAAA, 0xFFFF },
  235. { CMD_EXAMPLE_a8h, PRIV_USER, SMMExample_a8h, 0xff, 0xAAAA, 0xFFFF },
  236. { CMD_EXAMPLE_a9h, PRIV_USER, SMMExample_a9h, 0xff, 0xAAAA, 0xFFFF },
  237. { CMD_EXAMPLE_aah, PRIV_USER, SMMExample_aah, 0xff, 0xAAAA, 0xFFFF },
  238. { CMD_EXAMPLE_abh, PRIV_USER, SMMExample_abh, 0xff, 0xAAAA, 0xFFFF },
  239. { CMD_EXAMPLE_ach, PRIV_USER, SMMExample_ach, 0xff, 0xAAAA, 0xFFFF },
  240. { CMD_EXAMPLE_adh, PRIV_USER, SMMExample_adh, 0xff, 0xAAAA, 0xFFFF },
  241. { CMD_EXAMPLE_aeh, PRIV_USER, SMMExample_aeh, 0xff, 0xAAAA, 0xFFFF },
  242. { CMD_EXAMPLE_afh, PRIV_USER, SMMExample_afh, 0xff, 0xAAAA, 0xFFFF },
  243. { CMD_EXAMPLE_b0h, PRIV_USER, SMMExample_b0h, 0xff, 0xAAAA, 0xFFFF },
  244. { CMD_EXAMPLE_b1h, PRIV_USER, SMMExample_b1h, 0xff, 0xAAAA, 0xFFFF },
  245. { CMD_EXAMPLE_b2h, PRIV_USER, SMMExample_b2h, 0xff, 0xAAAA, 0xFFFF },
  246. { CMD_EXAMPLE_b3h, PRIV_USER, SMMExample_b3h, 0xff, 0xAAAA, 0xFFFF },
  247. { CMD_EXAMPLE_b4h, PRIV_USER, SMMExample_b4h, 0xff, 0xAAAA, 0xFFFF },
  248. { CMD_EXAMPLE_b5h, PRIV_USER, SMMExample_b5h, 0xff, 0xAAAA, 0xFFFF },
  249. { CMD_EXAMPLE_b6h, PRIV_USER, SMMExample_b6h, 0xff, 0xAAAA, 0xFFFF },
  250. { CMD_EXAMPLE_b7h, PRIV_USER, SMMExample_b7h, 0xff, 0xAAAA, 0xFFFF },
  251. { CMD_EXAMPLE_b8h, PRIV_USER, SMMExample_b8h, 0xff, 0xAAAA, 0xFFFF },
  252. { CMD_EXAMPLE_b9h, PRIV_USER, SMMExample_b9h, 0xff, 0xAAAA, 0xFFFF },
  253. { CMD_EXAMPLE_bah, PRIV_USER, SMMExample_bah, 0xff, 0xAAAA, 0xFFFF },
  254. { CMD_EXAMPLE_bbh, PRIV_USER, SMMExample_bbh, 0xff, 0xAAAA, 0xFFFF },
  255. { CMD_EXAMPLE_bch, PRIV_USER, SMMExample_bch, 0xff, 0xAAAA, 0xFFFF },
  256. { CMD_EXAMPLE_bdh, PRIV_USER, SMMExample_bdh, 0xff, 0xAAAA, 0xFFFF },
  257. { CMD_EXAMPLE_beh, PRIV_USER, SMMExample_beh, 0xff, 0xAAAA, 0xFFFF },
  258. { CMD_EXAMPLE_bfh, PRIV_USER, SMMExample_bfh, 0xff, 0xAAAA, 0xFFFF },
  259. { CMD_EXAMPLE_c0h, PRIV_USER, SMMExample_c0h, 0xff, 0xAAAA, 0xFFFF },
  260. { CMD_EXAMPLE_c1h, PRIV_USER, SMMExample_c1h, 0xff, 0xAAAA, 0xFFFF },
  261. { CMD_EXAMPLE_c2h, PRIV_USER, SMMExample_c2h, 0xff, 0xAAAA, 0xFFFF },
  262. { CMD_EXAMPLE_c3h, PRIV_USER, SMMExample_c3h, 0xff, 0xAAAA, 0xFFFF },
  263. { CMD_EXAMPLE_c4h, PRIV_USER, SMMExample_c4h, 0xff, 0xAAAA, 0xFFFF },
  264. { CMD_EXAMPLE_c5h, PRIV_USER, SMMExample_c5h, 0xff, 0xAAAA, 0xFFFF },
  265. { CMD_EXAMPLE_c6h, PRIV_USER, SMMExample_c6h, 0xff, 0xAAAA, 0xFFFF },
  266. { CMD_EXAMPLE_c7h, PRIV_USER, SMMExample_c7h, 0xff, 0xAAAA, 0xFFFF },
  267. { CMD_EXAMPLE_c8h, PRIV_USER, SMMExample_c8h, 0xff, 0xAAAA, 0xFFFF },
  268. { CMD_EXAMPLE_c9h, PRIV_USER, SMMExample_c9h, 0xff, 0xAAAA, 0xFFFF },
  269. { CMD_EXAMPLE_cah, PRIV_USER, SMMExample_cah, 0xff, 0xAAAA, 0xFFFF },
  270. { CMD_EXAMPLE_cbh, PRIV_USER, SMMExample_cbh, 0xff, 0xAAAA, 0xFFFF },
  271. { CMD_EXAMPLE_cch, PRIV_USER, SMMExample_cch, 0xff, 0xAAAA, 0xFFFF },
  272. { CMD_EXAMPLE_cdh, PRIV_USER, SMMExample_cdh, 0xff, 0xAAAA, 0xFFFF },
  273. { CMD_EXAMPLE_ceh, PRIV_USER, SMMExample_ceh, 0xff, 0xAAAA, 0xFFFF },
  274. { CMD_EXAMPLE_cfh, PRIV_USER, SMMExample_cfh, 0xff, 0xAAAA, 0xFFFF },
  275. { CMD_EXAMPLE_d0h, PRIV_USER, SMMExample_d0h, 0xff, 0xAAAA, 0xFFFF },
  276. { CMD_EXAMPLE_d1h, PRIV_USER, SMMExample_d1h, 0xff, 0xAAAA, 0xFFFF },
  277. { CMD_EXAMPLE_d2h, PRIV_USER, SMMExample_d2h, 0xff, 0xAAAA, 0xFFFF },
  278. { CMD_EXAMPLE_d3h, PRIV_USER, SMMExample_d3h, 0xff, 0xAAAA, 0xFFFF },
  279. { CMD_EXAMPLE_d4h, PRIV_USER, SMMExample_d4h, 0xff, 0xAAAA, 0xFFFF },
  280. { CMD_EXAMPLE_d5h, PRIV_USER, SMMExample_d5h, 0xff, 0xAAAA, 0xFFFF },
  281. { CMD_EXAMPLE_d6h, PRIV_USER, SMMExample_d6h, 0xff, 0xAAAA, 0xFFFF },
  282. { CMD_EXAMPLE_d7h, PRIV_USER, SMMExample_d7h, 0xff, 0xAAAA, 0xFFFF },
  283. { CMD_EXAMPLE_d8h, PRIV_USER, SMMExample_d8h, 0xff, 0xAAAA, 0xFFFF },
  284. { CMD_EXAMPLE_d9h, PRIV_USER, SMMExample_d9h, 0xff, 0xAAAA, 0xFFFF },
  285. { CMD_EXAMPLE_dah, PRIV_USER, SMMExample_dah, 0xff, 0xAAAA, 0xFFFF },
  286. { CMD_EXAMPLE_dbh, PRIV_USER, SMMExample_dbh, 0xff, 0xAAAA, 0xFFFF },
  287. { CMD_EXAMPLE_dch, PRIV_USER, SMMExample_dch, 0xff, 0xAAAA, 0xFFFF },
  288. { CMD_EXAMPLE_ddh, PRIV_USER, SMMExample_ddh, 0xff, 0xAAAA, 0xFFFF },
  289. { CMD_EXAMPLE_deh, PRIV_USER, SMMExample_deh, 0xff, 0xAAAA, 0xFFFF },
  290. { CMD_EXAMPLE_dfh, PRIV_USER, SMMExample_dfh, 0xff, 0xAAAA, 0xFFFF },
  291. { CMD_EXAMPLE_e0h, PRIV_USER, SMMExample_e0h, 0xff, 0xAAAA, 0xFFFF },
  292. { CMD_EXAMPLE_e1h, PRIV_USER, SMMExample_e1h, 0xff, 0xAAAA, 0xFFFF },
  293. { CMD_EXAMPLE_e2h, PRIV_USER, SMMExample_e2h, 0xff, 0xAAAA, 0xFFFF },
  294. { CMD_EXAMPLE_e3h, PRIV_USER, SMMExample_e3h, 0xff, 0xAAAA, 0xFFFF },
  295. { CMD_EXAMPLE_e4h, PRIV_USER, SMMExample_e4h, 0xff, 0xAAAA, 0xFFFF },
  296. { CMD_EXAMPLE_e5h, PRIV_USER, SMMExample_e5h, 0xff, 0xAAAA, 0xFFFF },
  297. { CMD_EXAMPLE_e6h, PRIV_USER, SMMExample_e6h, 0xff, 0xAAAA, 0xFFFF },
  298. { CMD_EXAMPLE_e7h, PRIV_USER, SMMExample_e7h, 0xff, 0xAAAA, 0xFFFF },
  299. { CMD_EXAMPLE_e8h, PRIV_USER, SMMExample_e8h, 0xff, 0xAAAA, 0xFFFF },
  300. { CMD_EXAMPLE_e9h, PRIV_USER, SMMExample_e9h, 0xff, 0xAAAA, 0xFFFF },
  301. { CMD_EXAMPLE_eah, PRIV_USER, SMMExample_eah, 0xff, 0xAAAA, 0xFFFF },
  302. { CMD_EXAMPLE_ebh, PRIV_USER, SMMExample_ebh, 0xff, 0xAAAA, 0xFFFF },
  303. { CMD_EXAMPLE_ech, PRIV_USER, SMMExample_ech, 0xff, 0xAAAA, 0xFFFF },
  304. { CMD_EXAMPLE_edh, PRIV_USER, SMMExample_edh, 0xff, 0xAAAA, 0xFFFF },
  305. { CMD_EXAMPLE_eeh, PRIV_USER, SMMExample_eeh, 0xff, 0xAAAA, 0xFFFF },
  306. { CMD_EXAMPLE_efh, PRIV_USER, SMMExample_efh, 0xff, 0xAAAA, 0xFFFF },
  307. { CMD_EXAMPLE_f0h, PRIV_USER, SMMExample_f0h, 0xff, 0xAAAA, 0xFFFF },
  308. { CMD_EXAMPLE_f1h, PRIV_USER, SMMExample_f1h, 0xff, 0xAAAA, 0xFFFF },
  309. { CMD_EXAMPLE_f2h, PRIV_USER, SMMExample_f2h, 0xff, 0xAAAA, 0xFFFF },
  310. { CMD_EXAMPLE_f3h, PRIV_USER, SMMExample_f3h, 0xff, 0xAAAA, 0xFFFF },
  311. { CMD_EXAMPLE_f4h, PRIV_USER, SMMExample_f4h, 0xff, 0xAAAA, 0xFFFF },
  312. { CMD_EXAMPLE_f5h, PRIV_USER, SMMExample_f5h, 0xff, 0xAAAA, 0xFFFF },
  313. { CMD_EXAMPLE_f6h, PRIV_USER, SMMExample_f6h, 0xff, 0xAAAA, 0xFFFF },
  314. { CMD_EXAMPLE_f7h, PRIV_USER, SMMExample_f7h, 0xff, 0xAAAA, 0xFFFF },
  315. { CMD_EXAMPLE_f8h, PRIV_USER, SMMExample_f8h, 0xff, 0xAAAA, 0xFFFF },
  316. { CMD_EXAMPLE_f9h, PRIV_USER, SMMExample_f9h, 0xff, 0xAAAA, 0xFFFF },
  317. { CMD_EXAMPLE_fah, PRIV_USER, SMMExample_fah, 0xff, 0xAAAA, 0xFFFF },
  318. { CMD_EXAMPLE_fbh, PRIV_USER, SMMExample_fbh, 0xff, 0xAAAA, 0xFFFF },
  319. { CMD_EXAMPLE_fch, PRIV_USER, SMMExample_fch, 0xff, 0xAAAA, 0xFFFF },
  320. { CMD_EXAMPLE_fdh, PRIV_USER, SMMExample_fdh, 0xff, 0xAAAA, 0xFFFF },
  321. { CMD_EXAMPLE_feh, PRIV_USER, SMMExample_feh, 0xff, 0xAAAA, 0xFFFF },
  322. { CMD_EXAMPLE_ffh, PRIV_USER, SMMExample_ffh, 0xff, 0xAAAA, 0xFFFF },
  323. };
  324. const CmdHndlrMap_T g_Storlead_CmdHndlr [] =
  325. {
  326. { CMD_GET_SYS_INFO, PRIV_USER, Storlead_GetSysInfo, 0xff, 0xAAAA ,0xFFFF},
  327. { CMD_GET_SENSOR_INFO, PRIV_USER, Storlead_GetSensorInfo, 0xff, 0xAAAA ,0xFFFF},
  328. { CMD_GET_SEL_ENTIRES, PRIV_USER, Storlead_GetSELEntires, 0xff, 0xAAAA ,0xFFFF},
  329. { CMD_AUTHOR_VERIFY, PRIV_USER, Storlead_AuthorVerify, 0xff, 0xAAAA ,0xFFFF},
  330. { CMD_GET_SENSOR_HISTORY, PRIV_USER, Storlead_GetSensorHistory, 0xff, 0xAAAA ,0xFFFF},
  331. { CMD_GET_FAN_INFO, PRIV_USER, Storlead_GetFanInfo, 0xff, 0xAAAA ,0xFFFF},
  332. { CMD_GET_ALLBLADE_INFO, PRIV_USER, Storlead_getAllBladeStatus, 0xff, 0xAAAA ,0xFFFF},
  333. //{ CMD_SET_MANAGE_FN, PRIV_USER, Storlead_SetBladeManageFn, 0xff, 0xAAAA ,0xFFFF}, { CMD_SET_FAN_INFO, PRIV_USER, Storlead_SetFanInfo, 0xff, 0xAAAA ,0xFFFF},
  334. //{ CMD_GET_MANAGE_FN, PRIV_USER, Storlead_GetBladeManageFn, 0xff, 0xAAAA ,0xFFFF},
  335. { CMD_GET_CHASSIS_INFO, PRIV_USER, Storlead_GetChassisInfo, 0xff, 0xAAAA ,0xFFFF},
  336. { CMD_RESTORE_FACTORY_SET, PRIV_USER, Storlead_RestoreFactorSettings, 0xff, 0xAAAA ,0xFFFF},
  337. { CMD_GET_LAN_INFO, PRIV_USER, Storlead_GetLanInfo, 0xff, 0xAAAA ,0xFFFF},
  338. { CMD_SET_LAN_INFO, PRIV_USER, Storlead_SetLanInfo, 0xff, 0xAAAA ,0xFFFF},
  339. { CMD_GET_BLADE_INFO, PRIV_USER, Storlead_GetBladeInfo, 0xff, 0xAAAA ,0xFFFF},
  340. { CMD_GET_SENSOR_NAME, PRIV_USER, Storlead_GetSensorName, 0xff, 0xAAAA ,0xFFFF},
  341. { 0x00, 0x00, 0x00, 0x00, 0x0000 , 0x0000},
  342. };
  343. /*OEM Message Handler table to override generic IPMI cmd
  344. Any OEM specific Netfn and Command Handler can also be
  345. added here*/
  346. const MsgHndlrTbl_T oem_MsgHndlrTbl [] =
  347. {
  348. // { NETFN_APP, g_Oem_App_CmdHndlr },
  349. // { NETFN_CHASSIS, g_Oem_Chassis_CmdHndlr },
  350. // { NETFN_BRIDGE, g_Oem_Bridge_CmdHndlr },
  351. // { NETFN_SENSOR, g_Oem_SensorEvent_CmdHndlr },
  352. // { NETFN_STORAGE, g_Oem_Storage_CmdHndlr },
  353. // { NETFN_TRANSPORT, g_Oem_Config_CmdHndlr },
  354. { NETFN_OEM, g_Oem_CmdHndlr },
  355. {NETFN_STORLEAD, g_Storlead_CmdHndlr },
  356. };
  357. /**
  358. *@fn PDKGetOEMMsgHndlrMap
  359. *@brief Helps in getting command handler for specific NetFn
  360. *@parm NetFn -NetFunction
  361. *@param pCmdHndlrMap - Command Handler for the given NetFn
  362. *@return Returns 0 on success and -1 on failure
  363. */
  364. int
  365. PDKGetOEMMsgHndlrMap (uint8_t NetFn, CmdHndlrMap_T ** pCmdHndlrMap)
  366. {
  367. int i;
  368. /* Get the command handler corresponding to the net function */
  369. for (i = 0; i < sizeof (oem_MsgHndlrTbl) / sizeof (oem_MsgHndlrTbl [0]); i++)
  370. {
  371. if (oem_MsgHndlrTbl [i].NetFn == NetFn)
  372. {
  373. break;
  374. }
  375. }
  376. /* Check if we have not found our net function */
  377. if (i == sizeof (oem_MsgHndlrTbl) / sizeof (oem_MsgHndlrTbl [0]))
  378. {
  379. return -1;
  380. }
  381. /* Get the handler corresponding to the command */
  382. *pCmdHndlrMap = (CmdHndlrMap_T*)oem_MsgHndlrTbl [i].CmdHndlrMap;
  383. return 0;
  384. }