• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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