1 /* 2 * Copyright (c) 2020 HiSilicon (Shanghai) Technologies CO., LIMITED. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 * Description: HAL Layer Specifications. 15 * Create: 2020-7-3 16 */ 17 18 #ifndef __HAL_COMMON_OPS_H__ 19 #define __HAL_COMMON_OPS_H__ 20 21 /***************************************************************************** 22 1 头文件包含 23 *****************************************************************************/ 24 #include "oal_types.h" 25 26 #include "frw_list.h" 27 #include "oal_util_hcm.h" 28 #include "frw_util.h" 29 #include "oal_mem_hcm.h" 30 #include "oal_fsm.h" 31 32 #include "wlan_spec.h" 33 #include "wlan_types_common.h" 34 #include "frw_ext_if.h" 35 #include "frw_osal.h" 36 #include "hal_commom_ops_type_rom.h" 37 #include "hal_common_ops_device.h" 38 #include "hal_ops_common.h" 39 #include "hal_ext_if_device.h" 40 41 #ifdef __cplusplus 42 #if __cplusplus 43 extern "C" { 44 #endif 45 #endif 46 47 /***************************************************************************** 48 10.2 对外暴露的配置接口 49 *****************************************************************************/ 50 #if (defined _PRE_BUILD_ALG_NEW_ARCH && defined _PRE_WLAN_FEATURE_ALG_MASTER_COMPILE) 51 #define hal_txop_alg_get_tx_dscr(txop_alg) ((txop_alg)->ast_rank_param) 52 #else 53 #define hal_txop_alg_get_tx_dscr(txop_alg) ((txop_alg)->tx_dsrc) 54 #endif 55 56 osal_void hh503_rx_init_dscr_queue(hal_to_dmac_device_stru *device, osal_u8 set_hw); 57 osal_void hh503_rx_destroy_dscr_queue(hal_to_dmac_device_stru *device); 58 hmac_pps_value_stru hh503_get_auto_adjust_freq_pps(osal_void); 59 osal_void hh503_tx_init_dscr_queue(hal_to_dmac_device_stru *device); 60 61 osal_void hh503_tx_fill_basic_ctrl_dscr(const hal_to_dmac_device_stru *hal_device, 62 hal_tx_dscr_stru *tx_dscr, hal_tx_mpdu_stru *mpdu); 63 osal_void hh503_tx_ctrl_dscr_link(hal_tx_dscr_stru *tx_dscr_prev, hal_tx_dscr_stru *tx_dscr); 64 65 osal_void hh503_tx_ctrl_dscr_copy_addr_info(hal_tx_dscr_stru *tx_dscr_prev, hal_tx_dscr_stru *tx_dscr); 66 osal_void hh503_tx_ctrl_dscr_get_addr_info(hal_tx_dscr_stru *tx_dscr, hal_tx_addr_info *tx_addr); 67 68 osal_u32 hh503_get_tx_vector_word6(osal_void); 69 osal_u32 hh503_get_rpt_tx_data_word0(osal_void); 70 osal_void hal_phy_rx_get_snr_info(hal_to_dmac_device_stru *hal_device, uint8_t phy_proto, 71 uint16_t origin_data, int8_t *snr); 72 osal_void hh503_get_tx_dscr_next(hal_tx_dscr_stru *tx_dscr, hal_tx_dscr_stru **tx_dscr_next); 73 osal_void hh503_tx_ctrl_dscr_unlink(hal_tx_dscr_stru *tx_dscr); 74 osal_void hh503_tx_ucast_data_set_dscr(hal_to_dmac_device_stru *hal_device, hal_tx_dscr_stru *tx_dscr, 75 hal_tx_txop_feature_stru *txop_feature, hal_tx_txop_alg_stru *txop_alg, hal_tx_ppdu_feature_stru *ppdu_feature); 76 osal_void hh503_tx_non_ucast_data_set_dscr(hal_to_dmac_device_stru *hal_device, hal_tx_dscr_stru *tx_dscr, 77 hal_tx_txop_feature_stru *txop_feature, hal_tx_txop_alg_stru *txop_alg, hal_tx_ppdu_feature_stru *ppdu_feature); 78 osal_void hh503_tx_get_vap_id(const hal_tx_dscr_stru *tx_dscr, osal_u8 *vap_id); 79 osal_void hal_power_set_under_regulation(oal_bool_enum_uint8 under_regulation_flag); 80 81 #ifdef _PRE_WLAN_FIT_BASED_REALTIME_CALI 82 osal_void hh503_tx_set_pdet_en(const hal_to_dmac_device_stru *hal_device, 83 hal_tx_dscr_stru *tx_dscr, oal_bool_enum_uint8 pdet_en_flag); 84 osal_void hh503_dyn_cali_tx_pow_ch_set(hal_to_dmac_device_stru *hal_device, hal_tx_dscr_stru *tx_dscr); 85 #endif 86 87 osal_void hh503_tx_get_dscr_status(const hal_tx_dscr_stru *tx_dscr, osal_u8 *status); 88 osal_void hh503_tx_get_dscr_msdu_num(hal_tx_dscr_stru *tx_dscr, osal_u16 *msdu_num); 89 osal_u32 hh503_get_tx_q_status(osal_u8 qnum); 90 osal_u32 hh503_get_tx_q_status_empty(osal_void); 91 92 osal_void hh503_set_bcn_timeout_multi_q_enable(const hal_to_dmac_vap_stru *hal_vap, osal_u8 enable); 93 94 osal_void hh503_get_hal_vap(const hal_to_dmac_device_stru *hal_device_base, osal_u8 vap_id, 95 hal_to_dmac_vap_stru **hal_vap); 96 97 #ifdef _PRE_WLAN_RF_AUTOCALI 98 osal_void hh503_rf_cali_auto_switch(osal_u32 switch_mask); 99 #endif 100 101 osal_void hh503_get_sr_info(osal_u8 param); 102 osal_void hh503_set_psr_vfs_get(dmac_sr_sta_vfs_stru *hmac_sr_sta_vfs); 103 osal_void hh503_set_sr_vfs_get(dmac_sr_sta_vfs_stru *hmac_sr_sta_vfs); 104 osal_void hh503_set_sr_statistics_get(dmac_sr_sta_srg_stru *hmac_sr_sta_srg, 105 dmac_sr_sta_non_srg_stru *hmac_sr_sta_non_srg); 106 osal_void hh503_set_sr_vfs_end(osal_void); 107 osal_void hh503_set_psr_statistics_end(osal_void); 108 osal_void hh503_set_sr_statistics_end(osal_void); 109 osal_void hh503_set_sr_vfs_start(osal_void); 110 osal_void hh503_set_psr_statistics_start(osal_void); 111 osal_void hh503_set_sr_statistics_start(osal_void); 112 osal_void hh503_set_sr_statistics_continue(osal_void); 113 osal_void hh503_set_psr_statistics_continue(osal_void); 114 osal_void hh503_set_sr_statistics_stop(osal_void); 115 osal_void hh503_set_psr_statistics_stop(osal_void); 116 osal_void hh503_set_sr_vfs_clear(osal_void); 117 osal_void hh503_set_psr_statistics_clear(osal_void); 118 osal_void hh503_set_sr_statistics_clear(osal_void); 119 osal_void hh503_set_psr_ctrl(oal_bool_enum_uint8 flag); 120 osal_void hh503_set_psrt_htc(osal_void); 121 osal_void hh503_set_psr_offset(osal_s32 offset); 122 osal_void hh503_set_bss_color_enable(oal_bool_enum_uint8 flag); 123 osal_void hh503_set_srg_pd_etc(osal_u32 pd, osal_u32 pw); 124 osal_void hh503_set_non_pd(osal_u32 pd, osal_u32 pw); 125 osal_void hh503_set_srg_ctrl(osal_void); 126 osal_void hh503_set_srg_partial_bssid_bitmap(osal_u32 bitmap_low, osal_u32 bitmap_high); 127 osal_void hh503_set_srg_bss_color_bitmap(osal_u32 bitmap_low, osal_u32 bitmap_high); 128 osal_void hh503_set_srg_ele_off(osal_void); 129 osal_void hh503_set_sr_ctrl(oal_bool_enum_uint8 flag); 130 osal_void hh503_color_rpt_clr(osal_void); 131 osal_void hh503_color_rpt_en(oal_bool_enum_uint8 flag); 132 osal_void hh503_color_area_get(mac_color_area_stru *color_area); 133 134 osal_void hh503_set_dev_support_11ax(hal_to_dmac_device_stru *hal_device, osal_u8 reg_value); 135 osal_void hh503_set_mac_backoff_delay(osal_u32 back_off_time); 136 osal_void hh503_set_mu_edca_lifetime(osal_u8 bk, osal_u8 be, osal_u8 vi, osal_u8 vo); 137 osal_void hh503_set_mu_edca_aifsn(osal_u8 bk, osal_u8 be, osal_u8 vi, osal_u8 vo); 138 osal_void hh503_set_mu_edca_func_en(osal_u8 bk, osal_u8 be, osal_u8 vi, osal_u8 vo); 139 osal_void hh503_close_mu_edca_func(osal_void); 140 osal_void hh503_set_affected_acs(osal_u8 affected_acs); 141 osal_void hh503_set_mu_edca_cw(osal_u8 ac_type, osal_u8 cwmax, osal_u8 cwmin); 142 osal_void hh503_set_bss_color(const hal_to_dmac_vap_stru *hal_vap, osal_u8 bss_color); 143 osal_void hh503_set_partial_bss_color(const hal_to_dmac_vap_stru *hal_vap, osal_u8 partial_bss_color); 144 osal_void hh503_set_phy_aid(osal_u16 aid); 145 osal_void hh503_set_queue_size_in_ac(osal_u32 queue_size, osal_u8 vap_id, osal_u16 ac_order); 146 osal_void hh503_set_ndp_status(osal_u8 status); 147 148 #ifdef _PRE_WLAN_FEATURE_WUR_TX 149 osal_void hh503_vap_send_wur_beacon_pkt(const wur_bcn_reg_param_stru *wur_bcn_param); 150 osal_void hh503_vap_set_wur_twbtt(osal_u16 wur_offset_twbtt, osal_u8 twbtt_en); 151 osal_void hh503_vap_set_wur_beacon_en(osal_u8 wur_bcn_data_rate, osal_u8 wur_bcn_vap_en); 152 osal_void hh503_write_wur_beacon(osal_u16 id); 153 osal_void hh503_write_wur_fl_wake(const wur_wakeup_reg_param_stru *wur_wakeup_param); 154 osal_void hh503_write_wur_short_wake(osal_u16 wur_id); 155 osal_void hh503_vap_set_wur(const hal_to_dmac_vap_stru *hal_vap, const wur_reg_param_stru *wur_param, 156 osal_u8 count); 157 #endif 158 159 osal_void hal_vap_set_multi_bssid(osal_u8 *trans_bssid, osal_u8 maxbssid_indicator); 160 osal_void hh503_set_he_rom_en(oal_bool_enum_uint8 rx_om); 161 162 osal_void hh503_set_machw_rx_buff_addr(osal_u32 rx_dscr, hal_rx_dscr_queue_id_enum_uint8 queue_num); 163 164 osal_void hh503_rx_add_dscr(hal_to_dmac_device_stru *hal_device, hal_rx_dscr_queue_id_enum_uint8 queue_num); 165 osal_void hh503_rx_update_dscr(hal_to_dmac_device_stru *hal_device, hal_rx_dscr_queue_id_enum_uint8 queue_num); 166 167 oal_bool_enum_uint8 hh503_is_machw_enabled(osal_void); 168 osal_void hh503_set_machw_tx_suspend(osal_void); 169 osal_void hal_set_machw_tx_resume(osal_void); 170 osal_void hh503_reset_phy_machw(hal_reset_hw_type_enum_uint8 type, osal_u8 sub_mod, osal_u8 reset_phy_reg, 171 osal_u8 reset_mac_reg); 172 osal_void hh503_disable_machw_phy_and_pa(osal_void); 173 osal_void hh503_enable_machw_phy_and_pa(const hal_to_dmac_device_stru *hal_device); 174 osal_void hh503_recover_machw_phy_and_pa(hal_to_dmac_device_stru *hal_device_base); 175 osal_void hal_initialize_machw(osal_void); 176 177 osal_void hh503_initialize_machw_common(osal_void); 178 osal_void hal_set_ax_ctl_by_protocol(wlan_protocol_enum_uint8 protocol); 179 180 osal_void hh503_set_bandwidth_mode(hal_to_dmac_device_stru *hal_device, wlan_channel_bandwidth_enum_uint8 bandwidth); 181 osal_void hh503_set_upc_data(hal_to_dmac_device_stru *hal_device); 182 osal_void hh503_set_txop_check_cca(osal_u8 txop_check_cca); 183 osal_u8 hh503_set_machw_phy_adc_freq(hal_to_dmac_device_stru *hal_device, 184 wlan_channel_bandwidth_enum_uint8 bandwidth); 185 186 osal_void hh503_set_ana_dbb_ch_sel(const hal_to_dmac_device_stru *hal_device); 187 osal_void hh503_update_cbb_cfg(hal_to_dmac_device_stru *hal_device); 188 189 osal_void hh503_set_tx_sequence_num(machw_tx_sequence_stru tx_seq, osal_u32 val_write, osal_u8 vap_index); 190 osal_void hh503_reset_save_mac_reg(osal_void); 191 osal_void hh503_disable_machw_ack_trans(osal_void); 192 osal_void hh503_enable_machw_ack_trans(osal_void); 193 osal_void hh503_disable_machw_cts_trans(osal_void); 194 osal_void hh503_enable_machw_cts_trans(osal_void); 195 osal_void hal_initialize_phy(osal_void); 196 osal_void hh503_radar_config_reg(hal_dfs_radar_type_enum_uint8 radar_type); 197 osal_void hh503_radar_config_reg_bw(hal_dfs_radar_type_enum_uint8 radar_type, 198 wlan_channel_bandwidth_enum_uint8 bandwidth); 199 osal_void hh503_radar_enable_chirp_det(oal_bool_enum_uint8 chirp_det); 200 osal_void hh503_initialize_rf_sys(hal_to_dmac_device_stru *hal_device); 201 osal_void hal_pow_sw_initialize_tx_power(hal_to_dmac_device_stru *hal_device); 202 osal_void hh503_pow_initialize_tx_power(hal_to_dmac_device_stru *hal_device); 203 osal_void hh503_pow_set_rf_regctl_enable(hal_to_dmac_device_stru *hal_device, oal_bool_enum_uint8 rf_linectl); 204 osal_void hal_pow_set_resp_frame_tx_power(hal_to_dmac_device_stru *hal_device, 205 wlan_channel_band_enum_uint8 band, osal_u8 chan_idx); 206 osal_void hh503_pow_set_band_spec_frame_tx_power(hal_to_dmac_device_stru *hal_device, 207 wlan_channel_band_enum_uint8 band, osal_u8 chan_idx); 208 osal_void hh503_pow_get_spec_frame_data_rate_idx(osal_u8 rate, osal_u8 *rate_idx); 209 osal_u16 hh503_pow_get_pow_table_tpc_code(osal_u8 band, osal_u8 rate, osal_u8 bw, osal_u8 pwr_lvl); 210 osal_void hh503_pow_get_data_rate_idx(osal_u8 protocol_mode, osal_u8 mcs, wlan_bw_cap_enum_uint8 bw, osal_u8 *rate_idx); 211 osal_void hh503_pow_set_pow_code_idx_in_tpc(hal_tx_txop_tpc_stru *tpc, osal_u32 *tpc_code, osal_u16 tpc_code_size); 212 #ifdef _PRE_WLAN_FEATURE_11AX 213 osal_void hh503_tb_mcs_tx_power(wlan_channel_band_enum_uint8 band); 214 osal_void hh503_tb_tx_power_init(wlan_channel_band_enum_uint8 band); 215 #endif 216 #ifdef _PRE_WLAN_FEATURE_USER_RESP_POWER 217 osal_void hh503_pow_set_user_resp_frame_tx_power(hal_to_dmac_device_stru *hal_device, 218 osal_u8 lut_index, osal_u8 rssi_distance); 219 osal_void hh503_pow_del_machw_resp_power_lut_entry(osal_u8 lut_index); 220 #endif 221 222 osal_void hh503_cali_send_func(hal_to_dmac_device_stru *hal_device, 223 osal_u8 *cali_data, osal_u16 frame_len, osal_u16 remain); 224 osal_void hh503_initialize_soc(hal_to_dmac_device_stru *hal_device); 225 osal_u32 hh503_get_mac_int_status(osal_void); 226 osal_void hh503_clear_mac_int_status(osal_u32 status); 227 osal_void hh503_clear_mac_error_int_status(const hal_error_state_stru *status); 228 osal_void hh503_show_irq_info(hal_to_dmac_device_stru *hal_device, osal_u8 param); 229 osal_void hh503_clear_irq_stat(hal_to_dmac_device_stru *hal_device_base); 230 osal_void hh503_add_vap(hal_to_dmac_device_stru *hal_device_base, wlan_vap_mode_enum_uint8 vap_mode, 231 osal_u8 hal_vap_id, hal_to_dmac_vap_stru **hal_vap); 232 osal_void hh503_del_vap(hal_to_dmac_device_stru *hal_device, osal_u8 vap_id); 233 #ifdef _PRE_WLAN_FEATURE_M2S 234 osal_void hh503_update_datarate_by_chain(const hal_to_dmac_device_stru *hal_device, osal_u8 resp_tx_chain); 235 osal_void hh503_get_reg_he_rom_nss(osal_u32 *peer_rom_nss); 236 #endif 237 238 osal_void hh503_config_eifs_time(wlan_protocol_enum_uint8 protocol); 239 240 osal_void hh503_clear_hw_fifo(struct tag_hal_to_dmac_device_stru *hal_device_base); 241 osal_void hh503_mask_interrupt(osal_u32 offset); 242 osal_void hh503_unmask_interrupt(osal_u32 offset); 243 osal_void hh503_reg_info(hal_to_dmac_device_stru *hal_device, osal_u32 addr, osal_u32 *val); 244 osal_void hh503_reg_info16(hal_to_dmac_device_stru *hal_device, osal_u32 addr, osal_u16 *val); 245 246 #ifdef _PRE_WLAN_ONLINE_DPD 247 osal_void hh503_dpd_cfr_set_tpc(hal_to_dmac_device_stru *hal_device, osal_u8 tpc); 248 osal_void hh503_dpd_cfr_set_bw(hal_to_dmac_device_stru *hal_device, osal_u8 bw); 249 osal_void hh503_dpd_cfr_set_mcs(hal_to_dmac_device_stru *hal_device, osal_u8 mcs); 250 osal_void hh503_dpd_cfr_set_freq(hal_to_dmac_device_stru *hal_device, osal_u8 freq); 251 osal_void hh503_dpd_cfr_set_11b(hal_to_dmac_device_stru *hal_device, osal_u8 is_11b); 252 #endif 253 osal_u32 hh503_get_all_tx_q_status(osal_void); 254 osal_void hh503_get_dieid(hal_to_dmac_device_stru *hal_device, osal_u32 *dieid, osal_u32 *length); 255 osal_void hh503_disable_beacon_filter(osal_void); 256 osal_void hh503_enable_non_frame_filter(osal_void); 257 osal_void hh503_set_pmf_crypto(hal_to_dmac_vap_stru *hal_vap, oal_bool_enum_uint8 crypto); 258 osal_void hh503_ce_add_key(hal_security_key_stru *security_key); 259 osal_void hh503_ce_del_key(const hal_security_key_stru *security_key); 260 osal_void hh503_ce_get_key(const hal_security_key_stru *security_key); 261 osal_void hh503_disable_ce(osal_void); 262 osal_void hh503_ce_add_peer_macaddr(osal_u8 lut_idx, const osal_u8 *addr); 263 osal_void hh503_ce_del_peer_macaddr(osal_u8 lut_idx); 264 osal_void hh503_get_rate_80211g_table(const mac_data_rate_stru **rate); 265 osal_void hh503_get_rate_80211g_num(osal_u32 *rate_num); 266 osal_void hh503_get_hw_addr(osal_u8 *addr); 267 osal_void hh503_chan_measure_start(hal_chan_measure_stru *meas); 268 osal_void hh503_get_ch_statics_result(hal_ch_statics_irq_event_stru *ch_statics); 269 osal_void hal_get_ch_measurement_result_ram(hal_ch_statics_irq_event_stru *ch_statics); 270 osal_void hal_get_ch_measurement_result(hal_ch_statics_irq_event_stru *ch_statics); 271 osal_void hh503_enable_radar_det(osal_u8 enable); 272 osal_u32 hh503_read_max_temperature(osal_s16 *ps_temperature); 273 oal_bool_enum_uint8 hh503_chip_is_cldo_mode(osal_void); 274 osal_void hh503_get_radar_det_result(hal_radar_det_event_stru *radar_info); 275 osal_void hh503_get_spec_frm_rate(hal_to_dmac_device_stru *hal_device); 276 osal_void hh503_set_bcn_phy_tx_mode(const hal_to_dmac_vap_stru *hal_vap, osal_u32 pow_code); 277 osal_void hh503_set_spec_frm_phy_tx_mode(const hal_to_dmac_device_stru *hal_device, 278 osal_u8 band, osal_u8 subband_idx); 279 osal_void hh503_set_resp_pow_level(osal_char near_distance_rssi, osal_char far_distance_rssi); 280 osal_void hh503_get_bcn_rate(const hal_to_dmac_vap_stru *hal_vap, osal_u8 *data_rate); 281 282 #ifdef _PRE_WLAN_FEATURE_TXBF 283 osal_void hh503_set_h_matrix_timeout(osal_u32 reg_value); 284 osal_void hh503_set_dl_mumimo_ctrl(oal_bool_enum_uint8 enable); 285 osal_void hh503_set_mu_aid_matrix_info(const hal_to_dmac_vap_stru *hal_vap, osal_u16 aid); 286 osal_void hh503_set_bfer_subcarrier_ng(wlan_bw_cap_enum_uint8 user_bw); 287 osal_void hh503_set_txbf_he_buff_addr(osal_u32 addr, osal_u16 buffer_len); 288 osal_void hh503_set_bfee_h2v_beamforming_ng(osal_u8 user_bw); 289 osal_void hh503_set_bfee_grouping_codebook(osal_u8 codebook, osal_u8 min_group); 290 osal_void hh503_set_bfee_sounding_en(osal_u8 bfee_enable); 291 osal_void hh503_set_bfee_bypass_clk_gating(osal_u8 enable); 292 osal_void hh503_set_channel_est_for_txbfee(osal_u8 txbf, wlan_channel_bandwidth_enum_uint8 bandwidth, 293 wlan_channel_band_enum_uint8 band); 294 #endif 295 /* phy debug信息中trailer信息上报设置寄存器 */ 296 297 #ifdef _PRE_WLAN_FEATURE_EDCA_OPT 298 osal_void hh503_set_counter1_clear(osal_void); 299 osal_void hh503_set_mac_clken(oal_bool_enum_uint8 wctrl_enable); 300 #endif 301 302 osal_void hh503_get_phy_statistics_data(hal_mac_key_statis_info_stru *mac_key_statis); 303 osal_void hh503_get_mac_rx_statistics_data(hal_mac_rx_mpdu_statis_info_stru *mac_rx_statis); 304 osal_void hh503_get_mac_tx_statistics_data(hal_mac_tx_mpdu_statis_info_stru *mac_tx_statis); 305 osal_void hh503_hw_stat_clear(osal_void); 306 #ifdef _PRE_WLAN_FEATURE_CCA_OPT 307 osal_void hh503_set_ed_high_th(osal_s8 ed_high_20_reg_val, osal_s8 ed_high_40_reg_val, 308 oal_bool_enum_uint8 is_default_th); 309 osal_void hh503_set_cca_prot_th(osal_s8 sd_cca_20th_dsss_val, osal_s8 sd_cca_20th_ofdm_val); 310 osal_void hh503_enable_sync_error_counter(osal_s32 enable_cnt_reg_val); 311 osal_void hh503_get_sync_error_cnt(osal_u32 *reg_val); 312 osal_void hh503_set_sync_err_counter_clear(osal_void); 313 #endif 314 osal_void hh503_set_tbtt_offset(const hal_to_dmac_vap_stru *hal_vap, osal_u16 offset); 315 osal_void hh503_set_psm_ext_tbtt_offset(const hal_to_dmac_vap_stru *hal_vap, osal_u16 offset); 316 osal_void hh503_set_psm_beacon_period(const hal_to_dmac_vap_stru *hal_vap, osal_u32 beacon_period); 317 #ifdef _PRE_WLAN_FEATURE_SMPS 318 osal_void hh503_set_smps_mode(osal_u8 smps_mode); 319 #endif 320 #ifdef _PRE_WLAN_FEATURE_TXOPPS 321 osal_void hh503_set_txop_ps_enable(hal_to_dmac_device_stru *hal_device, osal_u8 on_off); 322 osal_void hh503_set_txop_ps_condition1(osal_u8 on_off); 323 osal_void hh503_set_txop_ps_condition2(osal_u8 on_off); 324 osal_void hh503_set_txop_ps_partial_aid(const hal_to_dmac_vap_stru *hal_vap, osal_u32 partial_aid); 325 #endif 326 327 osal_void hh503_set_mac_aid(const hal_to_dmac_vap_stru *hal_vap, osal_u16 aid); 328 #ifndef _PRE_WLAN_FEATURE_WS63 329 osal_void hh503_psm_clear_mac_rx_isr(osal_void); 330 331 osal_void hh503_set_sec_bandwidth_offset(osal_u8 bandwidth); 332 #endif 333 osal_void hh503_enable_machw_edca(osal_void); 334 osal_void hh503_set_phy_max_bw_field(hal_to_dmac_device_stru *hal_device, osal_u32 data, 335 hal_phy_max_bw_sect_enmu_uint8 sect); 336 osal_void hh503_rf_test_disable_al_tx(hal_to_dmac_device_stru *hal_device); 337 osal_void hh503_set_rx_filter_reg(osal_u32 rx_filter_command); 338 osal_void hh503_set_beacon_timeout(osal_u16 value); 339 340 #define HAL_VAP_LEVEL_FUNC_EXTERN 341 osal_void hh503_vap_tsf_get_32bit(const hal_to_dmac_vap_stru *hal_vap, osal_u32 *tsf_lo); 342 osal_void hh503_vap_tsf_get_64bit(const hal_to_dmac_vap_stru *hal_vap, osal_u32 *tsf_high, osal_u32 *tsf_lo); 343 osal_void hh503_vap_set_beacon_rate(const hal_to_dmac_vap_stru *hal_vap, osal_u32 beacon_rate); 344 osal_void hh503_vap_beacon_suspend(const hal_to_dmac_vap_stru *hal_vap); 345 osal_void hh503_vap_beacon_resume(const hal_to_dmac_vap_stru *hal_vap); 346 osal_void hh503_vap_set_machw_prot_params(hal_to_dmac_vap_stru *hal_vap, 347 hal_tx_phy_mode_one_stru *phy_tx_mode, hal_tx_ctrl_desc_rate_stru *data_rate); 348 349 350 osal_void hh503_vap_set_macaddr(const hal_to_dmac_vap_stru *hal_vap, const osal_u8 *mac_addr, osal_u16 mac_addr_len); 351 osal_void hh503_vap_set_opmode(hal_to_dmac_vap_stru *hal_vap, wlan_vap_mode_enum_uint8 vap_mode); 352 353 osal_void hh503_vap_clr_opmode(const hal_to_dmac_vap_stru *hal_vap, wlan_vap_mode_enum_uint8 vap_mode); 354 osal_void hh503_vap_set_machw_aifsn_all_ac(osal_u8 bk, osal_u8 be, osal_u8 vi, osal_u8 vo); 355 osal_void hh503_vap_set_machw_aifsn_ac(wlan_wme_ac_type_enum_uint8 ac, osal_u8 aifs); 356 osal_void hh503_vap_get_machw_aifsn_ac(wlan_wme_ac_type_enum_uint8 ac, osal_u8 *aifs); 357 osal_void hh503_vap_set_machw_aifsn_ac_wfa(wlan_wme_ac_type_enum_uint8 ac, osal_u8 aifs, 358 wlan_wme_ac_type_enum_uint8 wfa_lock); 359 osal_void hh503_vap_set_edca_machw_cw(osal_u8 cwmax, osal_u8 cwmin, osal_u8 ac_type); 360 osal_void hh503_vap_set_edca_machw_cw_wfa(osal_u8 cwmaxmin, 361 osal_u8 ac_type, wlan_wme_ac_type_enum_uint8 wfa_lock); 362 osal_void hh503_vap_get_edca_machw_cw(osal_u8 *cwmax, osal_u8 *cwmin, osal_u8 ac_type); 363 osal_void hh503_vap_set_machw_txop_limit_bkbe(osal_u16 be, osal_u16 bk); 364 osal_void hh503_vap_get_machw_txop_limit_bkbe(osal_u16 *be, osal_u16 *bk); 365 osal_void hh503_vap_set_machw_txop_limit_vivo(osal_u16 vo, osal_u16 vi); 366 osal_void hh503_vap_get_machw_txop_limit_vivo(osal_u16 *vo, osal_u16 *vi); 367 osal_void hh503_vap_get_machw_txop_limit_ac(wlan_wme_ac_type_enum_uint8 ac, osal_u16 *txop); 368 osal_void hh503_vap_set_txop_duration_threshold(osal_u32 txop_duration_th, osal_u32 vap_idx); 369 osal_void hh503_set_11ax_vap_idx(osal_u8 hal_vap_idx); 370 osal_void hh503_set_mac_freq(hal_clk_freq_enum_uint8 mac_clk_freq); 371 osal_void hh503_vap_set_machw_edca_bkbe_lifetime(osal_u16 be, osal_u16 bk); 372 osal_void hh503_vap_get_machw_edca_bkbe_lifetime(osal_u16 *be, osal_u16 *bk); 373 osal_void hh503_vap_set_machw_edca_vivo_lifetime(osal_u16 vo, osal_u16 vi); 374 osal_void hh503_vap_get_machw_edca_vivo_lifetime(osal_u16 *vo, osal_u16 *vi); 375 osal_void hh503_vap_read_tbtt_timer(const hal_to_dmac_vap_stru *hal_vap, osal_u32 *value); 376 osal_void hh503_vap_set_machw_beacon_period(const hal_to_dmac_vap_stru *hal_vap, osal_u16 beacon_period); 377 osal_void hh503_set_sta_bssid(const hal_to_dmac_vap_stru *hal_vap, const osal_u8 *bssid); 378 osal_void hh503_enable_tsf_tbtt(hal_to_dmac_vap_stru *hal_vap, oal_bool_enum_uint8 dbac_enable); 379 osal_void hh503_disable_tsf_tbtt(const hal_to_dmac_vap_stru *hal_vap); 380 osal_void hh503_tx_disable_resp_ps_bit_ctrl(osal_u8 lut_index); 381 osal_void hh503_tx_enable_peer_sta_ps_ctrl(const osal_u8 lut_index); 382 osal_void hh503_tx_disable_peer_sta_ps_ctrl(const osal_u8 lut_index); 383 osal_void hh503_cfg_slottime_type(osal_u32 slottime_type); 384 osal_void hh503_pm_wlan_get_service_id(hal_to_dmac_vap_stru *hal_vap, osal_u8 *service_id); 385 osal_void hh503_pm_servid_unregister(osal_void); 386 387 osal_void hh503_pm_vote2platform(hal_pm_mode_enum_uint8 pm_mode); 388 osal_void hh503_init_pm_info(hal_to_dmac_vap_stru *hal_vap); 389 osal_void hh503_init_pm_info_sync(hal_to_dmac_vap_stru *hal_vap); 390 osal_u16 *hh503_pm_get_ext_inner_offset_diff(osal_void); 391 osal_void hh503_pm_set_bcn_rf_chain(hal_to_dmac_vap_stru *hal_vap, osal_u8 bcn_rf_chain); 392 393 #ifdef _PRE_PM_TBTT_OFFSET_PROBE 394 osal_void hh503_tbtt_offset_probe_init(hal_to_dmac_vap_stru *hal_vap); 395 osal_void hh503_tbtt_offset_probe_destroy(hal_to_dmac_vap_stru *hal_vap); 396 #endif 397 398 #ifdef _PRE_WLAN_DFT_STAT 399 osal_void hh503_dft_set_phy_stat_node(oam_stats_phy_node_idx_stru *phy_node_idx); 400 osal_void hh503_dft_print_machw_stat(osal_void); 401 osal_void hh503_dft_print_phyhw_stat(osal_void); 402 osal_void hh503_dft_report_all_reg_state(hal_to_dmac_device_stru *hal_device); 403 #endif 404 405 osal_u32 hh503_rf_get_pll_div_idx(wlan_channel_band_enum_uint8 band, osal_u8 channel_idx, 406 wlan_channel_bandwidth_enum_uint8 bandwidth, osal_u8 *pll_div_idx); 407 osal_void hh503_get_cali_info(hal_to_dmac_device_stru *hal_device, osal_u8 *param); 408 osal_void hh503_get_rate_idx_pow(hal_to_dmac_device_stru *hal_device, osal_u8 pow_idx, 409 wlan_channel_band_enum_uint8 freq_band, osal_u16 *powr, osal_u8 channel_idx); 410 411 #ifdef _PRE_PLAT_FEATURE_CUSTOMIZE 412 osal_u32 hh503_config_custom_rf(const osal_u8 *param); 413 osal_void hh503_config_rssi_for_loss(osal_u8 channel_num, osal_s8 *rssi); 414 osal_void hh503_config_get_cus_cca_param(hal_cfg_custom_cca_stru **cfg_cca); 415 osal_void hh503_set_custom_rx_insert_loss(osal_u8 band, osal_u8 *insert_loss, osal_u8 len); 416 osal_u8 hh503_get_custom_rx_insert_loss(osal_u8 band, osal_u8 ch_idx); 417 osal_void hh503_set_custom_power(osal_u8 band, osal_u8 *power, osal_u16 len); 418 #endif 419 osal_u8 hh503_get_rf_subband_idx(osal_u8 band, osal_u8 ch_idx); 420 #ifdef _PRE_WLAN_FEATURE_FTM 421 osal_u64 hh503_get_ftm_time(osal_u64 time); 422 osal_u64 hh503_check_ftm_t4(osal_u64 time); 423 osal_char hh503_get_ftm_t4_intp(osal_u64 time); 424 osal_u64 hh503_check_ftm_t2(osal_u64 time); 425 osal_char hh503_get_ftm_t2_intp(osal_u64 time); 426 osal_u64 hh503_get_ftm_tod(osal_void); 427 osal_u64 hh503_get_ftm_toa(osal_void); 428 osal_u64 hh503_get_ftm_t2(osal_void); 429 osal_u64 hh503_get_ftm_t3(osal_void); 430 osal_void hh503_get_ftm_ctrl_status(osal_u32 *ftm_status); 431 osal_void hh503_get_ftm_config_status(osal_u32 *ftm_status); 432 osal_void hh503_set_ftm_ctrl_status(osal_u32 ftm_status); 433 osal_void hh503_set_ftm_config_status(osal_u32 ftm_status); 434 osal_void hh503_set_ftm_enable(oal_bool_enum_uint8 ftm_status); 435 osal_void hh503_set_ftm_sample(oal_bool_enum_uint8 ftm_status); 436 osal_u8 hh503_get_ftm_dialog(osal_void); 437 osal_void hh503_get_ftm_cali_rx_time(osal_u32 *ftm_cali_rx_time); 438 osal_void hh503_get_ftm_cali_rx_intp_time(osal_u32 *ftm_cali_rx_time); 439 osal_void hal_get_ftm_cali_tx_time(osal_u32 *ftm_cali_tx_time); 440 osal_void hal_set_ftm_cali(hal_to_dmac_device_stru *hal_device, 441 hal_tx_dscr_stru *tx_dscr, oal_bool_enum_uint8 ftm_cali); 442 osal_void hal_set_ftm_tx_cnt(hal_tx_dscr_stru *tx_dscr, osal_u8 ftm_tx_cnt); 443 osal_void hal_set_ftm_bandwidth(hal_tx_dscr_stru *tx_dscr, wlan_bw_cap_enum_uint8 band_cap); 444 osal_void hal_set_ftm_protocol(hal_tx_dscr_stru *tx_dscr, wlan_phy_protocol_enum_uint8 prot_format); 445 osal_void hal_set_ftm_m2s(hal_tx_dscr_stru *tx_dscr, osal_u8 tx_chain_selection); 446 osal_void hal_set_ftm_m2s_phy(oal_bool_enum_uint8 is_mimo, osal_u8 tx_chain_selection); 447 osal_void hal_get_ftm_rtp_reg(osal_u32 *reg0, osal_u32 *reg1, osal_u32 *reg2, osal_u32 *reg3, osal_u32 *reg4); 448 osal_void hal_get_ftm_intp_status(osal_u32 *ftm_status); 449 osal_void hal_get_ftm_new_status(osal_u32 *ftm_status); 450 osal_void hal_get_ftm_pulse_enable_status(osal_u32 *ftm_status); 451 osal_void hal_get_ftm_cnt_status(osal_u32 *ftm_status); 452 osal_void hal_get_ftm_crystal_oscillator_offset_update_status(osal_u32 *ftm_status); 453 osal_void hal_get_ftm_clock_offset_update_status(osal_u32 *ftm_status); 454 osal_void hal_get_ftm_phy_bw_mode(osal_u32 *ftm_status); 455 osal_void hal_get_ftm_intp_freq(osal_u32 *ftm_status); 456 osal_u64 hal_get_ftm_pulse_offset(osal_void); 457 osal_u64 hal_get_ftm_pulse_freq(osal_void); 458 osal_u32 hal_get_ftm_crystal_oscillator_offset(osal_void); 459 osal_u64 hal_get_ftm_clock_offset(osal_void); 460 osal_void hh503_set_ftm_intp_status(osal_u32 ftm_status); 461 osal_void hh503_set_ftm_new_status(osal_u32 ftm_status); 462 osal_void hal_set_ftm_step_count_status(osal_u32 ftm_status); 463 osal_void hh503_set_ftm_pulse_enable_status(osal_u32 ftm_status); 464 osal_void hal_set_ftm_cnt_status(osal_u32 ftm_status); 465 osal_void hal_set_ftm_crystal_oscillator_offset_update_status(osal_u32 ftm_status); 466 osal_void hh503_set_ftm_clock_offset_update_status(osal_u32 ftm_status); 467 osal_void hal_set_ftm_crystal_oscillator_offset(osal_u32 ftm_status); 468 osal_void hal_set_ftm_clock_offset(osal_u64 ftm_status); 469 osal_s64 hal_sat_crystal_oscillator_offset(osal_s64 clock_offset, osal_s64 delta); 470 osal_void hal_get_rx_digital_scaling_bypass(osal_u32 *bypass); 471 osal_void hal_get_rx_lpf1_bypass(osal_u32 *bypass); 472 osal_void hal_get_rxiq_filter_force_bypass(osal_u32 *bypass); 473 474 #endif 475 osal_void hh503_vap_get_gtk_rx_lut_idx(const hal_to_dmac_vap_stru *hal_vap, osal_u8 *lut_idx); 476 477 #ifdef _PRE_WLAN_FIT_BASED_REALTIME_CALI 478 osal_void hh503_rf_init_dyn_cali_reg_conf(hal_to_dmac_device_stru *hal_device); 479 osal_void hh503_rf_dyn_cali_enable(hal_to_dmac_device_stru *device); 480 osal_void hh503_rf_dyn_cali_disable(hal_to_dmac_device_stru *device); 481 osal_void hh503_config_set_dyn_cali_dscr_interval(hal_to_dmac_device_stru *hal_device, 482 wlan_channel_band_enum_uint8 band, osal_u16 param_val); 483 484 #endif 485 486 osal_void hh503_flush_rx_queue_complete_irq(hal_to_dmac_device_stru *hal_dev, 487 hal_rx_dscr_queue_id_enum_uint8 queue_num); 488 489 oal_bool_enum_uint8 hh503_check_mac_int_status(osal_void); 490 osal_void hal_device_init_vap_pow_code(hal_to_dmac_device_stru *hal_device, 491 hal_vap_pow_info_stru *vap_pow_info, hal_pow_set_type_enum_uint8 type, const mac_channel_stru *channel); 492 osal_void hh503_set_hw_en_reg_cfg(osal_u8 hw_en); 493 osal_void hal_power_set_rate_power_offset(osal_u8 freq, osal_u8 rate, osal_s8 power_offset); 494 osal_s8 hal_power_get_rate_power_offset(osal_u8 freq, osal_u8 rate); 495 osal_void hh503_adjust_tx_power(osal_u8 ch, osal_s8 power); 496 osal_void hh503_restore_tx_power(osal_u8 ch); 497 osal_void hh503_set_rf_limit_power(wlan_channel_band_enum_uint8 band, osal_u8 power); 498 osal_u8 hh503_get_tpc_code(osal_void); 499 500 osal_void hh503_cfg_txop_cycle(osal_u16 txop_limit); 501 osal_void hh503_cfg_lifetime(osal_u8 ac, osal_u16 lifetime); 502 osal_void hh503_bl_sifs_en(osal_u8 sifs_en); 503 osal_void hh503_rts_info(osal_u32 rate, osal_u32 phy_mode, osal_u8* addr1); 504 osal_void hh503_bl_cfg_txop_en(osal_u8 txop_en); 505 osal_void hh503_cfg_tx_rts_mac_cnt(osal_u8 max_cnt); 506 507 #ifdef _PRE_WLAN_FIT_BASED_REALTIME_CALI 508 osal_u64 hal_get_dyn_cali_send_pack_num(osal_void); 509 osal_void hal_set_dyn_cali_send_pack_num(osal_u64 value); 510 #endif 511 osal_void hh503_set_rx_framefilter(osal_bool enable); 512 513 osal_void hh503_gp_set_wifi_flag(osal_u32 val); 514 osal_u32 hh503_gp_get_wifi_flag(osal_void); 515 osal_void hh503_gp_set_bfgn_flag(osal_u32 val); 516 osal_u32 hh503_gp_get_bfgn_flag(osal_void); 517 osal_u32 hal_gp_get_mpdu_count(osal_void); 518 osal_void hal_update_mac_freq(hal_to_dmac_device_stru *hal_device, wlan_channel_bandwidth_enum_uint8 bandwidth); 519 #ifdef __cplusplus 520 #if __cplusplus 521 } 522 #endif 523 #endif 524 525 #endif 526