OSDN Git Service

wifi: mt76: mt7996: update register for CFEND_RATE
authorShayne Chen <shayne.chen@mediatek.com>
Fri, 23 Dec 2022 10:13:46 +0000 (18:13 +0800)
committerFelix Fietkau <nbd@nbd.name>
Fri, 3 Feb 2023 13:47:16 +0000 (14:47 +0100)
In newer chipsets, CFEND_RATE setting has been moved to different hw
module.

Fixes: 98686cd21624 ("wifi: mt76: mt7996: add driver for MediaTek Wi-Fi 7 (802.11be) devices")
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7996/mac.c
drivers/net/wireless/mediatek/mt76/mt7996/mmio.c
drivers/net/wireless/mediatek/mt76/mt7996/regs.h

index 0b3e287..ce4242f 100644 (file)
@@ -1690,7 +1690,7 @@ void mt7996_mac_set_timing(struct mt7996_phy *phy)
        else
                val = MT7996_CFEND_RATE_11B;
 
-       mt76_rmw_field(dev, MT_AGG_ACR0(band_idx), MT_AGG_ACR_CFEND_RATE, val);
+       mt76_rmw_field(dev, MT_RATE_HRCR0(band_idx), MT_RATE_HRCR0_CFEND_RATE, val);
        mt76_clear(dev, MT_ARB_SCR(band_idx),
                   MT_ARB_SCR_TX_DISABLE | MT_ARB_SCR_RX_DISABLE);
 }
index 60781d0..d8a2c1a 100644 (file)
@@ -21,6 +21,7 @@ static const struct __base mt7996_reg_base[] = {
        [WF_ETBF_BASE]          = { { 0x820ea000, 0x820fa000, 0x830ea000 } },
        [WF_LPON_BASE]          = { { 0x820eb000, 0x820fb000, 0x830eb000 } },
        [WF_MIB_BASE]           = { { 0x820ed000, 0x820fd000, 0x830ed000 } },
+       [WF_RATE_BASE]          = { { 0x820ee000, 0x820fe000, 0x830ee000 } },
 };
 
 static const struct __map mt7996_reg_map[] = {
index 42980b9..7a28cae 100644 (file)
@@ -33,6 +33,7 @@ enum base_rev {
        WF_ETBF_BASE,
        WF_LPON_BASE,
        WF_MIB_BASE,
+       WF_RATE_BASE,
        __MT_REG_BASE_MAX,
 };
 
@@ -235,13 +236,6 @@ enum base_rev {
                                                 FIELD_PREP(MT_WTBL_LMAC_ID, _id) | \
                                                 FIELD_PREP(MT_WTBL_LMAC_DW, _dw))
 
-/* AGG: band 0(0x820e2000), band 1(0x820f2000), band 2(0x830e2000) */
-#define MT_WF_AGG_BASE(_band)                  __BASE(WF_AGG_BASE, (_band))
-#define MT_WF_AGG(_band, ofs)                  (MT_WF_AGG_BASE(_band) + (ofs))
-
-#define MT_AGG_ACR0(_band)                     MT_WF_AGG(_band, 0x054)
-#define MT_AGG_ACR_CFEND_RATE                  GENMASK(13, 0)
-
 /* ARB: band 0(0x820e3000), band 1(0x820f3000), band 2(0x830e3000) */
 #define MT_WF_ARB_BASE(_band)                  __BASE(WF_ARB_BASE, (_band))
 #define MT_WF_ARB(_band, ofs)                  (MT_WF_ARB_BASE(_band) + (ofs))
@@ -300,6 +294,13 @@ enum base_rev {
 #define MT_WF_RMAC_RSVD0(_band)                        MT_WF_RMAC(_band, 0x03e0)
 #define MT_WF_RMAC_RSVD0_EIFS_CLR              BIT(21)
 
+/* RATE: band 0(0x820ee000), band 1(0x820fe000), band 2(0x830ee000) */
+#define MT_WF_RATE_BASE(_band)                 __BASE(WF_RATE_BASE, (_band))
+#define MT_WF_RATE(_band, ofs)                 (MT_WF_RATE_BASE(_band) + (ofs))
+
+#define MT_RATE_HRCR0(_band)                   MT_WF_RATE(_band, 0x050)
+#define MT_RATE_HRCR0_CFEND_RATE               GENMASK(14, 0)
+
 /* WFDMA0 */
 #define MT_WFDMA0_BASE                         0xd4000
 #define MT_WFDMA0(ofs)                         (MT_WFDMA0_BASE + (ofs))