net: wireless: rockchip_wlan: add rtl8723cs support
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / rtl8723cs / include / hal_com_phycfg.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 #ifndef __HAL_COM_PHYCFG_H__
21 #define __HAL_COM_PHYCFG_H__
22
23 #define         PathA                                           0x0     /* Useless */
24 #define         PathB                   0x1
25 #define         PathC                   0x2
26 #define         PathD                   0x3
27
28 typedef enum _RF_TX_NUM {
29         RF_1TX = 0,
30         RF_2TX,
31         RF_3TX,
32         RF_4TX,
33         RF_MAX_TX_NUM,
34         RF_TX_NUM_NONIMPLEMENT,
35 } RF_TX_NUM;
36
37 #define MAX_POWER_INDEX         0x3F
38
39 typedef enum _REGULATION_TXPWR_LMT {
40         TXPWR_LMT_FCC = 0,
41         TXPWR_LMT_MKK = 1,
42         TXPWR_LMT_ETSI = 2,
43         TXPWR_LMT_WW = 3,
44
45         TXPWR_LMT_MAX_REGULATION_NUM = 4
46 } REGULATION_TXPWR_LMT;
47
48 #define TX_PWR_LMT_REF_VHT_FROM_HT      BIT0
49 #define TX_PWR_LMT_REF_HT_FROM_VHT      BIT1
50
51 /*------------------------------Define structure----------------------------*/
52 typedef struct _BB_REGISTER_DEFINITION {
53         u32 rfintfs;                    /* set software control: */
54         /*              0x870~0x877[8 bytes] */
55
56         u32 rfintfo;                    /* output data: */
57         /*              0x860~0x86f [16 bytes] */
58
59         u32 rfintfe;                    /* output enable: */
60         /*              0x860~0x86f [16 bytes] */
61
62         u32 rf3wireOffset;      /* LSSI data: */
63         /*              0x840~0x84f [16 bytes] */
64
65         u32 rfHSSIPara2;        /* wire parameter control2 :  */
66         /*              0x824~0x827,0x82c~0x82f, 0x834~0x837, 0x83c~0x83f [16 bytes] */
67
68         u32 rfLSSIReadBack;     /* LSSI RF readback data SI mode */
69         /*              0x8a0~0x8af [16 bytes] */
70
71         u32 rfLSSIReadBackPi;   /* LSSI RF readback data PI mode 0x8b8-8bc for Path A and B */
72
73 } BB_REGISTER_DEFINITION_T, *PBB_REGISTER_DEFINITION_T;
74
75
76 /* ---------------------------------------------------------------------- */
77 u8
78 PHY_GetTxPowerByRateBase(
79         IN      PADAPTER                Adapter,
80         IN      u8                              Band,
81         IN      u8                              RfPath,
82         IN      u8                              TxNum,
83         IN      RATE_SECTION    RateSection
84 );
85
86 VOID
87 PHY_GetRateValuesOfTxPowerByRate(
88         IN      PADAPTER pAdapter,
89         IN      u32 RegAddr,
90         IN      u32 BitMask,
91         IN      u32 Value,
92         OUT     u8 *Rate,
93         OUT     s8 *PwrByRateVal,
94         OUT     u8 *RateNum
95 );
96
97 u8
98 PHY_GetRateIndexOfTxPowerByRate(
99         IN      u8      Rate
100 );
101
102 VOID
103 phy_set_tx_power_index_by_rate_section(
104         IN      PADAPTER                pAdapter,
105         IN      u8                              RFPath,
106         IN      u8                              Channel,
107         IN      u8                              RateSection
108 );
109
110 s8
111 _PHY_GetTxPowerByRate(
112         IN      PADAPTER        pAdapter,
113         IN      u8                      Band,
114         IN      u8                      RFPath,
115         IN      u8                      TxNum,
116         IN      u8                      RateIndex
117 );
118
119 s8
120 PHY_GetTxPowerByRate(
121         IN      PADAPTER        pAdapter,
122         IN      u8                      Band,
123         IN      u8                      RFPath,
124         IN      u8                      TxNum,
125         IN      u8                      RateIndex
126 );
127
128 #ifdef CONFIG_PHYDM_POWERTRACK_BY_TSSI
129 s8
130 PHY_GetTxPowerByRateOriginal(
131         IN      PADAPTER        pAdapter,
132         IN      u8                      Band,
133         IN      u8                      RFPath,
134         IN      u8                      TxNum,
135         IN      u8                      Rate
136 );
137 #endif
138
139 VOID
140 PHY_SetTxPowerByRate(
141         IN      PADAPTER        pAdapter,
142         IN      u8                      Band,
143         IN      u8                      RFPath,
144         IN      u8                      TxNum,
145         IN      u8                      Rate,
146         IN      s8                      Value
147 );
148
149 VOID
150 phy_set_tx_power_level_by_path(
151         IN      PADAPTER        Adapter,
152         IN      u8                      channel,
153         IN      u8                      path
154 );
155
156 VOID
157 PHY_SetTxPowerIndexByRateArray(
158         IN      PADAPTER                pAdapter,
159         IN      u8                              RFPath,
160         IN      CHANNEL_WIDTH   BandWidth,
161         IN      u8                              Channel,
162         IN      u8                              *Rates,
163         IN      u8                              RateArraySize
164 );
165
166 VOID
167 PHY_InitTxPowerByRate(
168         IN      PADAPTER        pAdapter
169 );
170
171 VOID
172 phy_store_tx_power_by_rate(
173         IN      PADAPTER        pAdapter,
174         IN      u32                     Band,
175         IN      u32                     RfPath,
176         IN      u32                     TxNum,
177         IN      u32                     RegAddr,
178         IN      u32                     BitMask,
179         IN      u32                     Data
180 );
181
182 VOID
183 PHY_TxPowerByRateConfiguration(
184         IN  PADAPTER                    pAdapter
185 );
186
187 u8
188 PHY_GetTxPowerIndexBase(
189         IN      PADAPTER                pAdapter,
190         IN      u8                              RFPath,
191         IN      u8                              Rate,
192         IN      CHANNEL_WIDTH   BandWidth,
193         IN      u8                              Channel,
194         OUT PBOOLEAN            bIn24G
195 );
196
197 s8
198 PHY_GetTxPowerLimit(
199         IN      PADAPTER                Adapter,
200         IN      u32                             RegPwrTblSel,
201         IN      BAND_TYPE               Band,
202         IN      CHANNEL_WIDTH   Bandwidth,
203         IN      u8                              RfPath,
204         IN      u8                              DataRate,
205         IN      u8                              Channel
206 );
207
208 s8
209 PHY_GetTxPowerLimit_no_sc(
210         IN      PADAPTER                        Adapter,
211         IN      u32                                     RegPwrTblSel,
212         IN      BAND_TYPE                       Band,
213         IN      CHANNEL_WIDTH           Bandwidth,
214         IN      u8                                      RfPath,
215         IN      u8                                      DataRate,
216         IN      u8                                      Channel
217 );
218
219 #ifdef CONFIG_PHYDM_POWERTRACK_BY_TSSI
220 s8
221 PHY_GetTxPowerLimitOriginal(
222         IN      PADAPTER                Adapter,
223         IN      u32                             RegPwrTblSel,
224         IN      BAND_TYPE               Band,
225         IN      CHANNEL_WIDTH   Bandwidth,
226         IN      u8                              RfPath,
227         IN      u8                              DataRate,
228         IN      u8                              Channel
229 );
230 #endif
231
232 VOID
233 PHY_ConvertTxPowerLimitToPowerIndex(
234         IN      PADAPTER                        Adapter
235 );
236
237 VOID
238 PHY_InitTxPowerLimit(
239         IN      PADAPTER                        Adapter
240 );
241
242 s8
243 PHY_GetTxPowerTrackingOffset(
244         PADAPTER        pAdapter,
245         u8                      Rate,
246         u8                      RFPath
247 );
248
249 struct txpwr_idx_comp {
250         u8 base;
251         s8 by_rate;
252         s8 limit;
253         s8 tpt;
254         s8 ebias;
255 };
256
257 u8
258 phy_get_tx_power_index(
259         IN      PADAPTER                        pAdapter,
260         IN      u8                                      RFPath,
261         IN      u8                                      Rate,
262         IN      CHANNEL_WIDTH           BandWidth,
263         IN      u8                                      Channel
264 );
265
266 VOID
267 PHY_SetTxPowerIndex(
268         IN      PADAPTER                pAdapter,
269         IN      u32                             PowerIndex,
270         IN      u8                              RFPath,
271         IN      u8                              Rate
272 );
273
274 void dump_tx_power_idx_title(void *sel, _adapter *adapter);
275 void dump_tx_power_idx_by_path_rs(void *sel, _adapter *adapter, u8 rfpath, u8 rs);
276 void dump_tx_power_idx(void *sel, _adapter *adapter);
277
278 bool phy_is_tx_power_limit_needed(_adapter *adapter);
279 bool phy_is_tx_power_by_rate_needed(_adapter *adapter);
280 int phy_load_tx_power_by_rate(_adapter *adapter, u8 chk_file);
281 int phy_load_tx_power_limit(_adapter *adapter, u8 chk_file);
282 void phy_load_tx_power_ext_info(_adapter *adapter, u8 chk_file);
283 void phy_reload_tx_power_ext_info(_adapter *adapter);
284 void phy_reload_default_tx_power_ext_info(_adapter *adapter);
285
286 const struct map_t *hal_pg_txpwr_def_info(_adapter *adapter);
287
288 void dump_pg_txpwr_info_2g(void *sel, TxPowerInfo24G *txpwr_info, u8 rfpath_num, u8 max_tx_cnt);
289 void dump_pg_txpwr_info_5g(void *sel, TxPowerInfo5G *txpwr_info, u8 rfpath_num, u8 max_tx_cnt);
290
291 void dump_hal_txpwr_info_2g(void *sel, _adapter *adapter, u8 rfpath_num, u8 max_tx_cnt);
292 void dump_hal_txpwr_info_5g(void *sel, _adapter *adapter, u8 rfpath_num, u8 max_tx_cnt);
293
294 void hal_load_txpwr_info(
295         _adapter *adapter,
296         TxPowerInfo24G *pwr_info_2g,
297         TxPowerInfo5G *pwr_info_5g,
298         u8 *pg_data
299 );
300
301 void dump_tx_power_ext_info(void *sel, _adapter *adapter);
302 void dump_target_tx_power(void *sel, _adapter *adapter);
303 void dump_tx_power_by_rate(void *sel, _adapter *adapter);
304 void dump_tx_power_limit(void *sel, _adapter *adapter);
305
306 int rtw_get_phy_file_path(_adapter *adapter, const char *file_name);
307
308 #ifdef CONFIG_LOAD_PHY_PARA_FROM_FILE
309 #define MAC_FILE_FW_NIC                 "FW_NIC.bin"
310 #define MAC_FILE_FW_WW_IMG              "FW_WoWLAN.bin"
311 #define PHY_FILE_MAC_REG                "MAC_REG.txt"
312
313 #define PHY_FILE_AGC_TAB                "AGC_TAB.txt"
314 #define PHY_FILE_PHY_REG                "PHY_REG.txt"
315 #define PHY_FILE_PHY_REG_MP             "PHY_REG_MP.txt"
316 #define PHY_FILE_PHY_REG_PG             "PHY_REG_PG.txt"
317
318 #define PHY_FILE_RADIO_A                "RadioA.txt"
319 #define PHY_FILE_RADIO_B                "RadioB.txt"
320 #define PHY_FILE_RADIO_C                "RadioC.txt"
321 #define PHY_FILE_RADIO_D                "RadioD.txt"
322 #define PHY_FILE_TXPWR_TRACK    "TxPowerTrack.txt"
323 #define PHY_FILE_TXPWR_LMT              "TXPWR_LMT.txt"
324
325 #define PHY_FILE_WIFI_ANT_ISOLATION     "wifi_ant_isolation.txt"
326
327 #define MAX_PARA_FILE_BUF_LEN   25600
328
329 #define LOAD_MAC_PARA_FILE                              BIT0
330 #define LOAD_BB_PARA_FILE                                       BIT1
331 #define LOAD_BB_PG_PARA_FILE                            BIT2
332 #define LOAD_BB_MP_PARA_FILE                            BIT3
333 #define LOAD_RF_PARA_FILE                                       BIT4
334 #define LOAD_RF_TXPWR_TRACK_PARA_FILE   BIT5
335 #define LOAD_RF_TXPWR_LMT_PARA_FILE             BIT6
336
337 int phy_ConfigMACWithParaFile(IN PADAPTER       Adapter, IN char        *pFileName);
338 int phy_ConfigBBWithParaFile(IN PADAPTER        Adapter, IN char        *pFileName, IN u32      ConfigType);
339 int phy_ConfigBBWithPgParaFile(IN PADAPTER      Adapter, IN const char *pFileName);
340 int phy_ConfigBBWithMpParaFile(IN PADAPTER      Adapter, IN char        *pFileName);
341 int PHY_ConfigRFWithParaFile(IN PADAPTER        Adapter, IN char        *pFileName, IN u8       eRFPath);
342 int PHY_ConfigRFWithTxPwrTrackParaFile(IN PADAPTER      Adapter, IN char        *pFileName);
343 int PHY_ConfigRFWithPowerLimitTableParaFile(IN PADAPTER Adapter, IN const char *pFileName);
344 void phy_free_filebuf_mask(_adapter *padapter, u8 mask);
345 void phy_free_filebuf(_adapter *padapter);
346 #endif /* CONFIG_LOAD_PHY_PARA_FROM_FILE */
347
348 #endif /* __HAL_COMMON_H__ */