CFG_Wifi_File.h 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  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. /*
  10. ** Log: CFG_Wifi_File.h
  11. *
  12. * 09 08 2011 cm.chang
  13. * [WCXRP00000969] [MT6620 Wi-Fi][Driver][FW] Channel list for 5G band based on country code
  14. * Use new fields ucChannelListMap and ucChannelListIndex in NVRAM
  15. *
  16. * 08 31 2011 cm.chang
  17. * [WCXRP00000969] [MT6620 Wi-Fi][Driver][FW] Channel list for 5G band based on country code
  18. * .
  19. *
  20. * 08 15 2011 cp.wu
  21. * [WCXRP00000851] [MT6628 Wi-Fi][Driver] Add HIFSYS related definition to driver source tree
  22. * add MT6628-specific definitions.
  23. *
  24. * 08 09 2011 cp.wu
  25. * [WCXRP00000702] [MT5931][Driver] Modify initialization sequence for E1 ASIC
  26. * [WCXRP00000913] [MT6620 Wi-Fi] create repository of source code dedicated for MT6620 E6 ASIC
  27. * add CCK-DSSS TX-PWR control field in NVRAM and CMD definition for MT5931-MP
  28. *
  29. * 05 27 2011 cp.wu
  30. * [WCXRP00000749] [MT6620 Wi-Fi][Driver] Add band edge tx power control to Wi-Fi NVRAM
  31. * update NVRAM data structure definition.
  32. *
  33. * 03 10 2011 cp.wu
  34. * [WCXRP00000532] [MT6620 Wi-Fi][Driver] Migrate NVRAM configuration procedures from MT6620 E2 to MT6620 E3
  35. * deprecate configuration used by MT6620 E2
  36. *
  37. * 10 26 2010 cp.wu
  38. * [WCXRP00000056] [MT6620 Wi-Fi][Driver] NVRAM implementation with Version Check
  39. * [WCXRP00000137] [MT6620 Wi-Fi] [FW] Support NIC capability query command
  40. * 1) update NVRAM content template to ver 1.02
  41. * 2) add compile option for querying NIC capability (default: off)
  42. * 3) modify AIS 5GHz support to run-time option, which could be turned on by registry or NVRAM setting
  43. * 4) correct auto-rate compiler error under linux (treat warning as error)
  44. * 5) simplify usage of NVRAM and REG_INFO_T
  45. * 6) add version checking between driver and firmware
  46. *
  47. * 10 25 2010 cp.wu
  48. * [WCXRP00000133] [MT6620 Wi-Fi] [FW][Driver] Change TX power offset band definition
  49. * follow-up for CMD_5G_PWR_OFFSET_T definition change
  50. *
  51. * 10 05 2010 cp.wu
  52. * [WCXRP00000056] [MT6620 Wi-Fi][Driver] NVRAM implementation with Version Check
  53. * 1) add NVRAM access API
  54. * 2) fake scanning result when NVRAM doesn't exist and/or version mismatch. (off by compiler option)
  55. * 3) add OID implementation for NVRAM read/write service
  56. *
  57. * 09 23 2010 cp.wu
  58. * [WCXRP00000056] [MT6620 Wi-Fi][Driver] NVRAM implementation with Version Check
  59. * add skeleton for NVRAM integration
  60. *
  61. */
  62. #ifndef _CFG_WIFI_FILE_H
  63. #define _CFG_WIFI_FILE_H
  64. /*******************************************************************************
  65. * C O M P I L E R F L A G S
  66. ********************************************************************************
  67. */
  68. /*******************************************************************************
  69. * E X T E R N A L R E F E R E N C E S
  70. ********************************************************************************
  71. */
  72. #include "gl_typedef.h"
  73. /*******************************************************************************
  74. * C O N S T A N T S
  75. ********************************************************************************
  76. */
  77. /*******************************************************************************
  78. * D A T A T Y P E S
  79. ********************************************************************************
  80. */
  81. /*******************************************************************************
  82. * P U B L I C D A T A
  83. ********************************************************************************
  84. */
  85. /* duplicated from nic_cmd_event.h to avoid header dependency */
  86. typedef struct _TX_PWR_PARAM_T {
  87. INT_8 cTxPwr2G4Cck; /* signed, in unit of 0.5dBm */
  88. INT_8 acReserved[3]; /* form MT6628 acReserved[0]=cTxPwr2G4Dsss */
  89. INT_8 cTxPwr2G4OFDM_BPSK;
  90. INT_8 cTxPwr2G4OFDM_QPSK;
  91. INT_8 cTxPwr2G4OFDM_16QAM;
  92. INT_8 cTxPwr2G4OFDM_Reserved;
  93. INT_8 cTxPwr2G4OFDM_48Mbps;
  94. INT_8 cTxPwr2G4OFDM_54Mbps;
  95. INT_8 cTxPwr2G4HT20_BPSK;
  96. INT_8 cTxPwr2G4HT20_QPSK;
  97. INT_8 cTxPwr2G4HT20_16QAM;
  98. INT_8 cTxPwr2G4HT20_MCS5;
  99. INT_8 cTxPwr2G4HT20_MCS6;
  100. INT_8 cTxPwr2G4HT20_MCS7;
  101. INT_8 cTxPwr2G4HT40_BPSK;
  102. INT_8 cTxPwr2G4HT40_QPSK;
  103. INT_8 cTxPwr2G4HT40_16QAM;
  104. INT_8 cTxPwr2G4HT40_MCS5;
  105. INT_8 cTxPwr2G4HT40_MCS6;
  106. INT_8 cTxPwr2G4HT40_MCS7;
  107. INT_8 cTxPwr5GOFDM_BPSK;
  108. INT_8 cTxPwr5GOFDM_QPSK;
  109. INT_8 cTxPwr5GOFDM_16QAM;
  110. INT_8 cTxPwr5GOFDM_Reserved;
  111. INT_8 cTxPwr5GOFDM_48Mbps;
  112. INT_8 cTxPwr5GOFDM_54Mbps;
  113. INT_8 cTxPwr5GHT20_BPSK;
  114. INT_8 cTxPwr5GHT20_QPSK;
  115. INT_8 cTxPwr5GHT20_16QAM;
  116. INT_8 cTxPwr5GHT20_MCS5;
  117. INT_8 cTxPwr5GHT20_MCS6;
  118. INT_8 cTxPwr5GHT20_MCS7;
  119. INT_8 cTxPwr5GHT40_BPSK;
  120. INT_8 cTxPwr5GHT40_QPSK;
  121. INT_8 cTxPwr5GHT40_16QAM;
  122. INT_8 cTxPwr5GHT40_MCS5;
  123. INT_8 cTxPwr5GHT40_MCS6;
  124. INT_8 cTxPwr5GHT40_MCS7;
  125. } TX_PWR_PARAM_T, *P_TX_PWR_PARAM_T;
  126. typedef struct _PWR_5G_OFFSET_T {
  127. INT_8 cOffsetBand0; /* 4.915-4.980G */
  128. INT_8 cOffsetBand1; /* 5.000-5.080G */
  129. INT_8 cOffsetBand2; /* 5.160-5.180G */
  130. INT_8 cOffsetBand3; /* 5.200-5.280G */
  131. INT_8 cOffsetBand4; /* 5.300-5.340G */
  132. INT_8 cOffsetBand5; /* 5.500-5.580G */
  133. INT_8 cOffsetBand6; /* 5.600-5.680G */
  134. INT_8 cOffsetBand7; /* 5.700-5.825G */
  135. } PWR_5G_OFFSET_T, *P_PWR_5G_OFFSET_T;
  136. typedef struct _PWR_PARAM_T {
  137. UINT_32 au4Data[28];
  138. UINT_32 u4RefValue1;
  139. UINT_32 u4RefValue2;
  140. } PWR_PARAM_T, *P_PWR_PARAM_T;
  141. typedef struct _MT6620_CFG_PARAM_STRUCT {
  142. /* 256 bytes of MP data */
  143. UINT_16 u2Part1OwnVersion;
  144. UINT_16 u2Part1PeerVersion;
  145. UINT_8 aucMacAddress[6];
  146. UINT_8 aucCountryCode[2];
  147. TX_PWR_PARAM_T rTxPwr;
  148. UINT_8 aucEFUSE[144];
  149. UINT_8 ucTxPwrValid;
  150. UINT_8 ucSupport5GBand;
  151. UINT_8 fg2G4BandEdgePwrUsed;
  152. INT_8 cBandEdgeMaxPwrCCK;
  153. INT_8 cBandEdgeMaxPwrOFDM20;
  154. INT_8 cBandEdgeMaxPwrOFDM40;
  155. UINT_8 ucRegChannelListMap;
  156. UINT_8 ucRegChannelListIndex;
  157. UINT_8 aucRegSubbandInfo[36];
  158. UINT_8 aucReserved2[256 - 246];
  159. UINT_16 u2SizeOfNvram;
  160. INT_8 bTxPowerLimitEnable2G;
  161. INT_8 cTxBackOffMaxPower2G;
  162. INT_8 bTxPowerLimitEnable5G;
  163. INT_8 cTxBackOffMaxPower5G;
  164. /* 256 bytes of function data */
  165. UINT_16 u2Part2OwnVersion;
  166. UINT_16 u2Part2PeerVersion;
  167. UINT_8 uc2G4BwFixed20M;
  168. UINT_8 uc5GBwFixed20M;
  169. UINT_8 ucEnable5GBand;
  170. UINT_8 aucPreTailReserved;
  171. UINT_8 uc2GRssiCompensation;
  172. UINT_8 uc5GRssiCompensation;
  173. UINT_8 fgRssiCompensationValidbit;
  174. UINT_8 ucRxAntennanumber;
  175. UINT_8 aucTailReserved[768 - 12];
  176. } MT6620_CFG_PARAM_STRUCT, *P_MT6620_CFG_PARAM_STRUCT, WIFI_CFG_PARAM_STRUCT, *P_WIFI_CFG_PARAM_STRUCT;
  177. /*******************************************************************************
  178. * P R I V A T E D A T A
  179. ********************************************************************************
  180. */
  181. /*******************************************************************************
  182. * M A C R O S
  183. ********************************************************************************
  184. */
  185. #ifndef DATA_STRUCT_INSPECTING_ASSERT
  186. #define DATA_STRUCT_INSPECTING_ASSERT(expr) \
  187. { \
  188. switch (0) {case 0: case (expr): default:; } \
  189. }
  190. #endif
  191. #define CFG_FILE_WIFI_REC_SIZE sizeof(WIFI_CFG_PARAM_STRUCT)
  192. #define EXTEND_NVRAM_SIZE 1024
  193. /*******************************************************************************
  194. * F U N C T I O N D E C L A R A T I O N S
  195. ********************************************************************************
  196. */
  197. /*******************************************************************************
  198. * F U N C T I O N S
  199. ********************************************************************************
  200. */
  201. #ifndef _lint
  202. /* We don't have to call following function to inspect the data structure.
  203. * It will check automatically while at compile time.
  204. * We'll need this to guarantee the same member order in different structures
  205. * to simply handling effort in some functions.
  206. */
  207. static inline VOID nvramOffsetCheck(VOID)
  208. {
  209. DATA_STRUCT_INSPECTING_ASSERT(OFFSET_OF(WIFI_CFG_PARAM_STRUCT, u2Part2OwnVersion) == 256);
  210. DATA_STRUCT_INSPECTING_ASSERT(sizeof(WIFI_CFG_PARAM_STRUCT) == EXTEND_NVRAM_SIZE);
  211. DATA_STRUCT_INSPECTING_ASSERT((OFFSET_OF(WIFI_CFG_PARAM_STRUCT, aucEFUSE) & 0x0001) == 0);
  212. DATA_STRUCT_INSPECTING_ASSERT((OFFSET_OF(WIFI_CFG_PARAM_STRUCT, aucRegSubbandInfo) & 0x0001) == 0);
  213. }
  214. #endif
  215. #endif /* _CFG_WIFI_FILE_H */