You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
3.0 KiB
80 lines
3.0 KiB
1 year ago
|
From 096c34d9acbb90e410d5e31e1820fcddd513cdc3 Mon Sep 17 00:00:00 2001
|
||
|
From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= <ihuguet@redhat.com>
|
||
|
Date: Wed, 24 May 2023 15:00:23 +0200
|
||
|
Subject: [PATCH 018/142] wifi: rtw89: 8852b: set proper configuration before
|
||
|
loading NCTL
|
||
|
MIME-Version: 1.0
|
||
|
Content-Type: text/plain; charset=UTF-8
|
||
|
Content-Transfer-Encoding: 8bit
|
||
|
|
||
|
Bugzilla: https://bugzilla.redhat.com/2207499
|
||
|
|
||
|
commit d0c820cc5bcf768598ca3e9f6e29f3e4e5589827
|
||
|
Author: Ping-Ke Shih <pkshih@realtek.com>
|
||
|
Date: Wed Oct 5 16:32:09 2022 +0800
|
||
|
|
||
|
wifi: rtw89: 8852b: set proper configuration before loading NCTL
|
||
|
|
||
|
Before loading RF NCTL table, we need to configure IQK/DPK clock and reset
|
||
|
them, and then polling NCTL state ready. Since 8852BE needs additional
|
||
|
one setting, add it by this patch. Also, give them proper names.
|
||
|
|
||
|
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
|
||
|
Signed-off-by: Kalle Valo <kvalo@kernel.org>
|
||
|
Link: https://lore.kernel.org/r/20221005083212.45683-4-pkshih@realtek.com
|
||
|
|
||
|
Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
|
||
|
---
|
||
|
drivers/net/wireless/realtek/rtw89/phy.c | 12 +++++++-----
|
||
|
drivers/net/wireless/realtek/rtw89/reg.h | 2 ++
|
||
|
2 files changed, 9 insertions(+), 5 deletions(-)
|
||
|
|
||
|
diff --git a/drivers/net/wireless/realtek/rtw89/phy.c b/drivers/net/wireless/realtek/rtw89/phy.c
|
||
|
index 5645aeb2a8d08..2db1209e6cd35 100644
|
||
|
--- a/drivers/net/wireless/realtek/rtw89/phy.c
|
||
|
+++ b/drivers/net/wireless/realtek/rtw89/phy.c
|
||
|
@@ -1368,13 +1368,15 @@ static void rtw89_phy_init_rf_nctl(struct rtw89_dev *rtwdev)
|
||
|
int ret;
|
||
|
|
||
|
/* IQK/DPK clock & reset */
|
||
|
- rtw89_phy_write32_set(rtwdev, 0x0c60, 0x3);
|
||
|
- rtw89_phy_write32_set(rtwdev, 0x0c6c, 0x1);
|
||
|
- rtw89_phy_write32_set(rtwdev, 0x58ac, 0x8000000);
|
||
|
- rtw89_phy_write32_set(rtwdev, 0x78ac, 0x8000000);
|
||
|
+ rtw89_phy_write32_set(rtwdev, R_IOQ_IQK_DPK, 0x3);
|
||
|
+ rtw89_phy_write32_set(rtwdev, R_GNT_BT_WGT_EN, 0x1);
|
||
|
+ rtw89_phy_write32_set(rtwdev, R_P0_PATH_RST, 0x8000000);
|
||
|
+ rtw89_phy_write32_set(rtwdev, R_P1_PATH_RST, 0x8000000);
|
||
|
+ if (chip->chip_id == RTL8852B)
|
||
|
+ rtw89_phy_write32_set(rtwdev, R_IOQ_IQK_DPK, 0x2);
|
||
|
|
||
|
/* check 0x8080 */
|
||
|
- rtw89_phy_write32(rtwdev, 0x8000, 0x8);
|
||
|
+ rtw89_phy_write32(rtwdev, R_NCTL_CFG, 0x8);
|
||
|
|
||
|
ret = read_poll_timeout(rtw89_phy_nctl_poll, val, val == 0x4, 10,
|
||
|
1000, false, rtwdev);
|
||
|
diff --git a/drivers/net/wireless/realtek/rtw89/reg.h b/drivers/net/wireless/realtek/rtw89/reg.h
|
||
|
index 874cca85eaadf..82af17d7d8d31 100644
|
||
|
--- a/drivers/net/wireless/realtek/rtw89/reg.h
|
||
|
+++ b/drivers/net/wireless/realtek/rtw89/reg.h
|
||
|
@@ -4039,6 +4039,7 @@
|
||
|
#define B_P0_RFM_TX_OPT BIT(6)
|
||
|
#define B_P0_RFM_BT_EN BIT(5)
|
||
|
#define B_P0_RFM_OUT GENMASK(4, 0)
|
||
|
+#define R_P0_PATH_RST 0x58AC
|
||
|
#define R_P0_TXDPD 0x58D4
|
||
|
#define B_P0_TXDPD GENMASK(31, 28)
|
||
|
#define R_P0_TXPW_RSTB 0x58DC
|
||
|
@@ -4083,6 +4084,7 @@
|
||
|
#define R_P1_RFCTM 0x7864
|
||
|
#define R_P1_RFCTM_RDY BIT(26)
|
||
|
#define B_P1_RFCTM_VAL GENMASK(25, 20)
|
||
|
+#define R_P1_PATH_RST 0x78AC
|
||
|
#define R_P1_TXPW_RSTB 0x78DC
|
||
|
#define B_P1_TXPW_RSTB_MANON BIT(30)
|
||
|
#define B_P1_TXPW_RSTB_TSSI BIT(31)
|
||
|
--
|
||
|
2.13.6
|
||
|
|