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_BB_H_ 16 #define _HAL_API_BB_H_ 17 enum phl_phy_idx rtw_hal_bb_band_to_phy_idx(struct rtw_hal_com_t *hal_com, u8 band_idx); 18 void rtw_hal_bb_dfs_en(struct hal_info_t *hal_info, bool en); 19 void rtw_hal_bb_tssi_cont_en(struct hal_info_t *hal_info, bool en, enum rf_path path); 20 void rtw_hal_bb_adc_en(struct hal_info_t *hal_info,bool en); 21 void rtw_hal_bb_reset_en(struct hal_info_t *hal_info,bool en, enum phl_phy_idx phy_idx); 22 23 bool rtw_hal_bb_proc_cmd(struct hal_info_t *hal_info, 24 struct rtw_proc_cmd *incmd, 25 char *output, u32 out_len); 26 27 enum rtw_hal_status rtw_hal_bb_watchdog(struct hal_info_t *hal_info, u8 is_lps); 28 enum rtw_hal_status rtw_hal_bb_simple_watchdog(struct hal_info_t *hal_info, u8 io_en); 29 30 void rtw_hal_bb_fw_edcca(struct hal_info_t *hal_info); 31 32 void rtw_hal_bb_reset(struct hal_info_t *hal_info); 33 34 void rtw_hal_bb_dm_init(struct hal_info_t *hal_info); 35 36 void rtw_hal_bb_dm_deinit(struct rtw_phl_com_t *phl_com, struct hal_info_t *hal_info); 37 38 enum rtw_hal_status rtw_hal_bb_ctrl_rx_cca(struct rtw_hal_com_t *hal_com, 39 bool cca_en, enum phl_phy_idx phy_idx); 40 enum rtw_hal_status rtw_hal_bb_ctrl_dbcc(struct hal_info_t *hal_info, bool dbcc_en); 41 enum rtw_hal_status rtw_hal_bb_cfg_dbcc(struct hal_info_t *hal_info, bool dbcc_en); 42 43 u32 rtw_hal_bb_init(struct rtw_phl_com_t *phl_com, 44 struct hal_info_t *hal_info); 45 46 void rtw_hal_bb_deinit(struct rtw_phl_com_t *phl_com, 47 struct hal_info_t *hal_info); 48 49 void rtw_hal_init_bb_reg(struct hal_info_t *hal_info); 50 51 u32 rtw_hal_read_rf_reg(struct rtw_hal_com_t *hal_com, 52 enum rf_path path, u32 addr, u32 mask); 53 54 bool rtw_hal_write_rf_reg(struct rtw_hal_com_t *hal_com, 55 enum rf_path path, u32 addr, u32 mask, u32 data); 56 57 u32 rtw_hal_read_bb_reg(struct rtw_hal_com_t *hal_com, 58 u32 addr, u32 mask); 59 60 bool rtw_hal_write_bb_reg(struct rtw_hal_com_t *hal_com, 61 u32 addr, u32 mask, u32 data); 62 63 enum rtw_hal_status 64 rtw_hal_bb_stainfo_init(struct hal_info_t *hal_info, 65 struct rtw_phl_stainfo_t *sta); 66 enum rtw_hal_status 67 rtw_hal_bb_stainfo_deinit(struct hal_info_t *hal_info, 68 struct rtw_phl_stainfo_t *sta); 69 70 enum rtw_hal_status 71 rtw_hal_bb_stainfo_add(struct hal_info_t *hal_info, 72 struct rtw_phl_stainfo_t *sta); 73 enum rtw_hal_status 74 rtw_hal_bb_stainfo_delete(struct hal_info_t *hal_info, 75 struct rtw_phl_stainfo_t *sta); 76 void rtw_hal_bb_media_status_update(struct hal_info_t *hal_info, 77 struct rtw_phl_stainfo_t *sta, bool is_connected); 78 enum rtw_hal_status 79 rtw_hal_bb_upt_ramask(struct hal_info_t *hal_info, 80 struct rtw_phl_stainfo_t *sta); 81 enum rtw_hal_status 82 rtw_hal_bb_ra_update(struct hal_info_t *hal_info, 83 struct rtw_phl_stainfo_t *sta); 84 enum rtw_hal_status 85 rtw_hal_bb_ra_register(struct hal_info_t *hal_info, 86 struct rtw_phl_stainfo_t *sta); 87 enum rtw_hal_status 88 rtw_hal_bb_ra_deregister(struct hal_info_t *hal_info, 89 struct rtw_phl_stainfo_t *sta); 90 u8 91 rtw_hal_bb_get_arfr_idx(struct hal_info_t *hal_info, 92 struct rtw_phl_stainfo_t *sta); 93 94 enum rtw_hal_status 95 rtw_hal_bb_set_ch_bw(struct hal_info_t *hal_info, 96 enum phl_phy_idx phy_idx, 97 u8 pri_ch, 98 u8 central_ch_seg0, 99 u8 central_ch_seg1, 100 enum band_type band, 101 enum channel_width bw); 102 #ifdef CONFIG_PHL_CUSTOM_FEATURE 103 enum rtw_hal_status 104 rtw_hal_bb_set_pop_en(struct hal_info_t *hal_info, 105 bool en, 106 enum phl_phy_idx phy_idx); 107 108 bool 109 rtw_hal_bb_query_pop_en(struct hal_info_t *hal_info, 110 enum phl_phy_idx phy_idx); 111 112 enum rtw_hal_status 113 rtw_hal_bb_set_pkt_detect_thold(struct hal_info_t *hal_info, u32 bound); 114 115 u8 116 rtw_hal_bb_query_pkt_detect_thold(struct hal_info_t *hal_info, 117 bool get_en_info, 118 enum phl_phy_idx phy_idx); 119 #endif 120 #ifdef CONFIG_RTW_ACS 121 void rtw_hal_bb_acs_mntr_trigger(struct hal_info_t *hal_info, u16 monitor_time); 122 enum rtw_hal_status rtw_hal_bb_acs_mntr_result(struct hal_info_t *hal_info, void *rpt); 123 #endif /* CONFIG_RTW_ACS */ 124 #ifdef CONFIG_PHL_DFS 125 enum rtw_hal_status 126 rtw_hal_bb_dfs_rpt_cfg(struct hal_info_t *hal_info, bool dfs_en); 127 bool 128 rtw_hal_bb_radar_detect(struct hal_info_t *hal_info, 129 struct hal_dfs_rpt *hal_dfs); 130 131 #endif 132 133 #ifdef CONFIG_PHL_CHANNEL_INFO 134 enum rtw_hal_status 135 rtw_hal_bb_ch_info_parsing(struct hal_info_t *hal_info, 136 u8 *addr, u32 len, u8 *rpt_buf, struct ch_rpt_hdr_info *ch_hdr_rpt, 137 struct phy_info_rpt *phy_rpt, struct ch_info_drv_rpt *drv); 138 139 void 140 rtw_hal_bb_chan_info_cfg(struct hal_info_t *hal_info, struct chinfo_bbcr_cfg *bbcr); 141 #endif /* CONFIG_PHL_CHANNEL_INFO */ 142 143 enum rtw_hal_status rtw_hal_bb_get_rx_ok(struct hal_info_t *hal_info, u8 cur_phy_idx, u32 *rx_ok); 144 145 enum rtw_hal_status rtw_hal_bb_get_rx_crc(struct hal_info_t *hal_info, u8 cur_phy_idx, u32 *rx_crc_err); 146 147 enum rtw_hal_status rtw_hal_bb_set_reset_cnt(void *hal); 148 149 enum rtw_hal_status rtw_hal_bb_set_pwr_index(void *hal, u16 pwr_idx, enum rf_path tx_path, bool is_cck); 150 151 enum rtw_hal_status rtw_hal_bb_get_pwr_index(void *hal, u16 *pwr_idx, enum rf_path tx_path, bool is_cck); 152 153 enum rtw_hal_status 154 rtw_hal_bb_parse_phy_sts(void *hal, void *ppdu_sts, 155 struct rtw_phl_rx_pkt *phl_rx, u8 is_su); 156 157 enum rtw_hal_status rtw_hal_bb_get_tx_ok(void *hal, u8 cur_phy_idx, u32 *tx_ok); 158 159 enum rtw_hal_status rtw_hal_bb_get_txpwr_ref(struct hal_info_t *hal_info, u8 is_cck, u8 tx_path, s16 *txpwr_ref); 160 161 enum rtw_hal_status rtw_hal_bb_get_rssi(struct hal_info_t *hal_info, enum rf_path rx_path, u8 *rssi); 162 163 enum rtw_hal_status rtw_hal_bb_get_rssi_ex(struct hal_info_t *hal_info, enum rf_path rx_path, s16 *rssi, u8 cur_phy_idx); 164 165 enum rtw_hal_status rtw_hal_bb_get_rxevm(struct hal_info_t *hal_info, u8 user, u8 strm, u8 rxevm_table, u8 *rx_evm); 166 167 enum rtw_hal_status rtw_hal_bb_trigger_rxevm(struct hal_info_t *hal_info, u8 cur_phy_idx, 168 u32 *phy0_user0_rxevm, u32 *phy0_user1_rxevm, u32 *phy0_user2_rxevm, u32 *phy0_user3_rxevm, 169 u32 *phy1_user0_rxevm, u32 *phy1_user1_rxevm, u32 *phy1_user2_rxevm, u32 *phy1_user3_rxevm); 170 171 enum rtw_hal_status rtw_hal_bb_set_txsc(struct hal_info_t *hal_info, u8 txsc, 172 enum phl_phy_idx phy_idx); 173 u32 rtw_hal_bb_process_c2h(void *hal, struct rtw_c2h_info *c2h); 174 175 #ifdef CONFIG_DBCC_SUPPORT 176 enum rtw_hal_status 177 rtw_hal_phy_dbcc_pre_cfg(struct hal_info_t *hal_info, 178 struct rtw_phl_com_t *phl_com, bool dbcc_en); 179 180 enum rtw_hal_status 181 rtw_hal_phy_dbcc_cfg(struct hal_info_t *hal_info, 182 struct rtw_phl_com_t *phl_com, bool dbcc_en); 183 #endif 184 185 enum rtw_hal_status 186 rtw_hal_bb_get_txinfo_power(struct hal_info_t *hal_info, 187 s16 *txinfo_power_dbm); 188 189 enum rtw_hal_status 190 rtw_hal_bb_ctrl_rf_mode(struct hal_info_t *hal_info, 191 enum phl_rf_mode rf_mode); 192 193 enum rtw_hal_status 194 rtw_hal_bb_set_sta_id(struct hal_info_t *hal_info, 195 u16 staid, enum phl_phy_idx phy_idx); 196 197 enum rtw_hal_status 198 rtw_hal_bb_set_bss_color(struct hal_info_t *hal_info, 199 u8 bsscolor, enum phl_phy_idx phy_idx); 200 201 #ifdef RTW_WKARD_DEF_CMACTBL_CFG 202 enum rtw_hal_status 203 rtw_hal_bb_trx_path_cfg(struct hal_info_t *hal_info, 204 enum rf_path tx, u8 tx_nss, enum rf_path rx, u8 rx_nss); 205 206 u16 rtw_hal_bb_cfg_cmac_tx_ant(struct hal_info_t *hal_info, 207 enum rf_path tx_path); 208 #endif 209 210 #ifdef RTW_WKARD_DYNAMIC_BFEE_CAP 211 void rtw_hal_bb_dcr_en(struct hal_info_t *hal_info, bool en); 212 bool rtw_hal_bb_csi_rsp(struct hal_info_t *hal_info); 213 #endif 214 215 void rtw_hal_bb_notification(struct hal_info_t *hal_info, 216 enum phl_msg_evt_id event, 217 enum phl_phy_idx phy_idx); 218 219 void rtw_hal_bb_cmd_notification(struct hal_info_t *hal_info, 220 void *hal_cmd, 221 enum phl_phy_idx phy_idx); 222 223 enum rtw_hal_status 224 rtw_hal_bb_set_gain_offset(struct hal_info_t *hal_info, s8 rx_gain_offset, 225 enum rf_path rx_path, enum phl_phy_idx phy_idx, u8 iscck); 226 227 void rtw_hal_bb_get_efuse_init(struct rtw_hal_com_t *hal_com); 228 229 enum rtw_hal_status 230 rtw_hal_bb_ic_hw_setting_init(struct hal_info_t *hal_info); 231 232 bool rtw_hal_bb_check_tx_idle(struct hal_info_t *hal_info, enum phl_phy_idx phy_idx); 233 234 enum rtw_hal_status 235 rtw_hal_bb_query_rainfo(void *hal, struct rtw_hal_stainfo_t *hal_sta, 236 struct rtw_phl_rainfo *phl_rainfo); 237 238 enum rtw_hal_status 239 rtw_hal_bb_query_txsts_rpt(struct hal_info_t *hal_info, 240 u16 macid0, u16 macid1); 241 242 enum rtw_hal_status 243 rtw_hal_bb_set_tb_pwr_ofst(struct hal_info_t *hal_info, 244 s16 ofst, enum phl_phy_idx phy_idx); 245 #ifdef CONFIG_MCC_SUPPORT 246 enum rtw_hal_status 247 rtw_hal_bb_upd_mcc_macid(struct hal_info_t *hal_info, 248 struct rtw_phl_mcc_role *mrole); 249 250 void 251 rtw_hal_bb_mcc_stop(struct hal_info_t *hal_info); 252 253 enum rtw_hal_status 254 rtw_hal_bb_mcc_start(struct hal_info_t *hal_info, 255 struct rtw_phl_mcc_role *m_role1, 256 struct rtw_phl_mcc_role *m_role2); 257 #endif 258 #endif /*_HAL_API_BB_H_*/ 259