linux/drivers/net/wireless/realtek/rtw89/phy.c

// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
/* Copyright(c) 2019-2020  Realtek Corporation
 */

#include "chan.h"
#include "coex.h"
#include "debug.h"
#include "fw.h"
#include "mac.h"
#include "phy.h"
#include "ps.h"
#include "reg.h"
#include "sar.h"
#include "txrx.h"
#include "util.h"

static u32 rtw89_phy0_phy1_offset(struct rtw89_dev *rtwdev, u32 addr)
{}

static u16 get_max_amsdu_len(struct rtw89_dev *rtwdev,
			     const struct rtw89_ra_report *report)
{}

static u64 get_mcs_ra_mask(u16 mcs_map, u8 highest_mcs, u8 gap)
{}

static u64 get_he_ra_mask(struct ieee80211_sta *sta)
{}

static u64 get_eht_mcs_ra_mask(u8 *max_nss, u8 start_mcs, u8 n_nss)
{}

static u64 get_eht_ra_mask(struct ieee80211_sta *sta)
{}

#define RA_FLOOR_TABLE_SIZE
#define RA_FLOOR_UP_GAP
static u64 rtw89_phy_ra_mask_rssi(struct rtw89_dev *rtwdev, u8 rssi,
				  u8 ratr_state)
{}

static u64 rtw89_phy_ra_mask_recover(u64 ra_mask, u64 ra_mask_bak)
{}

static u64 rtw89_phy_ra_mask_cfg(struct rtw89_dev *rtwdev, struct rtw89_sta *rtwsta,
				 const struct rtw89_chan *chan)
{}

static const u64
rtw89_ra_mask_ht_rates[4] =;
static const u64
rtw89_ra_mask_vht_rates[4] =;
static const u64
rtw89_ra_mask_he_rates[4] =;
static const u64
rtw89_ra_mask_eht_rates[4] =;

static void rtw89_phy_ra_gi_ltf(struct rtw89_dev *rtwdev,
				struct rtw89_sta *rtwsta,
				const struct rtw89_chan *chan,
				bool *fix_giltf_en, u8 *fix_giltf)
{}

static void rtw89_phy_ra_sta_update(struct rtw89_dev *rtwdev,
				    struct ieee80211_sta *sta, bool csi)
{}

void rtw89_phy_ra_update_sta(struct rtw89_dev *rtwdev, struct ieee80211_sta *sta,
			     u32 changed)
{}

static bool __check_rate_pattern(struct rtw89_phy_rate_pattern *next,
				 u16 rate_base, u64 ra_mask, u8 ra_mode,
				 u32 rate_ctrl, u32 ctrl_skip, bool force)
{}

#define RTW89_HW_RATE_BY_CHIP_GEN(rate)

void rtw89_phy_rate_pattern_vif(struct rtw89_dev *rtwdev,
				struct ieee80211_vif *vif,
				const struct cfg80211_bitrate_mask *mask)
{}

static void rtw89_phy_ra_update_sta_iter(void *data, struct ieee80211_sta *sta)
{}

void rtw89_phy_ra_update(struct rtw89_dev *rtwdev)
{}

void rtw89_phy_ra_assoc(struct rtw89_dev *rtwdev, struct ieee80211_sta *sta)
{}

u8 rtw89_phy_get_txsc(struct rtw89_dev *rtwdev,
		      const struct rtw89_chan *chan,
		      enum rtw89_bandwidth dbw)
{}
EXPORT_SYMBOL();

u8 rtw89_phy_get_txsb(struct rtw89_dev *rtwdev, const struct rtw89_chan *chan,
		      enum rtw89_bandwidth dbw)
{}
EXPORT_SYMBOL();

static bool rtw89_phy_check_swsi_busy(struct rtw89_dev *rtwdev)
{}

u32 rtw89_phy_read_rf(struct rtw89_dev *rtwdev, enum rtw89_rf_path rf_path,
		      u32 addr, u32 mask)
{}
EXPORT_SYMBOL();

static u32 rtw89_phy_read_rf_a(struct rtw89_dev *rtwdev,
			       enum rtw89_rf_path rf_path, u32 addr, u32 mask)
{}

u32 rtw89_phy_read_rf_v1(struct rtw89_dev *rtwdev, enum rtw89_rf_path rf_path,
			 u32 addr, u32 mask)
{}
EXPORT_SYMBOL();

static u32 rtw89_phy_read_full_rf_v2_a(struct rtw89_dev *rtwdev,
				       enum rtw89_rf_path rf_path, u32 addr)
{}

static u32 rtw89_phy_read_rf_v2_a(struct rtw89_dev *rtwdev,
				  enum rtw89_rf_path rf_path, u32 addr, u32 mask)
{}

u32 rtw89_phy_read_rf_v2(struct rtw89_dev *rtwdev, enum rtw89_rf_path rf_path,
			 u32 addr, u32 mask)
{}
EXPORT_SYMBOL();

bool rtw89_phy_write_rf(struct rtw89_dev *rtwdev, enum rtw89_rf_path rf_path,
			u32 addr, u32 mask, u32 data)
{}
EXPORT_SYMBOL();

static bool rtw89_phy_write_rf_a(struct rtw89_dev *rtwdev,
				 enum rtw89_rf_path rf_path, u32 addr, u32 mask,
				 u32 data)
{}

bool rtw89_phy_write_rf_v1(struct rtw89_dev *rtwdev, enum rtw89_rf_path rf_path,
			   u32 addr, u32 mask, u32 data)
{}
EXPORT_SYMBOL();

static
bool rtw89_phy_write_full_rf_v2_a(struct rtw89_dev *rtwdev, enum rtw89_rf_path rf_path,
				  u32 addr, u32 data)
{}

static
bool rtw89_phy_write_rf_a_v2(struct rtw89_dev *rtwdev, enum rtw89_rf_path rf_path,
			     u32 addr, u32 mask, u32 data)
{}

bool rtw89_phy_write_rf_v2(struct rtw89_dev *rtwdev, enum rtw89_rf_path rf_path,
			   u32 addr, u32 mask, u32 data)
{}
EXPORT_SYMBOL();

static bool rtw89_chip_rf_v1(struct rtw89_dev *rtwdev)
{}

static void rtw89_phy_bb_reset(struct rtw89_dev *rtwdev,
			       enum rtw89_phy_idx phy_idx)
{}

static void rtw89_phy_config_bb_reg(struct rtw89_dev *rtwdev,
				    const struct rtw89_reg2_def *reg,
				    enum rtw89_rf_path rf_path,
				    void *extra_data)
{}

rtw89_phy_bb_gain_arg __packed;

static void
rtw89_phy_cfg_bb_gain_error(struct rtw89_dev *rtwdev,
			    union rtw89_phy_bb_gain_arg arg, u32 data)
{}

enum rtw89_phy_bb_rxsc_start_idx {};

static void
rtw89_phy_cfg_bb_rpl_ofst(struct rtw89_dev *rtwdev,
			  union rtw89_phy_bb_gain_arg arg, u32 data)
{}

static void
rtw89_phy_cfg_bb_gain_bypass(struct rtw89_dev *rtwdev,
			     union rtw89_phy_bb_gain_arg arg, u32 data)
{}

static void
rtw89_phy_cfg_bb_gain_op1db(struct rtw89_dev *rtwdev,
			    union rtw89_phy_bb_gain_arg arg, u32 data)
{}

static void rtw89_phy_config_bb_gain_ax(struct rtw89_dev *rtwdev,
					const struct rtw89_reg2_def *reg,
					enum rtw89_rf_path rf_path,
					void *extra_data)
{}

static void
rtw89_phy_cofig_rf_reg_store(struct rtw89_dev *rtwdev,
			     const struct rtw89_reg2_def *reg,
			     enum rtw89_rf_path rf_path,
			     struct rtw89_fw_h2c_rf_reg_info *info)
{}

static int rtw89_phy_config_rf_reg_fw(struct rtw89_dev *rtwdev,
				      struct rtw89_fw_h2c_rf_reg_info *info)
{}

static void rtw89_phy_config_rf_reg_noio(struct rtw89_dev *rtwdev,
					 const struct rtw89_reg2_def *reg,
					 enum rtw89_rf_path rf_path,
					 void *extra_data)
{}

static void rtw89_phy_config_rf_reg(struct rtw89_dev *rtwdev,
				    const struct rtw89_reg2_def *reg,
				    enum rtw89_rf_path rf_path,
				    void *extra_data)
{}

void rtw89_phy_config_rf_reg_v1(struct rtw89_dev *rtwdev,
				const struct rtw89_reg2_def *reg,
				enum rtw89_rf_path rf_path,
				void *extra_data)
{}
EXPORT_SYMBOL();

static int rtw89_phy_sel_headline(struct rtw89_dev *rtwdev,
				  const struct rtw89_phy_table *table,
				  u32 *headline_size, u32 *headline_idx,
				  u8 rfe, u8 cv)
{}

static void rtw89_phy_init_reg(struct rtw89_dev *rtwdev,
			       const struct rtw89_phy_table *table,
			       void (*config)(struct rtw89_dev *rtwdev,
					      const struct rtw89_reg2_def *reg,
					      enum rtw89_rf_path rf_path,
					      void *data),
			       void *extra_data)
{}

void rtw89_phy_init_bb_reg(struct rtw89_dev *rtwdev)
{}

static u32 rtw89_phy_nctl_poll(struct rtw89_dev *rtwdev)
{}

void rtw89_phy_init_rf_reg(struct rtw89_dev *rtwdev, bool noio)
{}

static void rtw89_phy_preinit_rf_nctl_ax(struct rtw89_dev *rtwdev)
{}

static void rtw89_phy_init_rf_nctl(struct rtw89_dev *rtwdev)
{}

static u32 rtw89_phy0_phy1_offset_ax(struct rtw89_dev *rtwdev, u32 addr)
{}

void rtw89_phy_write32_idx(struct rtw89_dev *rtwdev, u32 addr, u32 mask,
			   u32 data, enum rtw89_phy_idx phy_idx)
{}
EXPORT_SYMBOL();

u32 rtw89_phy_read32_idx(struct rtw89_dev *rtwdev, u32 addr, u32 mask,
			 enum rtw89_phy_idx phy_idx)
{}
EXPORT_SYMBOL();

void rtw89_phy_set_phy_regs(struct rtw89_dev *rtwdev, u32 addr, u32 mask,
			    u32 val)
{}
EXPORT_SYMBOL();

void rtw89_phy_write_reg3_tbl(struct rtw89_dev *rtwdev,
			      const struct rtw89_phy_reg3_tbl *tbl)
{}
EXPORT_SYMBOL();

static const u8 rtw89_rs_idx_num_ax[] =;

static const u8 rtw89_rs_nss_num_ax[] =;

s8 *rtw89_phy_raw_byr_seek(struct rtw89_dev *rtwdev,
			   struct rtw89_txpwr_byrate *head,
			   const struct rtw89_rate_desc *desc)
{}

void rtw89_phy_load_txpwr_byrate(struct rtw89_dev *rtwdev,
				 const struct rtw89_txpwr_table *tbl)
{}
EXPORT_SYMBOL();

static s8 rtw89_phy_txpwr_rf_to_mac(struct rtw89_dev *rtwdev, s8 txpwr_rf)
{}

static s8 rtw89_phy_txpwr_dbm_to_mac(struct rtw89_dev *rtwdev, s8 dbm)
{}

static s8 rtw89_phy_txpwr_dbm_without_tolerance(s8 dbm)
{}

static s8 rtw89_phy_get_tpe_constraint(struct rtw89_dev *rtwdev, u8 band)
{}

s8 rtw89_phy_read_txpwr_byrate(struct rtw89_dev *rtwdev, u8 band, u8 bw,
			       const struct rtw89_rate_desc *rate_desc)
{}

static u8 rtw89_channel_6g_to_idx(struct rtw89_dev *rtwdev, u8 channel_6g)
{}

static u8 rtw89_channel_to_idx(struct rtw89_dev *rtwdev, u8 band, u8 channel)
{}

s8 rtw89_phy_read_txpwr_limit(struct rtw89_dev *rtwdev, u8 band,
			      u8 bw, u8 ntx, u8 rs, u8 bf, u8 ch)
{}
EXPORT_SYMBOL();

#define __fill_txpwr_limit_nonbf_bf(ptr, band, bw, ntx, rs, ch)

static void rtw89_phy_fill_txpwr_limit_20m_ax(struct rtw89_dev *rtwdev,
					      struct rtw89_txpwr_limit_ax *lmt,
					      u8 band, u8 ntx, u8 ch)
{}

static void rtw89_phy_fill_txpwr_limit_40m_ax(struct rtw89_dev *rtwdev,
					      struct rtw89_txpwr_limit_ax *lmt,
					      u8 band, u8 ntx, u8 ch, u8 pri_ch)
{}

static void rtw89_phy_fill_txpwr_limit_80m_ax(struct rtw89_dev *rtwdev,
					      struct rtw89_txpwr_limit_ax *lmt,
					      u8 band, u8 ntx, u8 ch, u8 pri_ch)
{}

static void rtw89_phy_fill_txpwr_limit_160m_ax(struct rtw89_dev *rtwdev,
					       struct rtw89_txpwr_limit_ax *lmt,
					       u8 band, u8 ntx, u8 ch, u8 pri_ch)
{}

static
void rtw89_phy_fill_txpwr_limit_ax(struct rtw89_dev *rtwdev,
				   const struct rtw89_chan *chan,
				   struct rtw89_txpwr_limit_ax *lmt,
				   u8 ntx)
{}

s8 rtw89_phy_read_txpwr_limit_ru(struct rtw89_dev *rtwdev, u8 band,
				 u8 ru, u8 ntx, u8 ch)
{}

static void
rtw89_phy_fill_txpwr_limit_ru_20m_ax(struct rtw89_dev *rtwdev,
				     struct rtw89_txpwr_limit_ru_ax *lmt_ru,
				     u8 band, u8 ntx, u8 ch)
{}

static void
rtw89_phy_fill_txpwr_limit_ru_40m_ax(struct rtw89_dev *rtwdev,
				     struct rtw89_txpwr_limit_ru_ax *lmt_ru,
				     u8 band, u8 ntx, u8 ch)
{}

static void
rtw89_phy_fill_txpwr_limit_ru_80m_ax(struct rtw89_dev *rtwdev,
				     struct rtw89_txpwr_limit_ru_ax *lmt_ru,
				     u8 band, u8 ntx, u8 ch)
{}

static void
rtw89_phy_fill_txpwr_limit_ru_160m_ax(struct rtw89_dev *rtwdev,
				      struct rtw89_txpwr_limit_ru_ax *lmt_ru,
				      u8 band, u8 ntx, u8 ch)
{}

static
void rtw89_phy_fill_txpwr_limit_ru_ax(struct rtw89_dev *rtwdev,
				      const struct rtw89_chan *chan,
				      struct rtw89_txpwr_limit_ru_ax *lmt_ru,
				      u8 ntx)
{}

static void rtw89_phy_set_txpwr_byrate_ax(struct rtw89_dev *rtwdev,
					  const struct rtw89_chan *chan,
					  enum rtw89_phy_idx phy_idx)
{}

static
void rtw89_phy_set_txpwr_offset_ax(struct rtw89_dev *rtwdev,
				   const struct rtw89_chan *chan,
				   enum rtw89_phy_idx phy_idx)
{}

static void rtw89_phy_set_txpwr_limit_ax(struct rtw89_dev *rtwdev,
					 const struct rtw89_chan *chan,
					 enum rtw89_phy_idx phy_idx)
{}

static void rtw89_phy_set_txpwr_limit_ru_ax(struct rtw89_dev *rtwdev,
					    const struct rtw89_chan *chan,
					    enum rtw89_phy_idx phy_idx)
{}

struct rtw89_phy_iter_ra_data {};

static void rtw89_phy_c2h_ra_rpt_iter(void *data, struct ieee80211_sta *sta)
{}

static void
rtw89_phy_c2h_ra_rpt(struct rtw89_dev *rtwdev, struct sk_buff *c2h, u32 len)
{}

static
void (* const rtw89_phy_c2h_ra_handler[])(struct rtw89_dev *rtwdev,
					  struct sk_buff *c2h, u32 len) =;

static void rtw89_phy_c2h_rfk_rpt_log(struct rtw89_dev *rtwdev,
				      enum rtw89_phy_c2h_rfk_log_func func,
				      void *content, u16 len)
{}

static bool rtw89_phy_c2h_rfk_run_log(struct rtw89_dev *rtwdev,
				      enum rtw89_phy_c2h_rfk_log_func func,
				      void *content, u16 len)
{}

static void rtw89_phy_c2h_rfk_log(struct rtw89_dev *rtwdev, struct sk_buff *c2h,
				  u32 len, enum rtw89_phy_c2h_rfk_log_func func,
				  const char *rfk_name)
{}

static void
rtw89_phy_c2h_rfk_log_iqk(struct rtw89_dev *rtwdev, struct sk_buff *c2h, u32 len)
{}

static void
rtw89_phy_c2h_rfk_log_dpk(struct rtw89_dev *rtwdev, struct sk_buff *c2h, u32 len)
{}

static void
rtw89_phy_c2h_rfk_log_dack(struct rtw89_dev *rtwdev, struct sk_buff *c2h, u32 len)
{}

static void
rtw89_phy_c2h_rfk_log_rxdck(struct rtw89_dev *rtwdev, struct sk_buff *c2h, u32 len)
{}

static void
rtw89_phy_c2h_rfk_log_tssi(struct rtw89_dev *rtwdev, struct sk_buff *c2h, u32 len)
{}

static void
rtw89_phy_c2h_rfk_log_txgapk(struct rtw89_dev *rtwdev, struct sk_buff *c2h, u32 len)
{}

static
void (* const rtw89_phy_c2h_rfk_log_handler[])(struct rtw89_dev *rtwdev,
					       struct sk_buff *c2h, u32 len) =;

static
void rtw89_phy_rfk_report_prep(struct rtw89_dev *rtwdev)
{}

static
int rtw89_phy_rfk_report_wait(struct rtw89_dev *rtwdev, const char *rfk_name,
			      unsigned int ms)
{}

static void
rtw89_phy_c2h_rfk_report_state(struct rtw89_dev *rtwdev, struct sk_buff *c2h, u32 len)
{}

static
void (* const rtw89_phy_c2h_rfk_report_handler[])(struct rtw89_dev *rtwdev,
						  struct sk_buff *c2h, u32 len) =;

bool rtw89_phy_c2h_chk_atomic(struct rtw89_dev *rtwdev, u8 class, u8 func)
{}

void rtw89_phy_c2h_handle(struct rtw89_dev *rtwdev, struct sk_buff *skb,
			  u32 len, u8 class, u8 func)
{}

int rtw89_phy_rfk_pre_ntfy_and_wait(struct rtw89_dev *rtwdev,
				    enum rtw89_phy_idx phy_idx,
				    unsigned int ms)
{}
EXPORT_SYMBOL();

int rtw89_phy_rfk_tssi_and_wait(struct rtw89_dev *rtwdev,
				enum rtw89_phy_idx phy_idx,
				const struct rtw89_chan *chan,
				enum rtw89_tssi_mode tssi_mode,
				unsigned int ms)
{}
EXPORT_SYMBOL();

int rtw89_phy_rfk_iqk_and_wait(struct rtw89_dev *rtwdev,
			       enum rtw89_phy_idx phy_idx,
			       const struct rtw89_chan *chan,
			       unsigned int ms)
{}
EXPORT_SYMBOL();

int rtw89_phy_rfk_dpk_and_wait(struct rtw89_dev *rtwdev,
			       enum rtw89_phy_idx phy_idx,
			       const struct rtw89_chan *chan,
			       unsigned int ms)
{}
EXPORT_SYMBOL();

int rtw89_phy_rfk_txgapk_and_wait(struct rtw89_dev *rtwdev,
				  enum rtw89_phy_idx phy_idx,
				  const struct rtw89_chan *chan,
				  unsigned int ms)
{}
EXPORT_SYMBOL();

int rtw89_phy_rfk_dack_and_wait(struct rtw89_dev *rtwdev,
				enum rtw89_phy_idx phy_idx,
				const struct rtw89_chan *chan,
				unsigned int ms)
{}
EXPORT_SYMBOL();

int rtw89_phy_rfk_rxdck_and_wait(struct rtw89_dev *rtwdev,
				 enum rtw89_phy_idx phy_idx,
				 const struct rtw89_chan *chan,
				 unsigned int ms)
{}
EXPORT_SYMBOL();

static u32 phy_tssi_get_cck_group(u8 ch)
{}

#define PHY_TSSI_EXTRA_GROUP_BIT
#define PHY_TSSI_EXTRA_GROUP(idx)
#define PHY_IS_TSSI_EXTRA_GROUP(group)
#define PHY_TSSI_EXTRA_GET_GROUP_IDX1(group)
#define PHY_TSSI_EXTRA_GET_GROUP_IDX2(group)

static u32 phy_tssi_get_ofdm_group(u8 ch)
{}

static u32 phy_tssi_get_6g_ofdm_group(u8 ch)
{}

static u32 phy_tssi_get_trim_group(u8 ch)
{}

static u32 phy_tssi_get_6g_trim_group(u8 ch)
{}

static s8 phy_tssi_get_ofdm_de(struct rtw89_dev *rtwdev,
			       enum rtw89_phy_idx phy,
			       const struct rtw89_chan *chan,
			       enum rtw89_rf_path path)
{}

static s8 phy_tssi_get_ofdm_trim_de(struct rtw89_dev *rtwdev,
				    enum rtw89_phy_idx phy,
				    const struct rtw89_chan *chan,
				    enum rtw89_rf_path path)
{}

void rtw89_phy_rfk_tssi_fill_fwcmd_efuse_to_de(struct rtw89_dev *rtwdev,
					       enum rtw89_phy_idx phy,
					       const struct rtw89_chan *chan,
					       struct rtw89_h2c_rf_tssi *h2c)
{}

void rtw89_phy_rfk_tssi_fill_fwcmd_tmeter_tbl(struct rtw89_dev *rtwdev,
					      enum rtw89_phy_idx phy,
					      const struct rtw89_chan *chan,
					      struct rtw89_h2c_rf_tssi *h2c)
{}

static u8 rtw89_phy_cfo_get_xcap_reg(struct rtw89_dev *rtwdev, bool sc_xo)
{}

static void rtw89_phy_cfo_set_xcap_reg(struct rtw89_dev *rtwdev, bool sc_xo,
				       u8 val)
{}

static void rtw89_phy_cfo_set_crystal_cap(struct rtw89_dev *rtwdev,
					  u8 crystal_cap, bool force)
{}

static void rtw89_phy_cfo_reset(struct rtw89_dev *rtwdev)
{}

static void rtw89_dcfo_comp(struct rtw89_dev *rtwdev, s32 curr_cfo)
{}

static void rtw89_dcfo_comp_init(struct rtw89_dev *rtwdev)
{}

static void rtw89_phy_cfo_init(struct rtw89_dev *rtwdev)
{}

static void rtw89_phy_cfo_crystal_cap_adjust(struct rtw89_dev *rtwdev,
					     s32 curr_cfo)
{}

static s32 rtw89_phy_average_cfo_calc(struct rtw89_dev *rtwdev)
{}

static s32 rtw89_phy_multi_sta_cfo_calc(struct rtw89_dev *rtwdev)
{}

static void rtw89_phy_cfo_statistics_reset(struct rtw89_dev *rtwdev)
{}

static void rtw89_phy_cfo_dm(struct rtw89_dev *rtwdev)
{}

void rtw89_phy_cfo_track_work(struct work_struct *work)
{}

static void rtw89_phy_cfo_start_work(struct rtw89_dev *rtwdev)
{}

void rtw89_phy_cfo_track(struct rtw89_dev *rtwdev)
{}

void rtw89_phy_cfo_parse(struct rtw89_dev *rtwdev, s16 cfo_val,
			 struct rtw89_rx_phy_ppdu *phy_ppdu)
{}

void rtw89_phy_ul_tb_assoc(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif)
{}

struct rtw89_phy_ul_tb_check_data {};

struct rtw89_phy_power_diff {};

static void rtw89_phy_ofdma_power_diff(struct rtw89_dev *rtwdev,
				       struct rtw89_vif *rtwvif)
{}

static
void rtw89_phy_ul_tb_ctrl_check(struct rtw89_dev *rtwdev,
				struct rtw89_vif *rtwvif,
				struct rtw89_phy_ul_tb_check_data *ul_tb_data)
{}

static void rtw89_phy_ul_tb_waveform_ctrl(struct rtw89_dev *rtwdev,
					  struct rtw89_phy_ul_tb_check_data *ul_tb_data)
{}

void rtw89_phy_ul_tb_ctrl_track(struct rtw89_dev *rtwdev)
{}

static void rtw89_phy_ul_tb_info_init(struct rtw89_dev *rtwdev)
{}

static
void rtw89_phy_antdiv_sts_instance_reset(struct rtw89_antdiv_stats *antdiv_sts)
{}

static void rtw89_phy_antdiv_sts_instance_add(struct rtw89_dev *rtwdev,
					      struct rtw89_rx_phy_ppdu *phy_ppdu,
					      struct rtw89_antdiv_stats *stats)
{}

static u8 rtw89_phy_antdiv_sts_instance_get_rssi(struct rtw89_antdiv_stats *stats)
{}

static u8 rtw89_phy_antdiv_sts_instance_get_evm(struct rtw89_antdiv_stats *stats)
{}

void rtw89_phy_antdiv_parse(struct rtw89_dev *rtwdev,
			    struct rtw89_rx_phy_ppdu *phy_ppdu)
{}

static void rtw89_phy_antdiv_reg_init(struct rtw89_dev *rtwdev)
{}

static void rtw89_phy_antdiv_sts_reset(struct rtw89_dev *rtwdev)
{}

static void rtw89_phy_antdiv_init(struct rtw89_dev *rtwdev)
{}

static void rtw89_phy_stat_thermal_update(struct rtw89_dev *rtwdev)
{}

struct rtw89_phy_iter_rssi_data {};

static void rtw89_phy_stat_rssi_update_iter(void *data,
					    struct ieee80211_sta *sta)
{}

static void rtw89_phy_stat_rssi_update(struct rtw89_dev *rtwdev)
{}

static void rtw89_phy_stat_init(struct rtw89_dev *rtwdev)
{}

void rtw89_phy_stat_track(struct rtw89_dev *rtwdev)
{}

static u16 rtw89_phy_ccx_us_to_idx(struct rtw89_dev *rtwdev, u32 time_us)
{}

static u32 rtw89_phy_ccx_idx_to_us(struct rtw89_dev *rtwdev, u16 idx)
{}

static void rtw89_phy_ccx_top_setting_init(struct rtw89_dev *rtwdev)
{}

static u16 rtw89_phy_ccx_get_report(struct rtw89_dev *rtwdev, u16 report,
				    u16 score)
{}

static void rtw89_phy_ccx_ms_to_period_unit(struct rtw89_dev *rtwdev,
					    u16 time_ms, u32 *period,
					    u32 *unit_idx)
{}

static void rtw89_phy_ccx_racing_release(struct rtw89_dev *rtwdev)
{}

static bool rtw89_phy_ifs_clm_th_update_check(struct rtw89_dev *rtwdev,
					      struct rtw89_ccx_para_info *para)
{}

static void rtw89_phy_ifs_clm_set_th_reg(struct rtw89_dev *rtwdev)
{}

static void rtw89_phy_ifs_clm_setting_init(struct rtw89_dev *rtwdev)
{}

static int rtw89_phy_ccx_racing_ctrl(struct rtw89_dev *rtwdev,
				     enum rtw89_env_racing_lv level)
{}

static void rtw89_phy_ccx_trigger(struct rtw89_dev *rtwdev)
{}

static void rtw89_phy_ifs_clm_get_utility(struct rtw89_dev *rtwdev)
{}

static bool rtw89_phy_ifs_clm_get_result(struct rtw89_dev *rtwdev)
{}

static int rtw89_phy_ifs_clm_set(struct rtw89_dev *rtwdev,
				 struct rtw89_ccx_para_info *para)
{}

void rtw89_phy_env_monitor_track(struct rtw89_dev *rtwdev)
{}

static bool rtw89_physts_ie_page_valid(enum rtw89_phy_status_bitmap *ie_page)
{}

static u32 rtw89_phy_get_ie_bitmap_addr(enum rtw89_phy_status_bitmap ie_page)
{}

static u32 rtw89_physts_get_ie_bitmap(struct rtw89_dev *rtwdev,
				      enum rtw89_phy_status_bitmap ie_page)
{}

static void rtw89_physts_set_ie_bitmap(struct rtw89_dev *rtwdev,
				       enum rtw89_phy_status_bitmap ie_page,
				       u32 val)
{}

static void rtw89_physts_enable_ie_bitmap(struct rtw89_dev *rtwdev,
					  enum rtw89_phy_status_bitmap bitmap,
					  enum rtw89_phy_status_ie_type ie,
					  bool enable)
{}

static void rtw89_physts_enable_fail_report(struct rtw89_dev *rtwdev,
					    bool enable,
					    enum rtw89_phy_idx phy_idx)
{}

static void rtw89_physts_parsing_init(struct rtw89_dev *rtwdev)
{}

static void rtw89_phy_dig_read_gain_table(struct rtw89_dev *rtwdev, int type)
{}

static void rtw89_phy_dig_update_gain_para(struct rtw89_dev *rtwdev)
{}

static const u8 rssi_nolink =;
static const u8 igi_rssi_th[IGI_RSSI_TH_NUM] =;
static const u16 fa_th_2g[FA_TH_NUM] =;
static const u16 fa_th_5g[FA_TH_NUM] =;
static const u16 fa_th_nolink[FA_TH_NUM] =;

static void rtw89_phy_dig_update_rssi_info(struct rtw89_dev *rtwdev)
{}

static void rtw89_phy_dig_update_para(struct rtw89_dev *rtwdev)
{}

static const u8 pd_low_th_offset =, dynamic_igi_min =;
static const u8 igi_max_performance_mode =;
static const u8 dynamic_pd_threshold_max;

static void rtw89_phy_dig_para_reset(struct rtw89_dev *rtwdev)
{}

static void rtw89_phy_dig_init(struct rtw89_dev *rtwdev)
{}

static u8 rtw89_phy_dig_lna_idx_by_rssi(struct rtw89_dev *rtwdev, u8 rssi)
{}

static u8 rtw89_phy_dig_tia_idx_by_rssi(struct rtw89_dev *rtwdev, u8 rssi)
{}

#define IB_PBK_BASE
#define WB_RSSI_BASE
static u8 rtw89_phy_dig_rxb_idx_by_rssi(struct rtw89_dev *rtwdev, u8 rssi,
					struct rtw89_agc_gaincode_set *set)
{}

static void rtw89_phy_dig_gaincode_by_rssi(struct rtw89_dev *rtwdev, u8 rssi,
					   struct rtw89_agc_gaincode_set *set)
{}

#define IGI_OFFSET_MAX
#define IGI_OFFSET_MUL
static void rtw89_phy_dig_igi_offset_by_env(struct rtw89_dev *rtwdev)
{}

static void rtw89_phy_dig_set_lna_idx(struct rtw89_dev *rtwdev, u8 lna_idx)
{}

static void rtw89_phy_dig_set_tia_idx(struct rtw89_dev *rtwdev, u8 tia_idx)
{}

static void rtw89_phy_dig_set_rxb_idx(struct rtw89_dev *rtwdev, u8 rxb_idx)
{}

static void rtw89_phy_dig_set_igi_cr(struct rtw89_dev *rtwdev,
				     const struct rtw89_agc_gaincode_set set)
{}

static void rtw89_phy_dig_sdagc_follow_pagc_config(struct rtw89_dev *rtwdev,
						   bool enable)
{}

static void rtw89_phy_dig_config_igi(struct rtw89_dev *rtwdev)
{}

static void rtw89_phy_dig_dyn_pd_th(struct rtw89_dev *rtwdev, u8 rssi,
				    bool enable)
{}

void rtw89_phy_dig_reset(struct rtw89_dev *rtwdev)
{}

#define IGI_RSSI_MIN
#define ABS_IGI_MIN
void rtw89_phy_dig(struct rtw89_dev *rtwdev)
{}

static void rtw89_phy_tx_path_div_sta_iter(void *data, struct ieee80211_sta *sta)
{}

void rtw89_phy_tx_path_div_track(struct rtw89_dev *rtwdev)
{}

#define ANTDIV_MAIN
#define ANTDIV_AUX

static void rtw89_phy_antdiv_set_ant(struct rtw89_dev *rtwdev)
{}

static void rtw89_phy_swap_hal_antenna(struct rtw89_dev *rtwdev)
{}

static void rtw89_phy_antdiv_decision_state(struct rtw89_dev *rtwdev)
{}

static void rtw89_phy_antdiv_training_state(struct rtw89_dev *rtwdev)
{}

void rtw89_phy_antdiv_work(struct work_struct *work)
{}

void rtw89_phy_antdiv_track(struct rtw89_dev *rtwdev)
{}

static void rtw89_phy_env_monitor_init(struct rtw89_dev *rtwdev)
{}

static void rtw89_phy_edcca_init(struct rtw89_dev *rtwdev)
{}

void rtw89_phy_dm_init(struct rtw89_dev *rtwdev)
{}

void rtw89_phy_set_bss_color(struct rtw89_dev *rtwdev, struct ieee80211_vif *vif)
{}

static bool rfk_chan_validate_desc(const struct rtw89_rfk_chan_desc *desc)
{}

static bool rfk_chan_is_equivalent(const struct rtw89_rfk_chan_desc *desc,
				   const struct rtw89_chan *chan)
{}

struct rfk_chan_iter_data {};

static int rfk_chan_iter_search(const struct rtw89_chan *chan, void *data)
{}

u8 rtw89_rfk_chan_lookup(struct rtw89_dev *rtwdev,
			 const struct rtw89_rfk_chan_desc *desc, u8 desc_nr,
			 const struct rtw89_chan *target_chan)
{}
EXPORT_SYMBOL();

static void
_rfk_write_rf(struct rtw89_dev *rtwdev, const struct rtw89_reg5_def *def)
{}

static void
_rfk_write32_mask(struct rtw89_dev *rtwdev, const struct rtw89_reg5_def *def)
{}

static void
_rfk_write32_set(struct rtw89_dev *rtwdev, const struct rtw89_reg5_def *def)
{}

static void
_rfk_write32_clr(struct rtw89_dev *rtwdev, const struct rtw89_reg5_def *def)
{}

static void
_rfk_delay(struct rtw89_dev *rtwdev, const struct rtw89_reg5_def *def)
{}

static void
(*_rfk_handler[])(struct rtw89_dev *rtwdev, const struct rtw89_reg5_def *def) =;

static_assert();

void
rtw89_rfk_parser(struct rtw89_dev *rtwdev, const struct rtw89_rfk_tbl *tbl)
{}
EXPORT_SYMBOL();

#define RTW89_TSSI_FAST_MODE_NUM

static const struct rtw89_reg_def rtw89_tssi_fastmode_regs_flat[RTW89_TSSI_FAST_MODE_NUM] =;

static const struct rtw89_reg_def rtw89_tssi_fastmode_regs_level[RTW89_TSSI_FAST_MODE_NUM] =;

static
void rtw89_phy_tssi_ctrl_set_fast_mode_cfg(struct rtw89_dev *rtwdev,
					   enum rtw89_mac_idx mac_idx,
					   enum rtw89_tssi_bandedge_cfg bandedge_cfg,
					   u32 val)
{}

static const struct rtw89_reg_def rtw89_tssi_bandedge_regs_flat[RTW89_TSSI_SBW_NUM] =;

static const struct rtw89_reg_def rtw89_tssi_bandedge_regs_level[RTW89_TSSI_SBW_NUM] =;

void rtw89_phy_tssi_ctrl_set_bandedge_cfg(struct rtw89_dev *rtwdev,
					  enum rtw89_mac_idx mac_idx,
					  enum rtw89_tssi_bandedge_cfg bandedge_cfg)
{}
EXPORT_SYMBOL();

static
const u8 rtw89_ch_base_table[16] =;
#define RTW89_CH_BASE_IDX_2G
#define RTW89_CH_BASE_IDX_5G_FIRST
#define RTW89_CH_BASE_IDX_5G_LAST
#define RTW89_CH_BASE_IDX_6G_FIRST
#define RTW89_CH_BASE_IDX_6G_LAST

#define RTW89_CH_BASE_IDX_MASK
#define RTW89_CH_OFFSET_MASK

u8 rtw89_encode_chan_idx(struct rtw89_dev *rtwdev, u8 central_ch, u8 band)
{}
EXPORT_SYMBOL();

void rtw89_decode_chan_idx(struct rtw89_dev *rtwdev, u8 chan_idx,
			   u8 *ch, enum nl80211_band *band)
{}
EXPORT_SYMBOL();

void rtw89_phy_config_edcca(struct rtw89_dev *rtwdev, bool scan)
{}

static void rtw89_phy_edcca_log(struct rtw89_dev *rtwdev)
{}

static u8 rtw89_phy_edcca_get_thre_by_rssi(struct rtw89_dev *rtwdev)
{}

void rtw89_phy_edcca_thre_calc(struct rtw89_dev *rtwdev)
{}

void rtw89_phy_edcca_track(struct rtw89_dev *rtwdev)
{}

enum rtw89_rf_path_bit rtw89_phy_get_kpath(struct rtw89_dev *rtwdev,
					   enum rtw89_phy_idx phy_idx)
{}
EXPORT_SYMBOL();

enum rtw89_rf_path rtw89_phy_get_syn_sel(struct rtw89_dev *rtwdev,
					 enum rtw89_phy_idx phy_idx)
{}
EXPORT_SYMBOL();

static const struct rtw89_ccx_regs rtw89_ccx_regs_ax =;

static const struct rtw89_physts_regs rtw89_physts_regs_ax =;

static const struct rtw89_cfo_regs rtw89_cfo_regs_ax =;

const struct rtw89_phy_gen_def rtw89_phy_gen_ax =;
EXPORT_SYMBOL();