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