Commit 5c682bcb authored by Ping-Ke Shih's avatar Ping-Ke Shih Committed by Kalle Valo

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: default avatarPing-Ke Shih <pkshih@realtek.com>
Signed-off-by: default avatarKalle Valo <kvalo@kernel.org>
Link: https://msgid.link/20240120003831.7014-3-pkshih@realtek.com
parent aacb84ad
...@@ -4488,6 +4488,42 @@ ...@@ -4488,6 +4488,42 @@
#define B_BE_RMAC_PPDU_HANG_CNT_MASK GENMASK(23, 16) #define B_BE_RMAC_PPDU_HANG_CNT_MASK GENMASK(23, 16)
#define B_BE_SER_L0_COUNTER_MASK GENMASK(8, 0) #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 R_BE_DLE_EMPTY0 0x8430
#define B_BE_PLE_EMPTY_QTA_DMAC_H2D BIT(27) #define B_BE_PLE_EMPTY_QTA_DMAC_H2D BIT(27)
#define B_BE_PLE_EMPTY_QTA_DMAC_CPUIO BIT(26) #define B_BE_PLE_EMPTY_QTA_DMAC_CPUIO BIT(26)
......
...@@ -807,6 +807,23 @@ static void rtw8922a_set_channel(struct rtw89_dev *rtwdev, ...@@ -807,6 +807,23 @@ static void rtw8922a_set_channel(struct rtw89_dev *rtwdev,
rtw8922a_set_channel_bb(rtwdev, chan, phy_idx); 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 #ifdef CONFIG_PM
static const struct wiphy_wowlan_support rtw_wowlan_stub_8922a = { static const struct wiphy_wowlan_support rtw_wowlan_stub_8922a = {
.flags = WIPHY_WOWLAN_MAGIC_PKT | WIPHY_WOWLAN_DISCONNECT, .flags = WIPHY_WOWLAN_MAGIC_PKT | WIPHY_WOWLAN_DISCONNECT,
...@@ -817,6 +834,8 @@ static const struct wiphy_wowlan_support rtw_wowlan_stub_8922a = { ...@@ -817,6 +834,8 @@ static const struct wiphy_wowlan_support rtw_wowlan_stub_8922a = {
#endif #endif
static const struct rtw89_chip_ops rtw8922a_chip_ops = { 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, .set_channel = rtw8922a_set_channel,
.read_efuse = rtw8922a_read_efuse, .read_efuse = rtw8922a_read_efuse,
.read_phycap = rtw8922a_read_phycap, .read_phycap = rtw8922a_read_phycap,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment