1 // SPDX-License-Identifier: GPL-2.0-only
2 /* Copyright (C) 2020 Felix Fietkau <nbd@nbd.name> */
3 
4 #ifndef __MTK_WED_REGS_H
5 #define __MTK_WED_REGS_H
6 
7 #define MTK_WFDMA_DESC_CTRL_TO_HOST		BIT(8)
8 #define MTK_WDMA_DESC_CTRL_LEN1			GENMASK(14, 0)
9 #define MTK_WDMA_DESC_CTRL_LEN1_V2		GENMASK(13, 0)
10 #define MTK_WDMA_DESC_CTRL_LAST_SEG1		BIT(15)
11 #define MTK_WDMA_DESC_CTRL_BURST		BIT(16)
12 #define MTK_WDMA_DESC_CTRL_LEN0			GENMASK(29, 16)
13 #define MTK_WDMA_DESC_CTRL_LAST_SEG0		BIT(30)
14 #define MTK_WDMA_DESC_CTRL_DMA_DONE		BIT(31)
15 
16 struct mtk_wdma_desc {
17 	__le32 buf0;
18 	__le32 ctrl;
19 	__le32 buf1;
20 	__le32 info;
21 } __packed __aligned(4);
22 
23 #define MTK_WED_REV_ID					0x004
24 
25 #define MTK_WED_RESET					0x008
26 #define MTK_WED_RESET_TX_BM				BIT(0)
27 #define MTK_WED_RESET_TX_FREE_AGENT			BIT(4)
28 #define MTK_WED_RESET_WPDMA_TX_DRV			BIT(8)
29 #define MTK_WED_RESET_WPDMA_RX_DRV			BIT(9)
30 #define MTK_WED_RESET_WPDMA_INT_AGENT			BIT(11)
31 #define MTK_WED_RESET_WED_TX_DMA			BIT(12)
32 #define MTK_WED_RESET_WDMA_RX_DRV			BIT(17)
33 #define MTK_WED_RESET_WDMA_INT_AGENT			BIT(19)
34 #define MTK_WED_RESET_RX_RRO_QM				BIT(20)
35 #define MTK_WED_RESET_RX_ROUTE_QM			BIT(21)
36 #define MTK_WED_RESET_WED				BIT(31)
37 
38 #define MTK_WED_CTRL					0x00c
39 #define MTK_WED_CTRL_WPDMA_INT_AGENT_EN			BIT(0)
40 #define MTK_WED_CTRL_WPDMA_INT_AGENT_BUSY		BIT(1)
41 #define MTK_WED_CTRL_WDMA_INT_AGENT_EN			BIT(2)
42 #define MTK_WED_CTRL_WDMA_INT_AGENT_BUSY		BIT(3)
43 #define MTK_WED_CTRL_WED_TX_BM_EN			BIT(8)
44 #define MTK_WED_CTRL_WED_TX_BM_BUSY			BIT(9)
45 #define MTK_WED_CTRL_WED_TX_FREE_AGENT_EN		BIT(10)
46 #define MTK_WED_CTRL_WED_TX_FREE_AGENT_BUSY		BIT(11)
47 #define MTK_WED_CTRL_WED_RX_BM_EN			BIT(12)
48 #define MTK_WED_CTRL_WED_RX_BM_BUSY			BIT(13)
49 #define MTK_WED_CTRL_RX_RRO_QM_EN			BIT(14)
50 #define MTK_WED_CTRL_RX_RRO_QM_BUSY			BIT(15)
51 #define MTK_WED_CTRL_RX_ROUTE_QM_EN			BIT(16)
52 #define MTK_WED_CTRL_RX_ROUTE_QM_BUSY			BIT(17)
53 #define MTK_WED_CTRL_FINAL_DIDX_READ			BIT(24)
54 #define MTK_WED_CTRL_ETH_DMAD_FMT			BIT(25)
55 #define MTK_WED_CTRL_MIB_READ_CLEAR			BIT(28)
56 
57 #define MTK_WED_EXT_INT_STATUS				0x020
58 #define MTK_WED_EXT_INT_STATUS_TF_LEN_ERR		BIT(0)
59 #define MTK_WED_EXT_INT_STATUS_TKID_WO_PYLD		BIT(1)
60 #define MTK_WED_EXT_INT_STATUS_TKID_TITO_INVALID	BIT(4)
61 #define MTK_WED_EXT_INT_STATUS_TX_FBUF_LO_TH		BIT(8)
62 #define MTK_WED_EXT_INT_STATUS_TX_FBUF_HI_TH		BIT(9)
63 #define MTK_WED_EXT_INT_STATUS_RX_FBUF_LO_TH		BIT(12)
64 #define MTK_WED_EXT_INT_STATUS_RX_FBUF_HI_TH		BIT(13)
65 #define MTK_WED_EXT_INT_STATUS_RX_DRV_R_RESP_ERR	BIT(16)
66 #define MTK_WED_EXT_INT_STATUS_RX_DRV_W_RESP_ERR	BIT(17)
67 #define MTK_WED_EXT_INT_STATUS_RX_DRV_COHERENT		BIT(18)
68 #define MTK_WED_EXT_INT_STATUS_RX_DRV_INIT_WDMA_EN	BIT(19)
69 #define MTK_WED_EXT_INT_STATUS_RX_DRV_BM_DMAD_COHERENT	BIT(20)
70 #define MTK_WED_EXT_INT_STATUS_TX_DRV_R_RESP_ERR	BIT(21)
71 #define MTK_WED_EXT_INT_STATUS_TX_DMA_R_RESP_ERR	BIT(22)
72 #define MTK_WED_EXT_INT_STATUS_TX_DMA_W_RESP_ERR	BIT(23)
73 #define MTK_WED_EXT_INT_STATUS_RX_DRV_DMA_RECYCLE	BIT(24)
74 #define MTK_WED_EXT_INT_STATUS_RX_DRV_GET_BM_DMAD_SKIP	BIT(25)
75 #define MTK_WED_EXT_INT_STATUS_WPDMA_RX_D_DRV_ERR	BIT(26)
76 #define MTK_WED_EXT_INT_STATUS_WPDMA_MID_RDY		BIT(27)
77 #define MTK_WED_EXT_INT_STATUS_ERROR_MASK		(MTK_WED_EXT_INT_STATUS_TF_LEN_ERR | \
78 							 MTK_WED_EXT_INT_STATUS_TKID_WO_PYLD | \
79 							 MTK_WED_EXT_INT_STATUS_TKID_TITO_INVALID | \
80 							 MTK_WED_EXT_INT_STATUS_RX_DRV_R_RESP_ERR | \
81 							 MTK_WED_EXT_INT_STATUS_RX_DRV_W_RESP_ERR | \
82 							 MTK_WED_EXT_INT_STATUS_RX_DRV_INIT_WDMA_EN | \
83 							 MTK_WED_EXT_INT_STATUS_TX_DMA_R_RESP_ERR)
84 
85 #define MTK_WED_EXT_INT_MASK				0x028
86 #define MTK_WED_EXT_INT_MASK1				0x02c
87 #define MTK_WED_EXT_INT_MASK2				0x030
88 
89 #define MTK_WED_STATUS					0x060
90 #define MTK_WED_STATUS_TX				GENMASK(15, 8)
91 
92 #define MTK_WED_TX_BM_CTRL				0x080
93 #define MTK_WED_TX_BM_CTRL_VLD_GRP_NUM			GENMASK(6, 0)
94 #define MTK_WED_TX_BM_CTRL_RSV_GRP_NUM			GENMASK(22, 16)
95 #define MTK_WED_TX_BM_CTRL_PAUSE			BIT(28)
96 
97 #define MTK_WED_TX_BM_BASE				0x084
98 
99 #define MTK_WED_TX_BM_TKID				0x088
100 #define MTK_WED_TX_BM_TKID_V2				0x0c8
101 #define MTK_WED_TX_BM_TKID_START			GENMASK(15, 0)
102 #define MTK_WED_TX_BM_TKID_END				GENMASK(31, 16)
103 
104 #define MTK_WED_TX_BM_BUF_LEN				0x08c
105 
106 #define MTK_WED_TX_BM_INTF				0x09c
107 #define MTK_WED_TX_BM_INTF_TKID				GENMASK(15, 0)
108 #define MTK_WED_TX_BM_INTF_TKFIFO_FDEP			GENMASK(23, 16)
109 #define MTK_WED_TX_BM_INTF_TKID_VALID			BIT(28)
110 #define MTK_WED_TX_BM_INTF_TKID_READ			BIT(29)
111 
112 #define MTK_WED_TX_BM_DYN_THR				0x0a0
113 #define MTK_WED_TX_BM_DYN_THR_LO			GENMASK(6, 0)
114 #define MTK_WED_TX_BM_DYN_THR_LO_V2			GENMASK(8, 0)
115 #define MTK_WED_TX_BM_DYN_THR_HI			GENMASK(22, 16)
116 #define MTK_WED_TX_BM_DYN_THR_HI_V2			GENMASK(24, 16)
117 
118 #define MTK_WED_TX_TKID_CTRL				0x0c0
119 #define MTK_WED_TX_TKID_CTRL_VLD_GRP_NUM		GENMASK(6, 0)
120 #define MTK_WED_TX_TKID_CTRL_RSV_GRP_NUM		GENMASK(22, 16)
121 #define MTK_WED_TX_TKID_CTRL_PAUSE			BIT(28)
122 
123 #define MTK_WED_TX_TKID_DYN_THR				0x0e0
124 #define MTK_WED_TX_TKID_DYN_THR_LO			GENMASK(6, 0)
125 #define MTK_WED_TX_TKID_DYN_THR_HI			GENMASK(22, 16)
126 
127 #define MTK_WED_TXP_DW0					0x120
128 #define MTK_WED_TXP_DW1					0x124
129 #define MTK_WED_WPDMA_WRITE_TXP				GENMASK(31, 16)
130 #define MTK_WED_TXDP_CTRL				0x130
131 #define MTK_WED_TXDP_DW9_OVERWR				BIT(9)
132 #define MTK_WED_RX_BM_TKID_MIB				0x1cc
133 
134 #define MTK_WED_INT_STATUS				0x200
135 #define MTK_WED_INT_MASK				0x204
136 
137 #define MTK_WED_GLO_CFG					0x208
138 #define MTK_WED_GLO_CFG_TX_DMA_EN			BIT(0)
139 #define MTK_WED_GLO_CFG_TX_DMA_BUSY			BIT(1)
140 #define MTK_WED_GLO_CFG_RX_DMA_EN			BIT(2)
141 #define MTK_WED_GLO_CFG_RX_DMA_BUSY			BIT(3)
142 #define MTK_WED_GLO_CFG_RX_BT_SIZE			GENMASK(5, 4)
143 #define MTK_WED_GLO_CFG_TX_WB_DDONE			BIT(6)
144 #define MTK_WED_GLO_CFG_BIG_ENDIAN			BIT(7)
145 #define MTK_WED_GLO_CFG_DIS_BT_SIZE_ALIGN		BIT(8)
146 #define MTK_WED_GLO_CFG_TX_BT_SIZE_LO			BIT(9)
147 #define MTK_WED_GLO_CFG_MULTI_DMA_EN			GENMASK(11, 10)
148 #define MTK_WED_GLO_CFG_FIFO_LITTLE_ENDIAN		BIT(12)
149 #define MTK_WED_GLO_CFG_MI_DEPTH_RD			GENMASK(21, 13)
150 #define MTK_WED_GLO_CFG_TX_BT_SIZE_HI			GENMASK(23, 22)
151 #define MTK_WED_GLO_CFG_SW_RESET			BIT(24)
152 #define MTK_WED_GLO_CFG_FIRST_TOKEN_ONLY		BIT(26)
153 #define MTK_WED_GLO_CFG_OMIT_RX_INFO			BIT(27)
154 #define MTK_WED_GLO_CFG_OMIT_TX_INFO			BIT(28)
155 #define MTK_WED_GLO_CFG_BYTE_SWAP			BIT(29)
156 #define MTK_WED_GLO_CFG_RX_2B_OFFSET			BIT(31)
157 
158 #define MTK_WED_RESET_IDX				0x20c
159 #define MTK_WED_RESET_IDX_TX				GENMASK(3, 0)
160 #define MTK_WED_RESET_IDX_RX				GENMASK(17, 16)
161 
162 #define MTK_WED_TX_MIB(_n)				(0x2a0 + (_n) * 4)
163 #define MTK_WED_RX_MIB(_n)				(0x2e0 + (_n) * 4)
164 
165 #define MTK_WED_RING_TX(_n)				(0x300 + (_n) * 0x10)
166 
167 #define MTK_WED_RING_RX(_n)				(0x400 + (_n) * 0x10)
168 #define MTK_WED_RING_RX_DATA(_n)			(0x420 + (_n) * 0x10)
169 
170 #define MTK_WED_SCR0					0x3c0
171 #define MTK_WED_WPDMA_INT_TRIGGER			0x504
172 #define MTK_WED_WPDMA_INT_TRIGGER_RX_DONE		BIT(1)
173 #define MTK_WED_WPDMA_INT_TRIGGER_TX_DONE		GENMASK(5, 4)
174 
175 #define MTK_WED_WPDMA_GLO_CFG				0x508
176 #define MTK_WED_WPDMA_GLO_CFG_TX_DRV_EN			BIT(0)
177 #define MTK_WED_WPDMA_GLO_CFG_TX_DRV_BUSY		BIT(1)
178 #define MTK_WED_WPDMA_GLO_CFG_RX_DRV_EN			BIT(2)
179 #define MTK_WED_WPDMA_GLO_CFG_RX_DRV_BUSY		BIT(3)
180 #define MTK_WED_WPDMA_GLO_CFG_RX_BT_SIZE		GENMASK(5, 4)
181 #define MTK_WED_WPDMA_GLO_CFG_TX_WB_DDONE		BIT(6)
182 #define MTK_WED_WPDMA_GLO_CFG_BIG_ENDIAN		BIT(7)
183 #define MTK_WED_WPDMA_GLO_CFG_DIS_BT_SIZE_ALIGN		BIT(8)
184 #define MTK_WED_WPDMA_GLO_CFG_TX_BT_SIZE_LO		BIT(9)
185 #define MTK_WED_WPDMA_GLO_CFG_MULTI_DMA_EN		GENMASK(11, 10)
186 #define MTK_WED_WPDMA_GLO_CFG_FIFO_LITTLE_ENDIAN	BIT(12)
187 #define MTK_WED_WPDMA_GLO_CFG_MI_DEPTH_RD		GENMASK(21, 13)
188 #define MTK_WED_WPDMA_GLO_CFG_TX_BT_SIZE_HI		GENMASK(23, 22)
189 #define MTK_WED_WPDMA_GLO_CFG_SW_RESET			BIT(24)
190 #define MTK_WED_WPDMA_GLO_CFG_FIRST_TOKEN_ONLY		BIT(26)
191 #define MTK_WED_WPDMA_GLO_CFG_OMIT_RX_INFO		BIT(27)
192 #define MTK_WED_WPDMA_GLO_CFG_OMIT_TX_INFO		BIT(28)
193 #define MTK_WED_WPDMA_GLO_CFG_BYTE_SWAP			BIT(29)
194 #define MTK_WED_WPDMA_GLO_CFG_RX_2B_OFFSET		BIT(31)
195 
196 /* CONFIG_MEDIATEK_NETSYS_V2 */
197 #define MTK_WED_WPDMA_GLO_CFG_RX_DRV_R0_PKT_PROC	BIT(4)
198 #define MTK_WED_WPDMA_GLO_CFG_RX_DRV_R1_PKT_PROC	BIT(5)
199 #define MTK_WED_WPDMA_GLO_CFG_RX_DRV_R0_CRX_SYNC	BIT(6)
200 #define MTK_WED_WPDMA_GLO_CFG_RX_DRV_R1_CRX_SYNC	BIT(7)
201 #define MTK_WED_WPDMA_GLO_CFG_RX_DRV_EVENT_PKT_FMT_VER	GENMASK(18, 16)
202 #define MTK_WED_WPDMA_GLO_CFG_RX_DRV_UNSUPPORT_FMT	BIT(19)
203 #define MTK_WED_WPDMA_GLO_CFG_RX_DRV_UEVENT_PKT_FMT_CHK BIT(20)
204 #define MTK_WED_WPDMA_GLO_CFG_RX_DDONE2_WR		BIT(21)
205 #define MTK_WED_WPDMA_GLO_CFG_TX_TKID_KEEP		BIT(24)
206 #define MTK_WED_WPDMA_GLO_CFG_TX_DMAD_DW3_PREV		BIT(28)
207 
208 #define MTK_WED_WPDMA_RESET_IDX				0x50c
209 #define MTK_WED_WPDMA_RESET_IDX_TX			GENMASK(3, 0)
210 #define MTK_WED_WPDMA_RESET_IDX_RX			GENMASK(17, 16)
211 
212 #define MTK_WED_WPDMA_CTRL				0x518
213 #define MTK_WED_WPDMA_CTRL_SDL1_FIXED			BIT(31)
214 
215 #define MTK_WED_WPDMA_INT_CTRL				0x520
216 #define MTK_WED_WPDMA_INT_CTRL_SUBRT_ADV		BIT(21)
217 #define MTK_WED_WPDMA_INT_CTRL_SIG_SRC			BIT(22)
218 #define MTK_WED_WPDMA_INT_CTRL_SRC_SEL			GENMASK(17, 16)
219 
220 #define MTK_WED_WPDMA_INT_MASK				0x524
221 
222 #define MTK_WED_WPDMA_INT_CTRL_TX			0x530
223 #define MTK_WED_WPDMA_INT_CTRL_TX0_DONE_EN		BIT(0)
224 #define MTK_WED_WPDMA_INT_CTRL_TX0_DONE_CLR		BIT(1)
225 #define MTK_WED_WPDMA_INT_CTRL_TX0_DONE_TRIG		GENMASK(6, 2)
226 #define MTK_WED_WPDMA_INT_CTRL_TX1_DONE_EN		BIT(8)
227 #define MTK_WED_WPDMA_INT_CTRL_TX1_DONE_CLR		BIT(9)
228 #define MTK_WED_WPDMA_INT_CTRL_TX1_DONE_TRIG		GENMASK(14, 10)
229 
230 #define MTK_WED_WPDMA_INT_CTRL_RX			0x534
231 #define MTK_WED_WPDMA_INT_CTRL_RX0_EN			BIT(0)
232 #define MTK_WED_WPDMA_INT_CTRL_RX0_CLR			BIT(1)
233 #define MTK_WED_WPDMA_INT_CTRL_RX0_DONE_TRIG		GENMASK(6, 2)
234 #define MTK_WED_WPDMA_INT_CTRL_RX1_EN			BIT(8)
235 #define MTK_WED_WPDMA_INT_CTRL_RX1_CLR			BIT(9)
236 #define MTK_WED_WPDMA_INT_CTRL_RX1_DONE_TRIG		GENMASK(14, 10)
237 
238 #define MTK_WED_WPDMA_INT_CTRL_TX_FREE			0x538
239 #define MTK_WED_WPDMA_INT_CTRL_TX_FREE_DONE_EN		BIT(0)
240 #define MTK_WED_WPDMA_INT_CTRL_TX_FREE_DONE_CLR		BIT(1)
241 #define MTK_WED_WPDMA_INT_CTRL_TX_FREE_DONE_TRIG	GENMASK(6, 2)
242 
243 #define MTK_WED_PCIE_CFG_BASE				0x560
244 
245 #define MTK_WED_PCIE_CFG_BASE				0x560
246 #define MTK_WED_PCIE_CFG_INTM				0x564
247 #define MTK_WED_PCIE_CFG_MSIS				0x568
248 #define MTK_WED_PCIE_INT_TRIGGER			0x570
249 #define MTK_WED_PCIE_INT_TRIGGER_STATUS			BIT(16)
250 
251 #define MTK_WED_PCIE_INT_CTRL				0x57c
252 #define MTK_WED_PCIE_INT_CTRL_MSK_EN_POLA		BIT(20)
253 #define MTK_WED_PCIE_INT_CTRL_SRC_SEL			GENMASK(17, 16)
254 #define MTK_WED_PCIE_INT_CTRL_POLL_EN			GENMASK(13, 12)
255 
256 #define MTK_WED_WPDMA_CFG_BASE				0x580
257 #define MTK_WED_WPDMA_CFG_INT_MASK			0x584
258 #define MTK_WED_WPDMA_CFG_TX				0x588
259 #define MTK_WED_WPDMA_CFG_TX_FREE			0x58c
260 
261 #define MTK_WED_WPDMA_TX_MIB(_n)			(0x5a0 + (_n) * 4)
262 #define MTK_WED_WPDMA_TX_COHERENT_MIB(_n)		(0x5d0 + (_n) * 4)
263 
264 #define MTK_WED_WPDMA_RING_TX(_n)			(0x600 + (_n) * 0x10)
265 #define MTK_WED_WPDMA_RING_RX(_n)			(0x700 + (_n) * 0x10)
266 #define MTK_WED_WPDMA_RING_RX_DATA(_n)			(0x730 + (_n) * 0x10)
267 
268 #define MTK_WED_WPDMA_RX_D_GLO_CFG			0x75c
269 #define MTK_WED_WPDMA_RX_D_RX_DRV_EN			BIT(0)
270 #define MTK_WED_WPDMA_RX_D_INIT_PHASE_RXEN_SEL		GENMASK(11, 7)
271 #define MTK_WED_WPDMA_RX_D_RXD_READ_LEN			GENMASK(31, 24)
272 
273 #define MTK_WED_WPDMA_RX_D_RST_IDX			0x760
274 #define MTK_WED_WPDMA_RX_D_RST_CRX_IDX			GENMASK(17, 16)
275 #define MTK_WED_WPDMA_RX_D_RST_DRV_IDX			GENMASK(25, 24)
276 
277 #define MTK_WED_WPDMA_RX_GLO_CFG			0x76c
278 #define MTK_WED_WPDMA_RX_RING				0x770
279 
280 #define MTK_WED_WPDMA_RX_D_MIB(_n)			(0x774 + (_n) * 4)
281 #define MTK_WED_WPDMA_RX_D_PROCESSED_MIB(_n)		(0x784 + (_n) * 4)
282 #define MTK_WED_WPDMA_RX_D_COHERENT_MIB			0x78c
283 
284 #define MTK_WED_WDMA_RING_TX				0x800
285 
286 #define MTK_WED_WDMA_TX_MIB				0x810
287 
288 #define MTK_WED_WDMA_RING_RX(_n)			(0x900 + (_n) * 0x10)
289 #define MTK_WED_WDMA_RX_THRES(_n)			(0x940 + (_n) * 0x4)
290 
291 #define MTK_WED_WDMA_GLO_CFG				0xa04
292 #define MTK_WED_WDMA_GLO_CFG_TX_DRV_EN			BIT(0)
293 #define MTK_WED_WDMA_GLO_CFG_TX_DDONE_CHK		BIT(1)
294 #define MTK_WED_WDMA_GLO_CFG_RX_DRV_EN			BIT(2)
295 #define MTK_WED_WDMA_GLO_CFG_RX_DRV_BUSY		BIT(3)
296 #define MTK_WED_WDMA_GLO_CFG_BT_SIZE			GENMASK(5, 4)
297 #define MTK_WED_WDMA_GLO_CFG_TX_WB_DDONE		BIT(6)
298 #define MTK_WED_WDMA_GLO_CFG_RX_DIS_FSM_AUTO_IDLE	BIT(13)
299 #define MTK_WED_WDMA_GLO_CFG_WCOMPLETE_SEL		BIT(16)
300 #define MTK_WED_WDMA_GLO_CFG_INIT_PHASE_RXDMA_BYPASS	BIT(17)
301 #define MTK_WED_WDMA_GLO_CFG_INIT_PHASE_BYPASS		BIT(18)
302 #define MTK_WED_WDMA_GLO_CFG_FSM_RETURN_IDLE		BIT(19)
303 #define MTK_WED_WDMA_GLO_CFG_WAIT_COHERENT		BIT(20)
304 #define MTK_WED_WDMA_GLO_CFG_AXI_W_AFTER_AW		BIT(21)
305 #define MTK_WED_WDMA_GLO_CFG_IDLE_DMAD_SUPPLY_SINGLE_W	BIT(22)
306 #define MTK_WED_WDMA_GLO_CFG_IDLE_DMAD_SUPPLY		BIT(23)
307 #define MTK_WED_WDMA_GLO_CFG_DYNAMIC_SKIP_DMAD_PREP	BIT(24)
308 #define MTK_WED_WDMA_GLO_CFG_DYNAMIC_DMAD_RECYCLE	BIT(25)
309 #define MTK_WED_WDMA_GLO_CFG_RST_INIT_COMPLETE		BIT(26)
310 #define MTK_WED_WDMA_GLO_CFG_RXDRV_CLKGATE_BYPASS	BIT(30)
311 
312 #define MTK_WED_WDMA_RESET_IDX				0xa08
313 #define MTK_WED_WDMA_RESET_IDX_RX			GENMASK(17, 16)
314 #define MTK_WED_WDMA_RESET_IDX_DRV			GENMASK(25, 24)
315 
316 #define MTK_WED_WDMA_INT_CLR				0xa24
317 #define MTK_WED_WDMA_INT_CLR_RX_DONE			GENMASK(17, 16)
318 
319 #define MTK_WED_WDMA_INT_TRIGGER			0xa28
320 #define MTK_WED_WDMA_INT_TRIGGER_RX_DONE		GENMASK(17, 16)
321 
322 #define MTK_WED_WDMA_INT_CTRL				0xa2c
323 #define MTK_WED_WDMA_INT_CTRL_POLL_SRC_SEL		GENMASK(17, 16)
324 
325 #define MTK_WED_WDMA_CFG_BASE				0xaa0
326 #define MTK_WED_WDMA_OFFSET0				0xaa4
327 #define MTK_WED_WDMA_OFFSET1				0xaa8
328 
329 #define MTK_WED_WDMA_OFST0_GLO_INTS			GENMASK(15, 0)
330 #define MTK_WED_WDMA_OFST0_GLO_CFG			GENMASK(31, 16)
331 #define MTK_WED_WDMA_OFST1_TX_CTRL			GENMASK(15, 0)
332 #define MTK_WED_WDMA_OFST1_RX_CTRL			GENMASK(31, 16)
333 
334 #define MTK_WED_WDMA_RX_MIB(_n)				(0xae0 + (_n) * 4)
335 #define MTK_WED_WDMA_RX_RECYCLE_MIB(_n)			(0xae8 + (_n) * 4)
336 #define MTK_WED_WDMA_RX_PROCESSED_MIB(_n)		(0xaf0 + (_n) * 4)
337 
338 #define MTK_WED_RX_BM_RX_DMAD				0xd80
339 #define MTK_WED_RX_BM_RX_DMAD_SDL0			GENMASK(13, 0)
340 
341 #define MTK_WED_RX_BM_BASE				0xd84
342 #define MTK_WED_RX_BM_INIT_PTR				0xd88
343 #define MTK_WED_RX_BM_SW_TAIL				GENMASK(15, 0)
344 #define MTK_WED_RX_BM_INIT_SW_TAIL			BIT(16)
345 
346 #define MTK_WED_RX_PTR					0xd8c
347 
348 #define MTK_WED_RX_BM_DYN_ALLOC_TH			0xdb4
349 #define MTK_WED_RX_BM_DYN_ALLOC_TH_H			GENMASK(31, 16)
350 #define MTK_WED_RX_BM_DYN_ALLOC_TH_L			GENMASK(15, 0)
351 
352 #define MTK_WED_RING_OFS_BASE				0x00
353 #define MTK_WED_RING_OFS_COUNT				0x04
354 #define MTK_WED_RING_OFS_CPU_IDX			0x08
355 #define MTK_WED_RING_OFS_DMA_IDX			0x0c
356 
357 #define MTK_WDMA_RING_TX(_n)				(0x000 + (_n) * 0x10)
358 #define MTK_WDMA_RING_RX(_n)				(0x100 + (_n) * 0x10)
359 
360 #define MTK_WDMA_GLO_CFG				0x204
361 #define MTK_WDMA_GLO_CFG_TX_DMA_EN			BIT(0)
362 #define MTK_WDMA_GLO_CFG_TX_DMA_BUSY			BIT(1)
363 #define MTK_WDMA_GLO_CFG_RX_DMA_EN			BIT(2)
364 #define MTK_WDMA_GLO_CFG_RX_DMA_BUSY			BIT(3)
365 #define MTK_WDMA_GLO_CFG_RX_INFO3_PRERES		BIT(26)
366 #define MTK_WDMA_GLO_CFG_RX_INFO2_PRERES		BIT(27)
367 #define MTK_WDMA_GLO_CFG_RX_INFO1_PRERES		BIT(28)
368 
369 #define MTK_WDMA_RESET_IDX				0x208
370 #define MTK_WDMA_RESET_IDX_TX				GENMASK(3, 0)
371 #define MTK_WDMA_RESET_IDX_RX				GENMASK(17, 16)
372 
373 #define MTK_WDMA_INT_STATUS				0x220
374 
375 #define MTK_WDMA_INT_MASK				0x228
376 #define MTK_WDMA_INT_MASK_TX_DONE			GENMASK(3, 0)
377 #define MTK_WDMA_INT_MASK_RX_DONE			GENMASK(17, 16)
378 #define MTK_WDMA_INT_MASK_TX_DELAY			BIT(28)
379 #define MTK_WDMA_INT_MASK_TX_COHERENT			BIT(29)
380 #define MTK_WDMA_INT_MASK_RX_DELAY			BIT(30)
381 #define MTK_WDMA_INT_MASK_RX_COHERENT			BIT(31)
382 
383 #define MTK_WDMA_INT_GRP1				0x250
384 #define MTK_WDMA_INT_GRP2				0x254
385 
386 #define MTK_PCIE_MIRROR_MAP(n)				((n) ? 0x4 : 0x0)
387 #define MTK_PCIE_MIRROR_MAP_EN				BIT(0)
388 #define MTK_PCIE_MIRROR_MAP_WED_ID			BIT(1)
389 
390 /* DMA channel mapping */
391 #define HIFSYS_DMA_AG_MAP				0x008
392 
393 #define MTK_WED_RTQM_GLO_CFG				0xb00
394 #define MTK_WED_RTQM_BUSY				BIT(1)
395 #define MTK_WED_RTQM_Q_RST				BIT(2)
396 #define MTK_WED_RTQM_Q_DBG_BYPASS			BIT(5)
397 #define MTK_WED_RTQM_TXDMAD_FPORT			GENMASK(23, 20)
398 
399 #define MTK_WED_RTQM_R2H_MIB(_n)			(0xb70 + (_n) * 0x4)
400 #define MTK_WED_RTQM_R2Q_MIB(_n)			(0xb78 + (_n) * 0x4)
401 #define MTK_WED_RTQM_Q2N_MIB				0xb80
402 #define MTK_WED_RTQM_Q2H_MIB(_n)			(0xb84 + (_n) * 0x4)
403 
404 #define MTK_WED_RTQM_Q2B_MIB				0xb8c
405 #define MTK_WED_RTQM_PFDBK_MIB				0xb90
406 
407 #define MTK_WED_RROQM_GLO_CFG				0xc04
408 #define MTK_WED_RROQM_RST_IDX				0xc08
409 #define MTK_WED_RROQM_RST_IDX_MIOD			BIT(0)
410 #define MTK_WED_RROQM_RST_IDX_FDBK			BIT(4)
411 
412 #define MTK_WED_RROQM_MIOD_CTRL0			0xc40
413 #define MTK_WED_RROQM_MIOD_CTRL1			0xc44
414 #define MTK_WED_RROQM_MIOD_CNT				GENMASK(11, 0)
415 
416 #define MTK_WED_RROQM_MIOD_CTRL2			0xc48
417 #define MTK_WED_RROQM_MIOD_CTRL3			0xc4c
418 
419 #define MTK_WED_RROQM_FDBK_CTRL0			0xc50
420 #define MTK_WED_RROQM_FDBK_CTRL1			0xc54
421 #define MTK_WED_RROQM_FDBK_CNT				GENMASK(11, 0)
422 
423 #define MTK_WED_RROQM_FDBK_CTRL2			0xc58
424 
425 #define MTK_WED_RROQ_BASE_L				0xc80
426 #define MTK_WED_RROQ_BASE_H				0xc84
427 
428 #define MTK_WED_RROQM_MIOD_CFG				0xc8c
429 #define MTK_WED_RROQM_MIOD_MID_DW			GENMASK(5, 0)
430 #define MTK_WED_RROQM_MIOD_MOD_DW			GENMASK(13, 8)
431 #define MTK_WED_RROQM_MIOD_ENTRY_DW			GENMASK(22, 16)
432 
433 #define MTK_WED_RROQM_MID_MIB				0xcc0
434 #define MTK_WED_RROQM_MOD_MIB				0xcc4
435 #define MTK_WED_RROQM_MOD_COHERENT_MIB			0xcc8
436 #define MTK_WED_RROQM_FDBK_MIB				0xcd0
437 #define MTK_WED_RROQM_FDBK_COHERENT_MIB			0xcd4
438 #define MTK_WED_RROQM_FDBK_IND_MIB			0xce0
439 #define MTK_WED_RROQM_FDBK_ENQ_MIB			0xce4
440 #define MTK_WED_RROQM_FDBK_ANC_MIB			0xce8
441 #define MTK_WED_RROQM_FDBK_ANC2H_MIB			0xcec
442 
443 #define MTK_WED_RX_BM_RX_DMAD				0xd80
444 #define MTK_WED_RX_BM_BASE				0xd84
445 #define MTK_WED_RX_BM_INIT_PTR				0xd88
446 #define MTK_WED_RX_BM_PTR				0xd8c
447 #define MTK_WED_RX_BM_PTR_HEAD				GENMASK(32, 16)
448 #define MTK_WED_RX_BM_PTR_TAIL				GENMASK(15, 0)
449 
450 #define MTK_WED_RX_BM_BLEN				0xd90
451 #define MTK_WED_RX_BM_STS				0xd94
452 #define MTK_WED_RX_BM_INTF2				0xd98
453 #define MTK_WED_RX_BM_INTF				0xd9c
454 #define MTK_WED_RX_BM_ERR_STS				0xda8
455 
456 #define MTK_WED_WOCPU_VIEW_MIOD_BASE			0x8000
457 #define MTK_WED_PCIE_INT_MASK				0x0
458 
459 #endif
460