[][mac80211][wifi6][mt76][Remove unnecessary register settings]
[Description]
Remove unnecessary register settings from the driver layer,
and let firmware take over the configuration control.
[Release-log]
N/A
Change-Id: I6f5a9d79ec052cacccd79b8e75436f2af85e380b
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/8751162
diff --git a/autobuild_mac80211_release/package/kernel/mt76/patches/1052-wifi-mt76-mt7915-remove-unnecessary-register-setting.patch b/autobuild_mac80211_release/package/kernel/mt76/patches/1052-wifi-mt76-mt7915-remove-unnecessary-register-setting.patch
new file mode 100644
index 0000000..48bab63
--- /dev/null
+++ b/autobuild_mac80211_release/package/kernel/mt76/patches/1052-wifi-mt76-mt7915-remove-unnecessary-register-setting.patch
@@ -0,0 +1,143 @@
+From faaaf4ee3fc3f230cc3c039f114296f12e00e98c Mon Sep 17 00:00:00 2001
+From: Henry Yen <henry.yen@mediatek.com>
+Date: Wed, 6 Mar 2024 12:42:06 +0800
+Subject: [PATCH] wifi: mt76: mt7915: remove unnecessary register settings
+
+Remove unnecessary register settings from the driver layer,
+and let firmware take over the configuration control.
+
+Signed-off-by: Henry.Yen <henry.yen@mediatek.com>
+---
+ mt7915/init.c | 35 -----------------------------------
+ mt7915/mac.c | 43 +------------------------------------------
+ 2 files changed, 1 insertion(+), 77 deletions(-)
+
+diff --git a/mt7915/init.c b/mt7915/init.c
+index bb6b746..3f7a5ff 100644
+--- a/mt7915/init.c
++++ b/mt7915/init.c
+@@ -488,30 +488,6 @@ mt7915_mac_init_band(struct mt7915_dev *dev, u8 band)
+ {
+ u32 mask, set;
+
+- mt76_rmw_field(dev, MT_TMAC_CTCR0(band),
+- MT_TMAC_CTCR0_INS_DDLMT_REFTIME, 0x3f);
+- mt76_set(dev, MT_TMAC_CTCR0(band),
+- MT_TMAC_CTCR0_INS_DDLMT_VHT_SMPDU_EN |
+- MT_TMAC_CTCR0_INS_DDLMT_EN);
+-
+- mask = MT_MDP_RCFR0_MCU_RX_MGMT |
+- MT_MDP_RCFR0_MCU_RX_CTL_NON_BAR |
+- MT_MDP_RCFR0_MCU_RX_CTL_BAR;
+- set = FIELD_PREP(MT_MDP_RCFR0_MCU_RX_MGMT, MT_MDP_TO_HIF) |
+- FIELD_PREP(MT_MDP_RCFR0_MCU_RX_CTL_NON_BAR, MT_MDP_TO_HIF) |
+- FIELD_PREP(MT_MDP_RCFR0_MCU_RX_CTL_BAR, MT_MDP_TO_HIF);
+- mt76_rmw(dev, MT_MDP_BNRCFR0(band), mask, set);
+-
+- mask = MT_MDP_RCFR1_MCU_RX_BYPASS |
+- MT_MDP_RCFR1_RX_DROPPED_UCAST |
+- MT_MDP_RCFR1_RX_DROPPED_MCAST;
+- set = FIELD_PREP(MT_MDP_RCFR1_MCU_RX_BYPASS, MT_MDP_TO_HIF) |
+- FIELD_PREP(MT_MDP_RCFR1_RX_DROPPED_UCAST, MT_MDP_TO_HIF) |
+- FIELD_PREP(MT_MDP_RCFR1_RX_DROPPED_MCAST, MT_MDP_TO_HIF);
+- mt76_rmw(dev, MT_MDP_BNRCFR1(band), mask, set);
+-
+- mt76_rmw_field(dev, MT_DMA_DCR0(band), MT_DMA_DCR0_MAX_RX_LEN, 0x680);
+-
+ /* mt7915: disable rx rate report by default due to hw issues */
+ mt76_clear(dev, MT_DMA_DCR0(band), MT_DMA_DCR0_RXD_G5_EN);
+
+@@ -614,23 +590,12 @@ mt7915_init_led_mux(struct mt7915_dev *dev)
+ void mt7915_mac_init(struct mt7915_dev *dev)
+ {
+ int i;
+- u32 rx_len = is_mt7915(&dev->mt76) ? 0x400 : 0x680;
+-
+- /* config pse qid6 wfdma port selection */
+- if (!is_mt7915(&dev->mt76) && dev->hif2)
+- mt76_rmw(dev, MT_WF_PP_TOP_RXQ_WFDMA_CF_5, 0,
+- MT_WF_PP_TOP_RXQ_QID6_WFDMA_HIF_SEL_MASK);
+-
+- mt76_rmw_field(dev, MT_MDP_DCR1, MT_MDP_DCR1_MAX_RX_LEN, rx_len);
+
+ if (!is_mt7915(&dev->mt76))
+ mt76_clear(dev, MT_MDP_DCR2, MT_MDP_DCR2_RX_TRANS_SHORT);
+ else
+ mt76_clear(dev, MT_PLE_HOST_RPT0, MT_PLE_HOST_RPT0_TX_LATENCY);
+
+- /* enable hardware de-agg */
+- mt76_set(dev, MT_MDP_DCR0, MT_MDP_DCR0_DAMSDU_EN);
+-
+ for (i = 0; i < mt7915_wtbl_size(dev); i++)
+ mt7915_mac_wtbl_update(dev, i,
+ MT_WTBL_UPDATE_ADM_COUNT_CLEAR);
+diff --git a/mt7915/mac.c b/mt7915/mac.c
+index ac45e1b..ec8bdd4 100644
+--- a/mt7915/mac.c
++++ b/mt7915/mac.c
+@@ -1241,61 +1241,20 @@ void mt7915_mac_reset_counters(struct mt7915_phy *phy)
+
+ void mt7915_mac_set_timing(struct mt7915_phy *phy)
+ {
+- s16 coverage_class = phy->coverage_class;
+ struct mt7915_dev *dev = phy->dev;
+- struct mt7915_phy *ext_phy = mt7915_ext_phy(dev);
+- u32 val, reg_offset;
+- u32 cck = FIELD_PREP(MT_TIMEOUT_VAL_PLCP, 231) |
+- FIELD_PREP(MT_TIMEOUT_VAL_CCA, 48);
+- u32 ofdm = FIELD_PREP(MT_TIMEOUT_VAL_PLCP, 60) |
+- FIELD_PREP(MT_TIMEOUT_VAL_CCA, 28);
++ u32 val;
+ u8 band = phy->mt76->band_idx;
+- int eifs_ofdm = 360, sifs = 10, offset;
+ bool a_band = !(phy->mt76->chandef.chan->band == NL80211_BAND_2GHZ);
+
+ if (!test_bit(MT76_STATE_RUNNING, &phy->mt76->state))
+ return;
+
+- if (ext_phy)
+- coverage_class = max_t(s16, dev->phy.coverage_class,
+- ext_phy->coverage_class);
+-
+- mt76_set(dev, MT_ARB_SCR(band),
+- MT_ARB_SCR_TX_DISABLE | MT_ARB_SCR_RX_DISABLE);
+- udelay(1);
+-
+- offset = 3 * coverage_class;
+- reg_offset = FIELD_PREP(MT_TIMEOUT_VAL_PLCP, offset) |
+- FIELD_PREP(MT_TIMEOUT_VAL_CCA, offset);
+-
+- if (!is_mt7915(&dev->mt76)) {
+- if (!a_band) {
+- mt76_wr(dev, MT_TMAC_ICR1(band),
+- FIELD_PREP(MT_IFS_EIFS_CCK, 314));
+- eifs_ofdm = 78;
+- } else {
+- eifs_ofdm = 84;
+- }
+- } else if (a_band) {
+- sifs = 16;
+- }
+-
+- mt76_wr(dev, MT_TMAC_CDTR(band), cck + reg_offset);
+- mt76_wr(dev, MT_TMAC_ODTR(band), ofdm + reg_offset);
+- mt76_wr(dev, MT_TMAC_ICR0(band),
+- FIELD_PREP(MT_IFS_EIFS_OFDM, eifs_ofdm) |
+- FIELD_PREP(MT_IFS_RIFS, 2) |
+- FIELD_PREP(MT_IFS_SIFS, sifs) |
+- FIELD_PREP(MT_IFS_SLOT, phy->slottime));
+-
+ if (phy->slottime < 20 || a_band)
+ val = MT7915_CFEND_RATE_DEFAULT;
+ else
+ val = MT7915_CFEND_RATE_11B;
+
+ mt76_rmw_field(dev, MT_AGG_ACR0(band), MT_AGG_ACR_CFEND_RATE, val);
+- mt76_clear(dev, MT_ARB_SCR(band),
+- MT_ARB_SCR_TX_DISABLE | MT_ARB_SCR_RX_DISABLE);
+ }
+
+ void mt7915_mac_enable_nf(struct mt7915_dev *dev, bool band)
+--
+2.18.0
+
diff --git a/autobuild_mac80211_release/package/kernel/mt76/patches/2004-wifi-mt76-mt7915-wed-HW-ATF-support-for-mt7986.patch b/autobuild_mac80211_release/package/kernel/mt76/patches/2004-wifi-mt76-mt7915-wed-HW-ATF-support-for-mt7986.patch
index 9ae85d8..e31a1cc 100644
--- a/autobuild_mac80211_release/package/kernel/mt76/patches/2004-wifi-mt76-mt7915-wed-HW-ATF-support-for-mt7986.patch
+++ b/autobuild_mac80211_release/package/kernel/mt76/patches/2004-wifi-mt76-mt7915-wed-HW-ATF-support-for-mt7986.patch
@@ -418,10 +418,10 @@
if (!dev->dbdc_support || phy->mt76->band_idx) {
debugfs_create_u32("dfs_hw_pattern", 0400, dir,
diff --git a/mt7915/init.c b/mt7915/init.c
-index 849ee450..7b5e2e4e 100644
+index 8ce9b81..28260ce 100644
--- a/mt7915/init.c
+++ b/mt7915/init.c
-@@ -610,10 +610,65 @@ mt7915_init_led_mux(struct mt7915_dev *dev)
+@@ -548,9 +548,64 @@ mt7915_init_led_mux(struct mt7915_dev *dev)
}
}
@@ -482,12 +482,11 @@
void mt7915_mac_init(struct mt7915_dev *dev)
{
int i;
- u32 rx_len = is_mt7915(&dev->mt76) ? 0x400 : 0x680;
+ struct wiphy *wiphy = dev->phy.mt76->hw->wiphy;
- /* config pse qid6 wfdma port selection */
- if (!is_mt7915(&dev->mt76) && dev->hif2)
-@@ -637,6 +692,9 @@ void mt7915_mac_init(struct mt7915_dev *dev)
+ if (!is_mt7915(&dev->mt76))
+ mt76_clear(dev, MT_MDP_DCR2, MT_MDP_DCR2_RX_TRANS_SHORT);
+@@ -603,6 +658,9 @@ void mt7915_mac_init(struct mt7915_dev *dev)
mt7915_mac_init_band(dev, i);
mt7915_init_led_mux(dev);