CFG_Wifi_File.h 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300
  1. /*
  2. ** Id: //Department/DaVinci/BRANCHES/MT6620_WIFI_DRIVER_V2_3/include/CFG_Wifi_File.h#1
  3. */
  4. /*! \file CFG_Wifi_File.h
  5. \brief Collection of NVRAM structure used for YuSu project
  6. In this file we collect all compiler flags and detail the driver behavior if
  7. enable/disable such switch or adjust numeric parameters.
  8. */
  9. #ifndef _CFG_WIFI_FILE_H
  10. #define _CFG_WIFI_FILE_H
  11. /*******************************************************************************
  12. * C O M P I L E R F L A G S
  13. ********************************************************************************
  14. */
  15. /*******************************************************************************
  16. * E X T E R N A L R E F E R E N C E S
  17. ********************************************************************************
  18. */
  19. #include "gl_typedef.h"
  20. /*******************************************************************************
  21. * C O N S T A N T S
  22. ********************************************************************************
  23. */
  24. /*******************************************************************************
  25. * D A T A T Y P E S
  26. ********************************************************************************
  27. */
  28. /*******************************************************************************
  29. * P U B L I C D A T A
  30. ********************************************************************************
  31. */
  32. /* duplicated from nic_cmd_event.h to avoid header dependency */
  33. typedef struct _TX_PWR_PARAM_T {
  34. INT_8 cTxPwr2G4Cck; /* signed, in unit of 0.5dBm */
  35. INT_8 cTxPwr2G4Dsss; /* signed, in unit of 0.5dBm */
  36. INT_8 acReserved[2];
  37. INT_8 cTxPwr2G4OFDM_BPSK;
  38. INT_8 cTxPwr2G4OFDM_QPSK;
  39. INT_8 cTxPwr2G4OFDM_16QAM;
  40. INT_8 cTxPwr2G4OFDM_Reserved;
  41. INT_8 cTxPwr2G4OFDM_48Mbps;
  42. INT_8 cTxPwr2G4OFDM_54Mbps;
  43. INT_8 cTxPwr2G4HT20_BPSK;
  44. INT_8 cTxPwr2G4HT20_QPSK;
  45. INT_8 cTxPwr2G4HT20_16QAM;
  46. INT_8 cTxPwr2G4HT20_MCS5;
  47. INT_8 cTxPwr2G4HT20_MCS6;
  48. INT_8 cTxPwr2G4HT20_MCS7;
  49. INT_8 cTxPwr2G4HT40_BPSK;
  50. INT_8 cTxPwr2G4HT40_QPSK;
  51. INT_8 cTxPwr2G4HT40_16QAM;
  52. INT_8 cTxPwr2G4HT40_MCS5;
  53. INT_8 cTxPwr2G4HT40_MCS6;
  54. INT_8 cTxPwr2G4HT40_MCS7;
  55. INT_8 cTxPwr5GOFDM_BPSK;
  56. INT_8 cTxPwr5GOFDM_QPSK;
  57. INT_8 cTxPwr5GOFDM_16QAM;
  58. INT_8 cTxPwr5GOFDM_Reserved;
  59. INT_8 cTxPwr5GOFDM_48Mbps;
  60. INT_8 cTxPwr5GOFDM_54Mbps;
  61. INT_8 cTxPwr5GHT20_BPSK;
  62. INT_8 cTxPwr5GHT20_QPSK;
  63. INT_8 cTxPwr5GHT20_16QAM;
  64. INT_8 cTxPwr5GHT20_MCS5;
  65. INT_8 cTxPwr5GHT20_MCS6;
  66. INT_8 cTxPwr5GHT20_MCS7;
  67. INT_8 cTxPwr5GHT40_BPSK;
  68. INT_8 cTxPwr5GHT40_QPSK;
  69. INT_8 cTxPwr5GHT40_16QAM;
  70. INT_8 cTxPwr5GHT40_MCS5;
  71. INT_8 cTxPwr5GHT40_MCS6;
  72. INT_8 cTxPwr5GHT40_MCS7;
  73. } TX_PWR_PARAM_T, *P_TX_PWR_PARAM_T;
  74. typedef struct _TX_AC_PWR_T {
  75. INT_8 c11AcTxPwr_BPSK;
  76. INT_8 c11AcTxPwr_QPSK;
  77. INT_8 c11AcTxPwr_16QAM;
  78. INT_8 c11AcTxPwr_MCS5_MCS6;
  79. INT_8 c11AcTxPwr_MCS7;
  80. INT_8 c11AcTxPwr_MCS8;
  81. INT_8 c11AcTxPwr_MCS9;
  82. INT_8 c11AcTxPwrVht40_OFFSET;
  83. INT_8 c11AcTxPwrVht80_OFFSET;
  84. INT_8 c11AcTxPwrVht160_OFFSET;
  85. INT_8 acReverse[2];
  86. } TX_AC_PWR_T, *P_TX_AC_PWR_T;
  87. typedef struct _RSSI_PATH_COMPASATION_T {
  88. INT_8 c2GRssiCompensation;
  89. INT_8 c5GRssiCompensation;
  90. } RSSI_PATH_COMPASATION_T, *P_RSSI_PATH_COMPASATION_T;
  91. typedef struct _PWR_5G_OFFSET_T {
  92. INT_8 cOffsetBand0; /* 4.915-4.980G */
  93. INT_8 cOffsetBand1; /* 5.000-5.080G */
  94. INT_8 cOffsetBand2; /* 5.160-5.180G */
  95. INT_8 cOffsetBand3; /* 5.200-5.280G */
  96. INT_8 cOffsetBand4; /* 5.300-5.340G */
  97. INT_8 cOffsetBand5; /* 5.500-5.580G */
  98. INT_8 cOffsetBand6; /* 5.600-5.680G */
  99. INT_8 cOffsetBand7; /* 5.700-5.825G */
  100. } PWR_5G_OFFSET_T, *P_PWR_5G_OFFSET_T;
  101. typedef struct _PWR_PARAM_T {
  102. UINT_32 au4Data[28];
  103. UINT_32 u4RefValue1;
  104. UINT_32 u4RefValue2;
  105. } PWR_PARAM_T, *P_PWR_PARAM_T;
  106. #if 0
  107. typedef struct _MT6620_CFG_PARAM_STRUCT {
  108. /* 256 bytes of MP data */
  109. UINT_16 u2Part1OwnVersion;
  110. UINT_16 u2Part1PeerVersion;
  111. UINT_8 aucMacAddress[6];
  112. UINT_8 aucCountryCode[2];
  113. TX_PWR_PARAM_T rTxPwr;
  114. UINT_8 aucEFUSE[144];
  115. UINT_8 ucTxPwrValid;
  116. UINT_8 ucSupport5GBand;
  117. UINT_8 fg2G4BandEdgePwrUsed;
  118. INT_8 cBandEdgeMaxPwrCCK;
  119. INT_8 cBandEdgeMaxPwrOFDM20;
  120. INT_8 cBandEdgeMaxPwrOFDM40;
  121. UINT_8 ucRegChannelListMap;
  122. UINT_8 ucRegChannelListIndex;
  123. UINT_8 aucRegSubbandInfo[36];
  124. UINT_8 aucReserved2[256 - 240];
  125. /* 256 bytes of function data */
  126. UINT_16 u2Part2OwnVersion;
  127. UINT_16 u2Part2PeerVersion;
  128. UINT_8 uc2G4BwFixed20M;
  129. UINT_8 uc5GBwFixed20M;
  130. UINT_8 ucEnable5GBand;
  131. UINT_8 aucPreTailReserved;
  132. UINT_8 aucTailReserved[256 - 8];
  133. } MT6620_CFG_PARAM_STRUCT, *P_MT6620_CFG_PARAM_STRUCT, WIFI_CFG_PARAM_STRUCT, *P_WIFI_CFG_PARAM_STRUCT;
  134. #else
  135. typedef struct _AC_PWR_SETTING_STRUCT {
  136. UINT_8 c11AcTxPwr_BPSK;
  137. UINT_8 c11AcTxPwr_QPSK;
  138. UINT_8 c11AcTxPwr_16QAM;
  139. UINT_8 c11AcTxPwr_MCS5_MCS6;
  140. UINT_8 c11AcTxPwr_MCS7;
  141. UINT_8 c11AcTxPwr_MCS8;
  142. UINT_8 c11AcTxPwr_MCS9;
  143. UINT_8 c11AcTxPwr_Reserved;
  144. UINT_8 c11AcTxPwrVht40_OFFSET;
  145. UINT_8 c11AcTxPwrVht80_OFFSET;
  146. UINT_8 c11AcTxPwrVht160_OFFSET;
  147. } AC_PWR_SETTING_STRUCT, *P_AC_PWR_SETTING_STRUCT;
  148. typedef struct _BANDEDGE_5G_T {
  149. UINT_8 uc5GBandEdgePwrUsed;
  150. UINT_8 c5GBandEdgeMaxPwrOFDM20;
  151. UINT_8 c5GBandEdgeMaxPwrOFDM40;
  152. UINT_8 c5GBandEdgeMaxPwrOFDM80;
  153. } BANDEDGE_5G_T, *P_BANDEDGE_5G_T;
  154. typedef struct _NEW_EFUSE_MAPPING2NVRAM_T {
  155. UINT_8 ucReverse1[8];
  156. UINT_16 u2Signature;
  157. BANDEDGE_5G_T r5GBandEdgePwr;
  158. UINT_8 ucReverse2[14];
  159. /* 0x50 */
  160. UINT_8 aucChOffset[3];
  161. UINT_8 ucChannelOffsetVaild;
  162. UINT_8 acAllChannelOffset;
  163. UINT_8 aucChOffset3[11];
  164. /* 0x60 */
  165. UINT_8 auc5GChOffset[8];
  166. UINT_8 uc5GChannelOffsetVaild;
  167. UINT_8 aucChOffset4[7];
  168. /* 0x70 */
  169. AC_PWR_SETTING_STRUCT r11AcTxPwr;
  170. UINT_8 uc11AcTxPwrValid;
  171. UINT_8 ucReverse4[20];
  172. /* 0x90 */
  173. AC_PWR_SETTING_STRUCT r11AcTxPwr2G;
  174. UINT_8 uc11AcTxPwrValid2G;
  175. UINT_8 ucReverse5[40];
  176. } NEW_EFUSE_MAPPING2NVRAM_T, *P_NEW_EFUSE_MAPPING2NVRAM_T;
  177. typedef struct _MT6620_CFG_PARAM_STRUCT {
  178. /* 256 bytes of MP data */
  179. UINT_16 u2Part1OwnVersion;
  180. UINT_16 u2Part1PeerVersion;
  181. UINT_8 aucMacAddress[6];
  182. UINT_8 aucCountryCode[2];
  183. TX_PWR_PARAM_T rTxPwr;
  184. #if CFG_SUPPORT_NVRAM_5G
  185. union {
  186. NEW_EFUSE_MAPPING2NVRAM_T u;
  187. UINT_8 aucEFUSE[144];
  188. } EfuseMapping;
  189. #else
  190. UINT_8 aucEFUSE[144];
  191. #endif
  192. UINT_8 ucTxPwrValid;
  193. UINT_8 ucSupport5GBand;
  194. UINT_8 fg2G4BandEdgePwrUsed;
  195. INT_8 cBandEdgeMaxPwrCCK;
  196. INT_8 cBandEdgeMaxPwrOFDM20;
  197. INT_8 cBandEdgeMaxPwrOFDM40;
  198. UINT_8 ucRegChannelListMap;
  199. UINT_8 ucRegChannelListIndex;
  200. UINT_8 aucRegSubbandInfo[36];
  201. UINT_8 aucReserved2[256 - 240];
  202. /* 256 bytes of function data */
  203. UINT_16 u2Part2OwnVersion;
  204. UINT_16 u2Part2PeerVersion;
  205. UINT_8 uc2G4BwFixed20M;
  206. UINT_8 uc5GBwFixed20M;
  207. UINT_8 ucEnable5GBand;
  208. UINT_8 ucRxDiversity;
  209. RSSI_PATH_COMPASATION_T rRssiPathCompensation;
  210. UINT_8 fgRssiCompensationVaildbit;
  211. UINT_8 ucGpsDesense;
  212. UINT_16 u2FeatureReserved;
  213. UINT_8 aucPreTailReserved;
  214. UINT_8 aucTailReserved[256 - 15];
  215. } MT6620_CFG_PARAM_STRUCT, *P_MT6620_CFG_PARAM_STRUCT, WIFI_CFG_PARAM_STRUCT, *P_WIFI_CFG_PARAM_STRUCT;
  216. #endif
  217. /*******************************************************************************
  218. * P R I V A T E D A T A
  219. ********************************************************************************
  220. */
  221. /*******************************************************************************
  222. * M A C R O S
  223. ********************************************************************************
  224. */
  225. #ifndef DATA_STRUCT_INSPECTING_ASSERT
  226. #define DATA_STRUCT_INSPECTING_ASSERT(expr) \
  227. {switch (0) {case 0: case (expr): default:; } }
  228. #endif
  229. #define CFG_FILE_WIFI_REC_SIZE sizeof(WIFI_CFG_PARAM_STRUCT)
  230. /*******************************************************************************
  231. * F U N C T I O N D E C L A R A T I O N S
  232. ********************************************************************************
  233. */
  234. /*******************************************************************************
  235. * F U N C T I O N S
  236. ********************************************************************************
  237. */
  238. #ifndef _lint
  239. /* We don't have to call following function to inspect the data structure.
  240. * It will check automatically while at compile time.
  241. * We'll need this to guarantee the same member order in different structures
  242. * to simply handling effort in some functions.
  243. */
  244. static __KAL_INLINE__ VOID nvramOffsetCheck(VOID)
  245. {
  246. DATA_STRUCT_INSPECTING_ASSERT(OFFSET_OF(WIFI_CFG_PARAM_STRUCT, u2Part2OwnVersion) == 256);
  247. DATA_STRUCT_INSPECTING_ASSERT(sizeof(WIFI_CFG_PARAM_STRUCT) == 512);
  248. #if CFG_SUPPORT_NVRAM_5G
  249. DATA_STRUCT_INSPECTING_ASSERT((OFFSET_OF(WIFI_CFG_PARAM_STRUCT, EfuseMapping) & 0x0001) == 0);
  250. #else
  251. DATA_STRUCT_INSPECTING_ASSERT((OFFSET_OF(WIFI_CFG_PARAM_STRUCT, aucEFUSE) & 0x0001) == 0);
  252. #endif
  253. DATA_STRUCT_INSPECTING_ASSERT((OFFSET_OF(WIFI_CFG_PARAM_STRUCT, aucRegSubbandInfo) & 0x0001)
  254. == 0);
  255. }
  256. #endif
  257. #endif /* _CFG_WIFI_FILE_H */