linux/drivers/net/wireless/realtek/rtw88/rtw8822c.c

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

#include <linux/module.h>
#include "main.h"
#include "coex.h"
#include "fw.h"
#include "tx.h"
#include "rx.h"
#include "phy.h"
#include "rtw8822c.h"
#include "rtw8822c_table.h"
#include "mac.h"
#include "reg.h"
#include "debug.h"
#include "util.h"
#include "bf.h"
#include "efuse.h"

#define IQK_DONE_8822C

static void rtw8822c_config_trx_mode(struct rtw_dev *rtwdev, u8 tx_path,
				     u8 rx_path, bool is_tx2_path);

static void rtw8822ce_efuse_parsing(struct rtw_efuse *efuse,
				    struct rtw8822c_efuse *map)
{}

static void rtw8822cu_efuse_parsing(struct rtw_efuse *efuse,
				    struct rtw8822c_efuse *map)
{}

static void rtw8822cs_efuse_parsing(struct rtw_efuse *efuse,
				    struct rtw8822c_efuse *map)
{}

static int rtw8822c_read_efuse(struct rtw_dev *rtwdev, u8 *log_map)
{}

static void rtw8822c_header_file_init(struct rtw_dev *rtwdev, bool pre)
{}

static void rtw8822c_bb_reset(struct rtw_dev *rtwdev)
{}

static void rtw8822c_dac_backup_reg(struct rtw_dev *rtwdev,
				    struct rtw_backup_info *backup,
				    struct rtw_backup_info *backup_rf)
{}

static void rtw8822c_dac_restore_reg(struct rtw_dev *rtwdev,
				     struct rtw_backup_info *backup,
				     struct rtw_backup_info *backup_rf)
{}

static void rtw8822c_rf_minmax_cmp(struct rtw_dev *rtwdev, u32 value,
				   u32 *min, u32 *max)
{}

static void __rtw8822c_dac_iq_sort(struct rtw_dev *rtwdev, u32 *v1, u32 *v2)
{}

static void rtw8822c_dac_iq_sort(struct rtw_dev *rtwdev, u32 *iv, u32 *qv)
{}

static void rtw8822c_dac_iq_offset(struct rtw_dev *rtwdev, u32 *vec, u32 *val)
{}

static u32 rtw8822c_get_path_write_addr(u8 path)
{}

static u32 rtw8822c_get_path_read_addr(u8 path)
{}

static bool rtw8822c_dac_iq_check(struct rtw_dev *rtwdev, u32 value)
{}

static void rtw8822c_dac_cal_iq_sample(struct rtw_dev *rtwdev, u32 *iv, u32 *qv)
{}

static void rtw8822c_dac_cal_iq_search(struct rtw_dev *rtwdev,
				       u32 *iv, u32 *qv,
				       u32 *i_value, u32 *q_value)
{}

static void rtw8822c_dac_cal_rf_mode(struct rtw_dev *rtwdev,
				     u32 *i_value, u32 *q_value)
{}

static void rtw8822c_dac_bb_setting(struct rtw_dev *rtwdev)
{}

static void rtw8822c_dac_cal_adc(struct rtw_dev *rtwdev,
				 u8 path, u32 *adc_ic, u32 *adc_qc)
{}

static void rtw8822c_dac_cal_step1(struct rtw_dev *rtwdev, u8 path)
{}

static void rtw8822c_dac_cal_step2(struct rtw_dev *rtwdev,
				   u8 path, u32 *ic_out, u32 *qc_out)
{}

static void rtw8822c_dac_cal_step3(struct rtw_dev *rtwdev, u8 path,
				   u32 adc_ic, u32 adc_qc,
				   u32 *ic_in, u32 *qc_in,
				   u32 *i_out, u32 *q_out)
{}

static void rtw8822c_dac_cal_step4(struct rtw_dev *rtwdev, u8 path)
{}

static void rtw8822c_dac_cal_backup_vec(struct rtw_dev *rtwdev,
					u8 path, u8 vec, u32 w_addr, u32 r_addr)
{}

static void rtw8822c_dac_cal_backup_path(struct rtw_dev *rtwdev, u8 path)
{}

static void rtw8822c_dac_cal_backup_dck(struct rtw_dev *rtwdev)
{}

static void rtw8822c_dac_cal_backup(struct rtw_dev *rtwdev)
{}

static void rtw8822c_dac_cal_restore_dck(struct rtw_dev *rtwdev)
{}

static void rtw8822c_dac_cal_restore_prepare(struct rtw_dev *rtwdev)
{}

static bool rtw8822c_dac_cal_restore_wait(struct rtw_dev *rtwdev,
					  u32 target_addr, u32 toggle_addr)
{}

static bool rtw8822c_dac_cal_restore_path(struct rtw_dev *rtwdev, u8 path)
{}

static bool __rtw8822c_dac_cal_restore(struct rtw_dev *rtwdev)
{}

static bool rtw8822c_dac_cal_restore(struct rtw_dev *rtwdev)
{}

static void rtw8822c_rf_dac_cal(struct rtw_dev *rtwdev)
{}

static void rtw8822c_rf_x2_check(struct rtw_dev *rtwdev)
{}

static void rtw8822c_set_power_trim(struct rtw_dev *rtwdev, s8 bb_gain[2][8])
{}

static void rtw8822c_power_trim(struct rtw_dev *rtwdev)
{}

static void rtw8822c_thermal_trim(struct rtw_dev *rtwdev)
{}

static void rtw8822c_pa_bias(struct rtw_dev *rtwdev)
{}

static void rtw8822c_rfk_handshake(struct rtw_dev *rtwdev, bool is_before_k)
{}

static void rtw8822c_rfk_power_save(struct rtw_dev *rtwdev,
				    bool is_power_save)
{}

static void rtw8822c_txgapk_backup_bb_reg(struct rtw_dev *rtwdev, const u32 reg[],
					  u32 reg_backup[], u32 reg_num)
{}

static void rtw8822c_txgapk_reload_bb_reg(struct rtw_dev *rtwdev,
					  const u32 reg[], u32 reg_backup[],
					  u32 reg_num)
{}

static bool check_rf_status(struct rtw_dev *rtwdev, u8 status)
{}

static void rtw8822c_txgapk_tx_pause(struct rtw_dev *rtwdev)
{}

static void rtw8822c_txgapk_bb_dpk(struct rtw_dev *rtwdev, u8 path)
{}

static void rtw8822c_txgapk_afe_dpk(struct rtw_dev *rtwdev, u8 path)
{}

static void rtw8822c_txgapk_afe_dpk_restore(struct rtw_dev *rtwdev, u8 path)
{}

static void rtw8822c_txgapk_bb_dpk_restore(struct rtw_dev *rtwdev, u8 path)
{}

static bool _rtw8822c_txgapk_gain_valid(struct rtw_dev *rtwdev, u32 gain)
{}

static void _rtw8822c_txgapk_write_gain_bb_table(struct rtw_dev *rtwdev,
						 u8 band, u8 path)
{}

static void rtw8822c_txgapk_write_gain_bb_table(struct rtw_dev *rtwdev)
{}

static void rtw8822c_txgapk_read_offset(struct rtw_dev *rtwdev, u8 path)
{}

static void rtw8822c_txgapk_calculate_offset(struct rtw_dev *rtwdev, u8 path)
{}

static void rtw8822c_txgapk_rf_restore(struct rtw_dev *rtwdev, u8 path)
{}

static u32 rtw8822c_txgapk_cal_gain(struct rtw_dev *rtwdev, u32 gain, s8 offset)
{}

static void rtw8822c_txgapk_write_tx_gain(struct rtw_dev *rtwdev)
{}

static void rtw8822c_txgapk_save_all_tx_gain_table(struct rtw_dev *rtwdev)
{}

static void rtw8822c_txgapk(struct rtw_dev *rtwdev)
{}

static void rtw8822c_do_gapk(struct rtw_dev *rtwdev)
{}

static void rtw8822c_rf_init(struct rtw_dev *rtwdev)
{}

static void rtw8822c_pwrtrack_init(struct rtw_dev *rtwdev)
{}

static void rtw8822c_phy_set_param(struct rtw_dev *rtwdev)
{}

#define WLAN_TXQ_RPT_EN
#define WLAN_SLOT_TIME
#define WLAN_PIFS_TIME
#define WLAN_SIFS_CCK_CONT_TX
#define WLAN_SIFS_OFDM_CONT_TX
#define WLAN_SIFS_CCK_TRX
#define WLAN_SIFS_OFDM_TRX
#define WLAN_NAV_MAX
#define WLAN_RDG_NAV
#define WLAN_TXOP_NAV
#define WLAN_CCK_RX_TSF
#define WLAN_OFDM_RX_TSF
#define WLAN_TBTT_PROHIBIT
#define WLAN_TBTT_HOLD_TIME
#define WLAN_DRV_EARLY_INT
#define WLAN_BCN_CTRL_CLT0
#define WLAN_BCN_DMA_TIME
#define WLAN_BCN_MAX_ERR
#define WLAN_SIFS_CCK_DUR_TUNE
#define WLAN_SIFS_OFDM_DUR_TUNE
#define WLAN_SIFS_CCK_CTX
#define WLAN_SIFS_CCK_IRX
#define WLAN_SIFS_OFDM_CTX
#define WLAN_SIFS_OFDM_IRX
#define WLAN_EIFS_DUR_TUNE
#define WLAN_EDCA_VO_PARAM
#define WLAN_EDCA_VI_PARAM
#define WLAN_EDCA_BE_PARAM
#define WLAN_EDCA_BK_PARAM

#define WLAN_RX_FILTER0
#define WLAN_RX_FILTER2
#define WLAN_RCR_CFG
#define WLAN_RXPKT_MAX_SZ
#define WLAN_RXPKT_MAX_SZ_512

#define WLAN_AMPDU_MAX_TIME
#define WLAN_RTS_LEN_TH
#define WLAN_RTS_TX_TIME_TH
#define WLAN_MAX_AGG_PKT_LIMIT
#define WLAN_RTS_MAX_AGG_PKT_LIMIT
#define WLAN_PRE_TXCNT_TIME_TH
#define FAST_EDCA_VO_TH
#define FAST_EDCA_VI_TH
#define FAST_EDCA_BE_TH
#define FAST_EDCA_BK_TH
#define WLAN_BAR_RETRY_LIMIT
#define WLAN_BAR_ACK_TYPE
#define WLAN_RA_TRY_RATE_AGG_LIMIT
#define WLAN_RESP_TXRATE
#define WLAN_ACK_TO
#define WLAN_ACK_TO_CCK
#define WLAN_DATA_RATE_FB_CNT_1_4
#define WLAN_DATA_RATE_FB_CNT_5_8
#define WLAN_RTS_RATE_FB_CNT_5_8
#define WLAN_DATA_RATE_FB_RATE0
#define WLAN_DATA_RATE_FB_RATE0_H
#define WLAN_RTS_RATE_FB_RATE1
#define WLAN_RTS_RATE_FB_RATE1_H
#define WLAN_RTS_RATE_FB_RATE4
#define WLAN_RTS_RATE_FB_RATE4_H
#define WLAN_RTS_RATE_FB_RATE5
#define WLAN_RTS_RATE_FB_RATE5_H
#define WLAN_MULTI_ADDR

#define WLAN_TX_FUNC_CFG1
#define WLAN_TX_FUNC_CFG2
#define WLAN_MAC_OPT_NORM_FUNC1
#define WLAN_MAC_OPT_LB_FUNC1
#define WLAN_MAC_OPT_FUNC2
#define WLAN_MAC_INT_MIG_CFG

#define WLAN_SIFS_CFG

#define WLAN_SIFS_DUR_TUNE

#define WLAN_TBTT_TIME

#define WLAN_NAV_CFG
#define WLAN_RX_TSF_CFG

#define MAC_CLK_SPEED
#define EFUSE_PCB_INFO_OFFSET

static int rtw8822c_mac_init(struct rtw_dev *rtwdev)
{}

#define FWCD_SIZE_REG_8822C
#define FWCD_SIZE_DMEM_8822C
#define FWCD_SIZE_IMEM_8822C
#define FWCD_SIZE_EMEM_8822C
#define FWCD_SIZE_ROM_8822C

static const u32 __fwcd_segs_8822c[] =;

static const struct rtw_fwcd_segs rtw8822c_fwcd_segs =;

static int rtw8822c_dump_fw_crash(struct rtw_dev *rtwdev)
{}

static void rtw8822c_rstb_3wire(struct rtw_dev *rtwdev, bool enable)
{}

static void rtw8822c_set_channel_rf(struct rtw_dev *rtwdev, u8 channel, u8 bw)
{}

static void rtw8822c_toggle_igi(struct rtw_dev *rtwdev)
{}

static void rtw8822c_set_channel_bb(struct rtw_dev *rtwdev, u8 channel, u8 bw,
				    u8 primary_ch_idx)
{}

static void rtw8822c_set_channel(struct rtw_dev *rtwdev, u8 channel, u8 bw,
				 u8 primary_chan_idx)
{}

static void rtw8822c_config_cck_rx_path(struct rtw_dev *rtwdev, u8 rx_path)
{}

static void rtw8822c_config_ofdm_rx_path(struct rtw_dev *rtwdev, u8 rx_path)
{}

static void rtw8822c_config_rx_path(struct rtw_dev *rtwdev, u8 rx_path)
{}

static void rtw8822c_config_cck_tx_path(struct rtw_dev *rtwdev, u8 tx_path,
					bool is_tx2_path)
{}

static void rtw8822c_config_ofdm_tx_path(struct rtw_dev *rtwdev, u8 tx_path,
					 enum rtw_bb_path tx_path_sel_1ss)
{}

static void rtw8822c_config_tx_path(struct rtw_dev *rtwdev, u8 tx_path,
				    enum rtw_bb_path tx_path_sel_1ss,
				    enum rtw_bb_path tx_path_cck,
				    bool is_tx2_path)
{}

static void rtw8822c_config_trx_mode(struct rtw_dev *rtwdev, u8 tx_path,
				     u8 rx_path, bool is_tx2_path)
{}

static void query_phy_status_page0(struct rtw_dev *rtwdev, u8 *phy_status,
				   struct rtw_rx_pkt_stat *pkt_stat)
{}

static void query_phy_status_page1(struct rtw_dev *rtwdev, u8 *phy_status,
				   struct rtw_rx_pkt_stat *pkt_stat)
{}

static void query_phy_status(struct rtw_dev *rtwdev, u8 *phy_status,
			     struct rtw_rx_pkt_stat *pkt_stat)
{}

static void rtw8822c_query_rx_desc(struct rtw_dev *rtwdev, u8 *rx_desc,
				   struct rtw_rx_pkt_stat *pkt_stat,
				   struct ieee80211_rx_status *rx_status)
{}

static void
rtw8822c_set_write_tx_power_ref(struct rtw_dev *rtwdev, u8 *tx_pwr_ref_cck,
				u8 *tx_pwr_ref_ofdm)
{}

static void rtw8822c_set_tx_power_diff(struct rtw_dev *rtwdev, u8 rate,
				       s8 *diff_idx)
{}

static void rtw8822c_set_tx_power_index(struct rtw_dev *rtwdev)
{}

static int rtw8822c_set_antenna(struct rtw_dev *rtwdev,
				u32 antenna_tx,
				u32 antenna_rx)
{}

static void rtw8822c_cfg_ldo25(struct rtw_dev *rtwdev, bool enable)
{}

static void rtw8822c_false_alarm_statistics(struct rtw_dev *rtwdev)
{}

static void rtw8822c_do_lck(struct rtw_dev *rtwdev)
{}

static void rtw8822c_do_iqk(struct rtw_dev *rtwdev)
{}

/* for coex */
static void rtw8822c_coex_cfg_init(struct rtw_dev *rtwdev)
{}

static void rtw8822c_coex_cfg_gnt_fix(struct rtw_dev *rtwdev)
{}

static void rtw8822c_coex_cfg_gnt_debug(struct rtw_dev *rtwdev)
{}

static void rtw8822c_coex_cfg_rfe_type(struct rtw_dev *rtwdev)
{}

static void rtw8822c_coex_cfg_wl_tx_power(struct rtw_dev *rtwdev, u8 wl_pwr)
{}

static void rtw8822c_coex_cfg_wl_rx_gain(struct rtw_dev *rtwdev, bool low_gain)
{}

static void rtw8822c_bf_enable_bfee_su(struct rtw_dev *rtwdev,
				       struct rtw_vif *vif,
				       struct rtw_bfee *bfee)
{}

static void rtw8822c_bf_config_bfee_su(struct rtw_dev *rtwdev,
				       struct rtw_vif *vif,
				       struct rtw_bfee *bfee, bool enable)
{}

static void rtw8822c_bf_config_bfee_mu(struct rtw_dev *rtwdev,
				       struct rtw_vif *vif,
				       struct rtw_bfee *bfee, bool enable)
{}

static void rtw8822c_bf_config_bfee(struct rtw_dev *rtwdev, struct rtw_vif *vif,
				    struct rtw_bfee *bfee, bool enable)
{}

struct dpk_cfg_pair {};

void rtw8822c_parse_tbl_dpk(struct rtw_dev *rtwdev,
			    const struct rtw_table *tbl)
{}

static void rtw8822c_dpk_set_gnt_wl(struct rtw_dev *rtwdev, bool is_before_k)
{}

static void
rtw8822c_dpk_restore_registers(struct rtw_dev *rtwdev, u32 reg_num,
			       struct rtw_backup_info *bckp)
{}

static void
rtw8822c_dpk_backup_registers(struct rtw_dev *rtwdev, u32 *reg,
			      u32 reg_num, struct rtw_backup_info *bckp)
{}

static void rtw8822c_dpk_backup_rf_registers(struct rtw_dev *rtwdev,
					     u32 *rf_reg,
					     u32 rf_reg_bak[][2])
{}

static void rtw8822c_dpk_reload_rf_registers(struct rtw_dev *rtwdev,
					     u32 *rf_reg,
					     u32 rf_reg_bak[][2])
{}

static void rtw8822c_dpk_information(struct rtw_dev *rtwdev)
{}

static void rtw8822c_dpk_rxbb_dc_cal(struct rtw_dev *rtwdev, u8 path)
{}

static u8 rtw8822c_dpk_dc_corr_check(struct rtw_dev *rtwdev, u8 path)
{}

static void rtw8822c_dpk_tx_pause(struct rtw_dev *rtwdev)
{}

static void rtw8822c_dpk_mac_bb_setting(struct rtw_dev *rtwdev)
{}

static void rtw8822c_dpk_afe_setting(struct rtw_dev *rtwdev, bool is_do_dpk)
{}

static void rtw8822c_dpk_pre_setting(struct rtw_dev *rtwdev)
{}

static u32 rtw8822c_dpk_rf_setting(struct rtw_dev *rtwdev, u8 path)
{}

static u16 rtw8822c_dpk_get_cmd(struct rtw_dev *rtwdev, u8 action, u8 path)
{}

static u8 rtw8822c_dpk_one_shot(struct rtw_dev *rtwdev, u8 path, u8 action)
{}

static u16 rtw8822c_dpk_dgain_read(struct rtw_dev *rtwdev, u8 path)
{}

static u8 rtw8822c_dpk_thermal_read(struct rtw_dev *rtwdev, u8 path)
{}

static u32 rtw8822c_dpk_pas_read(struct rtw_dev *rtwdev, u8 path)
{}

static u32 rtw8822c_psd_log2base(u32 val)
{}

static u8 rtw8822c_dpk_gainloss_result(struct rtw_dev *rtwdev, u8 path)
{}

static u8 rtw8822c_dpk_agc_gain_chk(struct rtw_dev *rtwdev, u8 path,
				    u8 limited_pga)
{}

static u8 rtw8822c_dpk_agc_loss_chk(struct rtw_dev *rtwdev, u8 path)
{}

struct rtw8822c_dpk_data {};

static u8 rtw8822c_gain_check_state(struct rtw_dev *rtwdev,
				    struct rtw8822c_dpk_data *data)
{}

static u8 rtw8822c_gain_large_state(struct rtw_dev *rtwdev,
				    struct rtw8822c_dpk_data *data)
{}

static u8 rtw8822c_gain_less_state(struct rtw_dev *rtwdev,
				   struct rtw8822c_dpk_data *data)
{}

static u8 rtw8822c_gl_state(struct rtw_dev *rtwdev,
			    struct rtw8822c_dpk_data *data, u8 is_large)
{}

static u8 rtw8822c_gl_large_state(struct rtw_dev *rtwdev,
				  struct rtw8822c_dpk_data *data)
{}

static u8 rtw8822c_gl_less_state(struct rtw_dev *rtwdev,
				 struct rtw8822c_dpk_data *data)
{}

static u8 rtw8822c_loss_check_state(struct rtw_dev *rtwdev,
				    struct rtw8822c_dpk_data *data)
{}

static u8 (*dpk_state[])(struct rtw_dev *rtwdev,
			  struct rtw8822c_dpk_data *data) =;

static u8 rtw8822c_dpk_pas_agc(struct rtw_dev *rtwdev, u8 path,
			       bool gain_only, bool loss_only)
{}

static bool rtw8822c_dpk_coef_iq_check(struct rtw_dev *rtwdev,
				       u16 coef_i, u16 coef_q)
{}

static u32 rtw8822c_dpk_coef_transfer(struct rtw_dev *rtwdev)
{}

static const u32 rtw8822c_dpk_get_coef_tbl[] =;

static void rtw8822c_dpk_coef_tbl_apply(struct rtw_dev *rtwdev, u8 path)
{}

static void rtw8822c_dpk_get_coef(struct rtw_dev *rtwdev, u8 path)
{}

static u8 rtw8822c_dpk_coef_read(struct rtw_dev *rtwdev, u8 path)
{}

static void rtw8822c_dpk_coef_write(struct rtw_dev *rtwdev, u8 path, u8 result)
{}

static void rtw8822c_dpk_fill_result(struct rtw_dev *rtwdev, u32 dpk_txagc,
				     u8 path, u8 result)
{}

static u32 rtw8822c_dpk_gainloss(struct rtw_dev *rtwdev, u8 path)
{}

static u8 rtw8822c_dpk_by_path(struct rtw_dev *rtwdev, u32 tx_agc, u8 path)
{}

static void rtw8822c_dpk_cal_gs(struct rtw_dev *rtwdev, u8 path)
{}

static void rtw8822c_dpk_cal_coef1(struct rtw_dev *rtwdev)
{}

static void rtw8822c_dpk_on(struct rtw_dev *rtwdev, u8 path)
{}

static bool rtw8822c_dpk_check_pass(struct rtw_dev *rtwdev, bool is_fail,
				    u32 dpk_txagc, u8 path)
{}

static void rtw8822c_dpk_result_reset(struct rtw_dev *rtwdev)
{}

static void rtw8822c_dpk_calibrate(struct rtw_dev *rtwdev, u8 path)
{}

static void rtw8822c_dpk_path_select(struct rtw_dev *rtwdev)
{}

static void rtw8822c_dpk_enable_disable(struct rtw_dev *rtwdev)
{}

static void rtw8822c_dpk_reload_data(struct rtw_dev *rtwdev)
{}

static bool rtw8822c_dpk_reload(struct rtw_dev *rtwdev)
{}

static void rtw8822c_do_dpk(struct rtw_dev *rtwdev)
{}

static void rtw8822c_phy_calibration(struct rtw_dev *rtwdev)
{}

static void rtw8822c_dpk_track(struct rtw_dev *rtwdev)
{}

#define XCAP_EXTEND(val)
static void rtw8822c_set_crystal_cap_reg(struct rtw_dev *rtwdev, u8 crystal_cap)
{}

static void rtw8822c_set_crystal_cap(struct rtw_dev *rtwdev, u8 crystal_cap)
{}

static void rtw8822c_cfo_tracking_reset(struct rtw_dev *rtwdev)
{}

static void rtw8822c_cfo_init(struct rtw_dev *rtwdev)
{}

#define REPORT_TO_KHZ(val)
static s32 rtw8822c_cfo_calc_avg(struct rtw_dev *rtwdev, u8 path_num)
{}

static void rtw8822c_cfo_need_adjust(struct rtw_dev *rtwdev, s32 cfo_avg)
{}

static void rtw8822c_cfo_track(struct rtw_dev *rtwdev)
{}

static const struct rtw_phy_cck_pd_reg
rtw8822c_cck_pd_reg[RTW_CHANNEL_WIDTH_40 + 1][RTW_RF_PATH_MAX] =;

#define RTW_CCK_PD_MAX
#define RTW_CCK_CS_MAX
#define RTW_CCK_CS_ERR1
#define RTW_CCK_CS_ERR2
static void
rtw8822c_phy_cck_pd_set_reg(struct rtw_dev *rtwdev,
			    s8 pd_diff, s8 cs_diff, u8 bw, u8 nrx)
{}

static void rtw8822c_phy_cck_pd_set(struct rtw_dev *rtwdev, u8 new_lvl)
{}

#define PWR_TRACK_MASK
static void rtw8822c_pwrtrack_set(struct rtw_dev *rtwdev, u8 rf_path)
{}

static void rtw8822c_pwr_track_stats(struct rtw_dev *rtwdev, u8 path)
{}

static void rtw8822c_pwr_track_path(struct rtw_dev *rtwdev,
				    struct rtw_swing_table *swing_table,
				    u8 path)
{}

static void __rtw8822c_pwr_track(struct rtw_dev *rtwdev)
{}

static void rtw8822c_pwr_track(struct rtw_dev *rtwdev)
{}

static void rtw8822c_adaptivity_init(struct rtw_dev *rtwdev)
{}

static void rtw8822c_adaptivity(struct rtw_dev *rtwdev)
{}

static void rtw8822c_fill_txdesc_checksum(struct rtw_dev *rtwdev,
					  struct rtw_tx_pkt_info *pkt_info,
					  u8 *txdesc)
{}

static const struct rtw_pwr_seq_cmd trans_carddis_to_cardemu_8822c[] =;

static const struct rtw_pwr_seq_cmd trans_cardemu_to_act_8822c[] =;

static const struct rtw_pwr_seq_cmd trans_act_to_cardemu_8822c[] =;

static const struct rtw_pwr_seq_cmd trans_cardemu_to_carddis_8822c[] =;

static const struct rtw_pwr_seq_cmd *card_enable_flow_8822c[] =;

static const struct rtw_pwr_seq_cmd *card_disable_flow_8822c[] =;

static const struct rtw_intf_phy_para usb2_param_8822c[] =;

static const struct rtw_intf_phy_para usb3_param_8822c[] =;

static const struct rtw_intf_phy_para pcie_gen1_param_8822c[] =;

static const struct rtw_intf_phy_para pcie_gen2_param_8822c[] =;

static const struct rtw_intf_phy_para_table phy_para_table_8822c =;

static const struct rtw_rfe_def rtw8822c_rfe_defs[] =;

static const struct rtw_hw_reg rtw8822c_dig[] =;

static const struct rtw_ltecoex_addr rtw8822c_ltecoex_addr =;

static const struct rtw_page_table page_table_8822c[] =;

static const struct rtw_rqpn rqpn_table_8822c[] =;

static struct rtw_prioq_addrs prioq_addrs_8822c =;

static struct rtw_chip_ops rtw8822c_ops =;

/* Shared-Antenna Coex Table */
static const struct coex_table_para table_sant_8822c[] =;

/* Non-Shared-Antenna Coex Table */
static const struct coex_table_para table_nsant_8822c[] =;

/* Shared-Antenna TDMA */
static const struct coex_tdma_para tdma_sant_8822c[] =;

/* Non-Shared-Antenna TDMA */
static const struct coex_tdma_para tdma_nsant_8822c[] =;

/* rssi in percentage % (dbm = % - 100) */
static const u8 wl_rssi_step_8822c[] =;
static const u8 bt_rssi_step_8822c[] =;
static const struct coex_5g_afh_map afh_5g_8822c[] =;

/* wl_tx_dec_power, bt_tx_dec_power, wl_rx_gain, bt_rx_lna_constrain */
static const struct coex_rf_para rf_para_tx_8822c[] =;

static const struct coex_rf_para rf_para_rx_8822c[] =;

static_assert();

static const u8
rtw8822c_pwrtrk_5gb_n[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] =;

static const u8
rtw8822c_pwrtrk_5gb_p[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] =;

static const u8
rtw8822c_pwrtrk_5ga_n[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] =;

static const u8
rtw8822c_pwrtrk_5ga_p[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] =;

static const u8 rtw8822c_pwrtrk_2gb_n[RTW_PWR_TRK_TBL_SZ] =;

static const u8 rtw8822c_pwrtrk_2gb_p[RTW_PWR_TRK_TBL_SZ] =;

static const u8 rtw8822c_pwrtrk_2ga_n[RTW_PWR_TRK_TBL_SZ] =;

static const u8 rtw8822c_pwrtrk_2ga_p[RTW_PWR_TRK_TBL_SZ] =;

static const u8 rtw8822c_pwrtrk_2g_cck_b_n[RTW_PWR_TRK_TBL_SZ] =;

static const u8 rtw8822c_pwrtrk_2g_cck_b_p[RTW_PWR_TRK_TBL_SZ] =;

static const u8 rtw8822c_pwrtrk_2g_cck_a_n[RTW_PWR_TRK_TBL_SZ] =;

static const u8 rtw8822c_pwrtrk_2g_cck_a_p[RTW_PWR_TRK_TBL_SZ] =;

static const struct rtw_pwr_track_tbl rtw8822c_rtw_pwr_track_tbl =;

static struct rtw_hw_reg_offset rtw8822c_edcca_th[] =;

#ifdef CONFIG_PM
static const struct wiphy_wowlan_support rtw_wowlan_stub_8822c =;
#endif

static const struct rtw_reg_domain coex_info_hw_regs_8822c[] =;

const struct rtw_chip_info rtw8822c_hw_spec =;
EXPORT_SYMBOL();

MODULE_FIRMWARE();
MODULE_FIRMWARE();

MODULE_AUTHOR();
MODULE_DESCRIPTION();
MODULE_LICENSE();