1 /****************************************************************************** 2 * 3 * Copyright(c) 2019 Realtek Corporation. 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 *****************************************************************************/ 15 #ifndef _HAL_API_RF_H_ 16 #define _HAL_API_RF_H_ 17 18 enum halrf_thermal_status{ 19 HALRF_THERMAL_STATUS_BELOW_THRESHOLD, 20 HALRF_THERMAL_STATUS_STAY_THRESHOLD, 21 HALRF_THERMAL_STATUS_ABOVE_THRESHOLD, 22 HALRF_THERMAL_STATUS_UNKNOWN 23 }; 24 25 enum rtw_hal_status 26 rtw_hal_rf_init(struct rtw_phl_com_t *phl_com, 27 struct hal_info_t *hal_info); 28 29 void rtw_hal_rf_deinit(struct rtw_phl_com_t *phl_com, 30 struct hal_info_t *hal_info); 31 32 void rtw_hal_init_rf_reg(struct rtw_phl_com_t *phl_com, void *hal); 33 34 enum rtw_hal_status rtw_hal_rf_get_pwrtrack(struct hal_info_t *hal_info, u8 *txpwr_track_status); 35 36 void rtw_hal_rf_dm_init(struct hal_info_t *hal_info); 37 38 enum rtw_hal_status rtw_hal_rf_set_pwrtrack(struct hal_info_t *hal_info, u8 phy_idx, u8 txpwr_track_status); 39 40 void rtw_hal_rf_dm_init(struct hal_info_t *hal_info); 41 42 enum rtw_hal_status rtw_hal_rf_get_thermal(struct hal_info_t *hal_info, u8 rf_path, u8 *thermal); 43 44 enum rtw_hal_status rtw_hal_rf_set_tssi(struct hal_info_t *hal_info, u8 phy_idx, u8 rf_path, u32 tssi_de); 45 46 enum rtw_hal_status rtw_hal_rf_get_tssi(struct hal_info_t *hal_info, u8 phy_idx, u8 rf_path, u32 *tssi); 47 48 enum rtw_hal_status rtw_hal_rf_get_online_tssi_de(struct hal_info_t *hal_info, u8 phy_idx, u8 rf_path,s32 dbm, s32 pout, s32 *tssi_de); 49 50 enum rtw_hal_status rtw_hal_rf_set_tssi_offset(struct hal_info_t *hal_info, u8 phy_idx, u32 tssi_de_offset, u8 rf_path); 51 52 enum rtw_hal_status rtw_hal_rf_set_continuous_tx(struct hal_info_t *hal_info); 53 54 enum rtw_hal_status 55 rtw_hal_rf_set_singletone_tx(struct hal_info_t *hal_info, 56 u8 is_on,enum rf_path path); 57 58 enum rtw_hal_status rtw_hal_rf_set_suppression_tx(struct hal_info_t *hal_info); 59 60 enum rtw_hal_status rtw_hal_rf_chl_rfk_trigger(void *hal, u8 phy_idx, u8 force); 61 62 63 enum rtw_hal_status rtw_hal_rf_dack_trigger(struct hal_info_t *hal_info, 64 u8 force); 65 66 67 enum rtw_hal_status rtw_hal_rf_iqk_trigger(struct hal_info_t *hal_info, 68 u8 phy_idx, u8 force); 69 70 71 enum rtw_hal_status rtw_hal_rf_lck_trigger(struct hal_info_t *hal_info); 72 73 74 enum rtw_hal_status rtw_hal_rf_dpk_trigger(struct hal_info_t *hal_info, 75 u8 phy_idx, u8 force); 76 77 78 enum rtw_hal_status rtw_hal_rf_tssi_trigger(struct hal_info_t *hal_info, 79 u8 phy_idx); 80 81 82 enum rtw_hal_status rtw_hal_rf_gapk_trigger(struct hal_info_t *hal_info, 83 u8 phy_idx, u8 force); 84 85 86 enum rtw_hal_status rtw_hal_rf_set_capability_dack(struct hal_info_t *hal_info, 87 u8 enable); 88 89 90 enum rtw_hal_status rtw_hal_rf_set_capability_iqk(struct hal_info_t *hal_info, 91 u8 enable); 92 93 94 enum rtw_hal_status rtw_hal_rf_set_capability_dpk(struct hal_info_t *hal_info, 95 u8 enable); 96 97 98 enum rtw_hal_status rtw_hal_rf_set_capability_dpk_track(struct hal_info_t *hal_info, 99 u8 enable); 100 101 102 103 enum rtw_hal_status rtw_hal_rf_set_capability_tssi(struct hal_info_t *hal_info, 104 u8 enable); 105 106 107 enum rtw_hal_status rtw_hal_rf_set_capability_gapk(struct hal_info_t *hal_info, 108 u8 enable); 109 110 111 enum rtw_hal_status rtw_hal_rf_get_capability_dack(struct hal_info_t *hal_info, 112 u8 *enable); 113 114 115 enum rtw_hal_status rtw_hal_rf_get_capability_iqk(struct hal_info_t *hal_info, 116 u8 *enable); 117 118 119 enum rtw_hal_status rtw_hal_rf_get_capability_dpk(struct hal_info_t *hal_info, 120 u8 *enable); 121 122 123 enum rtw_hal_status rtw_hal_rf_get_capability_dpk_track(struct hal_info_t *hal_info, 124 u8 *enable); 125 126 127 enum rtw_hal_status rtw_hal_rf_get_capability_tssi(struct hal_info_t *hal_info, 128 u8 *enable); 129 130 131 enum rtw_hal_status rtw_hal_rf_get_capability_gapk(struct hal_info_t *hal_info, 132 u8 *enable); 133 134 enum rtw_hal_status rtw_hal_rf_get_tssi_de_value(struct hal_info_t *hal_info); 135 136 enum rtw_hal_status rtw_hal_rf_set_tssi_de_tx_verify(struct hal_info_t *hal_info); 137 138 enum rtw_hal_status rtw_hal_rf_get_txpwr_final_abs(struct hal_info_t *hal_info); 139 140 int rtw_hal_rf_get_predefined_pw_lmt_regu_type_from_str(const char *str); 141 const char * const *rtw_hal_rf_get_predefined_pw_lmt_regu_type_str_array(u8 *num); 142 const char *rtw_hal_rf_get_pw_lmt_regu_type_str(struct hal_info_t *hal_info, enum band_type band); 143 144 bool 145 rtw_hal_rf_proc_cmd(struct hal_info_t *hal_info, 146 struct rtw_proc_cmd *incmd, 147 char *output, u32 out_len); 148 149 enum rtw_hal_status 150 rtw_hal_rf_recover(struct hal_info_t *hal_info, u32 offset, u32 val, enum rf_path path); 151 152 enum rtw_hal_status rtw_hal_rf_watchdog(struct hal_info_t *hal_info); 153 154 enum rtw_hal_status 155 rtw_hal_rf_set_power(struct hal_info_t *hal_info, enum phl_phy_idx phy, 156 enum phl_pwr_table pwr_table); 157 158 enum rtw_hal_status rtw_hal_rf_set_gain_offset(struct hal_info_t *hal_info, u8 cur_phy_idx, 159 s8 offset, u8 rf_path); 160 161 enum rtw_hal_status rtw_hal_rf_trigger_dpk_tracking(struct hal_info_t *hal_info); 162 163 enum rtw_hal_status 164 rtw_hal_rf_get_default_rfe_type(struct rtw_hal_com_t *hal_com); 165 166 enum rtw_hal_status 167 rtw_hal_rf_get_default_xtal(struct rtw_hal_com_t *hal_com); 168 169 170 enum rtw_hal_status rtw_hal_rf_set_tssi_avg(struct hal_info_t *hal_info, u8 cur_phy_idx, 171 s32 xdbm); 172 void 173 rtw_hal_rf_do_tssi_scan(struct hal_info_t *hal_ionfo, u8 cur_phy_idx); 174 175 enum rtw_hal_status 176 rtw_hal_rf_update_ext_pwr_lmt_table(struct hal_info_t *hal_info); 177 178 enum rtw_hal_status 179 rtw_hal_rf_config_radio_to_fw(struct hal_info_t *hal_info); 180 181 bool 182 rtw_hal_rf_check_efuse_data(struct rtw_hal_com_t *hal_com, enum phl_phy_idx phy_idx); 183 184 void 185 rtw_hal_rf_disconnect_notify(void *hal, struct rtw_chan_def *chandef); 186 187 bool 188 rtw_hal_rf_check_mcc_ch(void *hal, struct rtw_chan_def *chandef); 189 190 void 191 rtw_hal_rf_dpk_switch(void *hal, bool enable); 192 193 void 194 rtw_hal_rf_tssi_config(void *hal, enum phl_phy_idx phy_idx, bool enable); 195 196 197 enum rtw_hal_status 198 rtw_hal_rf_set_ch_bw(struct hal_info_t *hal_info, enum phl_phy_idx phy, u8 center_ch, 199 enum band_type band, enum channel_width bw); 200 201 void 202 rtw_hal_rf_get_efuse_ex(struct rtw_hal_com_t *hal_com, enum phl_phy_idx phy_idx); 203 204 205 /* PSD */ 206 enum rtw_hal_status rtw_hal_rf_psd_init(struct hal_info_t *hal_info, u8 cur_phy_idx, 207 u8 path, u8 iq_path, u32 avg, u32 fft); 208 209 enum rtw_hal_status rtw_hal_rf_psd_restore(struct hal_info_t *hal_info, u8 cur_phy_idx); 210 211 enum rtw_hal_status rtw_hal_rf_psd_get_point_data(struct hal_info_t *hal_info, u8 cur_phy_idx, 212 s32 point, u32 *value); 213 214 enum rtw_hal_status rtw_hal_rf_psd_query(struct hal_info_t *hal_info, u8 cur_phy_idx, 215 u32 point, u32 start_point, u32 stop_point, u32 *outbuf); 216 217 void rtw_hal_rf_rx_ant(struct hal_info_t *hal_info, /*enum halrf_ant*/ u8 ant); 218 219 enum halrf_thermal_status 220 rtw_hal_rf_get_ther_protected_threshold( 221 struct hal_info_t *hal_info 222 ); 223 224 void rtw_hal_rf_notification(struct hal_info_t *hal_info, 225 enum phl_msg_evt_id event, 226 enum phl_phy_idx phy_idx); 227 228 void rtw_hal_rf_cmd_notification(struct hal_info_t *hal_info, 229 void *hal_cmd, 230 enum phl_phy_idx phy_idx); 231 232 #endif /*_HAL_API_RF_H_*/ 233