summaryrefslogtreecommitdiff
path: root/sys/dev/ic/dwc_eqos_reg.h
blob: 45a5c06d46a02c8e12c3d578b1fa74bb30cb3f3e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
/* $NetBSD: dwc_eqos_reg.h,v 1.6 2022/08/24 19:21:41 ryo Exp $ */

/*-
 * Copyright (c) 2022 Jared McNeill <jmcneill@invisible.ca>
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 */

/*
 * DesignWare Ethernet Quality-of-Service controller
 */

#ifndef _DWC_EQOS_REG_H
#define _DWC_EQOS_REG_H

#define	GMAC_MAC_CONFIGURATION			0x0000
#define	 GMAC_MAC_CONFIGURATION_CST		(1U << 21)
#define	 GMAC_MAC_CONFIGURATION_ACS		(1U << 20)
#define	 GMAC_MAC_CONFIGURATION_BE		(1U << 18)
#define	 GMAC_MAC_CONFIGURATION_JD		(1U << 17)
#define	 GMAC_MAC_CONFIGURATION_JE		(1U << 16)
#define	 GMAC_MAC_CONFIGURATION_PS		(1U << 15)
#define	 GMAC_MAC_CONFIGURATION_FES		(1U << 14)
#define	 GMAC_MAC_CONFIGURATION_DM		(1U << 13)
#define	 GMAC_MAC_CONFIGURATION_DCRS		(1U << 9)
#define	 GMAC_MAC_CONFIGURATION_TE		(1U << 1)
#define	 GMAC_MAC_CONFIGURATION_RE		(1U << 0)
#define	GMAC_MAC_EXT_CONFIGURATION		0x0004
#define	GMAC_MAC_PACKET_FILTER			0x0008
#define	 GMAC_MAC_PACKET_FILTER_HPF		(1U << 10)
#define	 GMAC_MAC_PACKET_FILTER_PCF_MASK	(3U << 6)
#define	 GMAC_MAC_PACKET_FILTER_PCF_ALL		(2U << 6)
#define	 GMAC_MAC_PACKET_FILTER_DBF		(1U << 5)
#define	 GMAC_MAC_PACKET_FILTER_PM		(1U << 4)
#define	 GMAC_MAC_PACKET_FILTER_HMC		(1U << 2)
#define	 GMAC_MAC_PACKET_FILTER_HUC		(1U << 1)
#define	 GMAC_MAC_PACKET_FILTER_PR		(1U << 0)
#define	GMAC_MAC_WATCHDOG_TIMEOUT		0x000C
#define	GMAC_MAC_HASH_TABLE_REG0		0x0010
#define	GMAC_MAC_HASH_TABLE_REG1		0x0014
#define	GMAC_MAC_VLAN_TAG			0x0050
#define	GMAC_MAC_Q0_TX_FLOW_CTRL		0x0070
#define	 GMAC_MAC_Q0_TX_FLOW_CTRL_PT_SHIFT	16
#define	 GMAC_MAC_Q0_TX_FLOW_CTRL_TFE		(1U << 1)
#define	GMAC_MAC_RX_FLOW_CTRL			0x0090
#define	 GMAC_MAC_RX_FLOW_CTRL_RFE		(1U << 0)
#define	GMAC_RXQ_CTRL0				0x00A0
#define	 GMAC_RXQ_CTRL0_EN_MASK			0x3
#define	 GMAC_RXQ_CTRL0_EN_AVB			0x1
#define	 GMAC_RXQ_CTRL0_EN_DCB			0x2
#define	GMAC_RXQ_CTRL1				0x00A4
#define	GMAC_RXQ_CTRL2				0x00A8
#define	GMAC_MAC_INTERRUPT_STATUS		0x00B0
#define	GMAC_MAC_INTERRUPT_ENABLE		0x00B4
#define	GMAC_MAC_RX_TX_STATUS			0x00B8
#define	 GMAC_MAC_RX_TX_STATUS_RWT		(1U << 8)
#define	 GMAC_MAC_RX_TX_STATUS_EXCOL		(1U << 5)
#define	 GMAC_MAC_RX_TX_STATUS_LCOL		(1U << 4)
#define	 GMAC_MAC_RX_TX_STATUS_EXDEF		(1U << 3)
#define	 GMAC_MAC_RX_TX_STATUS_LCARR		(1U << 2)
#define	 GMAC_MAC_RX_TX_STATUS_NCARR		(1U << 1)
#define	 GMAC_MAC_RX_TX_STATUS_TJT		(1U << 0)
#define	GMAC_MAC_PMT_CONTROL_STATUS		0x00C0
#define	GMAC_MAC_RWK_PACKET_FILTER		0x00C4
#define	GMAC_MAC_LPI_CONTROL_STATUS		0x00D0
#define	GMAC_MAC_LPI_TIMERS_CONTROL		0x00D4
#define	GMAC_MAC_LPI_ENTRY_TIMER		0x00D8
#define	GMAC_MAC_1US_TIC_COUNTER		0x00DC
#define	GMAC_MAC_PHYIF_CONTROL_STATUS		0x00F8
#define	GMAC_MAC_VERSION			0x0110
#define	 GMAC_MAC_VERSION_USERVER_SHIFT		8
#define	 GMAC_MAC_VERSION_USERVER_MASK		(0xFFU << GMAC_MAC_VERSION_USERVER_SHIFT)
#define	 GMAC_MAC_VERSION_SNPSVER_MASK		0xFFU
#define	GMAC_MAC_DEBUG				0x0114
#define	GMAC_MAC_HW_FEATURE(n)			(0x011C + 0x4 * (n))
#define	 GMAC_MAC_HW_FEATURE1_TXFIFOSIZE	__BITS(10,6)
#define	 GMAC_MAC_HW_FEATURE1_RXFIFOSIZE	__BITS(5,0)
#define	 GMAC_MAC_HW_FEATURE1_ADDR64_SHIFT	14
#define	 GMAC_MAC_HW_FEATURE1_ADDR64_MASK	(0x3U << GMAC_MAC_HW_FEATURE1_ADDR64_SHIFT)
#define	 GMAC_MAC_HW_FEATURE1_ADDR64_32BIT	(0x0U << GMAC_MAC_HW_FEATURE1_ADDR64_SHIFT)
#define	GMAC_MAC_MDIO_ADDRESS			0x0200
#define	 GMAC_MAC_MDIO_ADDRESS_PA_SHIFT		21
#define	 GMAC_MAC_MDIO_ADDRESS_RDA_SHIFT	16
#define	 GMAC_MAC_MDIO_ADDRESS_CR_SHIFT		8
#define	 GMAC_MAC_MDIO_ADDRESS_CR_MASK		(0x7U << GMAC_MAC_MDIO_ADDRESS_CR_SHIFT)
#define	 GMAC_MAC_MDIO_ADDRESS_CR_60_100	(0U << GMAC_MAC_MDIO_ADDRESS_CR_SHIFT)
#define	 GMAC_MAC_MDIO_ADDRESS_CR_100_150	(1U << GMAC_MAC_MDIO_ADDRESS_CR_SHIFT)
#define	 GMAC_MAC_MDIO_ADDRESS_CR_20_35		(2U << GMAC_MAC_MDIO_ADDRESS_CR_SHIFT)
#define	 GMAC_MAC_MDIO_ADDRESS_CR_35_60		(3U << GMAC_MAC_MDIO_ADDRESS_CR_SHIFT)
#define	 GMAC_MAC_MDIO_ADDRESS_CR_150_250	(4U << GMAC_MAC_MDIO_ADDRESS_CR_SHIFT)
#define	 GMAC_MAC_MDIO_ADDRESS_CR_250_300	(5U << GMAC_MAC_MDIO_ADDRESS_CR_SHIFT)
#define	 GMAC_MAC_MDIO_ADDRESS_CR_300_500	(6U << GMAC_MAC_MDIO_ADDRESS_CR_SHIFT)
#define	 GMAC_MAC_MDIO_ADDRESS_CR_500_800	(7U << GMAC_MAC_MDIO_ADDRESS_CR_SHIFT)
#define	 GMAC_MAC_MDIO_ADDRESS_SKAP		(1U << 4)
#define	 GMAC_MAC_MDIO_ADDRESS_GOC_SHIFT	2
#define	 GMAC_MAC_MDIO_ADDRESS_GOC_READ		(3U << GMAC_MAC_MDIO_ADDRESS_GOC_SHIFT)
#define	 GMAC_MAC_MDIO_ADDRESS_GOC_WRITE	(1U << GMAC_MAC_MDIO_ADDRESS_GOC_SHIFT)
#define	 GMAC_MAC_MDIO_ADDRESS_C45E		(1U << 1)
#define	 GMAC_MAC_MDIO_ADDRESS_GB		(1U << 0)
#define	GMAC_MAC_MDIO_DATA			0x0204
#define	GMAC_MAC_CSR_SW_CTRL			0x0230
#define	GMAC_MAC_ADDRESS0_HIGH			0x0300
#define	GMAC_MAC_ADDRESS0_LOW			0x0304
#define	GMAC_MMC_CONTROL			0x0700
#define	 GMAC_MMC_CONTROL_UCDBC			(1U << 8)
#define	 GMAC_MMC_CONTROL_CNTPRSTLVL		(1U << 5)
#define	 GMAC_MMC_CONTROL_CNTPRST		(1U << 4)
#define	 GMAC_MMC_CONTROL_CNTFREEZ		(1U << 3)
#define	 GMAC_MMC_CONTROL_RSTONRD		(1U << 2)
#define	 GMAC_MMC_CONTROL_CNTSTOPRO		(1U << 1)
#define	 GMAC_MMC_CONTROL_CNTRST		(1U << 0)
#define	GMAC_MMC_RX_INTERRUPT			0x0704
#define	 GMAC_MMC_RX_INTERRUPT_RXFOVPIS		(1U << 21)
#define	 GMAC_MMC_RX_INTERRUPT_RXLENERPIS	(1U << 18)
#define	 GMAC_MMC_RX_INTERRUPT_RXCRCERPIS	(1U << 5)
#define	 GMAC_MMC_RX_INTERRUPT_RXMCGPIS		(1U << 4)
#define	 GMAC_MMC_RX_INTERRUPT_RXGOCTIS		(1U << 2)
#define	 GMAC_MMC_RX_INTERRUPT_RXGBOCTIS	(1U << 1)
#define	 GMAC_MMC_RX_INTERRUPT_RXGBPKTIS	(1U << 0)
#define	GMAC_MMC_TX_INTERRUPT			0x0708
#define	 GMAC_MMC_TX_INTERRUPT_TXGPKTIS		(1U << 21)
#define	 GMAC_MMC_TX_INTERRUPT_TXGOCTIS		(1U << 20)
#define	 GMAC_MMC_TX_INTERRUPT_TXCARERPIS	(1U << 19)
#define	 GMAC_MMC_TX_INTERRUPT_TXFLOWERPIS	(1U << 13)
#define	 GMAC_MMC_TX_INTERRUPT_TXGBPKTIS	(1U << 1)
#define	 GMAC_MMC_TX_INTERRUPT_TXGBOCTIS	(1U << 0)
/* Use GMAC_MMC_RX_INTERRUPT_MASK bits for GMAC_MMC_RX_INTERRUPT_MASK */
#define	GMAC_MMC_RX_INTERRUPT_MASK		0x070C
/* Use GMAC_MMC_TX_INTERRUPT_MASK bits for GMAC_MMC_TX_INTERRUPT_MASK */
#define	GMAC_MMC_TX_INTERRUPT_MASK		0x0710
#define	GMAC_TX_OCTET_COUNT_GOOD_BAD		0x0714
#define	GMAC_TX_PACKET_COUNT_GOOD_BAD		0x0718
#define	GMAC_TX_UNDERFLOW_ERROR_PACKETS		0x0748
#define	GMAC_TX_CARRIER_ERROR_PACKETS		0x0760
#define	GMAC_TX_OCTET_COUNT_GOOD		0x0764
#define	GMAC_TX_PACKET_COUNT_GOOD		0x0768
#define	GMAC_RX_PACKETS_COUNT_GOOD_BAD		0x0780
#define	GMAC_RX_OCTET_COUNT_GOOD_BAD		0x0784
#define	GMAC_RX_OCTET_COUNT_GOOD		0x0788
#define	GMAC_RX_MULTICAST_PACKETS_GOOD		0x0790
#define	GMAC_RX_CRC_ERROR_PACKETS		0x0794
#define	GMAC_RX_LENGTH_ERROR_PACKETS		0x07C8
#define	GMAC_RX_FIFO_OVERFLOW_PACKETS		0x07D4
#define	GMAC_MMC_IPC_RX_INTERRUPT_MASK		0x0800
#define	GMAC_MMC_IPC_RX_INTERRUPT		0x0808
#define	GMAC_RXIPV4_GOOD_PACKETS		0x0810
#define	GMAC_RXIPV4_HEADER_ERROR_PACKETS	0x0814
#define	GMAC_RXIPV6_GOOD_PACKETS		0x0824
#define	GMAC_RXIPV6_HEADER_ERROR_PACKETS	0x0828
#define	GMAC_RXUDP_ERROR_PACKETS		0x0834
#define	GMAC_RXTCP_ERROR_PACKETS		0x083C
#define	GMAC_RXICMP_ERROR_PACKETS		0x0844
#define	GMAC_RXIPV4_HEADER_ERROR_OCTETS		0x0854
#define	GMAC_RXIPV6_HEADER_ERROR_OCTETS		0x0868
#define	GMAC_RXUDP_ERROR_OCTETS			0x0874
#define	GMAC_RXTCP_ERROR_OCTETS			0x087C
#define	GMAC_RXICMP_ERROR_OCTETS		0x0884
#define	GMAC_MAC_TIMESTAMP_CONTROL		0x0B00
#define	GMAC_MAC_SUB_SECOND_INCREMENT		0x0B04
#define	GMAC_MAC_SYSTEM_TIME_SECS		0x0B08
#define	GMAC_MAC_SYSTEM_TIME_NS			0x0B0C
#define	GMAC_MAC_SYS_TIME_SECS_UPDATE		0x0B10
#define	GMAC_MAC_SYS_TIME_NS_UPDATE		0x0B14
#define	GMAC_MAC_TIMESTAMP_ADDEND		0x0B18
#define	GMAC_MAC_TIMESTAMP_STATUS		0x0B20
#define	GMAC_MAC_TX_TS_STATUS_NS		0x0B30
#define	GMAC_MAC_TX_TS_STATUS_SECS		0x0B34
#define	GMAC_MAC_AUXILIARY_CONTROL		0x0B40
#define	GMAC_MAC_AUXILIARY_TS_NS		0x0B48
#define	GMAC_MAC_AUXILIARY_TS_SECS		0x0B4C
#define	GMAC_MAC_TS_INGRESS_CORR_NS		0x0B58
#define	GMAC_MAC_TS_EGRESS_CORR_NS		0x0B5C
#define	GMAC_MAC_TS_INGRESS_LATENCY		0x0B68
#define	GMAC_MAC_TS_EGRESS_LATENCY		0x0B6C
#define	GMAC_MAC_PPS_CONTROL			0x0B70
#define	GMAC_MTL_DBG_CTL			0x0C08
#define	GMAC_MTL_DBG_STS			0x0C0C
#define	GMAC_MTL_FIFO_DEBUG_DATA		0x0C10
#define	GMAC_MTL_INTERRUPT_STATUS		0x0C20
#define	 GMAC_MTL_INTERRUPT_STATUS_DBGIS	(1U << 17)
#define	 GMAC_MTL_INTERRUPT_STATUS_Q0IS		(1U << 0)
#define	GMAC_MTL_TXQ0_OPERATION_MODE		0x0D00
#define	 GMAC_MTL_TXQ0_OPERATION_MODE_TQS		__BITS(24,16)
#define	 GMAC_MTL_TXQ0_OPERATION_MODE_TTC		__BITS(6,4)
#define	 GMAC_MTL_TXQ0_OPERATION_MODE_TXQEN_SHIFT	2
#define	 GMAC_MTL_TXQ0_OPERATION_MODE_TXQEN_MASK	(0x3U << GMAC_MTL_TXQ0_OPERATION_MODE_TXQEN_SHIFT)
#define	 GMAC_MTL_TXQ0_OPERATION_MODE_TXQEN_EN		(2U << GMAC_MTL_TXQ0_OPERATION_MODE_TXQEN_SHIFT)
#define	 GMAC_MTL_TXQ0_OPERATION_MODE_TSF		(1U << 1)
#define	 GMAC_MTL_TXQ0_OPERATION_MODE_FTQ		(1U << 0)
#define	GMAC_MTL_TXQ0_UNDERFLOW			0x0D04
#define	GMAC_MTL_TXQ0_DEBUG			0x0D08
#define	GMAC_MTL_Q0_INTERRUPT_CTRL_STATUS	0x0D2C
#define	 GMAC_MTL_Q0_INTERRUPT_CTRL_STATUS_RXOIE	(1U << 24)
#define	 GMAC_MTL_Q0_INTERRUPT_CTRL_STATUS_RXOVFIS	(1U << 16)
#define	 GMAC_MTL_Q0_INTERRUPT_CTRL_STATUS_TXUIE	(1U << 8)
#define	 GMAC_MTL_Q0_INTERRUPT_CTRL_STATUS_TXUNFIS	(1U << 0)
#define	GMAC_MTL_RXQ0_OPERATION_MODE		0x0D30
#define  GMAC_MTL_RXQ0_OPERATION_MODE_RQS		__BITS(29,20)
#define  GMAC_MTL_RXQ0_OPERATION_MODE_RFD		__BITS(19,14)
#define  GMAC_MTL_RXQ0_OPERATION_MODE_RFA		__BITS(13,8)
#define	 GMAC_MTL_RXQ0_OPERATION_MODE_EHFC		(1U << 7)
#define	 GMAC_MTL_RXQ0_OPERATION_MODE_RSF		(1U << 5)
#define	 GMAC_MTL_RXQ0_OPERATION_MODE_FEP		(1U << 4)
#define	 GMAC_MTL_RXQ0_OPERATION_MODE_FUP		(1U << 3)
#define	GMAC_MTL_RXQ0_MISS_PKT_OVF_CNT		0x0D34
#define	GMAC_MTL_RXQ0_DEBUG			0x0D38
#define	GMAC_DMA_MODE				0x1000
#define	 GMAC_DMA_MODE_SWR			(1U << 0)
#define	GMAC_DMA_SYSBUS_MODE			0x1004
#define	 GMAC_DMA_SYSBUS_MODE_WR_OSR_LMT_SHIFT	24
#define	 GMAC_DMA_SYSBUS_MODE_WR_OSR_LMT_MASK	(0x3U << GMAC_DMA_SYSBUS_MODE_WR_OSR_LMT_SHIFT)
#define	 GMAC_DMA_SYSBUS_MODE_RD_OSR_LMT_SHIFT	16
#define	 GMAC_DMA_SYSBUS_MODE_RD_OSR_LMT_MASK	(0x7U << GMAC_DMA_SYSBUS_MODE_RD_OSR_LMT_SHIFT)
#define	 GMAC_DMA_SYSBUS_MODE_MB		(1U << 14)
#define	 GMAC_DMA_SYSBUS_MODE_EAME		(1U << 11)
#define	 GMAC_DMA_SYSBUS_MODE_BLEN16		(1U << 3)
#define	 GMAC_DMA_SYSBUS_MODE_BLEN8		(1U << 2)
#define	 GMAC_DMA_SYSBUS_MODE_BLEN4		(1U << 1)
#define	 GMAC_DMA_SYSBUS_MODE_FB		(1U << 0)
#define	GMAC_DMA_INTERRUPT_STATUS		0x1008
#define	GMAC_DMA_DEBUG_STATUS0			0x100C
#define	GMAC_AXI_LPI_ENTRY_INTERVAL		0x1040
#define	GMAC_RWK_FILTERn_BYTE_MASK(n)		(0x10C0 + 0x4 * (n))
#define	GMAC_RWK_FILTER01_CRC			0x10D0
#define	GMAC_RWK_FILTER23_CRC			0x10D4
#define	GMAC_RWK_FILTER_OFFSET			0x10D8
#define	GMAC_RWK_FILTER_COMMAND			0x10DC
#define	GMAC_DMA_CHAN0_CONTROL			0x1100
#define	 GMAC_DMA_CHAN0_CONTROL_DSL_SHIFT	18
#define	 GMAC_DMA_CHAN0_CONTROL_DSL_MASK	(0x7U << GMAC_DMA_CHAN0_CONTROL_DSL_SHIFT)
#define	 GMAC_DMA_CHAN0_CONTROL_PBLX8		(1U << 16)
#define	GMAC_DMA_CHAN0_TX_CONTROL		0x1104
#define	 GMAC_DMA_CHAN0_TX_CONTROL_OSP		(1U << 4)
#define	 GMAC_DMA_CHAN0_TX_CONTROL_START	(1U << 0)
#define	GMAC_DMA_CHAN0_RX_CONTROL		0x1108
#define	 GMAC_DMA_CHAN0_RX_CONTROL_RBSZ_SHIFT	1
#define	 GMAC_DMA_CHAN0_RX_CONTROL_RBSZ_MASK	(0x3FFFU << GMAC_DMA_CHAN0_RX_CONTROL_RBSZ_SHIFT)
#define	 GMAC_DMA_CHAN0_RX_CONTROL_START	(1U << 0)
#define	GMAC_DMA_CHAN0_TX_BASE_ADDR_HI		0x1110
#define	GMAC_DMA_CHAN0_TX_BASE_ADDR		0x1114
#define	GMAC_DMA_CHAN0_RX_BASE_ADDR_HI		0x1118
#define	GMAC_DMA_CHAN0_RX_BASE_ADDR		0x111C
#define	GMAC_DMA_CHAN0_TX_END_ADDR		0x1120
#define	GMAC_DMA_CHAN0_RX_END_ADDR		0x1128
#define	GMAC_DMA_CHAN0_TX_RING_LEN		0x112C
#define	GMAC_DMA_CHAN0_RX_RING_LEN		0x1130
#define	GMAC_DMA_CHAN0_INTR_ENABLE		0x1134
#define	 GMAC_DMA_CHAN0_INTR_ENABLE_NIE		(1U << 15)
#define	 GMAC_DMA_CHAN0_INTR_ENABLE_AIE		(1U << 14)
#define	 GMAC_DMA_CHAN0_INTR_ENABLE_FBE		(1U << 12)
#define	 GMAC_DMA_CHAN0_INTR_ENABLE_RIE		(1U << 6)
#define	 GMAC_DMA_CHAN0_INTR_ENABLE_TIE		(1U << 0)
#define	GMAC_DMA_CHAN0_RX_WATCHDOG		0x1138
#define	GMAC_DMA_CHAN0_SLOT_CTRL_STATUS		0x113C
#define	GMAC_DMA_CHAN0_CUR_TX_DESC		0x1144
#define	GMAC_DMA_CHAN0_CUR_RX_DESC		0x114C
#define	GMAC_DMA_CHAN0_CUR_TX_BUF_ADDR		0x1154
#define	GMAC_DMA_CHAN0_CUR_RX_BUF_ADDR		0x115C
#define	GMAC_DMA_CHAN0_STATUS			0x1160
#define	 GMAC_DMA_CHAN0_STATUS_NIS		(1U << 15)
#define	 GMAC_DMA_CHAN0_STATUS_AIS		(1U << 14)
#define	 GMAC_DMA_CHAN0_STATUS_FB		(1U << 12)
#define	 GMAC_DMA_CHAN0_STATUS_RI		(1U << 6)
#define	 GMAC_DMA_CHAN0_STATUS_TI		(1U << 0)

struct eqos_dma_desc {
	uint32_t	tdes0;
	uint32_t	tdes1;
	uint32_t	tdes2;
#define	EQOS_TDES2_TX_IOC			(1U << 31)	/* TX */
	uint32_t	tdes3;
#define	EQOS_TDES3_TX_OWN			(1U << 31)	/* TX */
#define	EQOS_TDES3_TX_FD			(1U << 29)	/* TX */
#define	EQOS_TDES3_TX_LD			(1U << 28)	/* TX */
#define	EQOS_TDES3_TX_DE			(1U << 23)	/* TX (WB) */
#define	EQOS_TDES3_TX_ES			(1U << 15)	/* TX (WB) */
#define	EQOS_TDES3_RX_OWN			(1U << 31)	/* RX */
#define	EQOS_TDES3_RX_IOC			(1U << 30)	/* RX */
#define	EQOS_TDES3_RX_BUF1V			(1U << 24)	/* RX */
#define	EQOS_TDES3_RX_CTXT			(1U << 30)	/* RX (WB) */
#define	EQOS_TDES3_RX_FD			(1U << 29)	/* RX (WB) */
#define	EQOS_TDES3_RX_LD			(1U << 28)	/* RX (WB) */
#define	EQOS_TDES3_RX_CE			(1U << 24)	/* RX (WB) */
#define	EQOS_TDES3_RX_GP			(1U << 23)	/* RX (WB) */
#define	EQOS_TDES3_RX_RWT			(1U << 22)	/* RX (WB) */
#define	EQOS_TDES3_RX_OE			(1U << 21)	/* RX (WB) */
#define	EQOS_TDES3_RX_RE			(1U << 20)	/* RX (WB) */
#define	EQOS_TDES3_RX_DE			(1U << 19)	/* RX (WB) */
#define	EQOS_TDES3_RX_ES			(1U << 15)	/* RX (WB) */
#define	EQOS_TDES3_RX_LENGTH_MASK		0x7FFFU		/* RX */
} __aligned (64);

#endif /* !_DWC_EQOS_REG_H */