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