net: wireless: rockchip_wlan: add rtl8723bs support
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / rtl8723bs / hal / phydm / phydm_powertracking_ap.h
1 /******************************************************************************\r
2  *\r
3  * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.\r
4  *                                        \r
5  * This program is free software; you can redistribute it and/or modify it\r
6  * under the terms of version 2 of the GNU General Public License as\r
7  * published by the Free Software Foundation.\r
8  *\r
9  * This program is distributed in the hope that it will be useful, but WITHOUT\r
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\r
11  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for\r
12  * more details.\r
13  *\r
14  * You should have received a copy of the GNU General Public License along with\r
15  * this program; if not, write to the Free Software Foundation, Inc.,\r
16  * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA\r
17  *\r
18  *\r
19  ******************************************************************************/\r
20  \r
21 #ifndef __PHYDMPOWERTRACKING_H__\r
22 #define    __PHYDMPOWERTRACKING_H__\r
23 \r
24 #define POWRTRACKING_VERSION    "1.1"\r
25 \r
26 #if (DM_ODM_SUPPORT_TYPE == ODM_AP)\r
27 #ifdef RTK_AC_SUPPORT\r
28 #define ODM_IC_11AC_SERIES_SUPPORT              1\r
29 #else\r
30 #define ODM_IC_11AC_SERIES_SUPPORT              0\r
31 #endif\r
32 #else\r
33 #define ODM_IC_11AC_SERIES_SUPPORT              1\r
34 #endif\r
35 \r
36 #define         DPK_DELTA_MAPPING_NUM   13\r
37 #define         index_mapping_HP_NUM    15\r
38 #define         DELTA_SWINGIDX_SIZE     30\r
39 #define         BAND_NUM                                3\r
40 #define         MAX_RF_PATH     4\r
41 #define                 TXSCALE_TABLE_SIZE              37\r
42 #define IQK_MAC_REG_NUM         4\r
43 #define IQK_ADDA_REG_NUM                16\r
44 #define IQK_BB_REG_NUM_MAX      10\r
45 \r
46 #define IQK_BB_REG_NUM          9\r
47 \r
48 #define HP_THERMAL_NUM          8\r
49 \r
50 #define AVG_THERMAL_NUM         8\r
51 #define IQK_Matrix_REG_NUM      8\r
52 //#define IQK_Matrix_Settings_NUM       1+24+21\r
53 #define IQK_Matrix_Settings_NUM (14+24+21) // Channels_2_4G_NUM + Channels_5G_20M_NUM + Channels_5G\r
54 \r
55 #if !defined(_OUTSRC_COEXIST)\r
56 #define OFDM_TABLE_SIZE_92D     43\r
57 #define OFDM_TABLE_SIZE         37\r
58 #define CCK_TABLE_SIZE          33\r
59 #define CCK_TABLE_SIZE_88F      21\r
60 \r
61 \r
62 \r
63 //#define       OFDM_TABLE_SIZE_92E     54\r
64 //#define       CCK_TABLE_SIZE_92E      54\r
65 extern  u4Byte OFDMSwingTable[OFDM_TABLE_SIZE_92D];\r
66 extern  u1Byte CCKSwingTable_Ch1_Ch13[CCK_TABLE_SIZE][8];\r
67 extern  u1Byte CCKSwingTable_Ch14 [CCK_TABLE_SIZE][8];\r
68 \r
69 \r
70 extern  u4Byte OFDMSwingTable_New[OFDM_TABLE_SIZE_92D];\r
71 extern  u1Byte CCKSwingTable_Ch1_Ch13_New[CCK_TABLE_SIZE][8];\r
72 extern  u1Byte CCKSwingTable_Ch14_New [CCK_TABLE_SIZE][8];\r
73 extern  u1Byte CCKSwingTable_Ch1_Ch14_88F[CCK_TABLE_SIZE_88F][16];\r
74 \r
75 #endif\r
76 \r
77 #define ODM_OFDM_TABLE_SIZE     37\r
78 #define ODM_CCK_TABLE_SIZE              33\r
79 // <20140613, YuChen> In case fail to read TxPowerTrack.txt, we use the table of 88E as the default table.\r
80 extern u1Byte DeltaSwingTableIdx_2GA_P_DEFAULT[DELTA_SWINGIDX_SIZE];\r
81 extern u1Byte DeltaSwingTableIdx_2GA_N_DEFAULT[DELTA_SWINGIDX_SIZE]; \r
82 \r
83 \r
84 //extern        u4Byte OFDMSwingTable_92E[OFDM_TABLE_SIZE_92E];\r
85 //extern        u1Byte CCKSwingTable_Ch1_Ch13_92E[CCK_TABLE_SIZE_92E][8];\r
86 //extern        u1Byte CCKSwingTable_Ch14_92E[CCK_TABLE_SIZE_92E][8];\r
87 \r
88 #ifdef CONFIG_WLAN_HAL_8192EE\r
89 #define OFDM_TABLE_SIZE_92E     54\r
90 #define CCK_TABLE_SIZE_92E      54\r
91 extern  u4Byte OFDMSwingTable_92E[OFDM_TABLE_SIZE_92E];\r
92 extern  u1Byte CCKSwingTable_Ch1_Ch13_92E[CCK_TABLE_SIZE_92E][8];\r
93 extern  u1Byte CCKSwingTable_Ch14_92E[CCK_TABLE_SIZE_92E][8];\r
94 #endif\r
95 \r
96 #define OFDM_TABLE_SIZE_8812    43\r
97 #define AVG_THERMAL_NUM_8812    4\r
98 \r
99 #if(RTL8814A_SUPPORT == 1)\r
100 extern u4Byte TxScalingTable_Jaguar[TXSCALE_TABLE_SIZE];\r
101 #elif(ODM_IC_11AC_SERIES_SUPPORT)\r
102 extern unsigned int OFDMSwingTable_8812[OFDM_TABLE_SIZE_8812];\r
103 #endif\r
104 \r
105 #define dm_CheckTXPowerTracking         ODM_TXPowerTrackingCheck\r
106 \r
107 typedef struct _IQK_MATRIX_REGS_SETTING{\r
108         BOOLEAN         bIQKDone;\r
109         s4Byte          Value[1][IQK_Matrix_REG_NUM];\r
110 }IQK_MATRIX_REGS_SETTING,*PIQK_MATRIX_REGS_SETTING;\r
111 \r
112 typedef struct ODM_RF_Calibration_Structure\r
113 {\r
114         //for tx power tracking\r
115         \r
116         u4Byte  RegA24; // for TempCCK\r
117         s4Byte  RegE94;\r
118         s4Byte  RegE9C;\r
119         s4Byte  RegEB4;\r
120         s4Byte  RegEBC; \r
121 \r
122         //u1Byte bTXPowerTracking;\r
123         u1Byte          TXPowercount;\r
124         BOOLEAN bTXPowerTrackingInit; \r
125         BOOLEAN bTXPowerTracking;\r
126         u1Byte          TxPowerTrackControl; //for mp mode, turn off txpwrtracking as default\r
127         u1Byte          TM_Trigger;\r
128         u1Byte          InternalPA5G[2];        //pathA / pathB\r
129         \r
130         u1Byte          ThermalMeter[2];    // ThermalMeter, index 0 for RFIC0, and 1 for RFIC1\r
131         u1Byte          ThermalValue;\r
132         u1Byte          ThermalValue_LCK;\r
133         u1Byte          ThermalValue_IQK;\r
134         u1Byte  ThermalValue_DPK;               \r
135         u1Byte  ThermalValue_AVG[AVG_THERMAL_NUM];\r
136         u1Byte  ThermalValue_AVG_index;         \r
137         u1Byte  ThermalValue_RxGain;\r
138         u1Byte  ThermalValue_Crystal;\r
139         u1Byte  ThermalValue_DPKstore;\r
140         u1Byte  ThermalValue_DPKtrack;\r
141         BOOLEAN TxPowerTrackingInProgress;\r
142         BOOLEAN bDPKenable;\r
143         \r
144         BOOLEAN bReloadtxpowerindex;    \r
145         u1Byte  bRfPiEnable;\r
146         u4Byte  TXPowerTrackingCallbackCnt; //cosa add for debug\r
147 \r
148         u1Byte  bCCKinCH14;\r
149         u1Byte  CCK_index;\r
150         u1Byte  OFDM_index[MAX_RF_PATH];\r
151         s1Byte  PowerIndexOffset;\r
152         s1Byte  DeltaPowerIndex;\r
153         s1Byte  DeltaPowerIndexLast;    \r
154         BOOLEAN bTxPowerChanged;\r
155                 \r
156         u1Byte  ThermalValue_HP[HP_THERMAL_NUM];\r
157         u1Byte  ThermalValue_HP_index;\r
158         IQK_MATRIX_REGS_SETTING IQKMatrixRegSetting[IQK_Matrix_Settings_NUM];\r
159         BOOLEAN bNeedIQK;\r
160         u1Byte  Delta_IQK;\r
161         u1Byte  Delta_LCK;\r
162         u1Byte  DeltaSwingTableIdx_2GCCKA_P[DELTA_SWINGIDX_SIZE];\r
163         u1Byte  DeltaSwingTableIdx_2GCCKA_N[DELTA_SWINGIDX_SIZE];\r
164         u1Byte  DeltaSwingTableIdx_2GCCKB_P[DELTA_SWINGIDX_SIZE];\r
165         u1Byte  DeltaSwingTableIdx_2GCCKB_N[DELTA_SWINGIDX_SIZE];\r
166         u1Byte  DeltaSwingTableIdx_2GCCKC_P[DELTA_SWINGIDX_SIZE];\r
167         u1Byte  DeltaSwingTableIdx_2GCCKC_N[DELTA_SWINGIDX_SIZE];\r
168         u1Byte  DeltaSwingTableIdx_2GCCKD_P[DELTA_SWINGIDX_SIZE];\r
169         u1Byte  DeltaSwingTableIdx_2GCCKD_N[DELTA_SWINGIDX_SIZE];\r
170         u1Byte  DeltaSwingTableIdx_2GA_P[DELTA_SWINGIDX_SIZE];\r
171         u1Byte  DeltaSwingTableIdx_2GA_N[DELTA_SWINGIDX_SIZE];\r
172         u1Byte  DeltaSwingTableIdx_2GB_P[DELTA_SWINGIDX_SIZE];\r
173         u1Byte  DeltaSwingTableIdx_2GB_N[DELTA_SWINGIDX_SIZE];\r
174         u1Byte  DeltaSwingTableIdx_2GC_P[DELTA_SWINGIDX_SIZE];\r
175         u1Byte  DeltaSwingTableIdx_2GC_N[DELTA_SWINGIDX_SIZE];\r
176         u1Byte  DeltaSwingTableIdx_2GD_P[DELTA_SWINGIDX_SIZE];\r
177         u1Byte  DeltaSwingTableIdx_2GD_N[DELTA_SWINGIDX_SIZE];\r
178         u1Byte  DeltaSwingTableIdx_5GA_P[BAND_NUM][DELTA_SWINGIDX_SIZE];\r
179         u1Byte  DeltaSwingTableIdx_5GA_N[BAND_NUM][DELTA_SWINGIDX_SIZE];\r
180         u1Byte  DeltaSwingTableIdx_5GB_P[BAND_NUM][DELTA_SWINGIDX_SIZE];\r
181         u1Byte  DeltaSwingTableIdx_5GB_N[BAND_NUM][DELTA_SWINGIDX_SIZE];\r
182         u1Byte  DeltaSwingTableIdx_5GC_P[BAND_NUM][DELTA_SWINGIDX_SIZE];\r
183         u1Byte  DeltaSwingTableIdx_5GC_N[BAND_NUM][DELTA_SWINGIDX_SIZE];\r
184         u1Byte  DeltaSwingTableIdx_5GD_P[BAND_NUM][DELTA_SWINGIDX_SIZE];\r
185         u1Byte  DeltaSwingTableIdx_5GD_N[BAND_NUM][DELTA_SWINGIDX_SIZE];\r
186         u1Byte  DeltaSwingTableIdx_2GA_P_8188E[DELTA_SWINGIDX_SIZE];\r
187         u1Byte  DeltaSwingTableIdx_2GA_N_8188E[DELTA_SWINGIDX_SIZE];\r
188         \r
189         u1Byte                  BbSwingIdxOfdm[MAX_RF_PATH];\r
190         u1Byte                  BbSwingIdxOfdmCurrent;\r
191 #if (DM_ODM_SUPPORT_TYPE &  (ODM_WIN|ODM_CE))   \r
192         u1Byte                  BbSwingIdxOfdmBase[MAX_RF_PATH];\r
193 #else\r
194         u1Byte                  BbSwingIdxOfdmBase;\r
195 #endif\r
196         BOOLEAN                 BbSwingFlagOfdm;\r
197         u1Byte                  BbSwingIdxCck;\r
198         u1Byte                  BbSwingIdxCckCurrent;\r
199         u1Byte                  BbSwingIdxCckBase;\r
200         u1Byte                  DefaultOfdmIndex;\r
201         u1Byte                  DefaultCckIndex;        \r
202         BOOLEAN                 BbSwingFlagCck;\r
203         \r
204         s1Byte                  Absolute_OFDMSwingIdx[MAX_RF_PATH];   \r
205         s1Byte                  Remnant_OFDMSwingIdx[MAX_RF_PATH];   \r
206         s1Byte                  Remnant_CCKSwingIdx;\r
207         s1Byte                  Modify_TxAGC_Value;       /*Remnat compensate value at TxAGC */\r
208         BOOLEAN                 Modify_TxAGC_Flag_PathA;\r
209         BOOLEAN                 Modify_TxAGC_Flag_PathB;\r
210         BOOLEAN                 Modify_TxAGC_Flag_PathC;\r
211         BOOLEAN                 Modify_TxAGC_Flag_PathD;\r
212         BOOLEAN                 Modify_TxAGC_Flag_PathA_CCK;\r
213         \r
214         s1Byte                  KfreeOffset[MAX_RF_PATH];\r
215     \r
216         //--------------------------------------------------------------------//        \r
217         \r
218         //for IQK       \r
219         u4Byte  RegC04;\r
220         u4Byte  Reg874;\r
221         u4Byte  RegC08;\r
222         u4Byte  RegB68;\r
223         u4Byte  RegB6C;\r
224         u4Byte  Reg870;\r
225         u4Byte  Reg860;\r
226         u4Byte  Reg864;\r
227         \r
228         BOOLEAN bIQKInitialized;\r
229         BOOLEAN bLCKInProgress;\r
230         BOOLEAN bAntennaDetected;\r
231         u4Byte  ADDA_backup[IQK_ADDA_REG_NUM];\r
232         u4Byte  IQK_MAC_backup[IQK_MAC_REG_NUM];\r
233         u4Byte  IQK_BB_backup_recover[9];\r
234         u4Byte  IQK_BB_backup[IQK_BB_REG_NUM];  \r
235 \r
236         //for APK\r
237         u4Byte  APKoutput[2][2]; //path A/B; output1_1a/output1_2a\r
238         u1Byte  bAPKdone;\r
239         u1Byte  bAPKThermalMeterIgnore;\r
240         u1Byte  bDPdone;\r
241         u1Byte  bDPPathAOK;\r
242         u1Byte  bDPPathBOK;\r
243 \r
244         /*Add by Yuchen for Kfree Phydm*/\r
245         u1Byte                  RegRfKFreeEnable;       /*for registry*/\r
246         u1Byte                  RfKFreeEnable;          /*for efuse enable check*/\r
247         \r
248 }ODM_RF_CAL_T,*PODM_RF_CAL_T;\r
249 \r
250 VOID\r
251 odm_TXPowerTrackingCheckAP(\r
252         IN      PVOID           pDM_VOID\r
253         );\r
254 \r
255 VOID\r
256 ODM_TXPowerTrackingCheck(\r
257         IN      PVOID           pDM_VOID\r
258         );\r
259 \r
260 \r
261 VOID\r
262 odm_TXPowerTrackingThermalMeterInit(\r
263         IN      PVOID           pDM_VOID\r
264         );\r
265 \r
266 VOID\r
267 odm_TXPowerTrackingInit(\r
268         IN      PVOID           pDM_VOID\r
269         );\r
270 \r
271 VOID\r
272 odm_TXPowerTrackingCheckMP(\r
273         IN      PVOID           pDM_VOID\r
274         );\r
275 \r
276 \r
277 VOID\r
278 odm_TXPowerTrackingCheckCE(\r
279         IN      PVOID           pDM_VOID\r
280         );\r
281 \r
282 \r
283 #if(DM_ODM_SUPPORT_TYPE & (ODM_WIN)) \r
284 \r
285 VOID \r
286 odm_TXPowerTrackingCallbackThermalMeter92C(\r
287             IN PADAPTER Adapter\r
288             );\r
289 \r
290 VOID\r
291 odm_TXPowerTrackingCallbackRXGainThermalMeter92D(\r
292         IN PADAPTER     Adapter\r
293         );\r
294 \r
295 VOID\r
296 odm_TXPowerTrackingCallbackThermalMeter92D(\r
297             IN PADAPTER Adapter\r
298             );\r
299 \r
300 VOID\r
301 odm_TXPowerTrackingDirectCall92C(\r
302             IN  PADAPTER                Adapter\r
303             );\r
304 \r
305 VOID\r
306 odm_TXPowerTrackingThermalMeterCheck(\r
307         IN      PADAPTER                Adapter\r
308         );\r
309 \r
310 #endif\r
311 \r
312 \r
313 \r
314 #endif\r