video: rockchip: tve: support rk3228
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / rtl8723bu / 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 #if (DM_ODM_SUPPORT_TYPE & (ODM_WIN|ODM_CE))\r
125 typedef enum _tag_ODM_REGULATION_Type {\r
126         REGULATION_FCC = 0,\r
127         REGULATION_MKK = 1,\r
128         REGULATION_ETSI = 2,\r
129         REGULATION_WW = 3,      \r
130         \r
131         MAX_REGULATION_NUM = 4\r
132 } ODM_REGULATION_TYPE;\r
133 #endif\r
134 \r
135 /*\r
136 typedef enum tag_CCK_Packet_Detection_Threshold_Type_Definition\r
137 {\r
138         CCK_PD_STAGE_LowRssi = 0,\r
139         CCK_PD_STAGE_HighRssi = 1,\r
140         CCK_PD_STAGE_MAX = 3,\r
141 }DM_CCK_PDTH_E;\r
142 \r
143 typedef enum tag_DIG_EXT_PORT_ALGO_Definition\r
144 {\r
145         DIG_EXT_PORT_STAGE_0 = 0,\r
146         DIG_EXT_PORT_STAGE_1 = 1,\r
147         DIG_EXT_PORT_STAGE_2 = 2,\r
148         DIG_EXT_PORT_STAGE_3 = 3,\r
149         DIG_EXT_PORT_STAGE_MAX = 4,\r
150 }DM_DIG_EXT_PORT_ALG_E;\r
151 \r
152 typedef enum tag_DIG_Connect_Definition\r
153 {\r
154         DIG_STA_DISCONNECT = 0, \r
155         DIG_STA_CONNECT = 1,\r
156         DIG_STA_BEFORE_CONNECT = 2,\r
157         DIG_MultiSTA_DISCONNECT = 3,\r
158         DIG_MultiSTA_CONNECT = 4,\r
159         DIG_CONNECT_MAX\r
160 }DM_DIG_CONNECT_E;\r
161 \r
162 \r
163 #define DM_MultiSTA_InitGainChangeNotify(Event) {DM_DigTable.CurMultiSTAConnectState = Event;}\r
164 \r
165 #define DM_MultiSTA_InitGainChangeNotify_CONNECT(_ADAPTER)      \\r
166         DM_MultiSTA_InitGainChangeNotify(DIG_MultiSTA_CONNECT)\r
167 \r
168 #define DM_MultiSTA_InitGainChangeNotify_DISCONNECT(_ADAPTER)   \\r
169         DM_MultiSTA_InitGainChangeNotify(DIG_MultiSTA_DISCONNECT)\r
170 */\r
171 #define         DM_DIG_THRESH_HIGH                      40\r
172 #define         DM_DIG_THRESH_LOW                       35\r
173 \r
174 #define         DM_FALSEALARM_THRESH_LOW        400\r
175 #define         DM_FALSEALARM_THRESH_HIGH       1000\r
176 \r
177 #define         DM_DIG_MAX_NIC                          0x3e\r
178 #define         DM_DIG_MIN_NIC                          0x1e //0x22//0x1c\r
179 #define         DM_DIG_MAX_OF_MIN_NIC           0x3e\r
180 \r
181 #define         DM_DIG_MAX_AP                                   0x3e\r
182 #define         DM_DIG_MIN_AP                                   0x1c\r
183 #define         DM_DIG_MAX_OF_MIN                       0x2A    //0x32\r
184 #define         DM_DIG_MIN_AP_DFS                               0x20\r
185 \r
186 #define         DM_DIG_MAX_NIC_HP                       0x46\r
187 #define         DM_DIG_MIN_NIC_HP                               0x2e\r
188 \r
189 #define         DM_DIG_MAX_AP_HP                                0x42\r
190 #define         DM_DIG_MIN_AP_HP                                0x30\r
191 \r
192 #if (DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
193 #define         DM_DIG_MAX_AP_COVERAGR          0x26\r
194 #define         DM_DIG_MIN_AP_COVERAGE          0x1c\r
195 #define         DM_DIG_MAX_OF_MIN_COVERAGE      0x22\r
196 \r
197 #define         DM_DIG_TP_Target_TH0                    500\r
198 #define         DM_DIG_TP_Target_TH1                    1000\r
199 #define         DM_DIG_TP_Training_Period               10\r
200 #endif\r
201 \r
202 //vivi 92c&92d has different definition, 20110504\r
203 //this is for 92c\r
204 #if (DM_ODM_SUPPORT_TYPE & ODM_CE)\r
205         #ifdef CONFIG_SPECIAL_SETTING_FOR_FUNAI_TV\r
206         #define         DM_DIG_FA_TH0                           0x80//0x20\r
207         #else\r
208         #define         DM_DIG_FA_TH0                           0x200//0x20\r
209         #endif\r
210 #else\r
211         #define         DM_DIG_FA_TH0                           0x200//0x20\r
212 #endif\r
213 \r
214 #define         DM_DIG_FA_TH1                                   0x300\r
215 #define         DM_DIG_FA_TH2                                   0x400\r
216 //this is for 92d\r
217 #define         DM_DIG_FA_TH0_92D                               0x100\r
218 #define         DM_DIG_FA_TH1_92D                               0x400\r
219 #define         DM_DIG_FA_TH2_92D                               0x600\r
220 \r
221 #define         DM_DIG_BACKOFF_MAX                      12\r
222 #define         DM_DIG_BACKOFF_MIN                      -4\r
223 #define         DM_DIG_BACKOFF_DEFAULT          10\r
224 \r
225 #define                 DM_DIG_FA_TH0_LPS                               4 //-> 4 in lps\r
226 #define                 DM_DIG_FA_TH1_LPS                               15 //-> 15 lps\r
227 #define                 DM_DIG_FA_TH2_LPS                               30 //-> 30 lps\r
228 #define                 RSSI_OFFSET_DIG                         0x05\r
229 \r
230 VOID\r
231 ODM_ChangeDynamicInitGainThresh(\r
232         IN              PVOID                                   pDM_VOID,\r
233         IN              u4Byte                                          DM_Type,\r
234         IN              u4Byte                                  DM_Value\r
235         );\r
236 \r
237 VOID\r
238 odm_NHMCounterStatisticsInit(\r
239         IN              PVOID                                   pDM_VOID\r
240         );\r
241 \r
242 VOID\r
243 odm_NHMCounterStatistics(\r
244         IN              PVOID                                   pDM_VOID\r
245         );\r
246 \r
247 VOID\r
248 odm_NHMBBInit(\r
249         IN              PVOID                                   pDM_VOID\r
250 );\r
251 \r
252 VOID\r
253 odm_NHMBB(\r
254         IN              PVOID                                   pDM_VOID\r
255 );\r
256 \r
257 VOID\r
258 odm_NHMCounterStatisticsReset(\r
259         IN              PVOID                   pDM_VOID\r
260 );\r
261 \r
262 VOID\r
263 odm_GetNHMCounterStatistics(\r
264         IN              PVOID                   pDM_VOID\r
265 );\r
266 \r
267 VOID\r
268 odm_SearchPwdBLowerBound(\r
269         IN              PVOID                                   pDM_VOID,\r
270         IN              u1Byte                                  IGI_target\r
271 );\r
272 \r
273 VOID \r
274 odm_AdaptivityInit(\r
275         IN              PVOID                                   pDM_VOID\r
276         );\r
277 \r
278 VOID\r
279 odm_Adaptivity(\r
280         IN              PVOID                                   pDM_VOID,\r
281         IN              u1Byte                                  IGI\r
282         );\r
283 \r
284 VOID\r
285 ODM_Write_DIG(\r
286         IN              PVOID                                   pDM_VOID,       \r
287         IN              u1Byte                                  CurrentIGI\r
288         );\r
289 \r
290 VOID\r
291 odm_PauseDIG(\r
292         IN              PVOID                                   pDM_VOID,\r
293         IN              ODM_Pause_DIG_TYPE              PauseType,\r
294         IN              u1Byte                                  IGIValue\r
295         );\r
296 \r
297 VOID\r
298 odm_DIGInit(\r
299         IN              PVOID                                   pDM_VOID\r
300         );\r
301 \r
302 VOID    \r
303 odm_DIG(\r
304         IN              PVOID                                   pDM_VOID\r
305         );\r
306 \r
307 VOID\r
308 odm_DIGbyRSSI_LPS(\r
309         IN              PVOID                                   pDM_VOID\r
310         );\r
311 \r
312 VOID\r
313 odm_DigForBtHsMode(\r
314         IN              PVOID                                   pDM_VOID\r
315         );\r
316 \r
317 VOID 
318 odm_FalseAlarmCounterStatistics(
319         IN              PVOID                                   pDM_VOID\r
320         );
321 \r
322 VOID\r
323 odm_FAThresholdCheck(\r
324         IN              PVOID                                   pDM_VOID,\r
325         IN              BOOLEAN                                 bDFSBand,\r
326         IN              BOOLEAN                                 bPerformance,\r
327         IN              u4Byte                                  RxTp,\r
328         IN              u4Byte                                  TxTp,\r
329         OUT             u4Byte*                                 dm_FA_thres\r
330         );\r
331
332 u1Byte\r
333 odm_ForbiddenIGICheck(\r
334         IN              PVOID                                   pDM_VOID,\r
335         IN              u1Byte                                  DIG_Dynamic_MIN,\r
336         IN              u1Byte                                  CurrentIGI\r
337         );\r
338 \r
339 VOID\r
340 odm_InbandNoiseCalculate (      \r
341         IN              PVOID                                   pDM_VOID\r
342         );\r
343
344 BOOLEAN 
345 odm_DigAbort(
346         IN              PVOID                                   pDM_VOID\r
347         );
348
349 VOID\r
350 odm_PauseCCKPacketDetection(\r
351         IN              PVOID                                   pDM_VOID,\r
352         IN              ODM_Pause_CCKPD_TYPE    PauseType,\r
353         IN              u1Byte                                  CCKPDThreshold\r
354         );\r
355
356 VOID 
357 odm_CCKPacketDetectionThresh(
358         IN              PVOID                                   pDM_VOID\r
359         );
360
361 VOID \r
362 ODM_Write_CCK_CCA_Thres(\r
363         IN              PVOID                                   pDM_VOID, \r
364         IN              u1Byte                                  CurCCK_CCAThres\r
365         );\r
366 \r
367 #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)\r
368 \r
369 VOID\r
370 odm_DisableEDCCA(\r
371         IN              PVOID                                   pDM_VOID\r
372 );\r
373 \r
374 VOID\r
375 odm_DynamicEDCCA(\r
376         IN              PVOID                                   pDM_VOID\r
377 );\r
378 \r
379 VOID
380 odm_MPT_DIGCallback(
381         PRT_TIMER                                               pTimer\r
382 );
383
384 VOID
385 odm_MPT_DIGWorkItemCallback(
386     IN          PVOID                                   pContext\r
387     );
388 \r
389 #endif\r
390 \r
391 #if (DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
392 VOID\r
393 odm_MPT_DIGCallback(\r
394         IN              PVOID                                   pDM_VOID\r
395 );\r
396 #endif\r
397 \r
398 #if (DM_ODM_SUPPORT_TYPE != ODM_CE)\r
399 VOID\r
400 ODM_MPT_DIG(\r
401         IN              PVOID                                   pDM_VOID\r
402 );\r
403 #endif\r
404 \r
405 \r
406 #endif\r