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

// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
/* Copyright Fiona Klute <[email protected]> */

#include <linux/of_net.h>
#include "main.h"
#include "coex.h"
#include "debug.h"
#include "mac.h"
#include "phy.h"
#include "reg.h"
#include "rx.h"
#include "rtw8703b.h"
#include "rtw8703b_tables.h"
#include "rtw8723x.h"

#define BIT_MASK_TXQ_INIT
#define WLAN_RL_VAL
/* disable BAR */
#define WLAN_BAR_VAL
#define WLAN_PIFS_VAL
#define WLAN_RX_PKT_LIMIT
#define WLAN_SLOT_TIME
#define WLAN_SPEC_SIFS
#define WLAN_MAX_AGG_NR
#define WLAN_AMPDU_MAX_TIME

/* unit is 32us */
#define TBTT_PROHIBIT_SETUP_TIME
#define TBTT_PROHIBIT_HOLD_TIME
#define TBTT_PROHIBIT_HOLD_TIME_STOP_BCN

/* raw pkt_stat->drv_info_sz is in unit of 8-bytes */
#define RX_DRV_INFO_SZ_UNIT_8703B

#define TRANS_SEQ_END

/* rssi in percentage % (dbm = % - 100) */
/* These are used to select simple signal quality levels, might need
 * tweaking. Same for rf_para tables below.
 */
static const u8 wl_rssi_step_8703b[] =;
static const u8 bt_rssi_step_8703b[] =;
static const struct coex_5g_afh_map afh_5g_8703b[] =;

/* Actually decreasing wifi TX power/RX gain isn't implemented in
 * rtw8703b, but hopefully adjusting the BT side helps.
 */
static const struct coex_rf_para rf_para_tx_8703b[] =;

static const struct coex_rf_para rf_para_rx_8703b[] =;

static const u32 rtw8703b_ofdm_swing_table[] =;

static const u32 rtw8703b_cck_pwr_regs[] =;

static const u8 rtw8703b_cck_swing_table[][16] =;

#define RTW_OFDM_SWING_TABLE_SIZE
#define RTW_CCK_SWING_TABLE_SIZE

static const struct rtw_pwr_seq_cmd trans_pre_enable_8703b[] =;

static const struct rtw_pwr_seq_cmd trans_carddis_to_cardemu_8703b[] =;

static const struct rtw_pwr_seq_cmd trans_cardemu_to_carddis_8703b[] =;

static const struct rtw_pwr_seq_cmd trans_cardemu_to_act_8703b[] =;

static const struct rtw_pwr_seq_cmd trans_act_to_cardemu_8703b[] =;

static const struct rtw_pwr_seq_cmd trans_act_to_reset_mcu_8703b[] =;

static const struct rtw_pwr_seq_cmd trans_act_to_lps_8703b[] =;

static const struct rtw_pwr_seq_cmd *card_enable_flow_8703b[] =;

static const struct rtw_pwr_seq_cmd *card_disable_flow_8703b[] =;

static const struct rtw_rfe_def rtw8703b_rfe_defs[] =;

static const struct rtw_page_table page_table_8703b[] =;

static const struct rtw_rqpn rqpn_table_8703b[] =;

/* Default power index table for RTL8703B, used if EFUSE does not
 * contain valid data. Replaces EFUSE data from offset 0x10 (start of
 * txpwr_idx_table).
 */
static const u8 rtw8703b_txpwr_idx_table[] =;

static void try_mac_from_devicetree(struct rtw_dev *rtwdev)
{}

#define DBG_EFUSE_FIX(rtwdev, name)

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

static void rtw8703b_pwrtrack_init(struct rtw_dev *rtwdev)
{}

static void rtw8703b_phy_set_param(struct rtw_dev *rtwdev)
{}

static bool rtw8703b_check_spur_ov_thres(struct rtw_dev *rtwdev,
					 u32 freq, u32 thres)
{}

static void rtw8703b_cfg_notch(struct rtw_dev *rtwdev, u8 channel, bool notch)
{}

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

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

#define CCK_DFIR_NR_8703B
static const struct rtw_backup_info cck_dfir_cfg[][CCK_DFIR_NR_8703B] =;

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

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

/* Not all indices are valid, based on available data. None of the
 * known valid values are positive, so use 0x7f as "invalid".
 */
#define LNA_IDX_INVALID
static const s8 lna_gain_table[16] =;

static s8 get_cck_rx_pwr(struct rtw_dev *rtwdev, u8 lna_idx, u8 vga_idx)
{}

static void query_phy_status_cck(struct rtw_dev *rtwdev, u8 *phy_raw,
				 struct rtw_rx_pkt_stat *pkt_stat)
{}

static void query_phy_status_ofdm(struct rtw_dev *rtwdev, u8 *phy_raw,
				  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 rtw8703b_query_rx_desc(struct rtw_dev *rtwdev, u8 *rx_desc,
				   struct rtw_rx_pkt_stat *pkt_stat,
				   struct ieee80211_rx_status *rx_status)
{}

#define ADDA_ON_VAL_8703B

static
void rtw8703b_iqk_config_mac(struct rtw_dev *rtwdev,
			     const struct rtw8723x_iqk_backup_regs *backup)
{}

#define IQK_LTE_WRITE_VAL_8703B
#define IQK_DELAY_TIME_8703B

static void rtw8703b_iqk_one_shot(struct rtw_dev *rtwdev, bool tx)
{}

static void rtw8703b_iqk_txrx_path_post(struct rtw_dev *rtwdev,
					const struct rtw8723x_iqk_backup_regs *backup)
{}

static u8 rtw8703b_iqk_check_tx_failed(struct rtw_dev *rtwdev)
{}

static u8 rtw8703b_iqk_check_rx_failed(struct rtw_dev *rtwdev)
{}

static u8 rtw8703b_iqk_tx_path(struct rtw_dev *rtwdev,
			       const struct rtw8723x_iqk_backup_regs *backup)
{}

static u8 rtw8703b_iqk_rx_path(struct rtw_dev *rtwdev,
			       const struct rtw8723x_iqk_backup_regs *backup)
{}

static
void rtw8703b_iqk_one_round(struct rtw_dev *rtwdev, s32 result[][IQK_NR], u8 t,
			    const struct rtw8723x_iqk_backup_regs *backup)
{}

static
void rtw8703b_iqk_fill_a_matrix(struct rtw_dev *rtwdev, const s32 result[])
{}

static void rtw8703b_phy_calibration(struct rtw_dev *rtwdev)
{}

static void rtw8703b_set_iqk_matrix_by_result(struct rtw_dev *rtwdev,
					      u32 ofdm_swing, u8 rf_path)
{}

static void rtw8703b_set_iqk_matrix(struct rtw_dev *rtwdev, s8 ofdm_index,
				    u8 rf_path)
{}

static void rtw8703b_pwrtrack_set_ofdm_pwr(struct rtw_dev *rtwdev, s8 swing_idx,
					   s8 txagc_idx)
{}

static void rtw8703b_pwrtrack_set_cck_pwr(struct rtw_dev *rtwdev, s8 swing_idx,
					  s8 txagc_idx)
{}

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

static void rtw8703b_phy_pwrtrack(struct rtw_dev *rtwdev)
{}

static void rtw8703b_pwr_track(struct rtw_dev *rtwdev)
{}

static void rtw8703b_coex_set_gnt_fix(struct rtw_dev *rtwdev)
{}

static void rtw8703b_coex_set_gnt_debug(struct rtw_dev *rtwdev)
{}

static void rtw8703b_coex_set_rfe_type(struct rtw_dev *rtwdev)
{}

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

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

static const u8 rtw8703b_pwrtrk_2gb_n[] =;

static const u8 rtw8703b_pwrtrk_2gb_p[] =;

static const u8 rtw8703b_pwrtrk_2ga_n[] =;

static const u8 rtw8703b_pwrtrk_2ga_p[] =;

static const u8 rtw8703b_pwrtrk_2g_cck_b_n[] =;

static const u8 rtw8703b_pwrtrk_2g_cck_b_p[] =;

static const u8 rtw8703b_pwrtrk_2g_cck_a_n[] =;

static const u8 rtw8703b_pwrtrk_2g_cck_a_p[] =;

static const s8 rtw8703b_pwrtrk_xtal_n[] =;

static const s8 rtw8703b_pwrtrk_xtal_p[] =;

static const struct rtw_pwr_track_tbl rtw8703b_rtw_pwr_track_tbl =;

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

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

static struct rtw_chip_ops rtw8703b_ops =;

const struct rtw_chip_info rtw8703b_hw_spec =;
EXPORT_SYMBOL();

MODULE_FIRMWARE();
MODULE_FIRMWARE();

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