mt_spower_data_d2.h 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326
  1. #ifndef MT_SPOWER_CPU_H
  2. #define MT_SPOWER_CPU_H
  3. #define VSIZE 10
  4. #define TSIZE 20
  5. #define MAX_TABLE_SIZE 3
  6. #define CPU_TABLE_0 \
  7. /* "(WAT 8.62%) Leakage Power" */ \
  8. {800, 850, 900, 950, 1000, 1050, 1100, 1150, 1200, 1250, \
  9. 25, 14, 17, 21, 26, 33, 41, 51, 65, 81, 102,\
  10. 30, 16, 20, 24, 30, 38, 47, 59, 73, 92, 115,\
  11. 35, 18, 22, 28, 35, 43, 53, 67, 83, 104, 130,\
  12. 40, 21, 26, 32, 40, 49, 61, 76, 94, 118, 146,\
  13. 45, 24, 29, 36, 45, 56, 69, 86, 107, 132, 165,\
  14. 50, 27, 34, 42, 51, 64, 79, 97, 120, 149, 185,\
  15. 55, 31, 39, 47, 58, 72, 89, 110, 136, 168, 208,\
  16. 60, 36, 44, 54, 66, 82, 101, 124, 153, 189, 233,\
  17. 65, 41, 50, 61, 75, 93, 114, 140, 172, 212, 262,\
  18. 70, 47, 57, 70, 85, 105, 128, 157, 193, 238, 293,\
  19. 75, 53, 65, 79, 97, 118, 144, 177, 217, 266, 327,\
  20. 80, 60, 74, 90, 109, 133, 163, 199, 243, 297, 364,\
  21. 85, 69, 83, 101, 123, 150, 183, 223, 272, 332, 406,\
  22. 90, 78, 94, 114, 139, 168, 205, 249, 303, 370, 452,\
  23. 95, 88, 107, 129, 156, 189, 229, 278, 339, 413, 502,\
  24. 100, 99, 120, 145, 175, 212, 257, 311, 378, 459, 558,\
  25. 105, 112, 135, 163, 197, 237, 287, 347, 420, 510, 619,\
  26. 110, 126, 152, 183, 220, 266, 320, 386, 467, 565, 684,\
  27. 115, 142, 171, 205, 247, 297, 357, 430, 517, 624, 755,\
  28. 120, 160, 192, 230, 276, 330, 397, 476, 572, 690, 833},
  29. #define CPU_TABLE_1 \
  30. /* "(WAT 1.72%) Leakage Power" */ \
  31. {800, 850, 900, 950, 1000, 1050, 1100, 1150, 1200, 1250, \
  32. 25, 8, 10, 13, 16, 20, 25, 31, 39, 49, 62,\
  33. 30, 10, 12, 15, 18, 23, 29, 36, 45, 56, 71,\
  34. 35, 11, 14, 17, 21, 26, 33, 41, 51, 64, 80,\
  35. 40, 13, 16, 20, 24, 30, 37, 47, 58, 72, 90,\
  36. 45, 15, 18, 23, 28, 35, 43, 53, 66, 82, 102,\
  37. 50, 17, 21, 26, 32, 39, 49, 60, 74, 92, 115,\
  38. 55, 20, 24, 30, 36, 45, 55, 68, 84, 104, 129,\
  39. 60, 22, 27, 34, 41, 51, 62, 77, 95, 117, 145,\
  40. 65, 26, 31, 38, 47, 57, 70, 86, 106, 131, 162,\
  41. 70, 29, 36, 43, 53, 65, 79, 97, 119, 147, 181,\
  42. 75, 33, 40, 49, 60, 73, 89, 109, 134, 164, 201,\
  43. 80, 38, 46, 56, 68, 82, 100, 122, 149, 182, 224,\
  44. 85, 43, 52, 63, 76, 92, 112, 136, 166, 203, 248,\
  45. 90, 48, 58, 70, 85, 103, 125, 152, 185, 225, 274,\
  46. 95, 54, 66, 79, 95, 115, 139, 169, 205, 249, 303,\
  47. 100, 61, 74, 89, 107, 128, 155, 187, 226, 275, 333,\
  48. 105, 69, 83, 99, 119, 143, 172, 207, 249, 302, 365,\
  49. 110, 77, 93, 111, 133, 159, 190, 229, 275, 331, 400,\
  50. 115, 86, 103, 123, 147, 176, 210, 252, 302, 363, 438,\
  51. 120, 97, 115, 137, 163, 194, 232, 277, 331, 398, 477},
  52. #define CPU_TABLE_2 \
  53. /*"(WAT -11.35%) Leakage Power" */ \
  54. {800, 850, 900, 950, 1000, 1050, 1100, 1150, 1200, 1250, \
  55. 25, 4, 4, 5, 7, 8, 10, 13, 16, 21, 26,\
  56. 30, 4, 5, 6, 8, 9, 12, 15, 18, 23, 29,\
  57. 35, 5, 6, 7, 9, 11, 13, 17, 21, 26, 33,\
  58. 40, 5, 6, 8, 10, 12, 15, 19, 23, 29, 36,\
  59. 45, 6, 7, 9, 11, 14, 17, 21, 26, 33, 41,\
  60. 50, 7, 9, 10, 13, 16, 19, 24, 29, 37, 46,\
  61. 55, 8, 10, 12, 14, 18, 22, 27, 33, 41, 51,\
  62. 60, 9, 11, 14, 17, 20, 25, 30, 37, 46, 57,\
  63. 65, 11, 13, 16, 19, 23, 28, 34, 42, 52, 63,\
  64. 70, 12, 15, 18, 21, 26, 32, 39, 47, 58, 71,\
  65. 75, 14, 17, 20, 24, 30, 36, 44, 53, 65, 79,\
  66. 80, 16, 19, 23, 28, 34, 41, 49, 60, 72, 89,\
  67. 85, 19, 22, 27, 32, 38, 46, 55, 67, 81, 99,\
  68. 90, 22, 26, 31, 36, 44, 52, 63, 76, 92, 111,\
  69. 95, 25, 30, 35, 42, 50, 59, 71, 86, 103, 125,\
  70. 100, 29, 34, 40, 48, 57, 67, 81, 97, 116, 141,\
  71. 105, 33, 39, 46, 55, 64, 77, 91, 109, 131, 158,\
  72. 110, 38, 45, 53, 62, 73, 87, 103, 123, 147, 176,\
  73. 115, 44, 52, 61, 71, 84, 99, 117, 139, 165, 198,\
  74. 120, 51, 60, 70, 82, 96, 113, 133, 157, 186, 222},
  75. #define LTE_TABLE_0 \
  76. /* "(WAT 11.57%) Leakage Power" */ \
  77. {800, 850, 900, 950, 1000, 1050, 1100, 1150, 1200, 1250, \
  78. 25, 8, 9, 12, 14, 18, 22, 27, 33, 41, 52,\
  79. 30, 9, 11, 14, 17, 20, 25, 31, 38, 48, 59,\
  80. 35, 11, 13, 16, 19, 24, 29, 36, 44, 55, 68,\
  81. 40, 13, 15, 18, 23, 28, 34, 42, 51, 63, 78,\
  82. 45, 15, 18, 22, 26, 32, 39, 48, 59, 73, 90,\
  83. 50, 17, 21, 26, 31, 38, 46, 56, 68, 84, 103,\
  84. 55, 21, 25, 30, 36, 44, 53, 65, 79, 97, 119,\
  85. 60, 24, 29, 35, 42, 51, 62, 75, 91, 112, 137,\
  86. 65, 29, 34, 41, 50, 60, 72, 87, 106, 129, 157,\
  87. 70, 34, 40, 48, 58, 70, 84, 101, 122, 148, 180,\
  88. 75, 40, 48, 57, 68, 81, 98, 117, 142, 171, 207,\
  89. 80, 47, 56, 67, 80, 95, 114, 136, 164, 197, 238,\
  90. 85, 56, 66, 78, 93, 111, 133, 158, 189, 227, 274,\
  91. 90, 66, 78, 92, 109, 130, 154, 184, 219, 262, 315,\
  92. 95, 78, 92, 108, 128, 152, 180, 213, 254, 303, 362,\
  93. 100, 92, 108, 127, 150, 177, 209, 247, 294, 351, 417,\
  94. 105, 110, 128, 150, 176, 206, 244, 288, 341, 405, 483,\
  95. 110, 129, 151, 176, 206, 241, 284, 335, 395, 469, 557,\
  96. 115, 153, 178, 207, 242, 283, 331, 389, 458, 541, 641,\
  97. 120, 182, 211, 245, 284, 331, 386, 452, 531, 625, 738},
  98. #define LTE_TABLE_1 \
  99. /* "(WAT 0.78%) Leakage Power" */ \
  100. {800, 850, 900, 950, 1000, 1050, 1100, 1150, 1200, 1250, \
  101. 25, 5, 6, 7, 9, 12, 15, 18, 23, 29, 37,\
  102. 30, 6, 7, 9, 11, 13, 16, 21, 26, 33, 42,\
  103. 35, 7, 8, 10, 12, 15, 19, 23, 29, 37, 47,\
  104. 40, 8, 9, 11, 14, 17, 22, 27, 33, 42, 53,\
  105. 45, 9, 11, 13, 16, 20, 25, 31, 38, 47, 59,\
  106. 50, 10, 13, 15, 19, 23, 28, 35, 43, 54, 67,\
  107. 55, 12, 15, 18, 22, 27, 33, 40, 50, 61, 76,\
  108. 60, 15, 18, 21, 26, 31, 38, 46, 57, 70, 86,\
  109. 65, 17, 21, 25, 30, 36, 44, 53, 65, 80, 98,\
  110. 70, 20, 24, 29, 35, 42, 51, 62, 75, 91, 112,\
  111. 75, 24, 29, 34, 41, 49, 59, 71, 87, 105, 128,\
  112. 80, 29, 34, 41, 49, 58, 69, 83, 100, 121, 147,\
  113. 85, 35, 41, 48, 57, 68, 81, 97, 116, 140, 169,\
  114. 90, 42, 49, 57, 68, 80, 95, 113, 135, 162, 196,\
  115. 95, 50, 58, 68, 80, 95, 112, 133, 158, 188, 226,\
  116. 100, 61, 70, 82, 96, 113, 132, 156, 185, 220, 263,\
  117. 105, 73, 84, 98, 114, 133, 157, 184, 217, 258, 306,\
  118. 110, 88, 102, 117, 137, 159, 185, 217, 255, 301, 356,\
  119. 115, 108, 124, 142, 164, 190, 221, 258, 301, 353, 418,\
  120. 120, 131, 149, 171, 197, 228, 263, 306, 356, 416, 488},
  121. #define LTE_TABLE_2 \
  122. /* "(WAT -8.16%) Leakage Power" */ \
  123. {800, 850, 900, 950, 1000, 1050, 1100, 1150, 1200, 1250, \
  124. 25, 3, 4, 5, 6, 8, 10, 13, 17, 22, 30,\
  125. 30, 3, 4, 5, 7, 8, 11, 14, 18, 24, 32,\
  126. 35, 4, 5, 6, 7, 9, 12, 15, 20, 26, 34,\
  127. 40, 4, 5, 7, 8, 10, 13, 17, 22, 28, 37,\
  128. 45, 5, 6, 7, 9, 12, 15, 19, 24, 31, 40,\
  129. 50, 6, 7, 8, 11, 13, 17, 21, 26, 34, 43,\
  130. 55, 6, 8, 10, 12, 15, 19, 23, 29, 37, 48,\
  131. 60, 8, 9, 11, 14, 17, 21, 26, 33, 41, 53,\
  132. 65, 9, 11, 13, 16, 19, 24, 29, 37, 46, 58,\
  133. 70, 10, 13, 15, 18, 22, 27, 34, 41, 52, 65,\
  134. 75, 12, 15, 18, 21, 26, 32, 38, 47, 58, 73,\
  135. 80, 15, 17, 21, 25, 30, 36, 44, 54, 66, 82,\
  136. 85, 18, 21, 25, 29, 35, 42, 51, 62, 76, 94,\
  137. 90, 21, 25, 29, 35, 41, 49, 59, 72, 88, 107,\
  138. 95, 26, 30, 36, 42, 49, 58, 70, 84, 101, 123,\
  139. 100, 32, 37, 43, 50, 58, 69, 82, 98, 118, 143,\
  140. 105, 39, 45, 52, 60, 70, 83, 97, 115, 138, 166,\
  141. 110, 48, 55, 63, 73, 84, 99, 116, 136, 162, 193,\
  142. 115, 60, 68, 78, 89, 102, 118, 138, 162, 192, 227,\
  143. 120, 75, 84, 96, 109, 124, 142, 165, 193, 228, 268},
  144. #define VCORE_TABLE_0 \
  145. /* "(WAT 11.57%) Leakage Power" */ \
  146. {800, 850, 900, 950, 1000, 1050, 1100, 1150, 1200, 1250, \
  147. 25, 8, 10, 12, 15, 18, 22, 28, 34, 42, 53,\
  148. 30, 9, 11, 14, 17, 21, 26, 32, 39, 48, 60,\
  149. 35, 11, 13, 16, 20, 24, 30, 36, 45, 55, 69,\
  150. 40, 13, 16, 19, 23, 28, 34, 42, 51, 63, 78,\
  151. 45, 15, 18, 22, 27, 32, 39, 48, 59, 72, 89,\
  152. 50, 18, 21, 26, 31, 37, 45, 55, 68, 83, 102,\
  153. 55, 21, 25, 30, 36, 43, 52, 64, 78, 95, 116,\
  154. 60, 24, 29, 35, 42, 50, 60, 73, 89, 109, 133,\
  155. 65, 28, 34, 40, 48, 58, 70, 84, 102, 124, 152,\
  156. 70, 33, 39, 47, 56, 67, 81, 97, 118, 142, 173,\
  157. 75, 38, 46, 54, 65, 78, 93, 112, 135, 163, 198,\
  158. 80, 45, 53, 63, 75, 90, 107, 129, 154, 186, 225,\
  159. 85, 52, 62, 73, 87, 104, 123, 148, 177, 213, 257,\
  160. 90, 61, 72, 85, 101, 120, 142, 169, 203, 243, 293,\
  161. 95, 72, 84, 99, 117, 138, 164, 195, 232, 278, 335,\
  162. 100, 84, 98, 115, 135, 160, 189, 224, 266, 318, 382,\
  163. 105, 98, 114, 134, 156, 184, 218, 257, 305, 363, 434,\
  164. 110, 114, 133, 155, 182, 213, 250, 295, 350, 415, 494,\
  165. 115, 133, 155, 180, 211, 246, 288, 339, 401, 474, 564,\
  166. 120, 155, 180, 210, 244, 284, 332, 389, 459, 542, 642},
  167. #define VCORE_TABLE_1 \
  168. /* "(WAT 0.78%) Leakage Power" */ \
  169. {800, 850, 900, 950, 1000, 1050, 1100, 1150, 1200, 1250, \
  170. 25, 5, 6, 8, 10, 12, 15, 19, 23, 30, 38,\
  171. 30, 6, 7, 9, 11, 14, 17, 21, 27, 33, 42,\
  172. 35, 7, 9, 10, 13, 16, 19, 24, 30, 38, 48,\
  173. 40, 8, 10, 12, 15, 18, 22, 28, 34, 43, 54,\
  174. 45, 10, 12, 14, 17, 21, 25, 31, 39, 48, 60,\
  175. 50, 11, 13, 16, 20, 24, 29, 36, 44, 55, 68,\
  176. 55, 13, 16, 19, 23, 27, 34, 41, 50, 62, 77,\
  177. 60, 15, 18, 22, 26, 32, 38, 47, 58, 71, 87,\
  178. 65, 18, 21, 25, 30, 37, 44, 54, 66, 80, 99,\
  179. 70, 21, 25, 30, 35, 42, 51, 62, 75, 91, 112,\
  180. 75, 25, 29, 34, 41, 49, 59, 71, 86, 104, 127,\
  181. 80, 29, 34, 40, 48, 57, 68, 81, 98, 119, 145,\
  182. 85, 34, 40, 47, 55, 66, 78, 94, 112, 136, 165,\
  183. 90, 40, 47, 55, 65, 76, 90, 108, 129, 156, 188,\
  184. 95, 47, 55, 64, 75, 88, 104, 124, 148, 178, 214,\
  185. 100, 56, 65, 75, 88, 103, 121, 143, 170, 204, 245,\
  186. 105, 65, 76, 88, 102, 119, 140, 165, 196, 234, 280,\
  187. 110, 77, 89, 103, 120, 139, 163, 192, 227, 270, 321,\
  188. 115, 92, 105, 121, 141, 163, 191, 223, 263, 310, 368,\
  189. 120, 109, 125, 143, 165, 191, 222, 259, 303, 357, 421},
  190. #define VCORE_TABLE_2 \
  191. /* "(WAT 11.57%) Leakage Power" */ \
  192. {800, 850, 900, 950, 1000, 1050, 1100, 1150, 1200, 1250, \
  193. 25, 3, 4, 5, 6, 7, 9, 12, 15, 20, 27,\
  194. 30, 3, 4, 5, 6, 8, 10, 13, 17, 22, 29,\
  195. 35, 4, 5, 6, 7, 9, 11, 14, 18, 24, 31,\
  196. 40, 4, 5, 6, 8, 10, 13, 16, 20, 26, 34,\
  197. 45, 5, 6, 7, 9, 11, 14, 18, 22, 29, 37,\
  198. 50, 6, 7, 8, 10, 13, 16, 20, 25, 32, 41,\
  199. 55, 7, 8, 10, 12, 14, 18, 22, 28, 35, 45,\
  200. 60, 8, 9, 11, 13, 16, 20, 25, 31, 39, 49,\
  201. 65, 9, 11, 13, 15, 19, 23, 28, 35, 43, 54,\
  202. 70, 11, 12, 15, 18, 21, 26, 32, 39, 49, 61,\
  203. 75, 12, 15, 17, 20, 24, 30, 36, 44, 55, 68,\
  204. 80, 15, 17, 20, 24, 28, 34, 41, 50, 62, 77,\
  205. 85, 18, 20, 24, 28, 33, 40, 47, 58, 71, 87,\
  206. 90, 21, 24, 28, 33, 38, 46, 55, 66, 81, 99,\
  207. 95, 25, 29, 33, 38, 45, 54, 64, 77, 93, 113,\
  208. 100, 30, 34, 39, 46, 53, 63, 74, 89, 107, 129,\
  209. 105, 36, 41, 47, 55, 63, 74, 87, 103, 123, 148,\
  210. 110, 44, 50, 57, 65, 75, 87, 102, 120, 143, 171,\
  211. 115, 54, 60, 68, 78, 89, 103, 120, 140, 165, 198,\
  212. 120, 66, 73, 82, 93, 106, 122, 142, 164, 194, 229},
  213. typedef struct spower_raw_s {
  214. int vsize;
  215. int tsize;
  216. int table_size;
  217. int *table[];
  218. } spower_raw_t;
  219. /** table order: ff, tt, ss **/
  220. int cpu_leakage_data[][VSIZE * TSIZE + VSIZE + TSIZE] = {
  221. CPU_TABLE_0
  222. CPU_TABLE_1
  223. CPU_TABLE_2
  224. };
  225. int lte_leakage_data[][VSIZE * TSIZE + VSIZE + TSIZE] = {
  226. LTE_TABLE_0
  227. LTE_TABLE_1
  228. LTE_TABLE_2
  229. };
  230. int vcore_leakage_data[][VSIZE * TSIZE + VSIZE + TSIZE] = {
  231. VCORE_TABLE_0
  232. VCORE_TABLE_1
  233. VCORE_TABLE_2
  234. };
  235. spower_raw_t cpu_spower_raw = {
  236. .vsize = VSIZE,
  237. .tsize = TSIZE,
  238. .table_size = 3,
  239. .table = {
  240. (int *)&cpu_leakage_data[0], (int *)&cpu_leakage_data[1], (int *)&cpu_leakage_data[2]},
  241. };
  242. spower_raw_t lte_spower_raw = {
  243. .vsize = VSIZE,
  244. .tsize = TSIZE,
  245. .table_size = 3,
  246. .table = {
  247. (int *)&lte_leakage_data[0], (int *)&lte_leakage_data[1], (int *)&lte_leakage_data[2]},
  248. };
  249. spower_raw_t vcore_spower_raw = {
  250. .vsize = VSIZE,
  251. .tsize = TSIZE,
  252. .table_size = 3,
  253. .table = {
  254. (int *)&vcore_leakage_data[0], (int *)&vcore_leakage_data[1],
  255. (int *)&vcore_leakage_data[2]},
  256. };
  257. typedef struct voltage_row_s {
  258. int mV[VSIZE];
  259. } vrow_t;
  260. typedef struct temperature_row_s {
  261. int deg;
  262. int mA[VSIZE];
  263. } trow_t;
  264. typedef struct sptab_s {
  265. int vsize;
  266. int tsize;
  267. int *data; /* array[VSIZE + TSIZE + (VSIZE*TSIZE)]; */
  268. vrow_t *vrow; /* pointer to voltage row of data */
  269. trow_t *trow; /* pointer to temperature row of data */
  270. } sptbl_t;
  271. #define trow(tab, ti) ((tab)->trow[ti])
  272. #define mA(tab, vi, ti) ((tab)->trow[ti].mA[vi])
  273. #define mV(tab, vi) ((tab)->vrow[0].mV[vi])
  274. #define deg(tab, ti) ((tab)->trow[ti].deg)
  275. #define vsize(tab) ((tab)->vsize)
  276. #define tsize(tab) ((tab)->tsize)
  277. #define tab_validate(tab) (!!(tab) && (tab)->data != NULL)
  278. static inline void spower_tab_construct(sptbl_t(*tab)[], spower_raw_t *raw)
  279. {
  280. int i;
  281. sptbl_t *ptab = (sptbl_t *) tab;
  282. for (i = 0; i < raw->table_size; i++) {
  283. ptab->vsize = raw->vsize;
  284. ptab->tsize = raw->tsize;
  285. ptab->data = raw->table[i];
  286. ptab->vrow = (vrow_t *) ptab->data;
  287. ptab->trow = (trow_t *) (ptab->data + ptab->vsize);
  288. ptab++;
  289. }
  290. }
  291. #endif