Merge tag 'lsk-v3.10-15.09-android'
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / rtl8723bu / hal / OUTSRC / phydm_PowerTracking.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.0"\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 TXSCALE_TABLE_SIZE              37\r
31 #define TXPWR_TRACK_TABLE_SIZE  30\r
32 #define DELTA_SWINGIDX_SIZE     30\r
33 #define BAND_NUM                                4\r
34 \r
35 #define AVG_THERMAL_NUM         8\r
36 #define HP_THERMAL_NUM          8\r
37 #define IQK_MAC_REG_NUM         4\r
38 #define IQK_ADDA_REG_NUM                16\r
39 #define IQK_BB_REG_NUM_MAX      10\r
40 #if (RTL8192D_SUPPORT==1) \r
41 #define IQK_BB_REG_NUM          10\r
42 #else\r
43 #define IQK_BB_REG_NUM          9\r
44 #endif\r
45 \r
46 \r
47 #define IQK_Matrix_REG_NUM      8\r
48 #define IQK_Matrix_Settings_NUM 14+24+21 // Channels_2_4G_NUM + Channels_5G_20M_NUM + Channels_5G\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 \r
58 extern  u4Byte TxScalingTable_Jaguar[TXSCALE_TABLE_SIZE];\r
59 \r
60 // <20121018, Kordan> In case fail to read TxPowerTrack.txt, we use the table of 88E as the default table.\r
61 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
62 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
63 \r
64 #define dm_CheckTXPowerTracking         ODM_TXPowerTrackingCheck\r
65 \r
66 typedef struct _IQK_MATRIX_REGS_SETTING{\r
67         BOOLEAN         bIQKDone;\r
68         s4Byte          Value[3][IQK_Matrix_REG_NUM];\r
69         BOOLEAN         bBWIqkResultSaved[3];   \r
70 }IQK_MATRIX_REGS_SETTING,*PIQK_MATRIX_REGS_SETTING;\r
71 \r
72 typedef struct ODM_RF_Calibration_Structure\r
73 {\r
74         //for tx power tracking\r
75         \r
76         u4Byte  RegA24; // for TempCCK\r
77         s4Byte  RegE94;\r
78         s4Byte  RegE9C;\r
79         s4Byte  RegEB4;\r
80         s4Byte  RegEBC; \r
81 \r
82         u1Byte          TXPowercount;\r
83         BOOLEAN bTXPowerTrackingInit; \r
84         BOOLEAN bTXPowerTracking;\r
85         u1Byte          TxPowerTrackControl; //for mp mode, turn off txpwrtracking as default\r
86         u1Byte          TM_Trigger;\r
87         u1Byte          InternalPA5G[2];        //pathA / pathB\r
88         \r
89         u1Byte          ThermalMeter[2];    // ThermalMeter, index 0 for RFIC0, and 1 for RFIC1\r
90         u1Byte          ThermalValue;\r
91         u1Byte          ThermalValue_LCK;\r
92         u1Byte          ThermalValue_IQK;\r
93         u1Byte  ThermalValue_DPK;               \r
94         u1Byte  ThermalValue_AVG[AVG_THERMAL_NUM];\r
95         u1Byte  ThermalValue_AVG_index;         \r
96         u1Byte  ThermalValue_RxGain;\r
97         u1Byte  ThermalValue_Crystal;\r
98         u1Byte  ThermalValue_DPKstore;\r
99         u1Byte  ThermalValue_DPKtrack;\r
100         BOOLEAN TxPowerTrackingInProgress;\r
101         \r
102         BOOLEAN bReloadtxpowerindex;    \r
103         u1Byte  bRfPiEnable;\r
104         u4Byte  TXPowerTrackingCallbackCnt; //cosa add for debug\r
105 \r
106 \r
107         //------------------------- Tx power Tracking -------------------------//\r
108         u1Byte  bCCKinCH14;\r
109         u1Byte  CCK_index;\r
110         u1Byte  OFDM_index[MAX_RF_PATH];\r
111         s1Byte  PowerIndexOffset[MAX_RF_PATH];\r
112         s1Byte  DeltaPowerIndex[MAX_RF_PATH];\r
113         s1Byte  DeltaPowerIndexLast[MAX_RF_PATH];       \r
114         BOOLEAN bTxPowerChanged;\r
115                 \r
116         u1Byte  ThermalValue_HP[HP_THERMAL_NUM];\r
117         u1Byte  ThermalValue_HP_index;\r
118         IQK_MATRIX_REGS_SETTING IQKMatrixRegSetting[IQK_Matrix_Settings_NUM];\r
119         u1Byte  Delta_LCK;\r
120         s1Byte  BBSwingDiff2G, BBSwingDiff5G; // Unit: dB\r
121     u1Byte  DeltaSwingTableIdx_2GCCKA_P[DELTA_SWINGIDX_SIZE];\r
122     u1Byte  DeltaSwingTableIdx_2GCCKA_N[DELTA_SWINGIDX_SIZE];\r
123     u1Byte  DeltaSwingTableIdx_2GCCKB_P[DELTA_SWINGIDX_SIZE];\r
124     u1Byte  DeltaSwingTableIdx_2GCCKB_N[DELTA_SWINGIDX_SIZE];\r
125     u1Byte  DeltaSwingTableIdx_2GA_P[DELTA_SWINGIDX_SIZE];\r
126     u1Byte  DeltaSwingTableIdx_2GA_N[DELTA_SWINGIDX_SIZE];\r
127     u1Byte  DeltaSwingTableIdx_2GB_P[DELTA_SWINGIDX_SIZE];\r
128     u1Byte  DeltaSwingTableIdx_2GB_N[DELTA_SWINGIDX_SIZE];\r
129     u1Byte  DeltaSwingTableIdx_5GA_P[BAND_NUM][DELTA_SWINGIDX_SIZE];\r
130     u1Byte  DeltaSwingTableIdx_5GA_N[BAND_NUM][DELTA_SWINGIDX_SIZE];\r
131     u1Byte  DeltaSwingTableIdx_5GB_P[BAND_NUM][DELTA_SWINGIDX_SIZE];\r
132     u1Byte  DeltaSwingTableIdx_5GB_N[BAND_NUM][DELTA_SWINGIDX_SIZE];\r
133     u1Byte  DeltaSwingTableIdx_2GA_P_8188E[DELTA_SWINGIDX_SIZE];\r
134     u1Byte  DeltaSwingTableIdx_2GA_N_8188E[DELTA_SWINGIDX_SIZE];\r
135     \r
136     \r
137         //--------------------------------------------------------------------//        \r
138         \r
139         //for IQK       \r
140         u4Byte  RegC04;\r
141         u4Byte  Reg874;\r
142         u4Byte  RegC08;\r
143         u4Byte  RegB68;\r
144         u4Byte  RegB6C;\r
145         u4Byte  Reg870;\r
146         u4Byte  Reg860;\r
147         u4Byte  Reg864;\r
148         \r
149         BOOLEAN bIQKInitialized;\r
150         BOOLEAN bLCKInProgress;\r
151         BOOLEAN bAntennaDetected;\r
152         BOOLEAN bNeedIQK;\r
153         BOOLEAN bIQKInProgress; \r
154         u1Byte  Delta_IQK;\r
155         u4Byte  ADDA_backup[IQK_ADDA_REG_NUM];\r
156         u4Byte  IQK_MAC_backup[IQK_MAC_REG_NUM];\r
157         u4Byte  IQK_BB_backup_recover[9];\r
158         u4Byte  IQK_BB_backup[IQK_BB_REG_NUM];  \r
159         u4Byte  TxIQC_8723B[2][3][2]; // { {S1: 0xc94, 0xc80, 0xc4c} , {S0: 0xc9c, 0xc88, 0xc4c}}\r
160         u4Byte  RxIQC_8723B[2][2][2]; // { {S1: 0xc14, 0xca0} ,           {S0: 0xc14, 0xca0}}\r
161 \r
162         // <James> IQK time measurement \r
163         u8Byte  IQK_StartTime;\r
164         u8Byte  IQK_ProgressingTime;\r
165 \r
166         //for APK\r
167         u4Byte  APKoutput[2][2]; //path A/B; output1_1a/output1_2a\r
168         u1Byte  bAPKdone;\r
169         u1Byte  bAPKThermalMeterIgnore;\r
170         \r
171         // DPK\r
172         BOOLEAN bDPKFail;       \r
173         u1Byte  bDPdone;\r
174         u1Byte  bDPPathAOK;\r
175         u1Byte  bDPPathBOK;\r
176 \r
177         u4Byte  TxLOK[2];\r
178 \r
179 }ODM_RF_CAL_T,*PODM_RF_CAL_T;\r
180 \r
181 \r
182 VOID    \r
183 ODM_TXPowerTrackingCheck(\r
184         IN      PVOID           pDM_VOID\r
185         );\r
186 \r
187 \r
188 VOID\r
189 odm_TXPowerTrackingInit(\r
190         IN      PVOID           pDM_VOID\r
191         );\r
192 \r
193 VOID\r
194 odm_TXPowerTrackingCheckAP(
195         IN      PVOID           pDM_VOID\r
196         );
197
198 VOID
199 odm_TXPowerTrackingThermalMeterInit(
200         IN      PVOID           pDM_VOID\r
201         );
202 \r
203 VOID
204 odm_TXPowerTrackingInit(
205         IN      PVOID           pDM_VOID\r
206         );
207
208 VOID
209 odm_TXPowerTrackingCheckMP(
210         IN      PVOID           pDM_VOID\r
211         );
212
213
214 VOID
215 odm_TXPowerTrackingCheckCE(
216         IN      PVOID           pDM_VOID\r
217         );
218
219 #if(DM_ODM_SUPPORT_TYPE & (ODM_WIN)) 
220
221 VOID 
222 odm_TXPowerTrackingCallbackThermalMeter92C(
223             IN PADAPTER Adapter
224             );
225
226 VOID
227 odm_TXPowerTrackingCallbackRXGainThermalMeter92D(
228         IN PADAPTER     Adapter
229         );
230
231 VOID
232 odm_TXPowerTrackingCallbackThermalMeter92D(
233             IN PADAPTER Adapter
234             );
235
236 VOID
237 odm_TXPowerTrackingDirectCall92C(
238             IN  PADAPTER                Adapter
239             );
240
241 VOID
242 odm_TXPowerTrackingThermalMeterCheck(
243         IN      PADAPTER                Adapter
244         );
245
246 #endif\r
247 \r
248 #endif\r