blob: 6712ad9faeaa38989b652a86bb46c41a4711c5d2 [file] [log] [blame]
developerb11a5392022-03-31 00:34:47 +08001/* SPDX-License-Identifier: ISC */
2/* Copyright (C) 2019 MediaTek Inc. */
3
4#ifndef __MT7615_REGS_H
5#define __MT7615_REGS_H
6
7enum mt7615_reg_base {
8 MT_TOP_CFG_BASE,
9 MT_HW_BASE,
10 MT_DMA_SHDL_BASE,
11 MT_PCIE_REMAP_2,
12 MT_ARB_BASE,
13 MT_HIF_BASE,
14 MT_CSR_BASE,
15 MT_PLE_BASE,
16 MT_PSE_BASE,
17 MT_CFG_BASE,
18 MT_AGG_BASE,
19 MT_TMAC_BASE,
20 MT_RMAC_BASE,
21 MT_DMA_BASE,
22 MT_PF_BASE,
23 MT_WTBL_BASE_ON,
24 MT_WTBL_BASE_OFF,
25 MT_LPON_BASE,
26 MT_MIB_BASE,
27 MT_WTBL_BASE_ADDR,
28 MT_PCIE_REMAP_BASE2,
29 MT_TOP_MISC_BASE,
30 MT_EFUSE_ADDR_BASE,
31 MT_PP_BASE,
32 __MT_BASE_MAX,
33};
34
35#define MT_HW_INFO_BASE ((dev)->reg_map[MT_HW_BASE])
36#define MT_HW_INFO(ofs) (MT_HW_INFO_BASE + (ofs))
37#define MT_HW_REV MT_HW_INFO(0x000)
38#define MT_HW_CHIPID MT_HW_INFO(0x008)
39#define MT_TOP_STRAP_STA MT_HW_INFO(0x010)
40#define MT_TOP_3NSS BIT(24)
41
42#define MT_TOP_OFF_RSV 0x1128
43#define MT_TOP_OFF_RSV_FW_STATE GENMASK(18, 16)
44
45#define MT_TOP_MISC2 ((dev)->reg_map[MT_TOP_CFG_BASE] + 0x134)
46#define MT_TOP_MISC2_FW_STATE GENMASK(2, 0)
47
48#define MT7663_TOP_MISC2_FW_STATE GENMASK(3, 1)
49#define MT_TOP_MISC2_FW_PWR_ON BIT(1)
50
51#define MT_MCU_BASE 0x2000
52#define MT_MCU(ofs) (MT_MCU_BASE + (ofs))
53
54#define MT_MCU_PCIE_REMAP_1 MT_MCU(0x500)
55#define MT_MCU_PCIE_REMAP_1_OFFSET GENMASK(17, 0)
56#define MT_MCU_PCIE_REMAP_1_BASE GENMASK(31, 18)
57#define MT_PCIE_REMAP_BASE_1 0x40000
58
59#define MT_MCU_PCIE_REMAP_2 ((dev)->reg_map[MT_PCIE_REMAP_2])
60#define MT_MCU_PCIE_REMAP_2_OFFSET GENMASK(18, 0)
61#define MT_MCU_PCIE_REMAP_2_BASE GENMASK(31, 19)
62#define MT_PCIE_REMAP_BASE_2 ((dev)->reg_map[MT_PCIE_REMAP_BASE2])
63
64#define MT_MCU_CIRQ_BASE 0xc0000
65#define MT_MCU_CIRQ(ofs) (MT_MCU_CIRQ_BASE + (ofs))
66
67#define MT_MCU_CIRQ_IRQ_SEL(n) MT_MCU_CIRQ((n) << 2)
68
69#define MT_HIF(ofs) ((dev)->reg_map[MT_HIF_BASE] + (ofs))
70#define MT_HIF_RST MT_HIF(0x100)
71#define MT_HIF_LOGIC_RST_N BIT(4)
72
73#define MT_PDMA_SLP_PROT MT_HIF(0x154)
74#define MT_PDMA_AXI_SLPPROT_ENABLE BIT(0)
75#define MT_PDMA_AXI_SLPPROT_RDY BIT(16)
76
77#define MT_PDMA_BUSY_STATUS MT_HIF(0x168)
78#define MT_PDMA_TX_IDX_BUSY BIT(2)
79#define MT_PDMA_BUSY_IDX BIT(31)
80
81#define MT_WPDMA_TX_RING0_CTRL0 MT_HIF(0x300)
82#define MT_WPDMA_TX_RING0_CTRL1 MT_HIF(0x304)
83
84#define MT7663_MCU_PCIE_REMAP_2_OFFSET GENMASK(15, 0)
85#define MT7663_MCU_PCIE_REMAP_2_BASE GENMASK(31, 16)
86
87#define MT_HIF2_BASE 0xf0000
88#define MT_HIF2(ofs) (MT_HIF2_BASE + (ofs))
89#define MT_PCIE_IRQ_ENABLE MT_HIF2(0x188)
90#define MT_PCIE_DOORBELL_PUSH MT_HIF2(0x1484)
91
92#define MT_CFG_LPCR_HOST MT_HIF(0x1f0)
93#define MT_CFG_LPCR_HOST_FW_OWN BIT(0)
94#define MT_CFG_LPCR_HOST_DRV_OWN BIT(1)
95
96#define MT_MCU2HOST_INT_STATUS MT_HIF(0x1f0)
97#define MT_MCU2HOST_INT_ENABLE MT_HIF(0x1f4)
98
99#define MT7663_MCU_INT_EVENT MT_HIF(0x108)
100#define MT_MCU_INT_EVENT MT_HIF(0x1f8)
101#define MT_MCU_INT_EVENT_PDMA_STOPPED BIT(0)
102#define MT_MCU_INT_EVENT_PDMA_INIT BIT(1)
103#define MT_MCU_INT_EVENT_SER_TRIGGER BIT(2)
104#define MT_MCU_INT_EVENT_RESET_DONE BIT(3)
105
106#define MT_INT_SOURCE_CSR MT_HIF(0x200)
107#define MT_INT_MASK_CSR MT_HIF(0x204)
108#define MT_DELAY_INT_CFG MT_HIF(0x210)
109
110#define MT_INT_RX_DONE(_n) BIT(_n)
111#define MT_INT_RX_DONE_ALL GENMASK(1, 0)
112#define MT_INT_TX_DONE_ALL GENMASK(19, 4)
113#define MT_INT_TX_DONE(_n) BIT((_n) + 4)
114#define MT7663_INT_MCU_CMD BIT(29)
115#define MT_INT_MCU_CMD BIT(30)
116
117#define MT_WPDMA_GLO_CFG MT_HIF(0x208)
118#define MT_WPDMA_GLO_CFG_TX_DMA_EN BIT(0)
119#define MT_WPDMA_GLO_CFG_TX_DMA_BUSY BIT(1)
120#define MT_WPDMA_GLO_CFG_RX_DMA_EN BIT(2)
121#define MT_WPDMA_GLO_CFG_RX_DMA_BUSY BIT(3)
122#define MT_WPDMA_GLO_CFG_DMA_BURST_SIZE GENMASK(5, 4)
123#define MT_WPDMA_GLO_CFG_TX_WRITEBACK_DONE BIT(6)
124#define MT_WPDMA_GLO_CFG_BIG_ENDIAN BIT(7)
125#define MT_WPDMA_GLO_CFG_TX_BT_SIZE_BIT0 BIT(9)
126#define MT_WPDMA_GLO_CFG_BYPASS_TX_SCH BIT(9) /* MT7622 */
127#define MT_WPDMA_GLO_CFG_MULTI_DMA_EN GENMASK(11, 10)
128#define MT_WPDMA_GLO_CFG_FIFO_LITTLE_ENDIAN BIT(12)
129#define MT_WPDMA_GLO_CFG_TX_BT_SIZE_BIT21 GENMASK(23, 22)
130#define MT_WPDMA_GLO_CFG_SW_RESET BIT(24)
131#define MT_WPDMA_GLO_CFG_FIRST_TOKEN_ONLY BIT(26)
132#define MT_WPDMA_GLO_CFG_OMIT_TX_INFO BIT(28)
133
134#define MT_WPDMA_RST_IDX MT_HIF(0x20c)
135
136#define MT_WPDMA_MEM_RNG_ERR MT_HIF(0x224)
137
138#define MT_MCU_CMD MT_HIF(0x234)
139#define MT_MCU_CMD_CLEAR_FW_OWN BIT(0)
140#define MT_MCU_CMD_STOP_PDMA_FW_RELOAD BIT(1)
141#define MT_MCU_CMD_STOP_PDMA BIT(2)
142#define MT_MCU_CMD_RESET_DONE BIT(3)
143#define MT_MCU_CMD_RECOVERY_DONE BIT(4)
144#define MT_MCU_CMD_NORMAL_STATE BIT(5)
145#define MT_MCU_CMD_LMAC_ERROR BIT(24)
146#define MT_MCU_CMD_PSE_ERROR BIT(25)
147#define MT_MCU_CMD_PLE_ERROR BIT(26)
148#define MT_MCU_CMD_PDMA_ERROR BIT(27)
149#define MT_MCU_CMD_PCIE_ERROR BIT(28)
150#define MT_MCU_CMD_ERROR_MASK (GENMASK(5, 1) | GENMASK(28, 24))
151#define MT7663_MCU_CMD_ERROR_MASK GENMASK(5, 2)
152
153#define MT_TX_RING_BASE MT_HIF(0x300)
154#define MT_RX_RING_BASE MT_HIF(0x400)
155
156#define MT_WPDMA_GLO_CFG1 MT_HIF(0x500)
157#define MT_WPDMA_TX_PRE_CFG MT_HIF(0x510)
158#define MT_WPDMA_RX_PRE_CFG MT_HIF(0x520)
159#define MT_WPDMA_ABT_CFG MT_HIF(0x530)
160#define MT_WPDMA_ABT_CFG1 MT_HIF(0x534)
161
162#define MT_CSR(ofs) ((dev)->reg_map[MT_CSR_BASE] + (ofs))
163#define MT_CONN_HIF_ON_LPCTL MT_CSR(0x000)
164
165#define MT_PLE(ofs) ((dev)->reg_map[MT_PLE_BASE] + (ofs))
166
167#define MT_PLE_PG_HIF0_GROUP MT_PLE(0x110)
168#define MT_HIF0_MIN_QUOTA GENMASK(11, 0)
169#define MT_PLE_FL_Q0_CTRL MT_PLE(0x1b0)
170#define MT_PLE_FL_Q1_CTRL MT_PLE(0x1b4)
171#define MT_PLE_FL_Q2_CTRL MT_PLE(0x1b8)
172#define MT_PLE_FL_Q3_CTRL MT_PLE(0x1bc)
173
174#define MT_PLE_AC_QEMPTY(ac, n) MT_PLE(0x300 + 0x10 * (ac) + \
175 ((n) << 2))
176
177#define MT_PSE(ofs) ((dev)->reg_map[MT_PSE_BASE] + (ofs))
178#define MT_PSE_PG_HIF0_GROUP MT_PSE(0x110)
179#define MT_HIF0_MIN_QUOTA GENMASK(11, 0)
180#define MT_PSE_PG_HIF1_GROUP MT_PSE(0x118)
181#define MT_HIF1_MIN_QUOTA GENMASK(11, 0)
182#define MT_PSE_QUEUE_EMPTY MT_PSE(0x0b4)
183#define MT_HIF_0_EMPTY_MASK BIT(16)
184#define MT_HIF_1_EMPTY_MASK BIT(17)
185#define MT_HIF_ALL_EMPTY_MASK GENMASK(17, 16)
186#define MT_PSE_PG_INFO MT_PSE(0x194)
187#define MT_PSE_SRC_CNT GENMASK(27, 16)
188
189#define MT_PP(ofs) ((dev)->reg_map[MT_PP_BASE] + (ofs))
190#define MT_PP_TXDWCNT MT_PP(0x0)
191#define MT_PP_TXDWCNT_TX0_ADD_DW_CNT GENMASK(7, 0)
192#define MT_PP_TXDWCNT_TX1_ADD_DW_CNT GENMASK(15, 8)
193
194#define MT_WF_PHY_BASE 0x82070000
195#define MT_WF_PHY(ofs) (MT_WF_PHY_BASE + (ofs))
196
197#define MT_WF_PHY_WF2_RFCTRL0(n) MT_WF_PHY(0x1900 + (n) * 0x400)
198#define MT_WF_PHY_WF2_RFCTRL0_LPBCN_EN BIT(9)
199
200#define MT_WF_PHY_R0_PHYMUX_5(_phy) MT_WF_PHY(0x0614 + ((_phy) << 9))
201#define MT7663_WF_PHY_R0_PHYMUX_5 MT_WF_PHY(0x0414)
202
203#define MT_WF_PHY_R0_PHYCTRL_STS0(_phy) MT_WF_PHY(0x020c + ((_phy) << 9))
204#define MT_WF_PHYCTRL_STAT_PD_OFDM GENMASK(31, 16)
205#define MT_WF_PHYCTRL_STAT_PD_CCK GENMASK(15, 0)
206
207#define MT7663_WF_PHY_R0_PHYCTRL_STS0(_phy) MT_WF_PHY(0x0210 + ((_phy) << 12))
208
209#define MT_WF_PHY_R0_PHYCTRL_STS5(_phy) MT_WF_PHY(0x0220 + ((_phy) << 9))
210#define MT_WF_PHYCTRL_STAT_MDRDY_OFDM GENMASK(31, 16)
211#define MT_WF_PHYCTRL_STAT_MDRDY_CCK GENMASK(15, 0)
212
213#define MT7663_WF_PHY_R0_PHYCTRL_STS5(_phy) MT_WF_PHY(0x0224 + ((_phy) << 12))
214
215#define MT_WF_PHY_MIN_PRI_PWR(_phy) MT_WF_PHY((_phy) ? 0x084 : 0x229c)
216#define MT_WF_PHY_PD_OFDM_MASK(_phy) ((_phy) ? GENMASK(24, 16) : \
217 GENMASK(28, 20))
218#define MT_WF_PHY_PD_OFDM(_phy, v) ((v) << ((_phy) ? 16 : 20))
219#define MT_WF_PHY_PD_BLK(_phy) ((_phy) ? BIT(25) : BIT(19))
220
221#define MT7663_WF_PHY_MIN_PRI_PWR(_phy) MT_WF_PHY((_phy) ? 0x2aec : 0x22f0)
222
223#define MT_WF_PHY_RXTD_BASE MT_WF_PHY(0x2200)
224#define MT_WF_PHY_RXTD(_n) (MT_WF_PHY_RXTD_BASE + ((_n) << 2))
225
226#define MT7663_WF_PHY_RXTD(_n) (MT_WF_PHY(0x25b0) + ((_n) << 2))
227
228#define MT_WF_PHY_RXTD_CCK_PD(_phy) MT_WF_PHY((_phy) ? 0x2314 : 0x2310)
229#define MT_WF_PHY_PD_CCK_MASK(_phy) (_phy) ? GENMASK(31, 24) : \
230 GENMASK(8, 1)
231#define MT_WF_PHY_PD_CCK(_phy, v) ((v) << ((_phy) ? 24 : 1))
232
233#define MT7663_WF_PHY_RXTD_CCK_PD(_phy) MT_WF_PHY((_phy) ? 0x2350 : 0x234c)
234
235#define MT_WF_PHY_RXTD2_BASE MT_WF_PHY(0x2a00)
236#define MT_WF_PHY_RXTD2(_n) (MT_WF_PHY_RXTD2_BASE + ((_n) << 2))
237
238#define MT_WF_PHY_RFINTF3_0(_n) MT_WF_PHY(0x1100 + (_n) * 0x400)
239#define MT_WF_PHY_RFINTF3_0_ANT GENMASK(7, 4)
240
241#define MT_WF_CFG_BASE ((dev)->reg_map[MT_CFG_BASE])
242#define MT_WF_CFG(ofs) (MT_WF_CFG_BASE + (ofs))
243
244#define MT_CFG_CCR MT_WF_CFG(0x000)
245#define MT_CFG_CCR_MAC_D1_1X_GC_EN BIT(24)
246#define MT_CFG_CCR_MAC_D0_1X_GC_EN BIT(25)
247#define MT_CFG_CCR_MAC_D1_2X_GC_EN BIT(30)
248#define MT_CFG_CCR_MAC_D0_2X_GC_EN BIT(31)
249
250#define MT_WF_AGG_BASE ((dev)->reg_map[MT_AGG_BASE])
251#define MT_WF_AGG(ofs) (MT_WF_AGG_BASE + (ofs))
252
253#define MT_AGG_ARCR MT_WF_AGG(0x010)
254#define MT_AGG_ARCR_INIT_RATE1 BIT(0)
255#define MT_AGG_ARCR_RTS_RATE_THR GENMASK(12, 8)
256#define MT_AGG_ARCR_RATE_DOWN_RATIO GENMASK(17, 16)
257#define MT_AGG_ARCR_RATE_DOWN_RATIO_EN BIT(19)
258#define MT_AGG_ARCR_RATE_UP_EXTRA_TH GENMASK(22, 20)
259
260#define MT_AGG_ARUCR(_band) MT_WF_AGG(0x018 + (_band) * 0x100)
261#define MT_AGG_ARDCR(_band) MT_WF_AGG(0x01c + (_band) * 0x100)
262#define MT_AGG_ARxCR_LIMIT_SHIFT(_n) (4 * (_n))
263#define MT_AGG_ARxCR_LIMIT(_n) GENMASK(2 + \
264 MT_AGG_ARxCR_LIMIT_SHIFT(_n), \
265 MT_AGG_ARxCR_LIMIT_SHIFT(_n))
266
267#define MT_AGG_ASRCR0 MT_WF_AGG(0x060)
268#define MT_AGG_ASRCR1 MT_WF_AGG(0x064)
269#define MT_AGG_ASRCR_RANGE(val, n) (((val) >> ((n) << 3)) & GENMASK(5, 0))
270
271#define MT_AGG_ACR(_band) MT_WF_AGG(0x070 + (_band) * 0x100)
272#define MT_AGG_ACR_NO_BA_RULE BIT(0)
273#define MT_AGG_ACR_NO_BA_AR_RULE BIT(1)
274#define MT_AGG_ACR_PKT_TIME_EN BIT(2)
275#define MT_AGG_ACR_CFEND_RATE GENMASK(15, 4)
276#define MT_AGG_ACR_BAR_RATE GENMASK(31, 20)
277
278#define MT_AGG_SCR MT_WF_AGG(0x0fc)
279#define MT_AGG_SCR_NLNAV_MID_PTEC_DIS BIT(3)
280
281#define MT_WF_ARB_BASE ((dev)->reg_map[MT_ARB_BASE])
282#define MT_WF_ARB(ofs) (MT_WF_ARB_BASE + (ofs))
283
284#define MT_ARB_RQCR MT_WF_ARB(0x070)
285#define MT_ARB_RQCR_RX_START BIT(0)
286#define MT_ARB_RQCR_RXV_START BIT(4)
287#define MT_ARB_RQCR_RXV_R_EN BIT(7)
288#define MT_ARB_RQCR_RXV_T_EN BIT(8)
289#define MT_ARB_RQCR_BAND_SHIFT 16
290
291#define MT_ARB_SCR MT_WF_ARB(0x080)
292#define MT_ARB_SCR_TX0_DISABLE BIT(8)
293#define MT_ARB_SCR_RX0_DISABLE BIT(9)
294#define MT_ARB_SCR_TX1_DISABLE BIT(10)
295#define MT_ARB_SCR_RX1_DISABLE BIT(11)
296
297#define MT_WF_TMAC_BASE ((dev)->reg_map[MT_TMAC_BASE])
298#define MT_WF_TMAC(ofs) (MT_WF_TMAC_BASE + (ofs))
299
300#define MT_TMAC_CDTR MT_WF_TMAC(0x090)
301#define MT_TMAC_ODTR MT_WF_TMAC(0x094)
302#define MT_TIMEOUT_VAL_PLCP GENMASK(15, 0)
303#define MT_TIMEOUT_VAL_CCA GENMASK(31, 16)
304
305#define MT_TMAC_TRCR(_band) MT_WF_TMAC((_band) ? 0x070 : 0x09c)
306#define MT_TMAC_TRCR_CCA_SEL GENMASK(31, 30)
307#define MT_TMAC_TRCR_SEC_CCA_SEL GENMASK(29, 28)
308
309#define MT_TMAC_ICR(_band) MT_WF_TMAC((_band) ? 0x074 : 0x0a4)
310#define MT_IFS_EIFS GENMASK(8, 0)
311#define MT_IFS_RIFS GENMASK(14, 10)
312#define MT_IFS_SIFS GENMASK(22, 16)
313#define MT_IFS_SLOT GENMASK(30, 24)
314
315#define MT_TMAC_CTCR0 MT_WF_TMAC(0x0f4)
316#define MT_TMAC_CTCR0_INS_DDLMT_REFTIME GENMASK(5, 0)
317#define MT_TMAC_CTCR0_INS_DDLMT_DENSITY GENMASK(15, 12)
318#define MT_TMAC_CTCR0_INS_DDLMT_EN BIT(17)
319#define MT_TMAC_CTCR0_INS_DDLMT_VHT_SMPDU_EN BIT(18)
320
321#define MT_WF_RMAC_BASE ((dev)->reg_map[MT_RMAC_BASE])
322#define MT_WF_RMAC(ofs) (MT_WF_RMAC_BASE + (ofs))
323
324#define MT_WF_RFCR(_band) MT_WF_RMAC((_band) ? 0x100 : 0x000)
325#define MT_WF_RFCR_DROP_STBC_MULTI BIT(0)
326#define MT_WF_RFCR_DROP_FCSFAIL BIT(1)
327#define MT_WF_RFCR_DROP_VERSION BIT(3)
328#define MT_WF_RFCR_DROP_PROBEREQ BIT(4)
329#define MT_WF_RFCR_DROP_MCAST BIT(5)
330#define MT_WF_RFCR_DROP_BCAST BIT(6)
331#define MT_WF_RFCR_DROP_MCAST_FILTERED BIT(7)
332#define MT_WF_RFCR_DROP_A3_MAC BIT(8)
333#define MT_WF_RFCR_DROP_A3_BSSID BIT(9)
334#define MT_WF_RFCR_DROP_A2_BSSID BIT(10)
335#define MT_WF_RFCR_DROP_OTHER_BEACON BIT(11)
336#define MT_WF_RFCR_DROP_FRAME_REPORT BIT(12)
337#define MT_WF_RFCR_DROP_CTL_RSV BIT(13)
338#define MT_WF_RFCR_DROP_CTS BIT(14)
339#define MT_WF_RFCR_DROP_RTS BIT(15)
340#define MT_WF_RFCR_DROP_DUPLICATE BIT(16)
341#define MT_WF_RFCR_DROP_OTHER_BSS BIT(17)
342#define MT_WF_RFCR_DROP_OTHER_UC BIT(18)
343#define MT_WF_RFCR_DROP_OTHER_TIM BIT(19)
344#define MT_WF_RFCR_DROP_NDPA BIT(20)
345#define MT_WF_RFCR_DROP_UNWANTED_CTL BIT(21)
346
347#define MT_WF_RMAC_MORE(_band) MT_WF_RMAC((_band) ? 0x124 : 0x024)
348#define MT_WF_RMAC_MORE_MUAR_MODE GENMASK(31, 30)
349
350#define MT_WF_RFCR1(_band) MT_WF_RMAC((_band) ? 0x104 : 0x004)
351#define MT_WF_RFCR1_DROP_ACK BIT(4)
352#define MT_WF_RFCR1_DROP_BF_POLL BIT(5)
353#define MT_WF_RFCR1_DROP_BA BIT(6)
354#define MT_WF_RFCR1_DROP_CFEND BIT(7)
355#define MT_WF_RFCR1_DROP_CFACK BIT(8)
356
357#define MT_CHFREQ(_band) MT_WF_RMAC((_band) ? 0x130 : 0x030)
358
359#define MT_WF_RMAC_MAR0 MT_WF_RMAC(0x025c)
360#define MT_WF_RMAC_MAR1 MT_WF_RMAC(0x0260)
361#define MT_WF_RMAC_MAR1_ADDR GENMASK(15, 0)
362#define MT_WF_RMAC_MAR1_START BIT(16)
363#define MT_WF_RMAC_MAR1_WRITE BIT(17)
364#define MT_WF_RMAC_MAR1_IDX GENMASK(29, 24)
365#define MT_WF_RMAC_MAR1_GROUP GENMASK(31, 30)
366
367#define MT_WF_RMAC_MIB_TIME0 MT_WF_RMAC(0x03c4)
368#define MT_WF_RMAC_MIB_RXTIME_CLR BIT(31)
369#define MT_WF_RMAC_MIB_RXTIME_EN BIT(30)
370
371#define MT_WF_RMAC_MIB_AIRTIME0 MT_WF_RMAC(0x0380)
372
373#define MT_WF_RMAC_MIB_TIME5 MT_WF_RMAC(0x03d8)
374#define MT_WF_RMAC_MIB_TIME6 MT_WF_RMAC(0x03dc)
375#define MT_MIB_OBSSTIME_MASK GENMASK(23, 0)
376
377#define MT_WF_DMA_BASE ((dev)->reg_map[MT_DMA_BASE])
378#define MT_WF_DMA(ofs) (MT_WF_DMA_BASE + (ofs))
379
380#define MT_DMA_DCR0 MT_WF_DMA(0x000)
381#define MT_DMA_DCR0_MAX_RX_LEN GENMASK(15, 2)
382#define MT_DMA_DCR0_DAMSDU_EN BIT(16)
383#define MT_DMA_DCR0_RX_VEC_DROP BIT(17)
384#define MT_DMA_DCR0_RX_HDR_TRANS_EN BIT(19)
385
386#define MT_DMA_RCFR0(_band) MT_WF_DMA(0x070 + (_band) * 0x40)
387#define MT_DMA_RCFR0_MCU_RX_MGMT BIT(2)
388#define MT_DMA_RCFR0_MCU_RX_CTL_NON_BAR BIT(3)
389#define MT_DMA_RCFR0_MCU_RX_CTL_BAR BIT(4)
390#define MT_DMA_RCFR0_MCU_RX_TDLS BIT(19)
391#define MT_DMA_RCFR0_MCU_RX_BYPASS BIT(21)
392#define MT_DMA_RCFR0_RX_DROPPED_UCAST GENMASK(25, 24)
393#define MT_DMA_RCFR0_RX_DROPPED_MCAST GENMASK(27, 26)
394
395#define MT_WF_PF_BASE ((dev)->reg_map[MT_PF_BASE])
396#define MT_WF_PF(ofs) (MT_WF_PF_BASE + (ofs))
397
398#define MT_WF_PFCR MT_WF_PF(0x000)
399#define MT_WF_PFCR_TDLS_EN BIT(9)
400
401#define MT_WTBL_BASE(dev) ((dev)->reg_map[MT_WTBL_BASE_ADDR])
402#define MT_WTBL_ENTRY_SIZE 256
403
404#define MT_WTBL_OFF_BASE ((dev)->reg_map[MT_WTBL_BASE_OFF])
405#define MT_WTBL_OFF(n) (MT_WTBL_OFF_BASE + (n))
406
407#define MT_WTBL_W0_KEY_IDX GENMASK(24, 23)
408#define MT_WTBL_W0_RX_KEY_VALID BIT(26)
409#define MT_WTBL_W0_RX_IK_VALID BIT(27)
410
411#define MT_WTBL_W2_KEY_TYPE GENMASK(7, 4)
412
413#define MT_WTBL_UPDATE MT_WTBL_OFF(0x030)
414#define MT_WTBL_UPDATE_WLAN_IDX GENMASK(7, 0)
415#define MT_WTBL_UPDATE_RXINFO_UPDATE BIT(11)
416#define MT_WTBL_UPDATE_ADM_COUNT_CLEAR BIT(12)
417#define MT_WTBL_UPDATE_RATE_UPDATE BIT(13)
418#define MT_WTBL_UPDATE_TX_COUNT_CLEAR BIT(14)
419#define MT_WTBL_UPDATE_BUSY BIT(31)
420
421#define MT_TOP_MISC(ofs) ((dev)->reg_map[MT_TOP_MISC_BASE] + (ofs))
422#define MT_CONN_ON_MISC MT_TOP_MISC(0x1140)
423#define MT_TOP_MISC2_FW_N9_RDY BIT(2)
424
425#define MT_WTBL_ON_BASE ((dev)->reg_map[MT_WTBL_BASE_ON])
426#define MT_WTBL_ON(_n) (MT_WTBL_ON_BASE + (_n))
427
428#define MT_WTBL_RICR0 MT_WTBL_ON(0x010)
429#define MT_WTBL_RICR1 MT_WTBL_ON(0x014)
430
431#define MT_WTBL_RIUCR0 MT_WTBL_ON(0x020)
432
433#define MT_WTBL_RIUCR1 MT_WTBL_ON(0x024)
434#define MT_WTBL_RIUCR1_RATE0 GENMASK(11, 0)
435#define MT_WTBL_RIUCR1_RATE1 GENMASK(23, 12)
436#define MT_WTBL_RIUCR1_RATE2_LO GENMASK(31, 24)
437
438#define MT_WTBL_RIUCR2 MT_WTBL_ON(0x028)
439#define MT_WTBL_RIUCR2_RATE2_HI GENMASK(3, 0)
440#define MT_WTBL_RIUCR2_RATE3 GENMASK(15, 4)
441#define MT_WTBL_RIUCR2_RATE4 GENMASK(27, 16)
442#define MT_WTBL_RIUCR2_RATE5_LO GENMASK(31, 28)
443
444#define MT_WTBL_RIUCR3 MT_WTBL_ON(0x02c)
445#define MT_WTBL_RIUCR3_RATE5_HI GENMASK(7, 0)
446#define MT_WTBL_RIUCR3_RATE6 GENMASK(19, 8)
447#define MT_WTBL_RIUCR3_RATE7 GENMASK(31, 20)
448
449#define MT_WTBL_W5_CHANGE_BW_RATE GENMASK(7, 5)
450#define MT_WTBL_W5_SHORT_GI_20 BIT(8)
451#define MT_WTBL_W5_SHORT_GI_40 BIT(9)
452#define MT_WTBL_W5_SHORT_GI_80 BIT(10)
453#define MT_WTBL_W5_SHORT_GI_160 BIT(11)
454#define MT_WTBL_W5_BW_CAP GENMASK(13, 12)
455#define MT_WTBL_W5_MPDU_FAIL_COUNT GENMASK(25, 23)
456#define MT_WTBL_W5_MPDU_OK_COUNT GENMASK(28, 26)
457#define MT_WTBL_W5_RATE_IDX GENMASK(31, 29)
458
459#define MT_WTBL_W27_CC_BW_SEL GENMASK(6, 5)
460
461#define MT_LPON(_n) ((dev)->reg_map[MT_LPON_BASE] + (_n))
462
463#define MT_LPON_TCR0(_n) MT_LPON(0x010 + ((_n) * 4))
464#define MT_LPON_TCR2(_n) MT_LPON(0x0f8 + ((_n) - 2) * 4)
465#define MT_LPON_TCR_MODE GENMASK(1, 0)
466#define MT_LPON_TCR_READ GENMASK(1, 0)
467#define MT_LPON_TCR_WRITE BIT(0)
468#define MT_LPON_TCR_ADJUST BIT(1)
469
470#define MT_LPON_UTTR0 MT_LPON(0x018)
471#define MT_LPON_UTTR1 MT_LPON(0x01c)
472
473#define MT_WF_MIB_BASE (dev->reg_map[MT_MIB_BASE])
474#define MT_WF_MIB(_band, ofs) (MT_WF_MIB_BASE + (ofs) + (_band) * 0x200)
475
476#define MT_WF_MIB_SCR0 MT_WF_MIB(0, 0)
477#define MT_MIB_SCR0_AGG_CNT_RANGE_EN BIT(21)
478
479#define MT_MIB_M0_MISC_CR(_band) MT_WF_MIB(_band, 0x00c)
480
481#define MT_MIB_SDR3(_band) MT_WF_MIB(_band, 0x014)
482#define MT_MIB_SDR3_FCS_ERR_MASK GENMASK(15, 0)
483
484#define MT_MIB_SDR9(_band) MT_WF_MIB(_band, 0x02c)
485#define MT_MIB_SDR9_BUSY_MASK GENMASK(23, 0)
486
487#define MT_MIB_SDR14(_band) MT_WF_MIB(_band, 0x040)
488#define MT_MIB_AMPDU_MPDU_COUNT GENMASK(23, 0)
489
490#define MT_MIB_SDR15(_band) MT_WF_MIB(_band, 0x044)
491#define MT_MIB_AMPDU_ACK_COUNT GENMASK(23, 0)
492
493#define MT_MIB_SDR16(_band) MT_WF_MIB(_band, 0x048)
494#define MT_MIB_SDR16_BUSY_MASK GENMASK(23, 0)
495
496#define MT_MIB_SDR36(_band) MT_WF_MIB(_band, 0x098)
497#define MT_MIB_SDR36_TXTIME_MASK GENMASK(23, 0)
498#define MT_MIB_SDR37(_band) MT_WF_MIB(_band, 0x09c)
499#define MT_MIB_SDR37_RXTIME_MASK GENMASK(23, 0)
500
501#define MT_MIB_MB_SDR0(_band, n) MT_WF_MIB(_band, 0x100 + ((n) << 4))
502#define MT_MIB_RTS_RETRIES_COUNT_MASK GENMASK(31, 16)
503#define MT_MIB_RTS_COUNT_MASK GENMASK(15, 0)
504
505#define MT_MIB_MB_SDR1(_band, n) MT_WF_MIB(_band, 0x104 + ((n) << 4))
506#define MT_MIB_BA_MISS_COUNT_MASK GENMASK(15, 0)
507#define MT_MIB_ACK_FAIL_COUNT_MASK GENMASK(31, 16)
508
509#define MT_MIB_ARNG(n) MT_WF_MIB(0, 0x4b8 + ((n) << 2))
510
511#define MT_TX_AGG_CNT(_band, n) MT_WF_MIB(_band, 0xa8 + ((n) << 2))
512
513#define MT_DMA_SHDL(ofs) (dev->reg_map[MT_DMA_SHDL_BASE] + (ofs))
514
515#define MT_DMASHDL_BASE 0x5000a000
516#define MT_DMASHDL_OPTIONAL 0x008
517#define MT_DMASHDL_PAGE 0x00c
518
519#define MT_DMASHDL_REFILL 0x010
520
521#define MT_DMASHDL_PKT_MAX_SIZE 0x01c
522#define MT_DMASHDL_PKT_MAX_SIZE_PLE GENMASK(11, 0)
523#define MT_DMASHDL_PKT_MAX_SIZE_PSE GENMASK(27, 16)
524
525#define MT_DMASHDL_GROUP_QUOTA(_n) (0x020 + ((_n) << 2))
526#define MT_DMASHDL_GROUP_QUOTA_MIN GENMASK(11, 0)
527#define MT_DMASHDL_GROUP_QUOTA_MAX GENMASK(27, 16)
528
529#define MT_DMASHDL_SCHED_SET0 0x0b0
530#define MT_DMASHDL_SCHED_SET1 0x0b4
531
532#define MT_DMASHDL_Q_MAP(_n) (0x0d0 + ((_n) << 2))
533#define MT_DMASHDL_Q_MAP_MASK GENMASK(3, 0)
534#define MT_DMASHDL_Q_MAP_SHIFT(_n) (4 * ((_n) % 8))
535
536#define MT_LED_BASE_PHYS 0x80024000
537#define MT_LED_PHYS(_n) (MT_LED_BASE_PHYS + (_n))
538
539#define MT_LED_CTRL MT_LED_PHYS(0x00)
540
541#define MT_LED_CTRL_REPLAY(_n) BIT(0 + (8 * (_n)))
542#define MT_LED_CTRL_POLARITY(_n) BIT(1 + (8 * (_n)))
543#define MT_LED_CTRL_TX_BLINK_MODE(_n) BIT(2 + (8 * (_n)))
544#define MT_LED_CTRL_TX_MANUAL_BLINK(_n) BIT(3 + (8 * (_n)))
545#define MT_LED_CTRL_TX_OVER_BLINK(_n) BIT(5 + (8 * (_n)))
546#define MT_LED_CTRL_KICK(_n) BIT(7 + (8 * (_n)))
547
548#define MT_LED_STATUS_0(_n) MT_LED_PHYS(0x10 + ((_n) * 8))
549#define MT_LED_STATUS_1(_n) MT_LED_PHYS(0x14 + ((_n) * 8))
550#define MT_LED_STATUS_OFF GENMASK(31, 24)
551#define MT_LED_STATUS_ON GENMASK(23, 16)
552#define MT_LED_STATUS_DURATION GENMASK(15, 0)
553
554#define MT_PDMA_BUSY 0x82000504
555#define MT_PDMA_TX_BUSY BIT(0)
556#define MT_PDMA_RX_BUSY BIT(1)
557
558#define MT_EFUSE_BASE ((dev)->reg_map[MT_EFUSE_ADDR_BASE])
559#define MT_EFUSE_BASE_CTRL 0x000
560#define MT_EFUSE_BASE_CTRL_EMPTY BIT(30)
561
562#define MT_EFUSE_CTRL 0x008
563#define MT_EFUSE_CTRL_AOUT GENMASK(5, 0)
564#define MT_EFUSE_CTRL_MODE GENMASK(7, 6)
565#define MT_EFUSE_CTRL_LDO_OFF_TIME GENMASK(13, 8)
566#define MT_EFUSE_CTRL_LDO_ON_TIME GENMASK(15, 14)
567#define MT_EFUSE_CTRL_AIN GENMASK(25, 16)
568#define MT_EFUSE_CTRL_VALID BIT(29)
569#define MT_EFUSE_CTRL_KICK BIT(30)
570#define MT_EFUSE_CTRL_SEL BIT(31)
571
572#define MT_EFUSE_WDATA(_i) (0x010 + ((_i) * 4))
573#define MT_EFUSE_RDATA(_i) (0x030 + ((_i) * 4))
574
575/* INFRACFG host register range on MT7622 */
576#define MT_INFRACFG_MISC 0x700
577#define MT_INFRACFG_MISC_AP2CONN_WAKE BIT(1)
578
579#define MT_UMAC_BASE 0x7c000000
580#define MT_UMAC(ofs) (MT_UMAC_BASE + (ofs))
581#define MT_UDMA_TX_QSEL MT_UMAC(0x008)
582#define MT_FW_DL_EN BIT(3)
583
584#define MT_UDMA_WLCFG_1 MT_UMAC(0x00c)
585#define MT_WL_RX_AGG_PKT_LMT GENMASK(7, 0)
586#define MT_WL_TX_TMOUT_LMT GENMASK(27, 8)
587
588#define MT_UDMA_WLCFG_0 MT_UMAC(0x18)
589#define MT_WL_RX_AGG_TO GENMASK(7, 0)
590#define MT_WL_RX_AGG_LMT GENMASK(15, 8)
591#define MT_WL_TX_TMOUT_FUNC_EN BIT(16)
592#define MT_WL_TX_DPH_CHK_EN BIT(17)
593#define MT_WL_RX_MPSZ_PAD0 BIT(18)
594#define MT_WL_RX_FLUSH BIT(19)
595#define MT_TICK_1US_EN BIT(20)
596#define MT_WL_RX_AGG_EN BIT(21)
597#define MT_WL_RX_EN BIT(22)
598#define MT_WL_TX_EN BIT(23)
599#define MT_WL_RX_BUSY BIT(30)
600#define MT_WL_TX_BUSY BIT(31)
601
602#define MT_MCU_PTA_BASE 0x81060000
603#define MT_MCU_PTA(_n) (MT_MCU_PTA_BASE + (_n))
604
605#define MT_ANT_SWITCH_CON(_n) MT_MCU_PTA(0x0c8 + ((_n) - 1) * 4)
606#define MT_ANT_SWITCH_CON_MODE(_n) (GENMASK(4, 0) << (_n * 8))
607#define MT_ANT_SWITCH_CON_MODE1(_n) (GENMASK(3, 0) << (_n * 8))
608
609#endif