/****************************************************************************** * * Copyright(c) 2007 - 2020 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as * published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * The full GNU General Public License is included in this distribution in the * file called LICENSE. * * Contact Information: * wlanfae * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, * Hsinchu 300, Taiwan. * * Larry Finger * *****************************************************************************/ #ifndef __HALRF_EX_H__ #define __HALRF_EX_H__ struct rf_info; /**************halrf.c**************/ void halrf_watchdog(void *rf_void); enum rtw_hal_status halrf_chl_rfk_trigger(void *rf_void, enum phl_phy_idx phy_idx, bool force); enum rtw_hal_status halrf_dack_trigger(void *rf_void, bool force); enum rtw_hal_status halrf_rx_dck_trigger(void *rf_void, enum phl_phy_idx phy_idx, bool is_afe); enum rtw_hal_status halrf_iqk_trigger(void *rf_void, enum phl_phy_idx phy_idx, bool force); void halrf_lck_trigger(void *rf_void); enum rtw_hal_status halrf_dpk_trigger(void *rf_void, enum phl_phy_idx phy_idx, bool force); enum rtw_hal_status halrf_tssi_trigger(void *rf_void, enum phl_phy_idx phy_idx); void halrf_do_tssi_scan(void *rf_void, enum phl_phy_idx phy_idx); void halrf_tssi_enable(void *rf_void, enum phl_phy_idx phy_idx); void halrf_tssi_disable(void *rf_void, enum phl_phy_idx phy_idx); enum rtw_hal_status halrf_gapk_trigger(void *rf_void, enum phl_phy_idx phy_idx, bool force); enum rtw_hal_status halrf_gapk_enable(void *rf_void, enum phl_phy_idx phy_idx); enum rtw_hal_status halrf_gapk_disable(void *rf_void, enum phl_phy_idx phy_idx); void halrf_rck_trigger(void *rf_void, enum phl_phy_idx phy_idx); void halrf_iqk_onoff(void *rf_void, bool is_enable); void halrf_dpk_onoff(void *rf_void, bool is_enable); void halrf_dpk_track_onoff(void *rf_void, bool is_enable); void halrf_dpk_switch(void *rf_void, bool is_enable); void halrf_dpk_init(void *rf_void); void halrf_rx_dck_onoff(void *rf_void, bool is_enable); void halrf_gapk_onoff(void *rf_void, bool is_enable); void halrf_dack_onoff(void *rf_void, bool is_enable); void halrf_tssi_onoff(void *rf_void, bool is_enable); bool halrf_get_iqk_onoff(void *rf_void); bool halrf_get_dpk_onoff(void *rf_void); bool halrf_get_dpk_track_onoff(void *rf_void); bool halrf_get_gapk_onoff(void *rf_void); bool halrf_get_dack_onoff(void *rf_void); bool halrf_get_tssi_onoff(void *rf_void); void halrf_lo_test(void *rf_void, bool is_on, enum rf_path path); int halrf_get_predefined_pw_lmt_regu_type_from_str(const char *str); const char * const *halrf_get_predefined_pw_lmt_regu_type_str_array(u8 *num); const char *halrf_get_pw_lmt_regu_type_str(struct rf_info *rf, u8 band); s8 halrf_get_power_by_rate(struct rf_info *rf, enum phl_phy_idx phy, u8 rf_path, u16 rate, u8 dcm, u8 offset); s8 halrf_get_power_by_rate_band(struct rf_info *rf, enum phl_phy_idx phy, u16 rate, u8 dcm, u8 offset, u32 band); s8 halrf_get_power_limit(struct rf_info *rf, enum phl_phy_idx phy, u8 rf_path, u16 rate, u8 bandwidth, u8 beamforming, u8 tx_num, u8 channel); s8 halrf_get_power_limit_ru(struct rf_info *rf, enum phl_phy_idx phy, u8 rf_path, u16 rate, u8 bandwidth, u8 tx_num, u8 channel); s16 halrf_get_power(void *rf_void, u8 rf_path, u16 rate, u8 dcm, u8 offset, u8 bandwidth, u8 beamforming, u8 channel); u8 halrf_get_thermal(void *rf_void, u8 rf_path); u32 halrf_get_tssi_de(void *rf_void, enum phl_phy_idx phy_idx, u8 path); s32 halrf_get_online_tssi_de(void *rf_void, enum phl_phy_idx phy_idx, u8 path, s32 dbm, s32 puot); void halrf_set_tssi_de_for_tx_verify(void *rf_void, enum phl_phy_idx phy_idx, u32 tssi_de, u8 path); void halrf_set_tssi_de_offset(void *rf_void, enum phl_phy_idx phy_idx, u32 tssi_de_offset, u8 path); void halrf_set_tssi_avg_mp(void *rf_void, enum phl_phy_idx phy_idx, s32 xdbm); void halrf_set_rx_gain_offset_for_rx_verify(void *rf_void, enum phl_phy_idx phy, s8 rx_gain_offset, u8 path); void halrf_set_power_track(void *rf_void, enum phl_phy_idx phy_idx, u8 value); u8 halrf_get_power_track(void *rf_void); void halrf_tssi_get_efuse_ex(void *rf_void, enum phl_phy_idx phy_idx); bool halrf_tssi_check_efuse_data(void *rf_void, enum phl_phy_idx phy_idx); void halrf_set_ref_power_to_struct(void *rf_void, enum phl_phy_idx phy_idx); void halrf_bf_config_rf(void *rf_void); void halrf_rfk_reg_backup(void *rf_void); void halrf_rfc_reg_backup(void *rf_void); bool halrf_rfc_reg_check_fail(void *rf_void); bool halrf_rfk_reg_check_fail(void *rf_void); bool halrf_dack_reg_check_fail(void *rf_void); bool halrf_rfk_chl_thermal(void *rf_void, u8 chl_index, u8 ther_index); void halrf_rfk_recovery_chl_thermal(void *rf_void, u8 chl_index); u8 halrf_fcs_get_thermal_index(void *rf_void); /**************halrf_init.c**************/ enum rtw_hal_status halrf_dm_init(void *rf_void); enum rtw_hal_status halrf_init(struct rtw_phl_com_t *phl_com, struct rtw_hal_com_t *hal_com, void **rf_out); void halrf_deinit(struct rtw_phl_com_t *phl_com, struct rtw_hal_com_t *hal_com, void *rf); /**************halrf_hw_cfg.c**************/ bool halrf_init_reg_by_hdr(void *rf_void); bool halrf_nctl_init_reg_by_hdr(void *rf_void); bool halrf_config_radio(void *rf_void, enum phl_phy_idx phy); bool halrf_config_radio_a_reg(void *rf_void, bool is_form_folder, u32 folder_len, u32 *folder_array); bool halrf_config_radio_b_reg(void *rf_void, bool is_form_folder, u32 folder_len, u32 *folder_array); bool halrf_config_store_power_by_rate(void *rf_void, bool is_form_folder, u32 folder_len, u32 *folder_array); bool halrf_config_store_power_limit(void *rf_void, bool is_form_folder, u32 folder_len, u32 *folder_array); bool halrf_config_store_power_limit_ru(void *rf_void, bool is_form_folder, u32 folder_len, u32 *folder_array); bool halrf_config_store_power_track(void *rf_void, bool is_form_folder, u32 folder_len, u32 *folder_array); bool halrf_config_store_xtal_track(void *rf_void, bool is_form_folder, u32 folder_len, u32 *folder_array); void halrf_gapk_save_tx_gain(struct rf_info *rf); void halrf_gapk_reload_tx_gain(struct rf_info *rf); /*******************************************/ void halrf_dack_recover(void *rf_void, u8 offset, enum rf_path path, u32 val, bool reload); bool halrf_set_power(struct rf_info *rf, enum phl_phy_idx phy, enum phl_pwr_table pwr_table); bool halrf_get_efuse_power_table_switch(struct rf_info *rf, enum phl_phy_idx phy_idx); void halrf_set_power_table_switch(struct rf_info *rf, enum phl_phy_idx phy, u8 pwr_by_rate, u8 pwr_limt); bool halrf_get_efuse_info(void *rf_void, u8 *efuse_map, enum rtw_efuse_info id, void *value, u32 length, u8 autoload_status); bool halrf_set_dbcc(void *rf_void, bool dbcc_en); bool halrf_wl_tx_power_control(void *rf_void, u32 tx_power_val); void halrf_get_efuse_rx_gain_k(void *rf_void, enum phl_phy_idx phy_idx); void halrf_get_efuse_trim(void *rf_void, enum phl_phy_idx phy_idx); void halrf_do_rx_gain_k(void *rf_void, enum phl_phy_idx phy_idx); enum rtw_hal_status halrf_dpk_tracking(void *rf_void); enum rtw_hal_status halrf_tssi_tracking(void *rf_void); enum rtw_hal_status halrf_tssi_tracking_clean(void *rf_void, s16 power_dbm); u8 halrf_get_default_rfe_type(void *rf_void); u8 halrf_get_default_xtal(void *rf_void); void halrf_power_limit_set_ext_pwr_limit_table(struct rf_info *rf, enum phl_phy_idx phy); void halrf_power_limit_set_ext_pwr_limit_ru_table(struct rf_info *rf, enum phl_phy_idx phy); enum rtw_hal_status halrf_iqk_tracking(void *rf_void); bool halrf_iqk_get_ther_rek(void *rf_void); void halrf_psd_init(void *rf_void, enum phl_phy_idx phy, u8 path, u8 iq_path, u32 avg, u32 fft); void halrf_psd_restore(void *rf_void, enum phl_phy_idx phy); u32 halrf_psd_get_point_data(void *rf_void, enum phl_phy_idx phy, s32 point); void halrf_psd_query(void *rf_void, enum phl_phy_idx phy, u32 point, u32 start_point, u32 stop_point, u32 *outbuf); void halrf_config_radio_to_fw(void *rf_void); void halrf_set_fix_power_to_struct(void *rf_void, enum phl_phy_idx phy, s8 dbm); void halrf_pwr_by_rate_info(struct rf_info *rf, char input[][16], u32 *_used, char *output, u32 *_out_len); void halrf_pwr_limit_info(struct rf_info *rf, char input[][16], u32 *_used, char *output, u32 *_out_len); void halrf_pwr_limit_ru_info(struct rf_info *rf, char input[][16], u32 *_used, char *output, u32 *_out_len); void halrf_get_tssi_info(struct rf_info *rf, char input[][16], u32 *_used, char *output, u32 *_out_len); void halrf_get_tssi_trk_info(struct rf_info *rf, char input[][16], u32 *_used, char *output, u32 *_out_len); void halrf_set_tx_shape(struct rf_info *rf, u8 tx_shape_idx); void halrf_disconnect_notify(void *rf_void, struct rtw_chan_def *chandef); bool halrf_check_mcc_ch(void *rf_void, struct rtw_chan_def *chandef ); void halrf_ctl_bw(void *rf_void, enum channel_width bw); void halrf_ctl_ch(void *rf_void, u8 central_ch); void halrf_rxbb_bw(void *rf_void, enum phl_phy_idx phy, enum channel_width bw); void halrf_ctrl_bw_ch(void *rf_void, enum phl_phy_idx phy, u8 central_ch, enum band_type band, enum channel_width bw); void halrf_fw_ntfy(void *rf_void, enum phl_phy_idx phy_idx); u32 halrf_get_nctl_reg_ver(struct rf_info *rf); u32 halrf_get_radio_reg_ver(struct rf_info *rf); u32 halrf_get_radio_ver_from_reg(struct rf_info *rf); void halrf_config_nctl_reg(struct rf_info *rf); void halrf_set_gpio(void *rf_void, enum phl_phy_idx phy, u8 band); bool halrf_check_efem(void *rf_void, enum phl_phy_idx phy_idx); void halrf_set_regulation_from_driver(void *rf_void, u8 regulation_idx); void halrf_set_regulation_init(void *rf_void, enum phl_phy_idx phy_idx); void halrf_tssi_default_txagc(void *rf_void, enum phl_phy_idx phy_idx, bool enable); void halrf_tssi_set_avg(void *rf_void, enum phl_phy_idx phy_idx, bool enable); void halrf_wifi_event_notify(void *rf_void, enum phl_msg_evt_id event, enum phl_phy_idx phy_idx); void halrf_2g_rxant(void *rf_void, enum halrf_ant ant); s8 halrf_get_ther_protected_threshold(void *rf_void); void halrf_tssi_set_efuse_to_de(void *rf_void, enum phl_phy_idx phy_idx); void halrf_tssi_scan_ch(void *rf_void, enum rf_path path); bool halrf_mac_set_pwr_reg(void *rf_void, enum phl_phy_idx phy, u32 addr, u32 mask, u32 val); u32 halrf_mac_get_pwr_reg(void *rf_void, enum phl_phy_idx phy, u32 addr, u32 mask); s8 halrf_get_ther_protected_threshold(void *rf_void); s8 halrf_xtal_tracking_offset(void *rf_void, enum phl_phy_idx phy_idx); void halrf_hw_tx(void *rf_void, u8 path, u16 cnt, s16 dbm, u32 rate, u8 bw, bool enable); void halrf_set_mp_regulation(void *rf_void, enum phl_phy_idx phy, u8 regulation); u32 halrf_tssi_get_final(void *rf_void, enum phl_phy_idx phy_idx, u8 path); void halrf_tssi_backup_txagc(struct rf_info *rf, enum phl_phy_idx phy, bool enable); void halrf_reload_pwr_limit_tbl_and_set(struct rf_info *rf, enum phl_phy_idx phy, enum phl_pwr_table pwr_table); u32 halrf_test_event_trigger(void *rf_void, enum phl_phy_idx phy, enum halrf_event_idx idx, enum halrf_event_func func); #endif