blob: 927bbe668a7e40635ae5f5b9a7db545d3bdfbf93 [file] [log] [blame]
developere5c01a42022-12-23 18:17:33 +08001From 6098317d391c07b301bede6002c03ea0eed72103 Mon Sep 17 00:00:00 2001
2From: Shayne Chen <shayne.chen@mediatek.com>
3Date: Thu, 1 Dec 2022 14:23:35 +0800
4Subject: [PATCH 2/7] wifi: mt76: mt7996: update register for CFEND_RATE
5
6In newer chipsets, CFEND_RATE setting has been moved to different hw
7module.
8
9Fixes: 98686cd21624 ("wifi: mt76: mt7996: add driver for MediaTek Wi-Fi 7 (802.11be) devices")
10Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
11Change-Id: I41dd443010ede910d934f38f4d86aaa3e7f31032
12---
13 mt7996/mac.c | 2 +-
14 mt7996/mmio.c | 1 +
15 mt7996/regs.h | 15 ++++++++-------
16 3 files changed, 10 insertions(+), 8 deletions(-)
17
18diff --git a/mt7996/mac.c b/mt7996/mac.c
19index 0b3e287..ce4242f 100644
20--- a/mt7996/mac.c
21+++ b/mt7996/mac.c
22@@ -1690,7 +1690,7 @@ void mt7996_mac_set_timing(struct mt7996_phy *phy)
23 else
24 val = MT7996_CFEND_RATE_11B;
25
26- mt76_rmw_field(dev, MT_AGG_ACR0(band_idx), MT_AGG_ACR_CFEND_RATE, val);
27+ mt76_rmw_field(dev, MT_RATE_HRCR0(band_idx), MT_RATE_HRCR0_CFEND_RATE, val);
28 mt76_clear(dev, MT_ARB_SCR(band_idx),
29 MT_ARB_SCR_TX_DISABLE | MT_ARB_SCR_RX_DISABLE);
30 }
31diff --git a/mt7996/mmio.c b/mt7996/mmio.c
32index 60781d0..d8a2c1a 100644
33--- a/mt7996/mmio.c
34+++ b/mt7996/mmio.c
35@@ -21,6 +21,7 @@ static const struct __base mt7996_reg_base[] = {
36 [WF_ETBF_BASE] = { { 0x820ea000, 0x820fa000, 0x830ea000 } },
37 [WF_LPON_BASE] = { { 0x820eb000, 0x820fb000, 0x830eb000 } },
38 [WF_MIB_BASE] = { { 0x820ed000, 0x820fd000, 0x830ed000 } },
39+ [WF_RATE_BASE] = { { 0x820ee000, 0x820fe000, 0x830ee000 } },
40 };
41
42 static const struct __map mt7996_reg_map[] = {
43diff --git a/mt7996/regs.h b/mt7996/regs.h
44index 42980b9..7a28cae 100644
45--- a/mt7996/regs.h
46+++ b/mt7996/regs.h
47@@ -33,6 +33,7 @@ enum base_rev {
48 WF_ETBF_BASE,
49 WF_LPON_BASE,
50 WF_MIB_BASE,
51+ WF_RATE_BASE,
52 __MT_REG_BASE_MAX,
53 };
54
55@@ -235,13 +236,6 @@ enum base_rev {
56 FIELD_PREP(MT_WTBL_LMAC_ID, _id) | \
57 FIELD_PREP(MT_WTBL_LMAC_DW, _dw))
58
59-/* AGG: band 0(0x820e2000), band 1(0x820f2000), band 2(0x830e2000) */
60-#define MT_WF_AGG_BASE(_band) __BASE(WF_AGG_BASE, (_band))
61-#define MT_WF_AGG(_band, ofs) (MT_WF_AGG_BASE(_band) + (ofs))
62-
63-#define MT_AGG_ACR0(_band) MT_WF_AGG(_band, 0x054)
64-#define MT_AGG_ACR_CFEND_RATE GENMASK(13, 0)
65-
66 /* ARB: band 0(0x820e3000), band 1(0x820f3000), band 2(0x830e3000) */
67 #define MT_WF_ARB_BASE(_band) __BASE(WF_ARB_BASE, (_band))
68 #define MT_WF_ARB(_band, ofs) (MT_WF_ARB_BASE(_band) + (ofs))
69@@ -300,6 +294,13 @@ enum base_rev {
70 #define MT_WF_RMAC_RSVD0(_band) MT_WF_RMAC(_band, 0x03e0)
71 #define MT_WF_RMAC_RSVD0_EIFS_CLR BIT(21)
72
73+/* RATE: band 0(0x820ee000), band 1(0x820fe000), band 2(0x830ee000) */
74+#define MT_WF_RATE_BASE(_band) __BASE(WF_RATE_BASE, (_band))
75+#define MT_WF_RATE(_band, ofs) (MT_WF_RATE_BASE(_band) + (ofs))
76+
77+#define MT_RATE_HRCR0(_band) MT_WF_RATE(_band, 0x050)
78+#define MT_RATE_HRCR0_CFEND_RATE GENMASK(14, 0)
79+
80 /* WFDMA0 */
81 #define MT_WFDMA0_BASE 0xd4000
82 #define MT_WFDMA0(ofs) (MT_WFDMA0_BASE + (ofs))
83--
842.36.1
85