blob: 9d0f02b0eb4be63cf01a1131de7354dd7806a8de [file] [log] [blame]
developer7e2761e2023-10-12 08:11:13 +08001From df9f668cf78a4c8dbc505f5fc0fb27a14e94f4c1 Mon Sep 17 00:00:00 2001
2From: StanleyYP Wang <StanleyYP.Wang@mediatek.com>
3Date: Fri, 14 Jul 2023 17:29:35 +0800
4Subject: [PATCH 28/98] wifi: mt76: mt7996: add kite & eagle CR offset revision
5
6Signed-off-by: StanleyYP Wang <StanleyYP.Wang@mediatek.com>
7---
8 mt7996/mmio.c | 58 +++++++++++++++++++++++++++++++++++++++
9 mt7996/regs.h | 76 +++++++++++++++++++++++++++++++++++----------------
10 2 files changed, 111 insertions(+), 23 deletions(-)
11
12diff --git a/mt7996/mmio.c b/mt7996/mmio.c
13index 567f930..2132b2e 100644
14--- a/mt7996/mmio.c
15+++ b/mt7996/mmio.c
16@@ -28,6 +28,58 @@ static const struct __base mt7996_reg_base[] = {
17 [WF_RATE_BASE] = { { 0x820ee000, 0x820fe000, 0x830ee000 } },
18 };
19
20+static const u32 mt7996_offs[] = {
21+ [MIB_RVSR0] = 0x720,
22+ [MIB_RVSR1] = 0x724,
23+ [MIB_BTSCR5] = 0x788,
24+ [MIB_BTSCR6] = 0x798,
25+ [MIB_RSCR1] = 0x7ac,
26+ [MIB_RSCR27] = 0x954,
27+ [MIB_RSCR28] = 0x958,
28+ [MIB_RSCR29] = 0x95c,
29+ [MIB_RSCR30] = 0x960,
30+ [MIB_RSCR31] = 0x964,
31+ [MIB_RSCR33] = 0x96c,
32+ [MIB_RSCR35] = 0x974,
33+ [MIB_RSCR36] = 0x978,
34+ [MIB_BSCR0] = 0x9cc,
35+ [MIB_BSCR1] = 0x9d0,
36+ [MIB_BSCR2] = 0x9d4,
37+ [MIB_BSCR3] = 0x9d8,
38+ [MIB_BSCR4] = 0x9dc,
39+ [MIB_BSCR5] = 0x9e0,
40+ [MIB_BSCR6] = 0x9e4,
41+ [MIB_BSCR7] = 0x9e8,
42+ [MIB_BSCR17] = 0xa10,
43+ [MIB_TRDR1] = 0xa28,
44+};
45+
46+static const u32 mt7992_offs[] = {
47+ [MIB_RVSR0] = 0x760,
48+ [MIB_RVSR1] = 0x764,
49+ [MIB_BTSCR5] = 0x7c8,
50+ [MIB_BTSCR6] = 0x7d8,
51+ [MIB_RSCR1] = 0x7f0,
52+ [MIB_RSCR27] = 0x998,
53+ [MIB_RSCR28] = 0x99c,
54+ [MIB_RSCR29] = 0x9a0,
55+ [MIB_RSCR30] = 0x9a4,
56+ [MIB_RSCR31] = 0x9a8,
57+ [MIB_RSCR33] = 0x9b0,
58+ [MIB_RSCR35] = 0x9b8,
59+ [MIB_RSCR36] = 0x9bc,
60+ [MIB_BSCR0] = 0xac8,
61+ [MIB_BSCR1] = 0xacc,
62+ [MIB_BSCR2] = 0xad0,
63+ [MIB_BSCR3] = 0xad4,
64+ [MIB_BSCR4] = 0xad8,
65+ [MIB_BSCR5] = 0xadc,
66+ [MIB_BSCR6] = 0xae0,
67+ [MIB_BSCR7] = 0xae4,
68+ [MIB_BSCR17] = 0xb0c,
69+ [MIB_TRDR1] = 0xb24,
70+};
71+
72 static const struct __map mt7996_reg_map[] = {
73 { 0x54000000, 0x02000, 0x1000 }, /* WFDMA_0 (PCIE0 MCU DMA0) */
74 { 0x55000000, 0x03000, 0x1000 }, /* WFDMA_1 (PCIE0 MCU DMA1) */
75@@ -369,8 +421,14 @@ static int mt7996_mmio_init(struct mt76_dev *mdev,
76
77 switch (device_id) {
78 case 0x7990:
79+ dev->reg.base = mt7996_reg_base;
80+ dev->reg.offs_rev = mt7996_offs;
81+ dev->reg.map = mt7996_reg_map;
82+ dev->reg.map_size = ARRAY_SIZE(mt7996_reg_map);
83+ break;
84 case 0x7992:
85 dev->reg.base = mt7996_reg_base;
86+ dev->reg.offs_rev = mt7992_offs;
87 dev->reg.map = mt7996_reg_map;
88 dev->reg.map_size = ARRAY_SIZE(mt7996_reg_map);
89 break;
90diff --git a/mt7996/regs.h b/mt7996/regs.h
91index e76dae6..de5df91 100644
92--- a/mt7996/regs.h
93+++ b/mt7996/regs.h
94@@ -19,6 +19,7 @@ struct __base {
95 /* used to differentiate between generations */
96 struct mt7996_reg_desc {
97 const struct __base *base;
98+ const u32 *offs_rev;
99 const struct __map *map;
100 u32 map_size;
101 };
102@@ -39,6 +40,35 @@ enum base_rev {
103
104 #define __BASE(_id, _band) (dev->reg.base[(_id)].band_base[(_band)])
105
106+enum offs_rev {
107+ MIB_RVSR0,
108+ MIB_RVSR1,
109+ MIB_BTSCR5,
110+ MIB_BTSCR6,
111+ MIB_RSCR1,
112+ MIB_RSCR27,
113+ MIB_RSCR28,
114+ MIB_RSCR29,
115+ MIB_RSCR30,
116+ MIB_RSCR31,
117+ MIB_RSCR33,
118+ MIB_RSCR35,
119+ MIB_RSCR36,
120+ MIB_BSCR0,
121+ MIB_BSCR1,
122+ MIB_BSCR2,
123+ MIB_BSCR3,
124+ MIB_BSCR4,
125+ MIB_BSCR5,
126+ MIB_BSCR6,
127+ MIB_BSCR7,
128+ MIB_BSCR17,
129+ MIB_TRDR1,
130+ __MT_OFFS_MAX,
131+};
132+
133+#define __OFFS(id) (dev->reg.offs_rev[(id)])
134+
135 /* RRO TOP */
136 #define MT_RRO_TOP_BASE 0xA000
137 #define MT_RRO_TOP(ofs) (MT_RRO_TOP_BASE + (ofs))
138@@ -172,32 +202,32 @@ enum base_rev {
139 #define MT_WF_MIB_BASE(_band) __BASE(WF_MIB_BASE, (_band))
140 #define MT_WF_MIB(_band, ofs) (MT_WF_MIB_BASE(_band) + (ofs))
141
142-#define MT_MIB_BSCR0(_band) MT_WF_MIB(_band, 0x9cc)
143-#define MT_MIB_BSCR1(_band) MT_WF_MIB(_band, 0x9d0)
144-#define MT_MIB_BSCR2(_band) MT_WF_MIB(_band, 0x9d4)
145-#define MT_MIB_BSCR3(_band) MT_WF_MIB(_band, 0x9d8)
146-#define MT_MIB_BSCR4(_band) MT_WF_MIB(_band, 0x9dc)
147-#define MT_MIB_BSCR5(_band) MT_WF_MIB(_band, 0x9e0)
148-#define MT_MIB_BSCR6(_band) MT_WF_MIB(_band, 0x9e4)
149-#define MT_MIB_BSCR7(_band) MT_WF_MIB(_band, 0x9e8)
150-#define MT_MIB_BSCR17(_band) MT_WF_MIB(_band, 0xa10)
151+#define MT_MIB_BSCR0(_band) MT_WF_MIB(_band, __OFFS(MIB_BSCR0))
152+#define MT_MIB_BSCR1(_band) MT_WF_MIB(_band, __OFFS(MIB_BSCR1))
153+#define MT_MIB_BSCR2(_band) MT_WF_MIB(_band, __OFFS(MIB_BSCR2))
154+#define MT_MIB_BSCR3(_band) MT_WF_MIB(_band, __OFFS(MIB_BSCR3))
155+#define MT_MIB_BSCR4(_band) MT_WF_MIB(_band, __OFFS(MIB_BSCR4))
156+#define MT_MIB_BSCR5(_band) MT_WF_MIB(_band, __OFFS(MIB_BSCR5))
157+#define MT_MIB_BSCR6(_band) MT_WF_MIB(_band, __OFFS(MIB_BSCR6))
158+#define MT_MIB_BSCR7(_band) MT_WF_MIB(_band, __OFFS(MIB_BSCR7))
159+#define MT_MIB_BSCR17(_band) MT_WF_MIB(_band, __OFFS(MIB_BSCR17))
160
161 #define MT_MIB_TSCR5(_band) MT_WF_MIB(_band, 0x6c4)
162 #define MT_MIB_TSCR6(_band) MT_WF_MIB(_band, 0x6c8)
163 #define MT_MIB_TSCR7(_band) MT_WF_MIB(_band, 0x6d0)
164
165-#define MT_MIB_RSCR1(_band) MT_WF_MIB(_band, 0x7ac)
166+#define MT_MIB_RSCR1(_band) MT_WF_MIB(_band, __OFFS(MIB_RSCR1))
167 /* rx mpdu counter, full 32 bits */
168-#define MT_MIB_RSCR31(_band) MT_WF_MIB(_band, 0x964)
169-#define MT_MIB_RSCR33(_band) MT_WF_MIB(_band, 0x96c)
170+#define MT_MIB_RSCR31(_band) MT_WF_MIB(_band, __OFFS(MIB_RSCR31))
171+#define MT_MIB_RSCR33(_band) MT_WF_MIB(_band, __OFFS(MIB_RSCR33))
172
173 #define MT_MIB_SDR6(_band) MT_WF_MIB(_band, 0x020)
174 #define MT_MIB_SDR6_CHANNEL_IDL_CNT_MASK GENMASK(15, 0)
175
176-#define MT_MIB_RVSR0(_band) MT_WF_MIB(_band, 0x720)
177+#define MT_MIB_RVSR0(_band) MT_WF_MIB(_band, __OFFS(MIB_RVSR0))
178
179-#define MT_MIB_RSCR35(_band) MT_WF_MIB(_band, 0x974)
180-#define MT_MIB_RSCR36(_band) MT_WF_MIB(_band, 0x978)
181+#define MT_MIB_RSCR35(_band) MT_WF_MIB(_band, __OFFS(MIB_RSCR35))
182+#define MT_MIB_RSCR36(_band) MT_WF_MIB(_band, __OFFS(MIB_RSCR36))
183
184 /* tx ampdu cnt, full 32 bits */
185 #define MT_MIB_TSCR0(_band) MT_WF_MIB(_band, 0x6b0)
186@@ -210,16 +240,16 @@ enum base_rev {
187 #define MT_MIB_TSCR4(_band) MT_WF_MIB(_band, 0x6c0)
188
189 /* rx ampdu count, 32-bit */
190-#define MT_MIB_RSCR27(_band) MT_WF_MIB(_band, 0x954)
191+#define MT_MIB_RSCR27(_band) MT_WF_MIB(_band, __OFFS(MIB_RSCR27))
192
193 /* rx ampdu bytes count, 32-bit */
194-#define MT_MIB_RSCR28(_band) MT_WF_MIB(_band, 0x958)
195+#define MT_MIB_RSCR28(_band) MT_WF_MIB(_band, __OFFS(MIB_RSCR28))
196
197 /* rx ampdu valid subframe count */
198-#define MT_MIB_RSCR29(_band) MT_WF_MIB(_band, 0x95c)
199+#define MT_MIB_RSCR29(_band) MT_WF_MIB(_band, __OFFS(MIB_RSCR29))
200
201 /* rx ampdu valid subframe bytes count, 32bits */
202-#define MT_MIB_RSCR30(_band) MT_WF_MIB(_band, 0x960)
203+#define MT_MIB_RSCR30(_band) MT_WF_MIB(_band, __OFFS(MIB_RSCR30))
204
205 /* remaining windows protected stats */
206 #define MT_MIB_SDR27(_band) MT_WF_MIB(_band, 0x080)
207@@ -228,18 +258,18 @@ enum base_rev {
208 #define MT_MIB_SDR28(_band) MT_WF_MIB(_band, 0x084)
209 #define MT_MIB_SDR28_TX_RWP_NEED_CNT GENMASK(15, 0)
210
211-#define MT_MIB_RVSR1(_band) MT_WF_MIB(_band, 0x724)
212+#define MT_MIB_RVSR1(_band) MT_WF_MIB(_band, __OFFS(MIB_RVSR1))
213
214 /* rx blockack count, 32 bits */
215 #define MT_MIB_TSCR1(_band) MT_WF_MIB(_band, 0x6b4)
216
217 #define MT_MIB_BTSCR0(_band) MT_WF_MIB(_band, 0x5e0)
218-#define MT_MIB_BTSCR5(_band) MT_WF_MIB(_band, 0x788)
219-#define MT_MIB_BTSCR6(_band) MT_WF_MIB(_band, 0x798)
220+#define MT_MIB_BTSCR5(_band) MT_WF_MIB(_band, __OFFS(MIB_BTSCR5))
221+#define MT_MIB_BTSCR6(_band) MT_WF_MIB(_band, __OFFS(MIB_BTSCR6))
222
223 #define MT_MIB_BFTFCR(_band) MT_WF_MIB(_band, 0x5d0)
224
225-#define MT_TX_AGG_CNT(_band, n) MT_WF_MIB(_band, 0xa28 + ((n) << 2))
226+#define MT_TX_AGG_CNT(_band, n) MT_WF_MIB(_band, __OFFS(MIB_TRDR1) + ((n) << 2))
227 #define MT_MIB_ARNG(_band, n) MT_WF_MIB(_band, 0x0b0 + ((n) << 2))
228 #define MT_MIB_ARNCR_RANGE(val, n) (((val) >> ((n) << 4)) & GENMASK(9, 0))
229
230--
2312.18.0
232