net: wireless: rockchip_wlan: add rtl8188eu support
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / rtl8188eu / hal / phydm / phydm_pathdiv.h
1 /******************************************************************************
2  *
3  * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
4  *                                        
5  * This program is free software; you can redistribute it and/or modify it
6  * under the terms of version 2 of the GNU General Public License as
7  * published by the Free Software Foundation.
8  *
9  * This program is distributed in the hope that it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12  * more details.
13  *
14  * You should have received a copy of the GNU General Public License along with
15  * this program; if not, write to the Free Software Foundation, Inc.,
16  * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
17  *
18  *
19  ******************************************************************************/
20  
21 #ifndef __PHYDMPATHDIV_H__
22 #define    __PHYDMPATHDIV_H__
23 /*#define PATHDIV_VERSION "2.0" //2014.11.04*/
24 #define PATHDIV_VERSION "3.0" /*2015.01.13 Dino*/
25
26 #if(defined(CONFIG_PATH_DIVERSITY))
27 #define USE_PATH_A_AS_DEFAULT_ANT   //for 8814 dynamic TX path selection
28
29 #define NUM_RESET_DTP_PERIOD 5
30 #define ANT_DECT_RSSI_TH 3 
31
32 #define PATH_A 1
33 #define PATH_B 2
34 #define PATH_C 3
35 #define PATH_D 4
36
37 #define PHYDM_AUTO_PATH 0
38 #define PHYDM_FIX_PATH          1
39
40 #define NUM_CHOOSE2_FROM4 6
41 #define NUM_CHOOSE3_FROM4 4
42
43
44 #define         PHYDM_A          BIT0
45 #define         PHYDM_B          BIT1
46 #define         PHYDM_C          BIT2
47 #define         PHYDM_D          BIT3
48 #define         PHYDM_AB         (BIT0 | BIT1)  // 0
49 #define         PHYDM_AC         (BIT0 | BIT2)  // 1
50 #define         PHYDM_AD         (BIT0 | BIT3)  // 2
51 #define         PHYDM_BC         (BIT1 | BIT2)  // 3
52 #define         PHYDM_BD         (BIT1 | BIT3)  // 4
53 #define         PHYDM_CD         (BIT2 | BIT3)  // 5
54
55 #define         PHYDM_ABC        (BIT0 | BIT1 | BIT2) /* 0*/
56 #define         PHYDM_ABD        (BIT0 | BIT1 | BIT3) /* 1*/
57 #define         PHYDM_ACD        (BIT0 | BIT2 | BIT3) /* 2*/
58 #define         PHYDM_BCD        (BIT1 | BIT2 | BIT3) /* 3*/
59
60 #define         PHYDM_ABCD       (BIT0 | BIT1 | BIT2 | BIT3)
61
62
63 typedef enum dtp_state
64 {
65         PHYDM_DTP_INIT=1,
66         PHYDM_DTP_RUNNING_1
67
68 }PHYDM_DTP_STATE;
69
70 typedef enum path_div_type
71 {
72         PHYDM_2R_PATH_DIV = 1,
73         PHYDM_4R_PATH_DIV = 2
74 }PHYDM_PATH_DIV_TYPE;
75
76 VOID
77 phydm_process_rssi_for_path_div(        
78         IN OUT          PVOID                   pDM_VOID,       
79         IN                      PVOID                   p_phy_info_void,
80         IN                      PVOID                   p_pkt_info_void
81         );
82
83 typedef struct _ODM_PATH_DIVERSITY_
84 {
85         u1Byte  RespTxPath;
86         u1Byte  PathSel[ODM_ASSOCIATE_ENTRY_NUM];
87         u4Byte  PathA_Sum[ODM_ASSOCIATE_ENTRY_NUM];
88         u4Byte  PathB_Sum[ODM_ASSOCIATE_ENTRY_NUM];
89         u2Byte  PathA_Cnt[ODM_ASSOCIATE_ENTRY_NUM];
90         u2Byte  PathB_Cnt[ODM_ASSOCIATE_ENTRY_NUM];
91         u1Byte  path_div_type;
92   #if RTL8814A_SUPPORT
93         
94         u4Byte  path_a_sum_all;
95         u4Byte  path_b_sum_all;
96         u4Byte  path_c_sum_all;
97         u4Byte  path_d_sum_all;
98
99         u4Byte  path_a_cnt_all;
100         u4Byte  path_b_cnt_all;
101         u4Byte  path_c_cnt_all;
102         u4Byte  path_d_cnt_all;
103         
104         u1Byte  dtp_period;
105         BOOLEAN bBecomeLinked;
106         BOOLEAN is_u3_mode;
107         u1Byte  num_tx_path;
108         u1Byte  default_path;
109         u1Byte  num_candidate;
110         u1Byte  ant_candidate_1;
111         u1Byte  ant_candidate_2;
112         u1Byte  ant_candidate_3;
113         u1Byte     dtp_state;
114         u1Byte  dtp_check_patha_counter;
115         BOOLEAN fix_path_bfer;
116         u1Byte  search_space_2[NUM_CHOOSE2_FROM4];
117         u1Byte  search_space_3[NUM_CHOOSE3_FROM4];
118         
119         u1Byte  pre_tx_path;
120         u1Byte  use_path_a_as_default_ant;
121         BOOLEAN is_pathA_exist;
122
123   #endif
124 }PATHDIV_T, *pPATHDIV_T;
125
126
127 #endif //#if(defined(CONFIG_PATH_DIVERSITY))
128
129 VOID
130 phydm_c2h_dtp_handler(
131          IN     PVOID   pDM_VOID,
132          IN     pu1Byte   CmdBuf,
133          IN     u1Byte  CmdLen
134         );
135
136 VOID
137 odm_PathDiversityInit(
138         IN      PVOID   pDM_VOID
139         );
140
141 VOID
142 odm_PathDiversity(
143         IN      PVOID   pDM_VOID
144         );
145
146 VOID
147 odm_pathdiv_debug(
148         IN              PVOID           pDM_VOID,
149         IN              u4Byte          *const dm_value,
150         IN              u4Byte          *_used,
151         OUT             char            *output,
152         IN              u4Byte          *_out_len
153         );
154
155
156
157 //1 [OLD IC]--------------------------------------------------------------------------------
158
159
160
161
162
163
164 #if(DM_ODM_SUPPORT_TYPE & (ODM_WIN)) 
165
166 //#define   PATHDIV_ENABLE       1
167 #define dm_PathDiv_RSSI_Check   ODM_PathDivChkPerPktRssi
168 #define PathDivCheckBeforeLink8192C     ODM_PathDiversityBeforeLink92C
169
170
171
172
173 typedef struct _PathDiv_Parameter_define_
174 {
175         u4Byte org_5g_RegE30;
176         u4Byte org_5g_RegC14;
177         u4Byte org_5g_RegCA0;
178         u4Byte swt_5g_RegE30;
179         u4Byte swt_5g_RegC14;
180         u4Byte swt_5g_RegCA0;
181         //for 2G IQK information
182         u4Byte org_2g_RegC80;
183         u4Byte org_2g_RegC4C;
184         u4Byte org_2g_RegC94;
185         u4Byte org_2g_RegC14;
186         u4Byte org_2g_RegCA0;
187
188         u4Byte swt_2g_RegC80;
189         u4Byte swt_2g_RegC4C;
190         u4Byte swt_2g_RegC94;
191         u4Byte swt_2g_RegC14;
192         u4Byte swt_2g_RegCA0;
193 }PATHDIV_PARA,*pPATHDIV_PARA;
194
195 VOID    
196 odm_PathDiversityInit_92C(
197         IN      PADAPTER        Adapter
198         );
199
200 VOID    
201 odm_2TPathDiversityInit_92C(
202         IN      PADAPTER        Adapter
203         );
204
205 VOID    
206 odm_1TPathDiversityInit_92C(    
207         IN      PADAPTER        Adapter
208         );
209
210 BOOLEAN
211 odm_IsConnected_92C(
212         IN      PADAPTER        Adapter
213         );
214
215 BOOLEAN 
216 ODM_PathDiversityBeforeLink92C(
217         //IN    PADAPTER        Adapter
218         IN              PDM_ODM_T               pDM_Odm
219         );
220
221 VOID    
222 odm_PathDiversityAfterLink_92C(
223         IN      PADAPTER        Adapter
224         );
225
226 VOID
227 odm_SetRespPath_92C(    
228         IN      PADAPTER        Adapter,        
229         IN      u1Byte  DefaultRespPath
230         );
231
232 VOID    
233 odm_OFDMTXPathDiversity_92C(
234         IN      PADAPTER        Adapter
235         );
236
237 VOID    
238 odm_CCKTXPathDiversity_92C(     
239         IN      PADAPTER        Adapter
240         );
241
242 VOID    
243 odm_ResetPathDiversity_92C(     
244         IN      PADAPTER        Adapter
245         );
246
247 VOID
248 odm_CCKTXPathDiversityCallback(
249         PRT_TIMER               pTimer
250         );
251
252 VOID
253 odm_CCKTXPathDiversityWorkItemCallback(
254         IN PVOID            pContext
255         );
256
257 VOID
258 odm_PathDivChkAntSwitchCallback(
259         PRT_TIMER               pTimer
260         );
261
262 VOID
263 odm_PathDivChkAntSwitchWorkitemCallback(
264         IN PVOID            pContext
265         );
266
267
268 VOID 
269 odm_PathDivChkAntSwitch(
270         PDM_ODM_T    pDM_Odm
271         );
272
273 VOID
274 ODM_CCKPathDiversityChkPerPktRssi(
275         PADAPTER                Adapter,
276         BOOLEAN                 bIsDefPort,
277         BOOLEAN                 bMatchBSSID,
278         PRT_WLAN_STA    pEntry,
279         PRT_RFD                 pRfd,
280         pu1Byte                 pDesc
281         );
282
283 VOID 
284 ODM_PathDivChkPerPktRssi(
285         PADAPTER                Adapter,
286         BOOLEAN                 bIsDefPort,
287         BOOLEAN                 bMatchBSSID,
288         PRT_WLAN_STA    pEntry,
289         PRT_RFD                 pRfd    
290         );
291
292 VOID
293 ODM_PathDivRestAfterLink(
294         IN      PDM_ODM_T               pDM_Odm
295         );
296
297 VOID
298 ODM_FillTXPathInTXDESC(
299                 IN      PADAPTER        Adapter,
300                 IN      PRT_TCB         pTcb,
301                 IN      pu1Byte         pDesc
302         );
303
304 VOID
305 odm_PathDivInit_92D(
306         IN      PDM_ODM_T       pDM_Odm
307         );
308
309 u1Byte
310 odm_SwAntDivSelectScanChnl(
311         IN      PADAPTER        Adapter
312         );
313
314 VOID
315 odm_SwAntDivConstructScanChnl(
316         IN      PADAPTER        Adapter,
317         IN      u1Byte          ScanChnl
318         );
319         
320  #endif       //#if(DM_ODM_SUPPORT_TYPE & (ODM_WIN)) 
321  
322  
323  #endif          //#ifndef  __ODMPATHDIV_H__
324