blob: d62d58aec7822f7e3dab122999c1ad59501c0cd2 [file] [log] [blame]
developerbbd45e12023-05-19 08:22:06 +08001From 3ad0a83922b0778c06201d453f42b25e60c32fef 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
developerbbd45e12023-05-19 08:22:06 +08004Subject: [PATCH 3011/3012] 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
developerbbd45e12023-05-19 08:22:06 +080013index 3784b7b..daa01fd 100644
developer2324aa22023-04-12 11:30:15 +080014--- a/mt7915/dma.c
15+++ b/mt7915/dma.c
16@@ -433,6 +433,26 @@ int mt7915_dma_init(struct mt7915_dev *dev, struct mt7915_phy *phy2)
17 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 {
21+ if (mt76_rr(dev, MT_CBTOP_RESV) & 0xff == 2) {
22+ 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
developerbbd45e12023-05-19 08:22:06 +080044index 7955d01..2f32a00 100644
developer2324aa22023-04-12 11:30:15 +080045--- a/mt7915/regs.h
46+++ b/mt7915/regs.h
47@@ -603,6 +603,7 @@ enum offs_rev {
48 #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)
55@@ -612,6 +613,17 @@ enum offs_rev {
56 #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)
73@@ -655,6 +667,8 @@ enum offs_rev {
74 #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
developerbbd45e12023-05-19 08:22:06 +080082@@ -1183,6 +1197,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--
912.18.0
92