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