blob: b46568b709599d661d89005c8fe6ca9d601363b7 [file] [log] [blame]
developera72bbd82024-02-04 18:27:28 +08001From 121430ff1e7bbfb0a4b5763275530a5cc8939634 Mon Sep 17 00:00:00 2001
developer2324aa22023-04-12 11:30:15 +08002From: "sujuan.chen" <sujuan.chen@mediatek.com>
3Date: Thu, 6 Apr 2023 17:50:52 +0800
developera72bbd82024-02-04 18:27:28 +08004Subject: [PATCH 2007/2012] wifi: mt76: mt7915: add ctxd support for mt7916
developer2324aa22023-04-12 11:30:15 +08005
6Signed-off-by: sujuan.chen <sujuan.chen@mediatek.com>
7---
8 mt7915/dma.c | 20 ++++++++++++++++++++
9 mt7915/regs.h | 15 +++++++++++++++
10 2 files changed, 35 insertions(+)
11
12diff --git a/mt7915/dma.c b/mt7915/dma.c
developera72bbd82024-02-04 18:27:28 +080013index 552410a..4f9f5a3 100644
developer2324aa22023-04-12 11:30:15 +080014--- a/mt7915/dma.c
15+++ b/mt7915/dma.c
developerade48b12023-12-12 10:37:24 +080016@@ -435,6 +435,26 @@ int mt7915_dma_init(struct mt7915_dev *dev, struct mt7915_phy *phy2)
developer2324aa22023-04-12 11:30:15 +080017 if (is_mt7915(mdev))
18 mt76_rmw(dev, MT_WFDMA0_EXT0_CFG, MT_WFDMA0_EXT0_RXWB_KEEP,
19 MT_WFDMA0_EXT0_RXWB_KEEP);
20+ else {
developer2157bf82023-06-26 02:27:49 +080021+ if ((mt76_rr(dev, MT_CBTOP_RESV) & 0xff) == 2) {
developer2324aa22023-04-12 11:30:15 +080022+ mt76_set(dev, MT_WFDMA0_GLO_CFG, MT_WFDMA0_GLO_CFG_DUMMY_REG);
23+ mt76_set(dev, MT_WFDMA0_CTXD_CFG, FIELD_PREP(MT_WFDMA0_CTXD_TIMEOUT, 0xa));
24+ } else {
25+ mt76_set(dev, MT_WFDMA0_CTXD_CFG, FIELD_PREP(MT_WFDMA0_CTXD_TIMEOUT, 0xff));
26+
27+ /*Delay tick set to 0xFFFF, which is about 3449us*/
28+ mt76_wr(dev, MT_WFDMA_WED_DLY_INT_TICK, 0xffff);
29+ }
30+
31+ mt76_clear(dev, MT_WFDMA0_CTXD_CFG, MT_WFDMA0_CTXD_CASCADE_NUM);
32+
33+ mt76_set(dev, MT_WFDMA0_CTXD_CFG,
34+ FIELD_PREP(MT_WFDMA0_BAND0_CTXD_RING_IDX, 18) |
35+ FIELD_PREP(MT_WFDMA0_BAND1_CTXD_RING_IDX, 19) |
36+ MT_WFDMA0_BAND0_CTXD_EN | MT_WFDMA0_BAND1_CTXD_EN);
37+
38+ mt76_set(dev, MT_WFDMA0_CFG_EXT, MT_WFDMA0_EXT_TX_FCTRL_MODE);
39+ }
40 }
41 } else {
42 mt76_clear(dev, MT_WFDMA_HOST_CONFIG, MT_WFDMA_HOST_CONFIG_WED);
43diff --git a/mt7915/regs.h b/mt7915/regs.h
developer0443cd32023-09-19 14:11:49 +080044index 3c2fd2d..32d1f1e 100644
developer2324aa22023-04-12 11:30:15 +080045--- a/mt7915/regs.h
46+++ b/mt7915/regs.h
developer0443cd32023-09-19 14:11:49 +080047@@ -607,6 +607,7 @@ enum offs_rev {
developer2324aa22023-04-12 11:30:15 +080048 #define MT_WFDMA0_GLO_CFG MT_WFDMA0(0x208)
49 #define MT_WFDMA0_GLO_CFG_TX_DMA_EN BIT(0)
50 #define MT_WFDMA0_GLO_CFG_RX_DMA_EN BIT(2)
51+#define MT_WFDMA0_GLO_CFG_DUMMY_REG BIT(10)
52 #define MT_WFDMA0_GLO_CFG_OMIT_TX_INFO BIT(28)
53 #define MT_WFDMA0_GLO_CFG_OMIT_RX_INFO BIT(27)
54 #define MT_WFDMA0_GLO_CFG_OMIT_RX_INFO_PFET2 BIT(21)
developer0443cd32023-09-19 14:11:49 +080055@@ -616,6 +617,17 @@ enum offs_rev {
developer2324aa22023-04-12 11:30:15 +080056 #define MT_WFDMA0_EXT0_CFG MT_WFDMA0(0x2b0)
57 #define MT_WFDMA0_EXT0_RXWB_KEEP BIT(10)
58
59+#define MT_WFDMA0_CFG_EXT MT_WFDMA0(0x2b4)
60+#define MT_WFDMA0_EXT_TX_FCTRL_MODE BIT(28)
61+
62+#define MT_WFDMA0_CTXD_CFG MT_WFDMA0(0x2bc)
63+#define MT_WFDMA0_BAND0_CTXD_EN BIT(0)
64+#define MT_WFDMA0_BAND0_CTXD_RING_IDX GENMASK(5, 1)
65+#define MT_WFDMA0_BAND1_CTXD_EN BIT(6)
66+#define MT_WFDMA0_BAND1_CTXD_RING_IDX GENMASK(11, 7)
67+#define MT_WFDMA0_CTXD_CASCADE_NUM GENMASK(15, 12)
68+#define MT_WFDMA0_CTXD_TIMEOUT GENMASK(23, 16)
69+
70 #define MT_WFDMA0_PRI_DLY_INT_CFG0 MT_WFDMA0(0x2f0)
71 #define MT_WFDMA0_PRI_DLY_INT_CFG1 MT_WFDMA0(0x2f4)
72 #define MT_WFDMA0_PRI_DLY_INT_CFG2 MT_WFDMA0(0x2f8)
developer0443cd32023-09-19 14:11:49 +080073@@ -659,6 +671,8 @@ enum offs_rev {
developer2324aa22023-04-12 11:30:15 +080074 #define MT_WFDMA_WED_RING_CONTROL_TX1 GENMASK(12, 8)
75 #define MT_WFDMA_WED_RING_CONTROL_RX1 GENMASK(20, 16)
76
77+#define MT_WFDMA_WED_DLY_INT_TICK MT_WFDMA_EXT_CSR_PHYS(0x38)
78+
79 #define MT_WFDMA_EXT_CSR_HIF_MISC MT_WFDMA_EXT_CSR_PHYS(0x44)
80 #define MT_WFDMA_EXT_CSR_HIF_MISC_BUSY BIT(0)
81
developer0443cd32023-09-19 14:11:49 +080082@@ -1187,6 +1201,7 @@ enum offs_rev {
developer2324aa22023-04-12 11:30:15 +080083
84 #define MT_HW_BOUND 0x70010020
85 #define MT_HW_REV 0x70010204
86+#define MT_CBTOP_RESV 0x70010210
87 #define MT_WF_SUBSYS_RST 0x70002600
88
89 /* PCIE MAC */
90--
developer0443cd32023-09-19 14:11:49 +0800912.18.0
developer2324aa22023-04-12 11:30:15 +080092