8a9479adce297e9453613c634c78af7e73c73aea
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / rtl8723bs / hal / OUTSRC / odm_DIG.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 __ODMDIG_H__\r
22 #define    __ODMDIG_H__\r
23 \r
24 typedef struct _Dynamic_Initial_Gain_Threshold_\r
25 {\r
26         BOOLEAN         bStopDIG;\r
27         BOOLEAN         bPSDInProgress;\r
28 \r
29         u1Byte          Dig_Enable_Flag;\r
30         u1Byte          Dig_Ext_Port_Stage;\r
31         \r
32         int                     RssiLowThresh;\r
33         int                     RssiHighThresh;\r
34 \r
35         u4Byte          FALowThresh;\r
36         u4Byte          FAHighThresh;\r
37 \r
38         u1Byte          CurSTAConnectState;\r
39         u1Byte          PreSTAConnectState;\r
40         u1Byte          CurMultiSTAConnectState;\r
41 \r
42         u1Byte          PreIGValue;\r
43         u1Byte          CurIGValue;\r
44         u1Byte          BackupIGValue;          //MP DIG\r
45         u1Byte          BT30_CurIGI;\r
46         u1Byte          IGIBackup;\r
47 \r
48         s1Byte          BackoffVal;\r
49         s1Byte          BackoffVal_range_max;\r
50         s1Byte          BackoffVal_range_min;\r
51         u1Byte          rx_gain_range_max;\r
52         u1Byte          rx_gain_range_min;\r
53         u1Byte          Rssi_val_min;\r
54 \r
55         u1Byte          PreCCK_CCAThres;\r
56         u1Byte          CurCCK_CCAThres;\r
57         u1Byte          PreCCKPDState;\r
58         u1Byte          CurCCKPDState;\r
59         u1Byte          CCKPDBackup;\r
60 \r
61         u1Byte          LargeFAHit;\r
62         u1Byte          ForbiddenIGI;\r
63         u4Byte          Recover_cnt;\r
64 \r
65         u1Byte          DIG_Dynamic_MIN_0;\r
66         u1Byte          DIG_Dynamic_MIN_1;\r
67         BOOLEAN         bMediaConnect_0;\r
68         BOOLEAN         bMediaConnect_1;\r
69 \r
70         u4Byte          AntDiv_RSSI_max;\r
71         u4Byte          RSSI_max;\r
72 \r
73         u1Byte          *pbP2pLinkInProgress;\r
74 \r
75 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
76         BOOLEAN         bTpTarget;\r
77         BOOLEAN         bNoiseEst;\r
78         u4Byte          TpTrainTH_min;\r
79         u1Byte          IGIOffset_A;\r
80         u1Byte          IGIOffset_B;\r
81 #endif\r
82 }DIG_T,*pDIG_T;\r
83 \r
84 typedef struct _FALSE_ALARM_STATISTICS{\r
85         u4Byte  Cnt_Parity_Fail;\r
86         u4Byte  Cnt_Rate_Illegal;\r
87         u4Byte  Cnt_Crc8_fail;\r
88         u4Byte  Cnt_Mcs_fail;\r
89         u4Byte  Cnt_Ofdm_fail;\r
90         u4Byte  Cnt_Ofdm_fail_pre;      //For RTL8881A\r
91         u4Byte  Cnt_Cck_fail;\r
92         u4Byte  Cnt_all;\r
93         u4Byte  Cnt_Fast_Fsync;\r
94         u4Byte  Cnt_SB_Search_fail;\r
95         u4Byte  Cnt_OFDM_CCA;\r
96         u4Byte  Cnt_CCK_CCA;\r
97         u4Byte  Cnt_CCA_all;\r
98         u4Byte  Cnt_BW_USC;     //Gary\r
99         u4Byte  Cnt_BW_LSC;     //Gary\r
100 }FALSE_ALARM_STATISTICS, *PFALSE_ALARM_STATISTICS;\r
101 \r
102 typedef enum tag_Dynamic_Init_Gain_Operation_Type_Definition\r
103 {\r
104         DIG_TYPE_THRESH_HIGH    = 0,\r
105         DIG_TYPE_THRESH_LOW     = 1,\r
106         DIG_TYPE_BACKOFF                = 2,\r
107         DIG_TYPE_RX_GAIN_MIN    = 3,\r
108         DIG_TYPE_RX_GAIN_MAX    = 4,\r
109         DIG_TYPE_ENABLE                 = 5,\r
110         DIG_TYPE_DISABLE                = 6,    \r
111         DIG_OP_TYPE_MAX\r
112 }DM_DIG_OP_E;\r
113 \r
114 typedef enum tag_ODM_PauseDIG_Type {\r
115         ODM_PAUSE_DIG                   =       BIT0,\r
116         ODM_RESUME_DIG                  =       BIT1\r
117 } ODM_Pause_DIG_TYPE;\r
118 \r
119 typedef enum tag_ODM_PauseCCKPD_Type {\r
120         ODM_PAUSE_CCKPD         =       BIT0,\r
121         ODM_RESUME_CCKPD        =       BIT1\r
122 } ODM_Pause_CCKPD_TYPE;\r
123 \r
124 /*\r
125 typedef enum tag_CCK_Packet_Detection_Threshold_Type_Definition\r
126 {\r
127         CCK_PD_STAGE_LowRssi = 0,\r
128         CCK_PD_STAGE_HighRssi = 1,\r
129         CCK_PD_STAGE_MAX = 3,\r
130 }DM_CCK_PDTH_E;\r
131 \r
132 typedef enum tag_DIG_EXT_PORT_ALGO_Definition\r
133 {\r
134         DIG_EXT_PORT_STAGE_0 = 0,\r
135         DIG_EXT_PORT_STAGE_1 = 1,\r
136         DIG_EXT_PORT_STAGE_2 = 2,\r
137         DIG_EXT_PORT_STAGE_3 = 3,\r
138         DIG_EXT_PORT_STAGE_MAX = 4,\r
139 }DM_DIG_EXT_PORT_ALG_E;\r
140 \r
141 typedef enum tag_DIG_Connect_Definition\r
142 {\r
143         DIG_STA_DISCONNECT = 0, \r
144         DIG_STA_CONNECT = 1,\r
145         DIG_STA_BEFORE_CONNECT = 2,\r
146         DIG_MultiSTA_DISCONNECT = 3,\r
147         DIG_MultiSTA_CONNECT = 4,\r
148         DIG_CONNECT_MAX\r
149 }DM_DIG_CONNECT_E;\r
150 \r
151 \r
152 #define DM_MultiSTA_InitGainChangeNotify(Event) {DM_DigTable.CurMultiSTAConnectState = Event;}\r
153 \r
154 #define DM_MultiSTA_InitGainChangeNotify_CONNECT(_ADAPTER)      \\r
155         DM_MultiSTA_InitGainChangeNotify(DIG_MultiSTA_CONNECT)\r
156 \r
157 #define DM_MultiSTA_InitGainChangeNotify_DISCONNECT(_ADAPTER)   \\r
158         DM_MultiSTA_InitGainChangeNotify(DIG_MultiSTA_DISCONNECT)\r
159 */\r
160 #define         DM_DIG_THRESH_HIGH                      40\r
161 #define         DM_DIG_THRESH_LOW                       35\r
162 \r
163 #define         DM_FALSEALARM_THRESH_LOW        400\r
164 #define         DM_FALSEALARM_THRESH_HIGH       1000\r
165 \r
166 #define         DM_DIG_MAX_NIC                          0x3e\r
167 #define         DM_DIG_MIN_NIC                          0x1e //0x22//0x1c\r
168 #define         DM_DIG_MAX_OF_MIN_NIC           0x3e\r
169 \r
170 #define         DM_DIG_MAX_AP                                   0x3e\r
171 #define         DM_DIG_MIN_AP                                   0x1c\r
172 #define         DM_DIG_MAX_OF_MIN                       0x2A    //0x32\r
173 #define         DM_DIG_MIN_AP_DFS                               0x20\r
174 \r
175 #define         DM_DIG_MAX_NIC_HP                       0x46\r
176 #define         DM_DIG_MIN_NIC_HP                               0x2e\r
177 \r
178 #define         DM_DIG_MAX_AP_HP                                0x42\r
179 #define         DM_DIG_MIN_AP_HP                                0x30\r
180 \r
181 #if (DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
182 #define         DM_DIG_MAX_AP_COVERAGR          0x26\r
183 #define         DM_DIG_MIN_AP_COVERAGE          0x1c\r
184 #define         DM_DIG_MAX_OF_MIN_COVERAGE      0x22\r
185 \r
186 #define         DM_DIG_TP_Target_TH0                    500\r
187 #define         DM_DIG_TP_Target_TH1                    1000\r
188 #define         DM_DIG_TP_Training_Period               10\r
189 #endif\r
190 \r
191 //vivi 92c&92d has different definition, 20110504\r
192 //this is for 92c\r
193 #if (DM_ODM_SUPPORT_TYPE & ODM_CE)\r
194         #ifdef CONFIG_SPECIAL_SETTING_FOR_FUNAI_TV\r
195         #define         DM_DIG_FA_TH0                           0x80//0x20\r
196         #else\r
197         #define         DM_DIG_FA_TH0                           0x200//0x20\r
198         #endif\r
199 #else\r
200         #define         DM_DIG_FA_TH0                           0x200//0x20\r
201 #endif\r
202 \r
203 #define         DM_DIG_FA_TH1                                   0x300\r
204 #define         DM_DIG_FA_TH2                                   0x400\r
205 //this is for 92d\r
206 #define         DM_DIG_FA_TH0_92D                               0x100\r
207 #define         DM_DIG_FA_TH1_92D                               0x400\r
208 #define         DM_DIG_FA_TH2_92D                               0x600\r
209 \r
210 #define         DM_DIG_BACKOFF_MAX                      12\r
211 #define         DM_DIG_BACKOFF_MIN                      -4\r
212 #define         DM_DIG_BACKOFF_DEFAULT          10\r
213 \r
214 #define                 DM_DIG_FA_TH0_LPS                               4 //-> 4 in lps\r
215 #define                 DM_DIG_FA_TH1_LPS                               15 //-> 15 lps\r
216 #define                 DM_DIG_FA_TH2_LPS                               30 //-> 30 lps\r
217 #define                 RSSI_OFFSET_DIG                         0x05\r
218 \r
219 VOID\r
220 ODM_ChangeDynamicInitGainThresh(\r
221         IN              PVOID                                   pDM_VOID,\r
222         IN              u4Byte                                          DM_Type,\r
223         IN              u4Byte                                  DM_Value\r
224         );\r
225 \r
226 VOID\r
227 odm_NHMCounterStatisticsInit(\r
228         IN              PVOID                                   pDM_VOID\r
229         );\r
230 \r
231 VOID\r
232 odm_NHMCounterStatistics(\r
233         IN              PVOID                                   pDM_VOID\r
234         );\r
235 \r
236 VOID\r
237 odm_NHMBBInit(\r
238         IN              PVOID                                   pDM_VOID\r
239 );\r
240 \r
241 VOID\r
242 odm_NHMBB(\r
243         IN              PVOID                                   pDM_VOID\r
244 );\r
245 \r
246 VOID\r
247 odm_NHMCounterStatisticsReset(\r
248         IN              PVOID                   pDM_VOID\r
249 );\r
250 \r
251 VOID\r
252 odm_GetNHMCounterStatistics(\r
253         IN              PVOID                   pDM_VOID\r
254 );\r
255 \r
256 VOID\r
257 odm_SearchPwdBLowerBound(\r
258         IN              PVOID                                   pDM_VOID,\r
259         IN              u1Byte                                  IGI_target\r
260 );\r
261 \r
262 VOID \r
263 odm_AdaptivityInit(\r
264         IN              PVOID                                   pDM_VOID\r
265         );\r
266 \r
267 VOID\r
268 odm_Adaptivity(\r
269         IN              PVOID                                   pDM_VOID,\r
270         IN              u1Byte                                  IGI\r
271         );\r
272 \r
273 VOID\r
274 ODM_Write_DIG(\r
275         IN              PVOID                                   pDM_VOID,       \r
276         IN              u1Byte                                  CurrentIGI\r
277         );\r
278 \r
279 VOID\r
280 odm_PauseDIG(\r
281         IN              PVOID                                   pDM_VOID,\r
282         IN              ODM_Pause_DIG_TYPE              PauseType,\r
283         IN              u1Byte                                  IGIValue\r
284         );\r
285 \r
286 VOID\r
287 odm_DIGInit(\r
288         IN              PVOID                                   pDM_VOID\r
289         );\r
290 \r
291 VOID    \r
292 odm_DIG(\r
293         IN              PVOID                                   pDM_VOID\r
294         );\r
295 \r
296 VOID\r
297 odm_DIGbyRSSI_LPS(\r
298         IN              PVOID                                   pDM_VOID\r
299         );\r
300 \r
301 VOID\r
302 odm_DigForBtHsMode(\r
303         IN              PVOID                                   pDM_VOID\r
304         );\r
305 \r
306 VOID 
307 odm_FalseAlarmCounterStatistics(
308         IN              PVOID                                   pDM_VOID\r
309         );
310 \r
311 VOID\r
312 odm_FAThresholdCheck(\r
313         IN              PVOID                                   pDM_VOID,\r
314         IN              BOOLEAN                                 bDFSBand,\r
315         IN              BOOLEAN                                 bPerformance,\r
316         IN              u4Byte                                  RxTp,\r
317         IN              u4Byte                                  TxTp,\r
318         OUT             u4Byte*                                 dm_FA_thres\r
319         );\r
320
321 u1Byte\r
322 odm_ForbiddenIGICheck(\r
323         IN              PVOID                                   pDM_VOID,\r
324         IN              u1Byte                                  DIG_Dynamic_MIN,\r
325         IN              u1Byte                                  CurrentIGI\r
326         );\r
327 \r
328 VOID\r
329 odm_InbandNoiseCalculate (      \r
330         IN              PVOID                                   pDM_VOID\r
331         );\r
332
333 BOOLEAN 
334 odm_DigAbort(
335         IN              PVOID                                   pDM_VOID\r
336         );
337
338 VOID\r
339 odm_PauseCCKPacketDetection(\r
340         IN              PVOID                                   pDM_VOID,\r
341         IN              ODM_Pause_CCKPD_TYPE    PauseType,\r
342         IN              u1Byte                                  CCKPDThreshold\r
343         );\r
344
345 VOID 
346 odm_CCKPacketDetectionThresh(
347         IN              PVOID                                   pDM_VOID\r
348         );
349
350 VOID \r
351 ODM_Write_CCK_CCA_Thres(\r
352         IN              PVOID                                   pDM_VOID, \r
353         IN              u1Byte                                  CurCCK_CCAThres\r
354         );\r
355 \r
356 #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)\r
357 \r
358 VOID\r
359 odm_DisableEDCCA(\r
360         IN              PVOID                                   pDM_VOID\r
361 );\r
362 \r
363 VOID\r
364 odm_DynamicEDCCA(\r
365         IN              PVOID                                   pDM_VOID\r
366 );\r
367 \r
368 VOID
369 odm_MPT_DIGCallback(
370         PRT_TIMER                                               pTimer\r
371 );
372
373 VOID
374 odm_MPT_DIGWorkItemCallback(
375     IN          PVOID                                   pContext\r
376     );
377 \r
378 #endif\r
379 \r
380 #if (DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
381 VOID\r
382 odm_MPT_DIGCallback(\r
383         IN              PVOID                                   pDM_VOID\r
384 );\r
385 #endif\r
386 \r
387 #if (DM_ODM_SUPPORT_TYPE != ODM_CE)\r
388 VOID\r
389 ODM_MPT_DIG(\r
390         IN              PVOID                                   pDM_VOID\r
391 );\r
392 #endif\r
393 \r
394 \r
395 #endif\r