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 ******************************************************************************/
21 #ifndef __HAL_PHY_RF_H__
22 #define __HAL_PHY_RF_H__
24 #include "phydm_powertracking_ap.h"
25 #if (RTL8814A_SUPPORT == 1)
26 #include "rtl8814a/phydm_iqk_8814a.h"
29 #if (RTL8822B_SUPPORT == 1)
30 #include "rtl8822b/phydm_iqk_8822b.h"
33 #if (RTL8821C_SUPPORT == 1)
34 #include "rtl8822b/phydm_iqk_8821c.h"
37 enum pwrtrack_method {
44 typedef void (*func_set_pwr)(void *, enum pwrtrack_method, u8, u8);
45 typedef void(*func_iqk)(void *, u8, u8, u8);
46 typedef void (*func_lck)(void *);
47 /* refine by YuChen for 8814A */
48 typedef void (*func_swing)(void *, u8 **, u8 **, u8 **, u8 **);
49 typedef void (*func_swing8814only)(void *, u8 **, u8 **, u8 **, u8 **);
50 typedef void (*func_all_swing)(void *, u8 **, u8 **, u8 **, u8 **, u8 **, u8 **, u8 **, u8 **);
53 struct _TXPWRTRACK_CFG {
54 u8 swing_table_size_cck;
55 u8 swing_table_size_ofdm;
58 u8 average_thermal_num;
61 func_set_pwr odm_tx_pwr_track_set_pwr;
63 func_lck phy_lc_calibrate;
64 func_swing get_delta_swing_table;
65 func_swing8814only get_delta_swing_table8814only;
66 func_all_swing get_delta_all_swing_table;
70 configure_txpower_track(
72 struct _TXPWRTRACK_CFG *p_config
77 odm_txpowertracking_callback_thermal_meter(
78 #if (DM_ODM_SUPPORT_TYPE & ODM_AP)
81 struct _ADAPTER *adapter
85 #if (RTL8192E_SUPPORT == 1)
87 odm_txpowertracking_callback_thermal_meter_92e(
88 #if (DM_ODM_SUPPORT_TYPE & ODM_AP)
91 struct _ADAPTER *adapter
96 #if (RTL8814A_SUPPORT == 1)
98 odm_txpowertracking_callback_thermal_meter_jaguar_series2(
99 #if (DM_ODM_SUPPORT_TYPE & ODM_AP)
102 struct _ADAPTER *adapter
106 #elif ODM_IC_11AC_SERIES_SUPPORT
108 odm_txpowertracking_callback_thermal_meter_jaguar_series(
109 #if (DM_ODM_SUPPORT_TYPE & ODM_AP)
112 struct _ADAPTER *adapter
116 #elif (RTL8197F_SUPPORT == 1 || RTL8822B_SUPPORT == 1)
118 odm_txpowertracking_callback_thermal_meter_jaguar_series3(
119 #if (DM_ODM_SUPPORT_TYPE & ODM_AP)
122 struct _ADAPTER *adapter
128 #define IS_CCK_RATE(_rate) (ODM_MGN_1M == _rate || _rate == ODM_MGN_2M || _rate == ODM_MGN_5_5M || _rate == ODM_MGN_11M)
131 #if (DM_ODM_SUPPORT_TYPE & ODM_WIN)
132 #define MAX_TOLERANCE 5
133 #define IQK_DELAY_TIME 1 /* ms */
136 * BB/MAC/RF other monitor API
139 void phy_set_monitor_mode8192c(struct _ADAPTER *p_adapter,
140 boolean is_enable_monitor_mode);
146 phy_iq_calibrate_8192c(struct _ADAPTER *p_adapter,
147 boolean is_recovery);
153 phy_lc_calibrate_8192c(struct _ADAPTER *p_adapter);
159 phy_ap_calibrate_8192c(struct _ADAPTER *p_adapter,
163 #define ODM_TARGET_CHNL_NUM_2G_5G 59
167 odm_reset_iqk_result(
171 odm_get_right_chnl_place_for_iqk(
175 void phydm_rf_init(void *p_dm_void);
176 void phydm_rf_watchdog(void *p_dm_void);
178 #endif /* #ifndef __HAL_PHY_RF_H__ */