net: wireless: rockchip_wlan: add rtl8723ds support
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / rtl8723ds / 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         DELTA_SWINTSSI_SIZE     61\r
40 #define         BAND_NUM                                3\r
41 #define         MAX_RF_PATH     4\r
42 #define                 TXSCALE_TABLE_SIZE              37\r
43 #define         CCK_TABLE_SIZE_8723D            41\r
44 \r
45 #define IQK_MAC_REG_NUM         4\r
46 #define IQK_ADDA_REG_NUM                16\r
47 #define IQK_BB_REG_NUM_MAX      10\r
48 \r
49 #define IQK_BB_REG_NUM          9\r
50 \r
51 #define HP_THERMAL_NUM          8\r
52 \r
53 #define AVG_THERMAL_NUM         8\r
54 #define IQK_Matrix_REG_NUM      8\r
55 //#define IQK_Matrix_Settings_NUM       1+24+21\r
56 #define IQK_Matrix_Settings_NUM (14+24+21) // Channels_2_4G_NUM + Channels_5G_20M_NUM + Channels_5G\r
57 \r
58 #if !defined(_OUTSRC_COEXIST)\r
59 #define OFDM_TABLE_SIZE_92D     43\r
60 #define OFDM_TABLE_SIZE         37\r
61 #define CCK_TABLE_SIZE          33\r
62 #define CCK_TABLE_SIZE_88F      21\r
63 \r
64 \r
65 \r
66 //#define       OFDM_TABLE_SIZE_92E     54\r
67 //#define       CCK_TABLE_SIZE_92E      54\r
68 extern  u4Byte OFDMSwingTable[OFDM_TABLE_SIZE_92D];\r
69 extern  u1Byte CCKSwingTable_Ch1_Ch13[CCK_TABLE_SIZE][8];\r
70 extern  u1Byte CCKSwingTable_Ch14 [CCK_TABLE_SIZE][8];\r
71 \r
72 \r
73 extern  u4Byte OFDMSwingTable_New[OFDM_TABLE_SIZE_92D];\r
74 extern  u1Byte CCKSwingTable_Ch1_Ch13_New[CCK_TABLE_SIZE][8];\r
75 extern  u1Byte CCKSwingTable_Ch14_New [CCK_TABLE_SIZE][8];\r
76 extern  u1Byte CCKSwingTable_Ch1_Ch14_88F[CCK_TABLE_SIZE_88F][16];\r
77 extern  u1Byte CCKSwingTable_Ch1_Ch13_88F[CCK_TABLE_SIZE_88F][16];\r
78 extern  u1Byte CCKSwingTable_Ch14_88F[CCK_TABLE_SIZE_88F][16];\r
79 \r
80 #endif\r
81 \r
82 #define ODM_OFDM_TABLE_SIZE     37\r
83 #define ODM_CCK_TABLE_SIZE              33\r
84 // <20140613, YuChen> In case fail to read TxPowerTrack.txt, we use the table of 88E as the default table.\r
85 extern u1Byte DeltaSwingTableIdx_2GA_P_DEFAULT[DELTA_SWINGIDX_SIZE];\r
86 extern u1Byte DeltaSwingTableIdx_2GA_N_DEFAULT[DELTA_SWINGIDX_SIZE]; \r
87 \r
88 static u1Byte DeltaSwingTableIdx_2GA_P_8188E[] = {0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4,  4,  4,  4,  4,  4,  5,  5,  7,  7,  8,  8,  8,  9,  9,  9,  9,  9};\r
89 static u1Byte DeltaSwingTableIdx_2GA_N_8188E[] = {0, 0, 0, 2, 2, 3, 3, 4, 4, 4, 4, 5, 5,  6,  6,  7,  7,  7,  7,  8,  8,  9,  9, 10, 10, 10, 11, 11, 11, 11}; \r
90 \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 \r
95 #ifdef CONFIG_WLAN_HAL_8192EE\r
96 #define OFDM_TABLE_SIZE_92E     54\r
97 #define CCK_TABLE_SIZE_92E      54\r
98 extern  u4Byte OFDMSwingTable_92E[OFDM_TABLE_SIZE_92E];\r
99 extern  u1Byte CCKSwingTable_Ch1_Ch13_92E[CCK_TABLE_SIZE_92E][8];\r
100 extern  u1Byte CCKSwingTable_Ch14_92E[CCK_TABLE_SIZE_92E][8];\r
101 #endif\r
102 \r
103 #define OFDM_TABLE_SIZE_8812    43\r
104 #define AVG_THERMAL_NUM_8812    4\r
105 \r
106 #if (RTL8814A_SUPPORT == 1 || RTL8822B_SUPPORT == 1)\r
107 extern u4Byte TxScalingTable_Jaguar[TXSCALE_TABLE_SIZE];\r
108 #elif(ODM_IC_11AC_SERIES_SUPPORT)\r
109 extern unsigned int OFDMSwingTable_8812[OFDM_TABLE_SIZE_8812];\r
110 #endif\r
111 \r
112 extern u4Byte CCKSwingTable_Ch1_Ch14_8723D[CCK_TABLE_SIZE_8723D];\r
113 \r
114 #define dm_CheckTXPowerTracking         ODM_TXPowerTrackingCheck\r
115 \r
116 typedef struct _IQK_MATRIX_REGS_SETTING{\r
117         BOOLEAN         bIQKDone;\r
118         s4Byte          Value[1][IQK_Matrix_REG_NUM];\r
119 }IQK_MATRIX_REGS_SETTING,*PIQK_MATRIX_REGS_SETTING;\r
120 \r
121 typedef struct ODM_RF_Calibration_Structure\r
122 {\r
123         //for tx power tracking\r
124         \r
125         u4Byte  RegA24; // for TempCCK\r
126         s4Byte  RegE94;\r
127         s4Byte  RegE9C;\r
128         s4Byte  RegEB4;\r
129         s4Byte  RegEBC; \r
130 \r
131         //u1Byte bTXPowerTracking;\r
132         u1Byte          TXPowercount;\r
133         BOOLEAN bTXPowerTrackingInit; \r
134         BOOLEAN bTXPowerTracking;\r
135         u1Byte          TxPowerTrackControl; //for mp mode, turn off txpwrtracking as default\r
136         u1Byte          TM_Trigger;\r
137         u1Byte          InternalPA5G[2];        //pathA / pathB\r
138         \r
139         u1Byte          ThermalMeter[2];    // ThermalMeter, index 0 for RFIC0, and 1 for RFIC1\r
140         u1Byte          ThermalValue;\r
141         u1Byte          ThermalValue_LCK;\r
142         u1Byte          ThermalValue_IQK;\r
143         u1Byte  ThermalValue_DPK;               \r
144         u1Byte  ThermalValue_AVG[AVG_THERMAL_NUM];\r
145         u1Byte  ThermalValue_AVG_index;         \r
146         u1Byte  ThermalValue_RxGain;\r
147         u1Byte  ThermalValue_Crystal;\r
148         u1Byte  ThermalValue_DPKstore;\r
149         u1Byte  ThermalValue_DPKtrack;\r
150         BOOLEAN TxPowerTrackingInProgress;\r
151         BOOLEAN bDPKenable;\r
152         \r
153         BOOLEAN bReloadtxpowerindex;    \r
154         u1Byte  bRfPiEnable;\r
155         u4Byte  TXPowerTrackingCallbackCnt; //cosa add for debug\r
156 \r
157         u1Byte  bCCKinCH14;\r
158         u1Byte  CCK_index;\r
159         u1Byte  OFDM_index[MAX_RF_PATH];\r
160         s1Byte  PowerIndexOffset;\r
161         s1Byte  DeltaPowerIndex;\r
162         s1Byte  DeltaPowerIndexLast;    \r
163         BOOLEAN bTxPowerChanged;\r
164                 \r
165         u1Byte  ThermalValue_HP[HP_THERMAL_NUM];\r
166         u1Byte  ThermalValue_HP_index;\r
167         IQK_MATRIX_REGS_SETTING IQKMatrixRegSetting[IQK_Matrix_Settings_NUM];\r
168         u1Byte  Delta_LCK;\r
169         u1Byte  DeltaSwingTableIdx_2GCCKA_P[DELTA_SWINGIDX_SIZE];\r
170         u1Byte  DeltaSwingTableIdx_2GCCKA_N[DELTA_SWINGIDX_SIZE];\r
171         u1Byte  DeltaSwingTableIdx_2GCCKB_P[DELTA_SWINGIDX_SIZE];\r
172         u1Byte  DeltaSwingTableIdx_2GCCKB_N[DELTA_SWINGIDX_SIZE];\r
173         u1Byte  DeltaSwingTableIdx_2GCCKC_P[DELTA_SWINGIDX_SIZE];\r
174         u1Byte  DeltaSwingTableIdx_2GCCKC_N[DELTA_SWINGIDX_SIZE];\r
175         u1Byte  DeltaSwingTableIdx_2GCCKD_P[DELTA_SWINGIDX_SIZE];\r
176         u1Byte  DeltaSwingTableIdx_2GCCKD_N[DELTA_SWINGIDX_SIZE];\r
177         u1Byte  DeltaSwingTableIdx_2GA_P[DELTA_SWINGIDX_SIZE];\r
178         u1Byte  DeltaSwingTableIdx_2GA_N[DELTA_SWINGIDX_SIZE];\r
179         u1Byte  DeltaSwingTableIdx_2GB_P[DELTA_SWINGIDX_SIZE];\r
180         u1Byte  DeltaSwingTableIdx_2GB_N[DELTA_SWINGIDX_SIZE];\r
181         u1Byte  DeltaSwingTableIdx_2GC_P[DELTA_SWINGIDX_SIZE];\r
182         u1Byte  DeltaSwingTableIdx_2GC_N[DELTA_SWINGIDX_SIZE];\r
183         u1Byte  DeltaSwingTableIdx_2GD_P[DELTA_SWINGIDX_SIZE];\r
184         u1Byte  DeltaSwingTableIdx_2GD_N[DELTA_SWINGIDX_SIZE];\r
185         u1Byte  DeltaSwingTableIdx_5GA_P[BAND_NUM][DELTA_SWINGIDX_SIZE];\r
186         u1Byte  DeltaSwingTableIdx_5GA_N[BAND_NUM][DELTA_SWINGIDX_SIZE];\r
187         u1Byte  DeltaSwingTableIdx_5GB_P[BAND_NUM][DELTA_SWINGIDX_SIZE];\r
188         u1Byte  DeltaSwingTableIdx_5GB_N[BAND_NUM][DELTA_SWINGIDX_SIZE];\r
189         u1Byte  DeltaSwingTableIdx_5GC_P[BAND_NUM][DELTA_SWINGIDX_SIZE];\r
190         u1Byte  DeltaSwingTableIdx_5GC_N[BAND_NUM][DELTA_SWINGIDX_SIZE];\r
191         u1Byte  DeltaSwingTableIdx_5GD_P[BAND_NUM][DELTA_SWINGIDX_SIZE];\r
192         u1Byte  DeltaSwingTableIdx_5GD_N[BAND_NUM][DELTA_SWINGIDX_SIZE];\r
193         u1Byte  DeltaSwingTSSITable_2GCCKA[DELTA_SWINTSSI_SIZE];         \r
194         u1Byte  DeltaSwingTSSITable_2GCCKB[DELTA_SWINTSSI_SIZE];           \r
195         u1Byte  DeltaSwingTSSITable_2GCCKC[DELTA_SWINTSSI_SIZE];            \r
196         u1Byte  DeltaSwingTSSITable_2GCCKD[DELTA_SWINTSSI_SIZE];            \r
197         u1Byte  DeltaSwingTSSITable_2GA[DELTA_SWINTSSI_SIZE];                \r
198         u1Byte  DeltaSwingTSSITable_2GB[DELTA_SWINTSSI_SIZE];              \r
199         u1Byte  DeltaSwingTSSITable_2GC[DELTA_SWINTSSI_SIZE];                   \r
200         u1Byte  DeltaSwingTSSITable_2GD[DELTA_SWINTSSI_SIZE];                \r
201         u1Byte  DeltaSwingTSSITable_5GA[BAND_NUM][DELTA_SWINTSSI_SIZE];\r
202         u1Byte  DeltaSwingTSSITable_5GB[BAND_NUM][DELTA_SWINTSSI_SIZE];\r
203         u1Byte  DeltaSwingTSSITable_5GC[BAND_NUM][DELTA_SWINTSSI_SIZE];\r
204         u1Byte  DeltaSwingTSSITable_5GD[BAND_NUM][DELTA_SWINTSSI_SIZE];\r
205         u1Byte  DeltaSwingTableIdx_2GA_P_8188E[DELTA_SWINGIDX_SIZE];\r
206         u1Byte  DeltaSwingTableIdx_2GA_N_8188E[DELTA_SWINGIDX_SIZE];\r
207         \r
208         u1Byte                  BbSwingIdxOfdm[MAX_RF_PATH];\r
209         u1Byte                  BbSwingIdxOfdmCurrent;\r
210 #if (DM_ODM_SUPPORT_TYPE &  (ODM_WIN|ODM_CE))   \r
211         u1Byte                  BbSwingIdxOfdmBase[MAX_RF_PATH];\r
212 #else\r
213         u1Byte                  BbSwingIdxOfdmBase;\r
214 #endif\r
215         BOOLEAN                 BbSwingFlagOfdm;\r
216         u1Byte                  BbSwingIdxCck;\r
217         u1Byte                  BbSwingIdxCckCurrent;\r
218         u1Byte                  BbSwingIdxCckBase;\r
219         u1Byte                  DefaultOfdmIndex;\r
220         u1Byte                  DefaultCckIndex;        \r
221         BOOLEAN                 BbSwingFlagCck;\r
222         \r
223         s1Byte                  Absolute_OFDMSwingIdx[MAX_RF_PATH];   \r
224         s1Byte                  Remnant_OFDMSwingIdx[MAX_RF_PATH];   \r
225         s1Byte                  Absolute_CCKSwingIdx[MAX_RF_PATH]; \r
226         s1Byte                  Remnant_CCKSwingIdx;\r
227         s1Byte                  Modify_TxAGC_Value;       /*Remnat compensate value at TxAGC */\r
228         BOOLEAN                 Modify_TxAGC_Flag_PathA;\r
229         BOOLEAN                 Modify_TxAGC_Flag_PathB;\r
230         BOOLEAN                 Modify_TxAGC_Flag_PathC;\r
231         BOOLEAN                 Modify_TxAGC_Flag_PathD;\r
232         BOOLEAN                 Modify_TxAGC_Flag_PathA_CCK;\r
233         \r
234         s1Byte                  KfreeOffset[MAX_RF_PATH];\r
235     \r
236         //--------------------------------------------------------------------//        \r
237         \r
238         //for IQK       \r
239         u4Byte  RegC04;\r
240         u4Byte  Reg874;\r
241         u4Byte  RegC08;\r
242         u4Byte  RegB68;\r
243         u4Byte  RegB6C;\r
244         u4Byte  Reg870;\r
245         u4Byte  Reg860;\r
246         u4Byte  Reg864;\r
247         \r
248         BOOLEAN bIQKInitialized;\r
249         BOOLEAN bLCKInProgress;\r
250         BOOLEAN bAntennaDetected;\r
251         BOOLEAN bNeedIQK;\r
252         BOOLEAN bIQKInProgress;\r
253         BOOLEAN bIQKPAoff;\r
254         u1Byte  Delta_IQK;\r
255         u4Byte  ADDA_backup[IQK_ADDA_REG_NUM];\r
256         u4Byte  IQK_MAC_backup[IQK_MAC_REG_NUM];\r
257         u4Byte  IQK_BB_backup_recover[9];\r
258         u4Byte  IQK_BB_backup[IQK_BB_REG_NUM];  \r
259         u4Byte  TxIQC_8723B[2][3][2]; /* { {S1: 0xc94, 0xc80, 0xc4c} , {S0: 0xc9c, 0xc88, 0xc4c}} */\r
260         u4Byte  RxIQC_8723B[2][2][2]; /* { {S1: 0xc14, 0xca0} ,           {S0: 0xc14, 0xca0}} */\r
261         u4Byte  TxIQC_8703B[3][2];      /* { {S1: 0xc94, 0xc80, 0xc4c} , {S0: 0xc9c, 0xc88, 0xc4c}}*/\r
262         u4Byte  RxIQC_8703B[2][2];      /* { {S1: 0xc14, 0xca0} ,           {S0: 0xc14, 0xca0}}*/\r
263 \r
264         u8Byte  IQK_StartTime;\r
265         u8Byte  IQK_TotalProgressingTime;\r
266         u8Byte  IQK_ProgressingTime;\r
267         u4Byte  LOK_Result;\r
268         u1Byte  IQKstep;\r
269         u1Byte  Kcount;\r
270         u1Byte  retry_count[4][2]; /* [4]: path ABCD, [2] TXK, RXK */\r
271         BOOLEAN isMPmode;\r
272 \r
273         //for APK\r
274         u4Byte  APKoutput[2][2]; //path A/B; output1_1a/output1_2a\r
275         u1Byte  bAPKdone;\r
276         u1Byte  bAPKThermalMeterIgnore;\r
277         u1Byte  bDPdone;\r
278         u1Byte  bDPPathAOK;\r
279         u1Byte  bDPPathBOK;\r
280 \r
281         /*Add by Yuchen for Kfree Phydm*/\r
282         u1Byte                  RegRfKFreeEnable;       /*for registry*/\r
283         u1Byte                  RfKFreeEnable;          /*for efuse enable check*/\r
284         u4Byte  TxLOK[2];\r
285 }ODM_RF_CAL_T,*PODM_RF_CAL_T;\r
286 \r
287 VOID\r
288 odm_TXPowerTrackingCheckAP(\r
289         IN      PVOID           pDM_VOID\r
290         );\r
291 \r
292 VOID\r
293 ODM_TXPowerTrackingCheck(\r
294         IN      PVOID           pDM_VOID\r
295         );\r
296 \r
297 \r
298 VOID\r
299 odm_TXPowerTrackingThermalMeterInit(\r
300         IN      PVOID           pDM_VOID\r
301         );\r
302 \r
303 VOID\r
304 odm_TXPowerTrackingInit(\r
305         IN      PVOID           pDM_VOID\r
306         );\r
307 \r
308 VOID\r
309 odm_TXPowerTrackingCheckMP(\r
310         IN      PVOID           pDM_VOID\r
311         );\r
312 \r
313 \r
314 VOID\r
315 odm_TXPowerTrackingCheckCE(\r
316         IN      PVOID           pDM_VOID\r
317         );\r
318 \r
319 \r
320 #if(DM_ODM_SUPPORT_TYPE & (ODM_WIN)) \r
321 \r
322 VOID \r
323 odm_TXPowerTrackingCallbackThermalMeter92C(\r
324             IN PADAPTER Adapter\r
325             );\r
326 \r
327 VOID\r
328 odm_TXPowerTrackingCallbackRXGainThermalMeter92D(\r
329         IN PADAPTER     Adapter\r
330         );\r
331 \r
332 VOID\r
333 odm_TXPowerTrackingCallbackThermalMeter92D(\r
334             IN PADAPTER Adapter\r
335             );\r
336 \r
337 VOID\r
338 odm_TXPowerTrackingDirectCall92C(\r
339             IN  PADAPTER                Adapter\r
340             );\r
341 \r
342 VOID\r
343 odm_TXPowerTrackingThermalMeterCheck(\r
344         IN      PADAPTER                Adapter\r
345         );\r
346 \r
347 #endif\r
348 \r
349 \r
350 \r
351 #endif\r