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.
111 lines
4.1 KiB
111 lines
4.1 KiB
1 year ago
|
From ae440308591d445eba5ce38d6404b3095fe11239 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 015/142] wifi: rtw89: add to dump TX FIFO 0/1 for 8852C
|
||
|
MIME-Version: 1.0
|
||
|
Content-Type: text/plain; charset=UTF-8
|
||
|
Content-Transfer-Encoding: 8bit
|
||
|
|
||
|
Bugzilla: https://bugzilla.redhat.com/2207499
|
||
|
|
||
|
commit 732dd91db3d3a1b7a767598549ffed358c9fbb89
|
||
|
Author: Ping-Ke Shih <pkshih@realtek.com>
|
||
|
Date: Fri Sep 30 21:44:17 2022 +0800
|
||
|
|
||
|
wifi: rtw89: add to dump TX FIFO 0/1 for 8852C
|
||
|
|
||
|
MAC maintains TX FIFO to transmit packets with meta data to BB layer. To
|
||
|
debug abnormal transmission, we need to dump the content to dig problem.
|
||
|
Since FIFO of 8852C locates on different address with different size and
|
||
|
need additional switch to enable read operation, this patch adds the
|
||
|
changes accordingly.
|
||
|
|
||
|
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
|
||
|
Signed-off-by: Kalle Valo <kvalo@kernel.org>
|
||
|
Link: https://lore.kernel.org/r/20220930134417.10282-2-pkshih@realtek.com
|
||
|
|
||
|
Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
|
||
|
---
|
||
|
drivers/net/wireless/realtek/rtw89/debug.c | 21 +++++++++++++++++++++
|
||
|
drivers/net/wireless/realtek/rtw89/mac.c | 2 ++
|
||
|
drivers/net/wireless/realtek/rtw89/mac.h | 4 ++++
|
||
|
3 files changed, 27 insertions(+)
|
||
|
|
||
|
diff --git a/drivers/net/wireless/realtek/rtw89/debug.c b/drivers/net/wireless/realtek/rtw89/debug.c
|
||
|
index f584fa57c82fa..8f27c883eeabb 100644
|
||
|
--- a/drivers/net/wireless/realtek/rtw89/debug.c
|
||
|
+++ b/drivers/net/wireless/realtek/rtw89/debug.c
|
||
|
@@ -774,13 +774,34 @@ rtw89_debug_priv_mac_mem_dump_get(struct seq_file *m, void *v)
|
||
|
{
|
||
|
struct rtw89_debugfs_priv *debugfs_priv = m->private;
|
||
|
struct rtw89_dev *rtwdev = debugfs_priv->rtwdev;
|
||
|
+ bool grant_read = false;
|
||
|
+
|
||
|
+ if (debugfs_priv->mac_mem.sel >= RTW89_MAC_MEM_NUM)
|
||
|
+ return -ENOENT;
|
||
|
+
|
||
|
+ if (rtwdev->chip->chip_id == RTL8852C) {
|
||
|
+ switch (debugfs_priv->mac_mem.sel) {
|
||
|
+ case RTW89_MAC_MEM_TXD_FIFO_0_V1:
|
||
|
+ case RTW89_MAC_MEM_TXD_FIFO_1_V1:
|
||
|
+ case RTW89_MAC_MEM_TXDATA_FIFO_0:
|
||
|
+ case RTW89_MAC_MEM_TXDATA_FIFO_1:
|
||
|
+ grant_read = true;
|
||
|
+ break;
|
||
|
+ default:
|
||
|
+ break;
|
||
|
+ }
|
||
|
+ }
|
||
|
|
||
|
mutex_lock(&rtwdev->mutex);
|
||
|
rtw89_leave_ps_mode(rtwdev);
|
||
|
+ if (grant_read)
|
||
|
+ rtw89_write32_set(rtwdev, R_AX_TCR1, B_AX_TCR_FORCE_READ_TXDFIFO);
|
||
|
rtw89_debug_dump_mac_mem(m, rtwdev,
|
||
|
debugfs_priv->mac_mem.sel,
|
||
|
debugfs_priv->mac_mem.start,
|
||
|
debugfs_priv->mac_mem.len);
|
||
|
+ if (grant_read)
|
||
|
+ rtw89_write32_clr(rtwdev, R_AX_TCR1, B_AX_TCR_FORCE_READ_TXDFIFO);
|
||
|
mutex_unlock(&rtwdev->mutex);
|
||
|
|
||
|
return 0;
|
||
|
diff --git a/drivers/net/wireless/realtek/rtw89/mac.c b/drivers/net/wireless/realtek/rtw89/mac.c
|
||
|
index 0be7d2ac59397..598568c3f2750 100644
|
||
|
--- a/drivers/net/wireless/realtek/rtw89/mac.c
|
||
|
+++ b/drivers/net/wireless/realtek/rtw89/mac.c
|
||
|
@@ -31,6 +31,8 @@ const u32 rtw89_mac_mem_base_addrs[RTW89_MAC_MEM_NUM] = {
|
||
|
[RTW89_MAC_MEM_TXDATA_FIFO_1] = TXDATA_FIFO_1_BASE_ADDR,
|
||
|
[RTW89_MAC_MEM_CPU_LOCAL] = CPU_LOCAL_BASE_ADDR,
|
||
|
[RTW89_MAC_MEM_BSSID_CAM] = BSSID_CAM_BASE_ADDR,
|
||
|
+ [RTW89_MAC_MEM_TXD_FIFO_0_V1] = TXD_FIFO_0_BASE_ADDR_V1,
|
||
|
+ [RTW89_MAC_MEM_TXD_FIFO_1_V1] = TXD_FIFO_1_BASE_ADDR_V1,
|
||
|
};
|
||
|
|
||
|
static void rtw89_mac_mem_write(struct rtw89_dev *rtwdev, u32 offset,
|
||
|
diff --git a/drivers/net/wireless/realtek/rtw89/mac.h b/drivers/net/wireless/realtek/rtw89/mac.h
|
||
|
index 6f4ada1869a17..a9867ac351da7 100644
|
||
|
--- a/drivers/net/wireless/realtek/rtw89/mac.h
|
||
|
+++ b/drivers/net/wireless/realtek/rtw89/mac.h
|
||
|
@@ -245,6 +245,8 @@ enum rtw89_mac_dbg_port_sel {
|
||
|
#define BCN_IE_CAM1_BASE_ADDR 0x188A0000
|
||
|
#define TXD_FIFO_0_BASE_ADDR 0x18856200
|
||
|
#define TXD_FIFO_1_BASE_ADDR 0x188A1080
|
||
|
+#define TXD_FIFO_0_BASE_ADDR_V1 0x18856400 /* for 8852C */
|
||
|
+#define TXD_FIFO_1_BASE_ADDR_V1 0x188A1080 /* for 8852C */
|
||
|
#define TXDATA_FIFO_0_BASE_ADDR 0x18856000
|
||
|
#define TXDATA_FIFO_1_BASE_ADDR 0x188A1000
|
||
|
#define CPU_LOCAL_BASE_ADDR 0x18003000
|
||
|
@@ -271,6 +273,8 @@ enum rtw89_mac_mem_sel {
|
||
|
RTW89_MAC_MEM_TXDATA_FIFO_1,
|
||
|
RTW89_MAC_MEM_CPU_LOCAL,
|
||
|
RTW89_MAC_MEM_BSSID_CAM,
|
||
|
+ RTW89_MAC_MEM_TXD_FIFO_0_V1,
|
||
|
+ RTW89_MAC_MEM_TXD_FIFO_1_V1,
|
||
|
|
||
|
/* keep last */
|
||
|
RTW89_MAC_MEM_NUM,
|
||
|
--
|
||
|
2.13.6
|
||
|
|