#include "chan.h"
#include "coex.h"
#include "debug.h"
#include "fw.h"
#include "mac.h"
#include "phy.h"
#include "reg.h"
#include "rtw8852c.h"
#include "rtw8852c_rfk.h"
#include "rtw8852c_table.h"
#include "util.h"
#define RTW8852C_FW_FORMAT_MAX …
#define RTW8852C_FW_BASENAME …
#define RTW8852C_MODULE_FIRMWARE …
static const struct rtw89_hfc_ch_cfg rtw8852c_hfc_chcfg_pcie[] = …;
static const struct rtw89_hfc_pub_cfg rtw8852c_hfc_pubcfg_pcie = …;
static const struct rtw89_hfc_param_ini rtw8852c_hfc_param_ini_pcie[] = …;
static const struct rtw89_dle_mem rtw8852c_dle_mem_pcie[] = …;
static const u32 rtw8852c_h2c_regs[RTW89_H2CREG_MAX] = …;
static const u32 rtw8852c_c2h_regs[RTW89_H2CREG_MAX] = …;
static const u32 rtw8852c_wow_wakeup_regs[RTW89_WOW_REASON_NUM] = …;
static const struct rtw89_page_regs rtw8852c_page_regs = …;
static const struct rtw89_reg_def rtw8852c_dcfo_comp = …;
static const struct rtw89_imr_info rtw8852c_imr_info = …;
static const struct rtw89_rrsr_cfgs rtw8852c_rrsr_cfgs = …;
static const struct rtw89_rfkill_regs rtw8852c_rfkill_regs = …;
static const struct rtw89_dig_regs rtw8852c_dig_regs = …;
static const struct rtw89_edcca_regs rtw8852c_edcca_regs = …;
static void rtw8852c_ctrl_btg_bt_rx(struct rtw89_dev *rtwdev, bool en,
enum rtw89_phy_idx phy_idx);
static void rtw8852c_ctrl_tx_path_tmac(struct rtw89_dev *rtwdev, u8 tx_path,
enum rtw89_mac_idx mac_idx);
static int rtw8852c_pwr_on_func(struct rtw89_dev *rtwdev)
{ … }
static int rtw8852c_pwr_off_func(struct rtw89_dev *rtwdev)
{ … }
static void rtw8852c_e_efuse_parsing(struct rtw89_efuse *efuse,
struct rtw8852c_efuse *map)
{ … }
static void rtw8852c_efuse_parsing_tssi(struct rtw89_dev *rtwdev,
struct rtw8852c_efuse *map)
{ … }
static bool _decode_efuse_gain(u8 data, s8 *high, s8 *low)
{ … }
static void rtw8852c_efuse_parsing_gain_offset(struct rtw89_dev *rtwdev,
struct rtw8852c_efuse *map)
{ … }
static int rtw8852c_read_efuse(struct rtw89_dev *rtwdev, u8 *log_map,
enum rtw89_efuse_block block)
{ … }
static void rtw8852c_phycap_parsing_tssi(struct rtw89_dev *rtwdev, u8 *phycap_map)
{ … }
static void rtw8852c_phycap_parsing_thermal_trim(struct rtw89_dev *rtwdev,
u8 *phycap_map)
{ … }
static void rtw8852c_thermal_trim(struct rtw89_dev *rtwdev)
{ … }
static void rtw8852c_phycap_parsing_pa_bias_trim(struct rtw89_dev *rtwdev,
u8 *phycap_map)
{ … }
static void rtw8852c_pa_bias_trim(struct rtw89_dev *rtwdev)
{ … }
static int rtw8852c_read_phycap(struct rtw89_dev *rtwdev, u8 *phycap_map)
{ … }
static void rtw8852c_power_trim(struct rtw89_dev *rtwdev)
{ … }
static void rtw8852c_set_channel_mac(struct rtw89_dev *rtwdev,
const struct rtw89_chan *chan,
u8 mac_idx)
{ … }
static const u32 rtw8852c_sco_barker_threshold[14] = …;
static const u32 rtw8852c_sco_cck_threshold[14] = …;
static int rtw8852c_ctrl_sco_cck(struct rtw89_dev *rtwdev, u8 central_ch,
u8 primary_ch, enum rtw89_bandwidth bw)
{ … }
struct rtw8852c_bb_gain { … };
static const struct rtw8852c_bb_gain bb_gain_lna[LNA_GAIN_NUM] = …;
static const struct rtw8852c_bb_gain bb_gain_tia[TIA_GAIN_NUM] = …;
struct rtw8852c_bb_gain_bypass { … };
static
const struct rtw8852c_bb_gain_bypass bb_gain_bypass_lna[LNA_GAIN_NUM] = …;
struct rtw8852c_bb_gain_op1db { … };
static const struct rtw8852c_bb_gain_op1db bb_gain_op1db_a = …;
static void rtw8852c_set_gain_error(struct rtw89_dev *rtwdev,
enum rtw89_subband subband,
enum rtw89_rf_path path)
{ … }
static void rtw8852c_set_gain_offset(struct rtw89_dev *rtwdev,
const struct rtw89_chan *chan,
enum rtw89_phy_idx phy_idx,
enum rtw89_rf_path path)
{ … }
static void rtw8852c_ctrl_ch(struct rtw89_dev *rtwdev,
const struct rtw89_chan *chan,
enum rtw89_phy_idx phy_idx)
{ … }
static void rtw8852c_bw_setting(struct rtw89_dev *rtwdev, u8 bw, u8 path)
{ … }
static void rtw8852c_edcca_per20_bitmap_sifs(struct rtw89_dev *rtwdev, u8 bw,
enum rtw89_phy_idx phy_idx)
{ … }
static void
rtw8852c_ctrl_bw(struct rtw89_dev *rtwdev, u8 pri_ch, u8 bw,
enum rtw89_phy_idx phy_idx)
{ … }
static u32 rtw8852c_spur_freq(struct rtw89_dev *rtwdev,
const struct rtw89_chan *chan)
{ … }
#define CARRIER_SPACING_312_5 …
#define CARRIER_SPACING_78_125 …
#define MAX_TONE_NUM …
static void rtw8852c_set_csi_tone_idx(struct rtw89_dev *rtwdev,
const struct rtw89_chan *chan,
enum rtw89_phy_idx phy_idx)
{ … }
static const struct rtw89_nbi_reg_def rtw8852c_nbi_reg_def[] = …;
static void rtw8852c_set_nbi_tone_idx(struct rtw89_dev *rtwdev,
const struct rtw89_chan *chan,
enum rtw89_rf_path path)
{ … }
static void rtw8852c_spur_notch(struct rtw89_dev *rtwdev, u32 val,
enum rtw89_phy_idx phy_idx)
{ … }
static void rtw8852c_spur_elimination(struct rtw89_dev *rtwdev,
const struct rtw89_chan *chan,
u8 pri_ch_idx,
enum rtw89_phy_idx phy_idx)
{ … }
static void rtw8852c_5m_mask(struct rtw89_dev *rtwdev,
const struct rtw89_chan *chan,
enum rtw89_phy_idx phy_idx)
{ … }
static void rtw8852c_bb_reset_all(struct rtw89_dev *rtwdev,
enum rtw89_phy_idx phy_idx)
{ … }
static void rtw8852c_bb_reset_en(struct rtw89_dev *rtwdev, enum rtw89_band band,
enum rtw89_phy_idx phy_idx, bool en)
{ … }
static void rtw8852c_bb_reset(struct rtw89_dev *rtwdev,
enum rtw89_phy_idx phy_idx)
{ … }
static
void rtw8852c_bb_gpio_trsw(struct rtw89_dev *rtwdev, enum rtw89_rf_path path,
u8 tx_path_en, u8 trsw_tx,
u8 trsw_rx, u8 trsw, u8 trsw_b)
{ … }
enum rtw8852c_rfe_src { … };
static
void rtw8852c_bb_gpio_rfm(struct rtw89_dev *rtwdev, enum rtw89_rf_path path,
enum rtw8852c_rfe_src src, u8 dis_tx_gnt_wl,
u8 active_tx_opt, u8 act_bt_en, u8 rfm_output_val)
{ … }
static void rtw8852c_bb_gpio_init(struct rtw89_dev *rtwdev)
{ … }
static void rtw8852c_bb_macid_ctrl_init(struct rtw89_dev *rtwdev,
enum rtw89_phy_idx phy_idx)
{ … }
static void rtw8852c_bb_sethw(struct rtw89_dev *rtwdev)
{ … }
static void rtw8852c_set_channel_bb(struct rtw89_dev *rtwdev,
const struct rtw89_chan *chan,
enum rtw89_phy_idx phy_idx)
{ … }
static void rtw8852c_set_channel(struct rtw89_dev *rtwdev,
const struct rtw89_chan *chan,
enum rtw89_mac_idx mac_idx,
enum rtw89_phy_idx phy_idx)
{ … }
static void rtw8852c_dfs_en(struct rtw89_dev *rtwdev, bool en)
{ … }
static void rtw8852c_adc_en(struct rtw89_dev *rtwdev, bool en)
{ … }
static void rtw8852c_set_channel_help(struct rtw89_dev *rtwdev, bool enter,
struct rtw89_channel_help_params *p,
const struct rtw89_chan *chan,
enum rtw89_mac_idx mac_idx,
enum rtw89_phy_idx phy_idx)
{ … }
static void rtw8852c_rfk_init(struct rtw89_dev *rtwdev)
{ … }
static void rtw8852c_rfk_channel(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif)
{ … }
static void rtw8852c_rfk_band_changed(struct rtw89_dev *rtwdev,
enum rtw89_phy_idx phy_idx,
const struct rtw89_chan *chan)
{ … }
static void rtw8852c_rfk_scan(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif,
bool start)
{ … }
static void rtw8852c_rfk_track(struct rtw89_dev *rtwdev)
{ … }
static u32 rtw8852c_bb_cal_txpwr_ref(struct rtw89_dev *rtwdev,
enum rtw89_phy_idx phy_idx, s16 ref)
{ … }
static
void rtw8852c_set_txpwr_ul_tb_offset(struct rtw89_dev *rtwdev,
s8 pw_ofst, enum rtw89_mac_idx mac_idx)
{ … }
static void rtw8852c_set_txpwr_ref(struct rtw89_dev *rtwdev,
enum rtw89_phy_idx phy_idx)
{ … }
static void rtw8852c_bb_set_tx_shape_dfir(struct rtw89_dev *rtwdev,
const struct rtw89_chan *chan,
u8 tx_shape_idx,
enum rtw89_phy_idx phy_idx)
{ … }
static void rtw8852c_set_tx_shape(struct rtw89_dev *rtwdev,
const struct rtw89_chan *chan,
enum rtw89_phy_idx phy_idx)
{ … }
static void rtw8852c_set_txpwr(struct rtw89_dev *rtwdev,
const struct rtw89_chan *chan,
enum rtw89_phy_idx phy_idx)
{ … }
static void rtw8852c_set_txpwr_ctrl(struct rtw89_dev *rtwdev,
enum rtw89_phy_idx phy_idx)
{ … }
static void
rtw8852c_init_tssi_ctrl(struct rtw89_dev *rtwdev, enum rtw89_phy_idx phy_idx)
{ … }
static int
rtw8852c_init_txpwr_unit(struct rtw89_dev *rtwdev, enum rtw89_phy_idx phy_idx)
{ … }
static void rtw8852c_bb_cfg_rx_path(struct rtw89_dev *rtwdev, u8 rx_path)
{ … }
static void rtw8852c_ctrl_tx_path_tmac(struct rtw89_dev *rtwdev, u8 tx_path,
enum rtw89_mac_idx mac_idx)
{ … }
static void rtw8852c_ctrl_nbtg_bt_tx(struct rtw89_dev *rtwdev, bool en,
enum rtw89_phy_idx phy_idx)
{ … }
static void rtw8852c_bb_cfg_txrx_path(struct rtw89_dev *rtwdev)
{ … }
static u8 rtw8852c_get_thermal(struct rtw89_dev *rtwdev, enum rtw89_rf_path rf_path)
{ … }
static void rtw8852c_btc_set_rfe(struct rtw89_dev *rtwdev)
{ … }
static void rtw8852c_ctrl_btg_bt_rx(struct rtw89_dev *rtwdev, bool en,
enum rtw89_phy_idx phy_idx)
{ … }
static
void rtw8852c_set_trx_mask(struct rtw89_dev *rtwdev, u8 path, u8 group, u32 val)
{ … }
static void rtw8852c_btc_init_cfg(struct rtw89_dev *rtwdev)
{ … }
static
void rtw8852c_btc_set_wl_pri(struct rtw89_dev *rtwdev, u8 map, bool state)
{ … }
rtw8852c_btc_wl_txpwr_ctrl __packed;
static void
rtw8852c_btc_set_wl_txpwr_ctrl(struct rtw89_dev *rtwdev, u32 txpwr_val)
{ … }
static
s8 rtw8852c_btc_get_bt_rssi(struct rtw89_dev *rtwdev, s8 val)
{ … }
static const struct rtw89_btc_rf_trx_para rtw89_btc_8852c_rf_ul[] = …;
static const struct rtw89_btc_rf_trx_para rtw89_btc_8852c_rf_dl[] = …;
static const u8 rtw89_btc_8852c_wl_rssi_thres[BTC_WL_RSSI_THMAX] = …;
static const u8 rtw89_btc_8852c_bt_rssi_thres[BTC_BT_RSSI_THMAX] = …;
static const struct rtw89_btc_fbtc_mreg rtw89_btc_8852c_mon_reg[] = …;
static
void rtw8852c_btc_update_bt_cnt(struct rtw89_dev *rtwdev)
{ … }
static
void rtw8852c_btc_wl_s1_standby(struct rtw89_dev *rtwdev, bool state)
{ … }
static void rtw8852c_set_wl_lna2(struct rtw89_dev *rtwdev, u8 level)
{ … }
static void rtw8852c_btc_set_wl_rx_gain(struct rtw89_dev *rtwdev, u32 level)
{ … }
static void rtw8852c_fill_freq_with_ppdu(struct rtw89_dev *rtwdev,
struct rtw89_rx_phy_ppdu *phy_ppdu,
struct ieee80211_rx_status *status)
{ … }
static void rtw8852c_query_ppdu(struct rtw89_dev *rtwdev,
struct rtw89_rx_phy_ppdu *phy_ppdu,
struct ieee80211_rx_status *status)
{ … }
static int rtw8852c_mac_enable_bb_rf(struct rtw89_dev *rtwdev)
{ … }
static int rtw8852c_mac_disable_bb_rf(struct rtw89_dev *rtwdev)
{ … }
static const struct rtw89_chanctx_listener rtw8852c_chanctx_listener = …;
#ifdef CONFIG_PM
static const struct wiphy_wowlan_support rtw_wowlan_stub_8852c = …;
#endif
static const struct rtw89_chip_ops rtw8852c_chip_ops = …;
const struct rtw89_chip_info rtw8852c_chip_info = …;
EXPORT_SYMBOL(…);
MODULE_FIRMWARE(…);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;