1 /******************************************************************************
3 * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
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.
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
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
19 ******************************************************************************/
20 #ifndef __HAL_COM_PHYCFG_H__
21 #define __HAL_COM_PHYCFG_H__
23 #define PathA 0x0 /* Useless */
28 typedef enum _RF_TX_NUM {
34 RF_TX_NUM_NONIMPLEMENT,
37 #define MAX_POWER_INDEX 0x3F
39 typedef enum _REGULATION_TXPWR_LMT {
45 TXPWR_LMT_MAX_REGULATION_NUM = 4
46 } REGULATION_TXPWR_LMT;
48 #define TX_PWR_LMT_REF_VHT_FROM_HT BIT0
49 #define TX_PWR_LMT_REF_HT_FROM_VHT BIT1
51 /*------------------------------Define structure----------------------------*/
52 typedef struct _BB_REGISTER_DEFINITION {
53 u32 rfintfs; /* set software control: */
54 /* 0x870~0x877[8 bytes] */
56 u32 rfintfo; /* output data: */
57 /* 0x860~0x86f [16 bytes] */
59 u32 rfintfe; /* output enable: */
60 /* 0x860~0x86f [16 bytes] */
62 u32 rf3wireOffset; /* LSSI data: */
63 /* 0x840~0x84f [16 bytes] */
65 u32 rfHSSIPara2; /* wire parameter control2 : */
66 /* 0x824~0x827,0x82c~0x82f, 0x834~0x837, 0x83c~0x83f [16 bytes] */
68 u32 rfLSSIReadBack; /* LSSI RF readback data SI mode */
69 /* 0x8a0~0x8af [16 bytes] */
71 u32 rfLSSIReadBackPi; /* LSSI RF readback data PI mode 0x8b8-8bc for Path A and B */
73 } BB_REGISTER_DEFINITION_T, *PBB_REGISTER_DEFINITION_T;
76 /* ---------------------------------------------------------------------- */
78 PHY_GetTxPowerByRateBase(
83 IN RATE_SECTION RateSection
86 #ifdef TX_POWER_BY_RATE_OLD
88 PHY_GetRateSectionIndexOfTxPowerByRate(
93 #endif /* TX_POWER_BY_RATE_OLD */
96 PHY_GetRateValuesOfTxPowerByRate(
102 OUT s8 *PwrByRateVal,
107 PHY_GetRateIndexOfTxPowerByRate(
112 PHY_SetTxPowerIndexByRateSection(
113 IN PADAPTER pAdapter,
120 _PHY_GetTxPowerByRate(
121 IN PADAPTER pAdapter,
129 PHY_GetTxPowerByRate(
130 IN PADAPTER pAdapter,
137 #ifdef CONFIG_PHYDM_POWERTRACK_BY_TSSI
139 PHY_GetTxPowerByRateOriginal(
140 IN PADAPTER pAdapter,
149 PHY_SetTxPowerByRate(
150 IN PADAPTER pAdapter,
159 PHY_SetTxPowerLevelByPath(
166 PHY_SetTxPowerIndexByRateArray(
167 IN PADAPTER pAdapter,
169 IN CHANNEL_WIDTH BandWidth,
176 PHY_InitTxPowerByRate(
181 PHY_StoreTxPowerByRate(
182 IN PADAPTER pAdapter,
192 PHY_TxPowerByRateConfiguration(
197 PHY_GetTxPowerIndexBase(
198 IN PADAPTER pAdapter,
201 IN CHANNEL_WIDTH BandWidth,
211 IN CHANNEL_WIDTH Bandwidth,
217 #ifdef CONFIG_PHYDM_POWERTRACK_BY_TSSI
219 PHY_GetTxPowerLimitOriginal(
223 IN CHANNEL_WIDTH Bandwidth,
231 PHY_ConvertTxPowerLimitToPowerIndex(
236 PHY_InitTxPowerLimit(
241 PHY_GetTxPowerTrackingOffset(
249 IN PADAPTER pAdapter,
252 IN CHANNEL_WIDTH BandWidth,
258 IN PADAPTER pAdapter,
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);
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);
277 int rtw_is_phy_file_readable(const char *hal_file_name);
279 #ifdef CONFIG_LOAD_PHY_PARA_FROM_FILE
280 #define MAX_PARA_FILE_BUF_LEN 25600
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
290 int phy_ConfigMACWithParaFile(IN PADAPTER Adapter, IN char *pFileName);
292 int phy_ConfigBBWithParaFile(IN PADAPTER Adapter, IN char *pFileName, IN u32 ConfigType);
294 int phy_ConfigBBWithPgParaFile(IN PADAPTER Adapter, IN const char *pFileName);
296 int phy_ConfigBBWithMpParaFile(IN PADAPTER Adapter, IN char *pFileName);
298 int PHY_ConfigRFWithParaFile(IN PADAPTER Adapter, IN char *pFileName, IN u8 eRFPath);
300 int PHY_ConfigRFWithTxPwrTrackParaFile(IN PADAPTER Adapter, IN char *pFileName);
302 int PHY_ConfigRFWithPowerLimitTableParaFile(IN PADAPTER Adapter, IN const char *pFileName);
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 */
308 #endif /* __HAL_COMMON_H__ */