[][MAC80211][Rebase Patches][update internal patches based on mt76-2023-06-22-29cfabbb]
[Description]
Fix and rebase internal patches based on mt76-2023-06-22-29cfabbb
[Release-log]
N/A
Change-Id: Ic49c929e0bc93915300f7e2c37e6052158b0b826
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/7662070
diff --git a/autobuild_mac80211_release/package/kernel/mt76/patches/2008-wifi-mt76-mt7915-add-ctxd-support-for-mt7916.patch b/autobuild_mac80211_release/package/kernel/mt76/patches/2008-wifi-mt76-mt7915-add-ctxd-support-for-mt7916.patch
new file mode 100644
index 0000000..bc755ff
--- /dev/null
+++ b/autobuild_mac80211_release/package/kernel/mt76/patches/2008-wifi-mt76-mt7915-add-ctxd-support-for-mt7916.patch
@@ -0,0 +1,92 @@
+From 48b21966878b9b47925ce65008614d52117e2dba Mon Sep 17 00:00:00 2001
+From: "sujuan.chen" <sujuan.chen@mediatek.com>
+Date: Thu, 6 Apr 2023 17:50:52 +0800
+Subject: [PATCH 2008/2009] wifi: mt76: mt7915: add ctxd support for mt7916
+
+Signed-off-by: sujuan.chen <sujuan.chen@mediatek.com>
+---
+ mt7915/dma.c | 20 ++++++++++++++++++++
+ mt7915/regs.h | 15 +++++++++++++++
+ 2 files changed, 35 insertions(+)
+
+diff --git a/mt7915/dma.c b/mt7915/dma.c
+index 326c8c8..f71ec55 100644
+--- a/mt7915/dma.c
++++ b/mt7915/dma.c
+@@ -433,6 +433,26 @@ int mt7915_dma_init(struct mt7915_dev *dev, struct mt7915_phy *phy2)
+ if (is_mt7915(mdev))
+ mt76_rmw(dev, MT_WFDMA0_EXT0_CFG, MT_WFDMA0_EXT0_RXWB_KEEP,
+ MT_WFDMA0_EXT0_RXWB_KEEP);
++ else {
++ if ((mt76_rr(dev, MT_CBTOP_RESV) & 0xff) == 2) {
++ mt76_set(dev, MT_WFDMA0_GLO_CFG, MT_WFDMA0_GLO_CFG_DUMMY_REG);
++ mt76_set(dev, MT_WFDMA0_CTXD_CFG, FIELD_PREP(MT_WFDMA0_CTXD_TIMEOUT, 0xa));
++ } else {
++ mt76_set(dev, MT_WFDMA0_CTXD_CFG, FIELD_PREP(MT_WFDMA0_CTXD_TIMEOUT, 0xff));
++
++ /*Delay tick set to 0xFFFF, which is about 3449us*/
++ mt76_wr(dev, MT_WFDMA_WED_DLY_INT_TICK, 0xffff);
++ }
++
++ mt76_clear(dev, MT_WFDMA0_CTXD_CFG, MT_WFDMA0_CTXD_CASCADE_NUM);
++
++ mt76_set(dev, MT_WFDMA0_CTXD_CFG,
++ FIELD_PREP(MT_WFDMA0_BAND0_CTXD_RING_IDX, 18) |
++ FIELD_PREP(MT_WFDMA0_BAND1_CTXD_RING_IDX, 19) |
++ MT_WFDMA0_BAND0_CTXD_EN | MT_WFDMA0_BAND1_CTXD_EN);
++
++ mt76_set(dev, MT_WFDMA0_CFG_EXT, MT_WFDMA0_EXT_TX_FCTRL_MODE);
++ }
+ }
+ } else {
+ mt76_clear(dev, MT_WFDMA_HOST_CONFIG, MT_WFDMA_HOST_CONFIG_WED);
+diff --git a/mt7915/regs.h b/mt7915/regs.h
+index 44da7b8..bc963ac 100644
+--- a/mt7915/regs.h
++++ b/mt7915/regs.h
+@@ -606,6 +606,7 @@ enum offs_rev {
+ #define MT_WFDMA0_GLO_CFG MT_WFDMA0(0x208)
+ #define MT_WFDMA0_GLO_CFG_TX_DMA_EN BIT(0)
+ #define MT_WFDMA0_GLO_CFG_RX_DMA_EN BIT(2)
++#define MT_WFDMA0_GLO_CFG_DUMMY_REG BIT(10)
+ #define MT_WFDMA0_GLO_CFG_OMIT_TX_INFO BIT(28)
+ #define MT_WFDMA0_GLO_CFG_OMIT_RX_INFO BIT(27)
+ #define MT_WFDMA0_GLO_CFG_OMIT_RX_INFO_PFET2 BIT(21)
+@@ -615,6 +616,17 @@ enum offs_rev {
+ #define MT_WFDMA0_EXT0_CFG MT_WFDMA0(0x2b0)
+ #define MT_WFDMA0_EXT0_RXWB_KEEP BIT(10)
+
++#define MT_WFDMA0_CFG_EXT MT_WFDMA0(0x2b4)
++#define MT_WFDMA0_EXT_TX_FCTRL_MODE BIT(28)
++
++#define MT_WFDMA0_CTXD_CFG MT_WFDMA0(0x2bc)
++#define MT_WFDMA0_BAND0_CTXD_EN BIT(0)
++#define MT_WFDMA0_BAND0_CTXD_RING_IDX GENMASK(5, 1)
++#define MT_WFDMA0_BAND1_CTXD_EN BIT(6)
++#define MT_WFDMA0_BAND1_CTXD_RING_IDX GENMASK(11, 7)
++#define MT_WFDMA0_CTXD_CASCADE_NUM GENMASK(15, 12)
++#define MT_WFDMA0_CTXD_TIMEOUT GENMASK(23, 16)
++
+ #define MT_WFDMA0_PRI_DLY_INT_CFG0 MT_WFDMA0(0x2f0)
+ #define MT_WFDMA0_PRI_DLY_INT_CFG1 MT_WFDMA0(0x2f4)
+ #define MT_WFDMA0_PRI_DLY_INT_CFG2 MT_WFDMA0(0x2f8)
+@@ -658,6 +670,8 @@ enum offs_rev {
+ #define MT_WFDMA_WED_RING_CONTROL_TX1 GENMASK(12, 8)
+ #define MT_WFDMA_WED_RING_CONTROL_RX1 GENMASK(20, 16)
+
++#define MT_WFDMA_WED_DLY_INT_TICK MT_WFDMA_EXT_CSR_PHYS(0x38)
++
+ #define MT_WFDMA_EXT_CSR_HIF_MISC MT_WFDMA_EXT_CSR_PHYS(0x44)
+ #define MT_WFDMA_EXT_CSR_HIF_MISC_BUSY BIT(0)
+
+@@ -1186,6 +1200,7 @@ enum offs_rev {
+
+ #define MT_HW_BOUND 0x70010020
+ #define MT_HW_REV 0x70010204
++#define MT_CBTOP_RESV 0x70010210
+ #define MT_WF_SUBSYS_RST 0x70002600
+
+ /* PCIE MAC */
+--
+2.18.0
+