net: wireless: rockchip: add rtl8822be pcie wifi driver
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / rtl8822be / 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 #ifdef TX_POWER_BY_RATE_OLD
87 u8
88 PHY_GetRateSectionIndexOfTxPowerByRate(
89         IN      PADAPTER        pAdapter,
90         IN      u32                     RegAddr,
91         IN      u32                     BitMask
92 );
93 #endif /* TX_POWER_BY_RATE_OLD */
94
95 VOID
96 PHY_GetRateValuesOfTxPowerByRate(
97         IN      PADAPTER pAdapter,
98         IN      u32 RegAddr,
99         IN      u32 BitMask,
100         IN      u32 Value,
101         OUT     u8 *Rate,
102         OUT     s8 *PwrByRateVal,
103         OUT     u8 *RateNum
104 );
105
106 u8
107 PHY_GetRateIndexOfTxPowerByRate(
108         IN      u8      Rate
109 );
110
111 VOID
112 PHY_SetTxPowerIndexByRateSection(
113         IN      PADAPTER                pAdapter,
114         IN      u8                              RFPath,
115         IN      u8                              Channel,
116         IN      u8                              RateSection
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 s8
129 PHY_GetTxPowerByRate(
130         IN      PADAPTER        pAdapter,
131         IN      u8                      Band,
132         IN      u8                      RFPath,
133         IN      u8                      TxNum,
134         IN      u8                      RateIndex
135 );
136
137 #ifdef CONFIG_PHYDM_POWERTRACK_BY_TSSI
138 s8
139 PHY_GetTxPowerByRateOriginal(
140         IN      PADAPTER        pAdapter,
141         IN      u8                      Band,
142         IN      u8                      RFPath,
143         IN      u8                      TxNum,
144         IN      u8                      Rate
145 );
146 #endif
147
148 VOID
149 PHY_SetTxPowerByRate(
150         IN      PADAPTER        pAdapter,
151         IN      u8                      Band,
152         IN      u8                      RFPath,
153         IN      u8                      TxNum,
154         IN      u8                      Rate,
155         IN      s8                      Value
156 );
157
158 VOID
159 PHY_SetTxPowerLevelByPath(
160         IN      PADAPTER        Adapter,
161         IN      u8                      channel,
162         IN      u8                      path
163 );
164
165 VOID
166 PHY_SetTxPowerIndexByRateArray(
167         IN      PADAPTER                pAdapter,
168         IN      u8                              RFPath,
169         IN      CHANNEL_WIDTH   BandWidth,
170         IN      u8                              Channel,
171         IN      u8                              *Rates,
172         IN      u8                              RateArraySize
173 );
174
175 VOID
176 PHY_InitTxPowerByRate(
177         IN      PADAPTER        pAdapter
178 );
179
180 VOID
181 PHY_StoreTxPowerByRate(
182         IN      PADAPTER        pAdapter,
183         IN      u32                     Band,
184         IN      u32                     RfPath,
185         IN      u32                     TxNum,
186         IN      u32                     RegAddr,
187         IN      u32                     BitMask,
188         IN      u32                     Data
189 );
190
191 VOID
192 PHY_TxPowerByRateConfiguration(
193         IN  PADAPTER                    pAdapter
194 );
195
196 u8
197 PHY_GetTxPowerIndexBase(
198         IN      PADAPTER                pAdapter,
199         IN      u8                              RFPath,
200         IN      u8                              Rate,
201         IN      CHANNEL_WIDTH   BandWidth,
202         IN      u8                              Channel,
203         OUT PBOOLEAN            bIn24G
204 );
205
206 s8
207 PHY_GetTxPowerLimit(
208         IN      PADAPTER                Adapter,
209         IN      u32                             RegPwrTblSel,
210         IN      BAND_TYPE               Band,
211         IN      CHANNEL_WIDTH   Bandwidth,
212         IN      u8                              RfPath,
213         IN      u8                              DataRate,
214         IN      u8                              Channel
215 );
216
217 #ifdef CONFIG_PHYDM_POWERTRACK_BY_TSSI
218 s8
219 PHY_GetTxPowerLimitOriginal(
220         IN      PADAPTER                Adapter,
221         IN      u32                             RegPwrTblSel,
222         IN      BAND_TYPE               Band,
223         IN      CHANNEL_WIDTH   Bandwidth,
224         IN      u8                              RfPath,
225         IN      u8                              DataRate,
226         IN      u8                              Channel
227 );
228 #endif
229
230 VOID
231 PHY_ConvertTxPowerLimitToPowerIndex(
232         IN      PADAPTER                        Adapter
233 );
234
235 VOID
236 PHY_InitTxPowerLimit(
237         IN      PADAPTER                        Adapter
238 );
239
240 s8
241 PHY_GetTxPowerTrackingOffset(
242         PADAPTER        pAdapter,
243         u8                      Rate,
244         u8                      RFPath
245 );
246
247 u8
248 PHY_GetTxPowerIndex(
249         IN      PADAPTER                        pAdapter,
250         IN      u8                                      RFPath,
251         IN      u8                                      Rate,
252         IN      CHANNEL_WIDTH           BandWidth,
253         IN      u8                                      Channel
254 );
255
256 VOID
257 PHY_SetTxPowerIndex(
258         IN      PADAPTER                pAdapter,
259         IN      u32                             PowerIndex,
260         IN      u8                              RFPath,
261         IN      u8                              Rate
262 );
263
264 bool phy_is_tx_power_limit_needed(_adapter *adapter);
265 bool phy_is_tx_power_by_rate_needed(_adapter *adapter);
266 int phy_load_tx_power_by_rate(_adapter *adapter, const char *hal_file_name, u8 force);
267 int phy_load_tx_power_limit(_adapter *adapter, const char *hal_file_name, u8 force);
268 void phy_load_tx_power_ext_info(_adapter *adapter, u8 chk_file, u8 force);
269 void phy_reload_tx_power_ext_info(_adapter *adapter);
270 void phy_reload_default_tx_power_ext_info(_adapter *adapter);
271
272 void dump_tx_power_ext_info(void *sel, _adapter *adapter);
273 void dump_target_tx_power(void *sel, _adapter *adapter);
274 void dump_tx_power_by_rate(void *sel, _adapter *adapter);
275 void dump_tx_power_limit(void *sel, _adapter *adapter);
276
277 int rtw_is_phy_file_readable(const char *hal_file_name);
278
279 #ifdef CONFIG_LOAD_PHY_PARA_FROM_FILE
280         #define MAX_PARA_FILE_BUF_LEN   25600
281
282         #define LOAD_MAC_PARA_FILE                              BIT0
283         #define LOAD_BB_PARA_FILE                                       BIT1
284         #define LOAD_BB_PG_PARA_FILE                            BIT2
285         #define LOAD_BB_MP_PARA_FILE                            BIT3
286         #define LOAD_RF_PARA_FILE                                       BIT4
287         #define LOAD_RF_TXPWR_TRACK_PARA_FILE   BIT5
288         #define LOAD_RF_TXPWR_LMT_PARA_FILE             BIT6
289
290         int phy_ConfigMACWithParaFile(IN PADAPTER       Adapter, IN char        *pFileName);
291
292         int phy_ConfigBBWithParaFile(IN PADAPTER        Adapter, IN char        *pFileName, IN u32      ConfigType);
293
294         int phy_ConfigBBWithPgParaFile(IN PADAPTER      Adapter, IN const char *pFileName);
295
296         int phy_ConfigBBWithMpParaFile(IN PADAPTER      Adapter, IN char        *pFileName);
297
298         int PHY_ConfigRFWithParaFile(IN PADAPTER        Adapter, IN char        *pFileName, IN u8       eRFPath);
299
300         int PHY_ConfigRFWithTxPwrTrackParaFile(IN PADAPTER      Adapter, IN char        *pFileName);
301
302         int PHY_ConfigRFWithPowerLimitTableParaFile(IN PADAPTER Adapter, IN const char *pFileName);
303
304         void phy_free_filebuf_mask(_adapter *padapter, u8 mask);
305         void phy_free_filebuf(_adapter *padapter);
306 #endif /* CONFIG_LOAD_PHY_PARA_FROM_FILE */
307
308 #endif /* __HAL_COMMON_H__ */