1e88e11fef8ee99b7796f2bc503b6f59444eaddb
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / rtl8723bs / hal / OUTSRC / phydm_AntDiv.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 __PHYDMANTDIV_H__\r
22 #define    __PHYDMANTDIV_H__\r
23 \r
24 #define ANTDIV_VERSION  "1.0"\r
25 \r
26 #define ANT1_2G 0 // = ANT2_5G\r
27 #define ANT2_2G 1 // = ANT1_5G\r
28 \r
29 //Antenna Diversty Control Type\r
30 #define ODM_AUTO_ANT    0\r
31 #define ODM_FIX_MAIN_ANT        1\r
32 #define ODM_FIX_AUX_ANT 2\r
33 \r
34 #define TX_BY_REG       0\r
35 \r
36 #if (DM_ODM_SUPPORT_TYPE != ODM_AP)\r
37 #define ODM_RTL8881A 0   //Just for windows driver to jointly use ODM-driver\r
38 #endif\r
39 \r
40 #define ODM_ANTDIV_SUPPORT              (ODM_RTL8188E|ODM_RTL8192E|ODM_RTL8723B|ODM_RTL8821|ODM_RTL8881A|ODM_RTL8812)\r
41 #define ODM_N_ANTDIV_SUPPORT            (ODM_RTL8188E|ODM_RTL8192E|ODM_RTL8723B)\r
42 #define ODM_AC_ANTDIV_SUPPORT           (ODM_RTL8821|ODM_RTL8881A|ODM_RTL8812)\r
43 #define ODM_SMART_ANT_SUPPORT           (ODM_RTL8188E|ODM_RTL8192E)\r
44 \r
45 #define ODM_OLD_IC_ANTDIV_SUPPORT               (ODM_RTL8723A|ODM_RTL8192C|ODM_RTL8192D)\r
46 \r
47 #define ODM_ANTDIV_2G_SUPPORT_IC                        (ODM_RTL8188E|ODM_RTL8192E|ODM_RTL8723B|ODM_RTL8881A)\r
48 #define ODM_ANTDIV_5G_SUPPORT_IC                        (ODM_RTL8821|ODM_RTL8881A|ODM_RTL8812)\r
49 #define ODM_ANTDIV_2G   BIT0\r
50 #define ODM_ANTDIV_5G   BIT1\r
51 \r
52 #define ANTDIV_ON 1\r
53 #define ANTDIV_OFF 0\r
54 \r
55 #define INIT_ANTDIV_TIMMER 0\r
56 #define CANCEL_ANTDIV_TIMMER 1\r
57 #define RELEASE_ANTDIV_TIMMER 2\r
58 \r
59 VOID\r
60 ODM_StopAntennaSwitchDm(\r
61         IN      PDM_ODM_T       pDM_Odm\r
62         );\r
63 VOID\r
64 ODM_SetAntConfig(\r
65         IN      PDM_ODM_T       pDM_Odm,\r
66         IN      u1Byte          antSetting      // 0=A, 1=B, 2=C, ....\r
67         );\r
68 \r
69 \r
70 \r
71 #define SwAntDivRestAfterLink   ODM_SwAntDivRestAfterLink\r
72 VOID ODM_SwAntDivRestAfterLink( IN      PDM_ODM_T       pDM_Odm);\r
73 \r
74 #if (defined(CONFIG_HW_ANTENNA_DIVERSITY))\r
75 \r
76 VOID\r
77 ODM_UpdateRxIdleAnt(\r
78         IN              PDM_ODM_T               pDM_Odm, \r
79         IN               u1Byte                 Ant\r
80 );\r
81 \r
82 VOID\r
83 odm_AntselStatistics(\r
84         IN              PDM_ODM_T               pDM_Odm,\r
85         IN              u1Byte                  antsel_tr_mux,\r
86         IN              u4Byte                  MacId,\r
87         IN              u4Byte                  RxPWDBAll\r
88 );\r
89 \r
90 #if (RTL8723B_SUPPORT == 1)||(RTL8821A_SUPPORT == 1)\r
91 #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)\r
92 VOID\r
93 ODM_SW_AntDiv_Callback(\r
94         IN      PRT_TIMER                       pTimer\r
95 );\r
96 \r
97 VOID\r
98 ODM_SW_AntDiv_WorkitemCallback(\r
99     IN PVOID            pContext\r
100     );\r
101 \r
102 \r
103 #elif (DM_ODM_SUPPORT_TYPE == ODM_CE)\r
104 \r
105 VOID\r
106 ODM_SW_AntDiv_Callback(void *FunctionContext);\r
107 \r
108 #endif\r
109 \r
110 #if (DM_ODM_SUPPORT_TYPE & (ODM_WIN|ODM_CE))\r
111 VOID\r
112 odm_S0S1_SwAntDivByCtrlFrame(\r
113         IN              PDM_ODM_T               pDM_Odm,\r
114         IN              u1Byte                  Step\r
115         );\r
116 \r
117 VOID\r
118 odm_AntselStatisticsOfCtrlFrame(\r
119         IN              PDM_ODM_T               pDM_Odm,\r
120         IN              u1Byte                  antsel_tr_mux,\r
121         IN              u4Byte                  RxPWDBAll\r
122 );\r
123 \r
124 VOID\r
125 odm_S0S1_SwAntDivByCtrlFrame_ProcessRSSI(\r
126         IN              PDM_ODM_T                               pDM_Odm,\r
127         IN              PODM_PHY_INFO_T         pPhyInfo,\r
128         IN              PODM_PACKET_INFO_T              pPktinfo\r
129         );\r
130 \r
131 #endif  //#if (DM_ODM_SUPPORT_TYPE == ODM_WIN)\r
132 #endif\r
133 \r
134 #if(RTL8188E_SUPPORT == 1  || RTL8192E_SUPPORT == 1)\r
135 #if ( !(DM_ODM_SUPPORT_TYPE == ODM_CE))\r
136 VOID\r
137 odm_FastAntTraining(\r
138         IN              PDM_ODM_T               pDM_Odm\r
139 );\r
140 \r
141 VOID\r
142 odm_FastAntTrainingCallback(\r
143         IN              PDM_ODM_T               pDM_Odm\r
144 );\r
145 \r
146 VOID\r
147 odm_FastAntTrainingWorkItemCallback(\r
148         IN              PDM_ODM_T               pDM_Odm\r
149 );\r
150 #endif\r
151 #endif\r
152 \r
153 VOID\r
154 ODM_AntDivInit(\r
155         IN               PDM_ODM_T              pDM_Odm \r
156 );\r
157 \r
158 VOID\r
159 ODM_AntDivReset(\r
160         IN              PDM_ODM_T               pDM_Odm \r
161 );\r
162 \r
163 VOID\r
164 ODM_AntDiv(\r
165         IN              PDM_ODM_T               pDM_Odm\r
166 );\r
167 \r
168 VOID\r
169 ODM_Process_RSSIForAntDiv(      \r
170         IN OUT  PDM_ODM_T                                       pDM_Odm,\r
171         IN              PODM_PHY_INFO_T                         pPhyInfo,\r
172         IN              PODM_PACKET_INFO_T                      pPktinfo\r
173 );\r
174 \r
175 #if (DM_ODM_SUPPORT_TYPE & (ODM_WIN|ODM_CE))\r
176 VOID\r
177 ODM_SetTxAntByTxInfo(\r
178         IN              PDM_ODM_T               pDM_Odm,\r
179         IN              pu1Byte                 pDesc,\r
180         IN              u1Byte                  macId   \r
181 );\r
182 \r
183 #else// (DM_ODM_SUPPORT_TYPE == ODM_AP)\r
184 VOID\r
185 ODM_SetTxAntByTxInfo(\r
186         //IN            PDM_ODM_T               pDM_Odm,\r
187         struct  rtl8192cd_priv          *priv,\r
188         struct  tx_desc                 *pdesc,\r
189         struct  tx_insn                 *txcfg,\r
190         unsigned short                  aid     \r
191 );\r
192 \r
193 #endif\r
194 \r
195 \r
196 VOID\r
197 ODM_AntDiv_Config(\r
198         IN              PDM_ODM_T               pDM_Odm\r
199 );\r
200 \r
201 \r
202 VOID\r
203 ODM_UpdateRxIdleAnt_8723B(\r
204         IN              PDM_ODM_T               pDM_Odm,\r
205         IN              u1Byte                  Ant,\r
206         IN              u4Byte                  DefaultAnt, \r
207         IN              u4Byte                  OptionalAnt\r
208 );\r
209 \r
210 VOID\r
211 ODM_AntDivTimers(\r
212         IN PDM_ODM_T    pDM_Odm,\r
213         IN u1Byte                       state\r
214 );\r
215 \r
216 #endif //#if (defined(CONFIG_HW_ANTENNA_DIVERSITY))\r
217 #endif //#ifndef        __ODMANTDIV_H__\r