wifi: rtw89: 8851b: add 8851B basic chip_info
authorPing-Ke Shih <pkshih@realtek.com>
Fri, 21 Apr 2023 02:45:44 +0000 (10:45 +0800)
committerKalle Valo <kvalo@kernel.org>
Fri, 5 May 2023 12:00:13 +0000 (15:00 +0300)
8851B is a 1x1 80 MHz bandwidth chip working on 2/5 GHz. Add these basic
information, and more settings will be added by functions.

Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20230421024551.29994-2-pkshih@realtek.com
drivers/net/wireless/realtek/rtw89/rtw8851b.c [new file with mode: 0644]
drivers/net/wireless/realtek/rtw89/rtw8851b.h [new file with mode: 0644]

diff --git a/drivers/net/wireless/realtek/rtw89/rtw8851b.c b/drivers/net/wireless/realtek/rtw89/rtw8851b.c
new file mode 100644 (file)
index 0000000..a0aaac7
--- /dev/null
@@ -0,0 +1,101 @@
+// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
+/* Copyright(c) 2022-2023  Realtek Corporation
+ */
+
+#include "coex.h"
+#include "fw.h"
+#include "mac.h"
+#include "phy.h"
+#include "reg.h"
+#include "rtw8851b.h"
+#include "rtw8851b_table.h"
+#include "txrx.h"
+#include "util.h"
+
+#define RTW8851B_FW_FORMAT_MAX 0
+#define RTW8851B_FW_BASENAME "rtw89/rtw8851b_fw"
+#define RTW8851B_MODULE_FIRMWARE \
+       RTW8851B_FW_BASENAME ".bin"
+
+static const struct rtw89_chip_ops rtw8851b_chip_ops = {
+       .fem_setup              = NULL,
+       .fill_txdesc            = rtw89_core_fill_txdesc,
+       .fill_txdesc_fwcmd      = rtw89_core_fill_txdesc,
+       .h2c_dctl_sec_cam       = NULL,
+};
+
+const struct rtw89_chip_info rtw8851b_chip_info = {
+       .chip_id                = RTL8851B,
+       .ops                    = &rtw8851b_chip_ops,
+       .fw_basename            = RTW8851B_FW_BASENAME,
+       .fw_format_max          = RTW8851B_FW_FORMAT_MAX,
+       .try_ce_fw              = true,
+       .fifo_size              = 196608,
+       .dle_scc_rsvd_size      = 98304,
+       .max_amsdu_limit        = 3500,
+       .dis_2g_40m_ul_ofdma    = true,
+       .rsvd_ple_ofst          = 0x2f800,
+       .wde_qempty_acq_num     = 4,
+       .wde_qempty_mgq_sel     = 4,
+       .rf_base_addr           = {0xe000},
+       .pwr_on_seq             = NULL,
+       .pwr_off_seq            = NULL,
+       .bb_table               = &rtw89_8851b_phy_bb_table,
+       .bb_gain_table          = &rtw89_8851b_phy_bb_gain_table,
+       .rf_table               = {&rtw89_8851b_phy_radioa_table,},
+       .nctl_table             = &rtw89_8851b_phy_nctl_table,
+       .byr_table              = &rtw89_8851b_byr_table,
+       .dflt_parms             = &rtw89_8851b_dflt_parms,
+       .rfe_parms_conf         = rtw89_8851b_rfe_parms_conf,
+       .txpwr_factor_rf        = 2,
+       .txpwr_factor_mac       = 1,
+       .dig_table              = NULL,
+       .tssi_dbw_table         = NULL,
+       .support_chanctx_num    = 0,
+       .support_bands          = BIT(NL80211_BAND_2GHZ) |
+                                 BIT(NL80211_BAND_5GHZ),
+       .support_bw160          = false,
+       .support_ul_tb_ctrl     = true,
+       .hw_sec_hdr             = false,
+       .rf_path_num            = 1,
+       .tx_nss                 = 1,
+       .rx_nss                 = 1,
+       .acam_num               = 32,
+       .bcam_num               = 20,
+       .scam_num               = 128,
+       .bacam_num              = 2,
+       .bacam_dynamic_num      = 4,
+       .bacam_v1               = false,
+       .sec_ctrl_efuse_size    = 4,
+       .physical_efuse_size    = 1216,
+       .logical_efuse_size     = 2048,
+       .limit_efuse_size       = 1280,
+       .dav_phy_efuse_size     = 0,
+       .dav_log_efuse_size     = 0,
+       .phycap_addr            = 0x580,
+       .phycap_size            = 128,
+       .para_ver               = 0,
+       .wlcx_desired           = 0x06000000,
+       .btcx_desired           = 0x7,
+       .scbd                   = 0x1,
+       .mailbox                = 0x1,
+
+       .ps_mode_supported      = BIT(RTW89_PS_MODE_RFOFF) |
+                                 BIT(RTW89_PS_MODE_CLK_GATED),
+       .low_power_hci_modes    = 0,
+       .h2c_cctl_func_id       = H2C_FUNC_MAC_CCTLINFO_UD,
+       .hci_func_en_addr       = R_AX_HCI_FUNC_EN,
+       .h2c_desc_size          = sizeof(struct rtw89_txwd_body),
+       .txwd_body_size         = sizeof(struct rtw89_txwd_body),
+       .bss_clr_map_reg        = R_BSS_CLR_MAP_V1,
+       .dma_ch_mask            = BIT(RTW89_DMA_ACH4) | BIT(RTW89_DMA_ACH5) |
+                                 BIT(RTW89_DMA_ACH6) | BIT(RTW89_DMA_ACH7) |
+                                 BIT(RTW89_DMA_B1MG) | BIT(RTW89_DMA_B1HI),
+       .edcca_lvl_reg          = R_SEG0R_EDCCA_LVL_V1,
+};
+EXPORT_SYMBOL(rtw8851b_chip_info);
+
+MODULE_FIRMWARE(RTW8851B_MODULE_FIRMWARE);
+MODULE_AUTHOR("Realtek Corporation");
+MODULE_DESCRIPTION("Realtek 802.11ax wireless 8851B driver");
+MODULE_LICENSE("Dual BSD/GPL");
diff --git a/drivers/net/wireless/realtek/rtw89/rtw8851b.h b/drivers/net/wireless/realtek/rtw89/rtw8851b.h
new file mode 100644 (file)
index 0000000..e34b7d0
--- /dev/null
@@ -0,0 +1,15 @@
+/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
+/* Copyright(c) 2022-2023  Realtek Corporation
+ */
+
+#ifndef __RTW89_8851B_H__
+#define __RTW89_8851B_H__
+
+#include "core.h"
+
+#define RF_PATH_NUM_8851B 1
+#define BB_PATH_NUM_8851B 1
+
+extern const struct rtw89_chip_info rtw8851b_chip_info;
+
+#endif