mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-13 12:59:33 -04:00
wifi: rtw89: 8922a: add chip_ops::{enable,disable}_bb_rf
When we are going to up interface to make connection, turn on BB and RF hardware power by enable_bb_rf ops. Oppositely, using disable_bb_rf to turn them off. Signed-off-by: Ping-Ke Shih <pkshih@realtek.com> Signed-off-by: Kalle Valo <kvalo@kernel.org> Link: https://msgid.link/20240120003831.7014-3-pkshih@realtek.com
This commit is contained in:
@@ -4488,6 +4488,42 @@
|
||||
#define B_BE_RMAC_PPDU_HANG_CNT_MASK GENMASK(23, 16)
|
||||
#define B_BE_SER_L0_COUNTER_MASK GENMASK(8, 0)
|
||||
|
||||
#define R_BE_DMAC_SYS_CR32B 0x842C
|
||||
#define B_BE_DMAC_BB_PHY1_MASK GENMASK(31, 16)
|
||||
#define B_BE_DMAC_BB_PHY0_MASK GENMASK(15, 0)
|
||||
#define B_BE_DMAC_BB_CTRL_39 BIT(31)
|
||||
#define B_BE_DMAC_BB_CTRL_38 BIT(30)
|
||||
#define B_BE_DMAC_BB_CTRL_37 BIT(29)
|
||||
#define B_BE_DMAC_BB_CTRL_36 BIT(28)
|
||||
#define B_BE_DMAC_BB_CTRL_35 BIT(27)
|
||||
#define B_BE_DMAC_BB_CTRL_34 BIT(26)
|
||||
#define B_BE_DMAC_BB_CTRL_33 BIT(25)
|
||||
#define B_BE_DMAC_BB_CTRL_32 BIT(24)
|
||||
#define B_BE_DMAC_BB_CTRL_31 BIT(23)
|
||||
#define B_BE_DMAC_BB_CTRL_30 BIT(22)
|
||||
#define B_BE_DMAC_BB_CTRL_29 BIT(21)
|
||||
#define B_BE_DMAC_BB_CTRL_28 BIT(20)
|
||||
#define B_BE_DMAC_BB_CTRL_27 BIT(19)
|
||||
#define B_BE_DMAC_BB_CTRL_26 BIT(18)
|
||||
#define B_BE_DMAC_BB_CTRL_25 BIT(17)
|
||||
#define B_BE_DMAC_BB_CTRL_24 BIT(16)
|
||||
#define B_BE_DMAC_BB_CTRL_23 BIT(15)
|
||||
#define B_BE_DMAC_BB_CTRL_22 BIT(14)
|
||||
#define B_BE_DMAC_BB_CTRL_21 BIT(13)
|
||||
#define B_BE_DMAC_BB_CTRL_20 BIT(12)
|
||||
#define B_BE_DMAC_BB_CTRL_19 BIT(11)
|
||||
#define B_BE_DMAC_BB_CTRL_18 BIT(10)
|
||||
#define B_BE_DMAC_BB_CTRL_17 BIT(9)
|
||||
#define B_BE_DMAC_BB_CTRL_16 BIT(8)
|
||||
#define B_BE_DMAC_BB_CTRL_15 BIT(7)
|
||||
#define B_BE_DMAC_BB_CTRL_14 BIT(6)
|
||||
#define B_BE_DMAC_BB_CTRL_13 BIT(5)
|
||||
#define B_BE_DMAC_BB_CTRL_12 BIT(4)
|
||||
#define B_BE_DMAC_BB_CTRL_11 BIT(3)
|
||||
#define B_BE_DMAC_BB_CTRL_10 BIT(2)
|
||||
#define B_BE_DMAC_BB_CTRL_9 BIT(1)
|
||||
#define B_BE_DMAC_BB_CTRL_8 BIT(0)
|
||||
|
||||
#define R_BE_DLE_EMPTY0 0x8430
|
||||
#define B_BE_PLE_EMPTY_QTA_DMAC_H2D BIT(27)
|
||||
#define B_BE_PLE_EMPTY_QTA_DMAC_CPUIO BIT(26)
|
||||
|
||||
@@ -807,6 +807,23 @@ static void rtw8922a_set_channel(struct rtw89_dev *rtwdev,
|
||||
rtw8922a_set_channel_bb(rtwdev, chan, phy_idx);
|
||||
}
|
||||
|
||||
static int rtw8922a_mac_enable_bb_rf(struct rtw89_dev *rtwdev)
|
||||
{
|
||||
rtw89_write8_set(rtwdev, R_BE_FEN_RST_ENABLE,
|
||||
B_BE_FEN_BBPLAT_RSTB | B_BE_FEN_BB_IP_RSTN);
|
||||
rtw89_write32(rtwdev, R_BE_DMAC_SYS_CR32B, 0x7FF97FF9);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int rtw8922a_mac_disable_bb_rf(struct rtw89_dev *rtwdev)
|
||||
{
|
||||
rtw89_write8_clr(rtwdev, R_BE_FEN_RST_ENABLE,
|
||||
B_BE_FEN_BBPLAT_RSTB | B_BE_FEN_BB_IP_RSTN);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
static const struct wiphy_wowlan_support rtw_wowlan_stub_8922a = {
|
||||
.flags = WIPHY_WOWLAN_MAGIC_PKT | WIPHY_WOWLAN_DISCONNECT,
|
||||
@@ -817,6 +834,8 @@ static const struct wiphy_wowlan_support rtw_wowlan_stub_8922a = {
|
||||
#endif
|
||||
|
||||
static const struct rtw89_chip_ops rtw8922a_chip_ops = {
|
||||
.enable_bb_rf = rtw8922a_mac_enable_bb_rf,
|
||||
.disable_bb_rf = rtw8922a_mac_disable_bb_rf,
|
||||
.set_channel = rtw8922a_set_channel,
|
||||
.read_efuse = rtw8922a_read_efuse,
|
||||
.read_phycap = rtw8922a_read_phycap,
|
||||
|
||||
Reference in New Issue
Block a user