xref: /freebsd/sys/dev/dwc/dwc1000_reg.h (revision c36125f6cc8b3577f913da757ae588dd357a765c)
1*c36125f6SEmmanuel Vadot /*-
2*c36125f6SEmmanuel Vadot  * Copyright (c) 2014 Ruslan Bukin <br@bsdpad.com>
3*c36125f6SEmmanuel Vadot  *
4*c36125f6SEmmanuel Vadot  * This software was developed by SRI International and the University of
5*c36125f6SEmmanuel Vadot  * Cambridge Computer Laboratory under DARPA/AFRL contract (FA8750-10-C-0237)
6*c36125f6SEmmanuel Vadot  * ("CTSRD"), as part of the DARPA CRASH research programme.
7*c36125f6SEmmanuel Vadot  *
8*c36125f6SEmmanuel Vadot  * Redistribution and use in source and binary forms, with or without
9*c36125f6SEmmanuel Vadot  * modification, are permitted provided that the following conditions
10*c36125f6SEmmanuel Vadot  * are met:
11*c36125f6SEmmanuel Vadot  * 1. Redistributions of source code must retain the above copyright
12*c36125f6SEmmanuel Vadot  *    notice, this list of conditions and the following disclaimer.
13*c36125f6SEmmanuel Vadot  * 2. Redistributions in binary form must reproduce the above copyright
14*c36125f6SEmmanuel Vadot  *    notice, this list of conditions and the following disclaimer in the
15*c36125f6SEmmanuel Vadot  *    documentation and/or other materials provided with the distribution.
16*c36125f6SEmmanuel Vadot  *
17*c36125f6SEmmanuel Vadot  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18*c36125f6SEmmanuel Vadot  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19*c36125f6SEmmanuel Vadot  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20*c36125f6SEmmanuel Vadot  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
21*c36125f6SEmmanuel Vadot  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22*c36125f6SEmmanuel Vadot  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23*c36125f6SEmmanuel Vadot  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24*c36125f6SEmmanuel Vadot  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25*c36125f6SEmmanuel Vadot  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26*c36125f6SEmmanuel Vadot  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27*c36125f6SEmmanuel Vadot  * SUCH DAMAGE.
28*c36125f6SEmmanuel Vadot  */
29*c36125f6SEmmanuel Vadot 
30*c36125f6SEmmanuel Vadot /*
31*c36125f6SEmmanuel Vadot  * Register names were taken almost as is from the documentation.
32*c36125f6SEmmanuel Vadot  */
33*c36125f6SEmmanuel Vadot 
34*c36125f6SEmmanuel Vadot #ifndef __DWC1000_REG_H__
35*c36125f6SEmmanuel Vadot #define __DWC1000_REG_H__
36*c36125f6SEmmanuel Vadot 
37*c36125f6SEmmanuel Vadot #define	PHY_MODE_UNKNOWN	0x0
38*c36125f6SEmmanuel Vadot #define	PHY_MODE_RMII		0x1
39*c36125f6SEmmanuel Vadot #define	PHY_MODE_RGMII		0x2
40*c36125f6SEmmanuel Vadot #define	PHY_MODE_MII		0x3
41*c36125f6SEmmanuel Vadot 
42*c36125f6SEmmanuel Vadot #define	MAC_CONFIGURATION	0x0
43*c36125f6SEmmanuel Vadot #define	 CONF_JD		(1 << 22)	/* jabber timer disable */
44*c36125f6SEmmanuel Vadot #define	 CONF_BE		(1 << 21)	/* Frame Burst Enable */
45*c36125f6SEmmanuel Vadot #define	 CONF_PS		(1 << 15)	/* GMII/MII */
46*c36125f6SEmmanuel Vadot #define	 CONF_FES		(1 << 14)	/* MII speed select */
47*c36125f6SEmmanuel Vadot #define	 CONF_DM		(1 << 11)	/* Full Duplex Enable */
48*c36125f6SEmmanuel Vadot #define	 CONF_IPC		(1 << 10)	/* IPC checksum offload */
49*c36125f6SEmmanuel Vadot #define	 CONF_ACS		(1 << 7)
50*c36125f6SEmmanuel Vadot #define	 CONF_TE		(1 << 3)
51*c36125f6SEmmanuel Vadot #define	 CONF_RE		(1 << 2)
52*c36125f6SEmmanuel Vadot #define	MAC_FRAME_FILTER	0x4
53*c36125f6SEmmanuel Vadot #define	 FRAME_FILTER_RA	(1U << 31)	/* Receive All */
54*c36125f6SEmmanuel Vadot #define	 FRAME_FILTER_HPF	(1 << 10)	/* Hash or Perfect Filter */
55*c36125f6SEmmanuel Vadot #define	 FRAME_FILTER_PM	(1 << 4)	/* Pass multicast */
56*c36125f6SEmmanuel Vadot #define	 FRAME_FILTER_HMC	(1 << 2)
57*c36125f6SEmmanuel Vadot #define	 FRAME_FILTER_HUC	(1 << 1)
58*c36125f6SEmmanuel Vadot #define	 FRAME_FILTER_PR	(1 << 0)	/* All Incoming Frames */
59*c36125f6SEmmanuel Vadot #define	GMAC_MAC_HTHIGH		0x08
60*c36125f6SEmmanuel Vadot #define	GMAC_MAC_HTLOW		0x0c
61*c36125f6SEmmanuel Vadot #define	GMII_ADDRESS		0x10
62*c36125f6SEmmanuel Vadot #define	 GMII_ADDRESS_PA_MASK	0x1f		/* Phy device */
63*c36125f6SEmmanuel Vadot #define	 GMII_ADDRESS_PA_SHIFT	11
64*c36125f6SEmmanuel Vadot #define	 GMII_ADDRESS_GR_MASK	0x1f		/* Phy register */
65*c36125f6SEmmanuel Vadot #define	 GMII_ADDRESS_GR_SHIFT	6
66*c36125f6SEmmanuel Vadot #define	 GMII_ADDRESS_CR_MASK	0xf
67*c36125f6SEmmanuel Vadot #define	 GMII_ADDRESS_CR_SHIFT	2		/* Clock */
68*c36125f6SEmmanuel Vadot #define	 GMII_ADDRESS_GW	(1 << 1)	/* Write operation */
69*c36125f6SEmmanuel Vadot #define	 GMII_ADDRESS_GB	(1 << 0)	/* Busy */
70*c36125f6SEmmanuel Vadot #define	GMII_DATA		0x14
71*c36125f6SEmmanuel Vadot #define	FLOW_CONTROL		0x18
72*c36125f6SEmmanuel Vadot #define	 FLOW_CONTROL_PT_SHIFT	16
73*c36125f6SEmmanuel Vadot #define	 FLOW_CONTROL_UP	(1 << 3)	/* Unicast pause enable */
74*c36125f6SEmmanuel Vadot #define	 FLOW_CONTROL_RX	(1 << 2)	/* RX Flow control enable */
75*c36125f6SEmmanuel Vadot #define	 FLOW_CONTROL_TX	(1 << 1)	/* TX Flow control enable */
76*c36125f6SEmmanuel Vadot #define	GMAC_VLAN_TAG		0x1C
77*c36125f6SEmmanuel Vadot #define	VERSION			0x20
78*c36125f6SEmmanuel Vadot #define	DEBUG			0x24
79*c36125f6SEmmanuel Vadot #define	LPI_CONTROL_STATUS	0x30
80*c36125f6SEmmanuel Vadot #define	LPI_TIMERS_CONTROL	0x34
81*c36125f6SEmmanuel Vadot #define	INTERRUPT_STATUS	0x38
82*c36125f6SEmmanuel Vadot #define	INTERRUPT_MASK		0x3C
83*c36125f6SEmmanuel Vadot #define	MAC_ADDRESS_HIGH(n)	((n > 15 ? 0x800 : 0x40) + 0x8 * n)
84*c36125f6SEmmanuel Vadot #define	MAC_ADDRESS_LOW(n)	((n > 15 ? 0x804 : 0x44) + 0x8 * n)
85*c36125f6SEmmanuel Vadot 
86*c36125f6SEmmanuel Vadot #define	SGMII_RGMII_SMII_CTRL_STATUS	0xD8
87*c36125f6SEmmanuel Vadot #define	MMC_CONTROL			0x100
88*c36125f6SEmmanuel Vadot #define	 MMC_CONTROL_CNTRST		(1 << 0)
89*c36125f6SEmmanuel Vadot #define	MMC_RECEIVE_INTERRUPT		0x104
90*c36125f6SEmmanuel Vadot #define	MMC_TRANSMIT_INTERRUPT		0x108
91*c36125f6SEmmanuel Vadot #define	MMC_RECEIVE_INTERRUPT_MASK	0x10C
92*c36125f6SEmmanuel Vadot #define	MMC_TRANSMIT_INTERRUPT_MASK	0x110
93*c36125f6SEmmanuel Vadot #define	TXOCTETCOUNT_GB			0x114
94*c36125f6SEmmanuel Vadot #define	TXFRAMECOUNT_GB			0x118
95*c36125f6SEmmanuel Vadot #define	TXBROADCASTFRAMES_G		0x11C
96*c36125f6SEmmanuel Vadot #define	TXMULTICASTFRAMES_G		0x120
97*c36125f6SEmmanuel Vadot #define	TX64OCTETS_GB			0x124
98*c36125f6SEmmanuel Vadot #define	TX65TO127OCTETS_GB		0x128
99*c36125f6SEmmanuel Vadot #define	TX128TO255OCTETS_GB		0x12C
100*c36125f6SEmmanuel Vadot #define	TX256TO511OCTETS_GB		0x130
101*c36125f6SEmmanuel Vadot #define	TX512TO1023OCTETS_GB		0x134
102*c36125f6SEmmanuel Vadot #define	TX1024TOMAXOCTETS_GB		0x138
103*c36125f6SEmmanuel Vadot #define	TXUNICASTFRAMES_GB		0x13C
104*c36125f6SEmmanuel Vadot #define	TXMULTICASTFRAMES_GB		0x140
105*c36125f6SEmmanuel Vadot #define	TXBROADCASTFRAMES_GB		0x144
106*c36125f6SEmmanuel Vadot #define	TXUNDERFLOWERROR		0x148
107*c36125f6SEmmanuel Vadot #define	TXSINGLECOL_G			0x14C
108*c36125f6SEmmanuel Vadot #define	TXMULTICOL_G			0x150
109*c36125f6SEmmanuel Vadot #define	TXDEFERRED			0x154
110*c36125f6SEmmanuel Vadot #define	TXLATECOL			0x158
111*c36125f6SEmmanuel Vadot #define	TXEXESSCOL			0x15C
112*c36125f6SEmmanuel Vadot #define	TXCARRIERERR			0x160
113*c36125f6SEmmanuel Vadot #define	TXOCTETCNT			0x164
114*c36125f6SEmmanuel Vadot #define	TXFRAMECOUNT_G			0x168
115*c36125f6SEmmanuel Vadot #define	TXEXCESSDEF			0x16C
116*c36125f6SEmmanuel Vadot #define	TXPAUSEFRAMES			0x170
117*c36125f6SEmmanuel Vadot #define	TXVLANFRAMES_G			0x174
118*c36125f6SEmmanuel Vadot #define	TXOVERSIZE_G			0x178
119*c36125f6SEmmanuel Vadot #define	RXFRAMECOUNT_GB			0x180
120*c36125f6SEmmanuel Vadot #define	RXOCTETCOUNT_GB			0x184
121*c36125f6SEmmanuel Vadot #define	RXOCTETCOUNT_G			0x188
122*c36125f6SEmmanuel Vadot #define	RXBROADCASTFRAMES_G		0x18C
123*c36125f6SEmmanuel Vadot #define	RXMULTICASTFRAMES_G		0x190
124*c36125f6SEmmanuel Vadot #define	RXCRCERROR			0x194
125*c36125f6SEmmanuel Vadot #define	RXALIGNMENTERROR		0x198
126*c36125f6SEmmanuel Vadot #define	RXRUNTERROR			0x19C
127*c36125f6SEmmanuel Vadot #define	RXJABBERERROR			0x1A0
128*c36125f6SEmmanuel Vadot #define	RXUNDERSIZE_G			0x1A4
129*c36125f6SEmmanuel Vadot #define	RXOVERSIZE_G			0x1A8
130*c36125f6SEmmanuel Vadot #define	RX64OCTETS_GB			0x1AC
131*c36125f6SEmmanuel Vadot #define	RX65TO127OCTETS_GB		0x1B0
132*c36125f6SEmmanuel Vadot #define	RX128TO255OCTETS_GB		0x1B4
133*c36125f6SEmmanuel Vadot #define	RX256TO511OCTETS_GB		0x1B8
134*c36125f6SEmmanuel Vadot #define	RX512TO1023OCTETS_GB		0x1BC
135*c36125f6SEmmanuel Vadot #define	RX1024TOMAXOCTETS_GB		0x1C0
136*c36125f6SEmmanuel Vadot #define	RXUNICASTFRAMES_G		0x1C4
137*c36125f6SEmmanuel Vadot #define	RXLENGTHERROR			0x1C8
138*c36125f6SEmmanuel Vadot #define	RXOUTOFRANGETYPE		0x1CC
139*c36125f6SEmmanuel Vadot #define	RXPAUSEFRAMES			0x1D0
140*c36125f6SEmmanuel Vadot #define	RXFIFOOVERFLOW			0x1D4
141*c36125f6SEmmanuel Vadot #define	RXVLANFRAMES_GB			0x1D8
142*c36125f6SEmmanuel Vadot #define	RXWATCHDOGERROR			0x1DC
143*c36125f6SEmmanuel Vadot #define	RXRCVERROR			0x1E0
144*c36125f6SEmmanuel Vadot #define	RXCTRLFRAMES_G			0x1E4
145*c36125f6SEmmanuel Vadot #define	MMC_IPC_RECEIVE_INT_MASK	0x200
146*c36125f6SEmmanuel Vadot #define	MMC_IPC_RECEIVE_INT		0x208
147*c36125f6SEmmanuel Vadot #define	RXIPV4_GD_FRMS			0x210
148*c36125f6SEmmanuel Vadot #define	RXIPV4_HDRERR_FRMS		0x214
149*c36125f6SEmmanuel Vadot #define	RXIPV4_NOPAY_FRMS		0x218
150*c36125f6SEmmanuel Vadot #define	RXIPV4_FRAG_FRMS		0x21C
151*c36125f6SEmmanuel Vadot #define	RXIPV4_UDSBL_FRMS		0x220
152*c36125f6SEmmanuel Vadot #define	RXIPV6_GD_FRMS			0x224
153*c36125f6SEmmanuel Vadot #define	RXIPV6_HDRERR_FRMS		0x228
154*c36125f6SEmmanuel Vadot #define	RXIPV6_NOPAY_FRMS		0x22C
155*c36125f6SEmmanuel Vadot #define	RXUDP_GD_FRMS			0x230
156*c36125f6SEmmanuel Vadot #define	RXUDP_ERR_FRMS			0x234
157*c36125f6SEmmanuel Vadot #define	RXTCP_GD_FRMS			0x238
158*c36125f6SEmmanuel Vadot #define	RXTCP_ERR_FRMS			0x23C
159*c36125f6SEmmanuel Vadot #define	RXICMP_GD_FRMS			0x240
160*c36125f6SEmmanuel Vadot #define	RXICMP_ERR_FRMS			0x244
161*c36125f6SEmmanuel Vadot #define	RXIPV4_GD_OCTETS		0x250
162*c36125f6SEmmanuel Vadot #define	RXIPV4_HDRERR_OCTETS		0x254
163*c36125f6SEmmanuel Vadot #define	RXIPV4_NOPAY_OCTETS		0x258
164*c36125f6SEmmanuel Vadot #define	RXIPV4_FRAG_OCTETS		0x25C
165*c36125f6SEmmanuel Vadot #define	RXIPV4_UDSBL_OCTETS		0x260
166*c36125f6SEmmanuel Vadot #define	RXIPV6_GD_OCTETS		0x264
167*c36125f6SEmmanuel Vadot #define	RXIPV6_HDRERR_OCTETS		0x268
168*c36125f6SEmmanuel Vadot #define	RXIPV6_NOPAY_OCTETS		0x26C
169*c36125f6SEmmanuel Vadot #define	RXUDP_GD_OCTETS			0x270
170*c36125f6SEmmanuel Vadot #define	RXUDP_ERR_OCTETS		0x274
171*c36125f6SEmmanuel Vadot #define	RXTCP_GD_OCTETS			0x278
172*c36125f6SEmmanuel Vadot #define	RXTCPERROCTETS			0x27C
173*c36125f6SEmmanuel Vadot #define	RXICMP_GD_OCTETS		0x280
174*c36125f6SEmmanuel Vadot #define	RXICMP_ERR_OCTETS		0x284
175*c36125f6SEmmanuel Vadot #define	L3_L4_CONTROL0			0x400
176*c36125f6SEmmanuel Vadot #define	LAYER4_ADDRESS0			0x404
177*c36125f6SEmmanuel Vadot #define	LAYER3_ADDR0_REG0		0x410
178*c36125f6SEmmanuel Vadot #define	LAYER3_ADDR1_REG0		0x414
179*c36125f6SEmmanuel Vadot #define	LAYER3_ADDR2_REG0		0x418
180*c36125f6SEmmanuel Vadot #define	LAYER3_ADDR3_REG0		0x41C
181*c36125f6SEmmanuel Vadot #define	L3_L4_CONTROL1			0x430
182*c36125f6SEmmanuel Vadot #define	LAYER4_ADDRESS1			0x434
183*c36125f6SEmmanuel Vadot #define	LAYER3_ADDR0_REG1		0x440
184*c36125f6SEmmanuel Vadot #define	LAYER3_ADDR1_REG1		0x444
185*c36125f6SEmmanuel Vadot #define	LAYER3_ADDR2_REG1		0x448
186*c36125f6SEmmanuel Vadot #define	LAYER3_ADDR3_REG1		0x44C
187*c36125f6SEmmanuel Vadot #define	L3_L4_CONTROL2			0x460
188*c36125f6SEmmanuel Vadot #define	LAYER4_ADDRESS2			0x464
189*c36125f6SEmmanuel Vadot #define	LAYER3_ADDR0_REG2		0x470
190*c36125f6SEmmanuel Vadot #define	LAYER3_ADDR1_REG2		0x474
191*c36125f6SEmmanuel Vadot #define	LAYER3_ADDR2_REG2		0x478
192*c36125f6SEmmanuel Vadot #define	LAYER3_ADDR3_REG2		0x47C
193*c36125f6SEmmanuel Vadot #define	L3_L4_CONTROL3			0x490
194*c36125f6SEmmanuel Vadot #define	LAYER4_ADDRESS3			0x494
195*c36125f6SEmmanuel Vadot #define	LAYER3_ADDR0_REG3		0x4A0
196*c36125f6SEmmanuel Vadot #define	LAYER3_ADDR1_REG3		0x4A4
197*c36125f6SEmmanuel Vadot #define	LAYER3_ADDR2_REG3		0x4A8
198*c36125f6SEmmanuel Vadot #define	LAYER3_ADDR3_REG3		0x4AC
199*c36125f6SEmmanuel Vadot #define	HASH_TABLE_REG(n)		0x500 + (0x4 * n)
200*c36125f6SEmmanuel Vadot #define	VLAN_INCL_REG			0x584
201*c36125f6SEmmanuel Vadot #define	VLAN_HASH_TABLE_REG		0x588
202*c36125f6SEmmanuel Vadot #define	TIMESTAMP_CONTROL		0x700
203*c36125f6SEmmanuel Vadot #define	SUB_SECOND_INCREMENT		0x704
204*c36125f6SEmmanuel Vadot #define	SYSTEM_TIME_SECONDS		0x708
205*c36125f6SEmmanuel Vadot #define	SYSTEM_TIME_NANOSECONDS		0x70C
206*c36125f6SEmmanuel Vadot #define	SYSTEM_TIME_SECONDS_UPDATE	0x710
207*c36125f6SEmmanuel Vadot #define	SYSTEM_TIME_NANOSECONDS_UPDATE	0x714
208*c36125f6SEmmanuel Vadot #define	TIMESTAMP_ADDEND		0x718
209*c36125f6SEmmanuel Vadot #define	TARGET_TIME_SECONDS		0x71C
210*c36125f6SEmmanuel Vadot #define	TARGET_TIME_NANOSECONDS		0x720
211*c36125f6SEmmanuel Vadot #define	SYSTEM_TIME_HIGHER_WORD_SECONDS	0x724
212*c36125f6SEmmanuel Vadot #define	TIMESTAMP_STATUS		0x728
213*c36125f6SEmmanuel Vadot #define	PPS_CONTROL			0x72C
214*c36125f6SEmmanuel Vadot #define	AUXILIARY_TIMESTAMP_NANOSECONDS	0x730
215*c36125f6SEmmanuel Vadot #define	AUXILIARY_TIMESTAMP_SECONDS	0x734
216*c36125f6SEmmanuel Vadot #define	PPS0_INTERVAL			0x760
217*c36125f6SEmmanuel Vadot #define	PPS0_WIDTH			0x764
218*c36125f6SEmmanuel Vadot 
219*c36125f6SEmmanuel Vadot /* DMA */
220*c36125f6SEmmanuel Vadot #define	BUS_MODE		0x1000
221*c36125f6SEmmanuel Vadot #define	 BUS_MODE_MIXEDBURST	(1 << 26)
222*c36125f6SEmmanuel Vadot #define	 BUS_MODE_AAL		(1 << 25)
223*c36125f6SEmmanuel Vadot #define	 BUS_MODE_EIGHTXPBL	(1 << 24) /* Multiplies PBL by 8 */
224*c36125f6SEmmanuel Vadot #define	 BUS_MODE_USP		(1 << 23)
225*c36125f6SEmmanuel Vadot #define	 BUS_MODE_RPBL_SHIFT	17 /* Single block transfer size */
226*c36125f6SEmmanuel Vadot #define	 BUS_MODE_FIXEDBURST	(1 << 16)
227*c36125f6SEmmanuel Vadot #define	 BUS_MODE_PRIORXTX_SHIFT	14
228*c36125f6SEmmanuel Vadot #define	 BUS_MODE_PRIORXTX_41	3
229*c36125f6SEmmanuel Vadot #define	 BUS_MODE_PRIORXTX_31	2
230*c36125f6SEmmanuel Vadot #define	 BUS_MODE_PRIORXTX_21	1
231*c36125f6SEmmanuel Vadot #define	 BUS_MODE_PRIORXTX_11	0
232*c36125f6SEmmanuel Vadot #define	 BUS_MODE_PBL_SHIFT	8 /* Single block transfer size */
233*c36125f6SEmmanuel Vadot #define	 BUS_MODE_SWR		(1 << 0) /* Reset */
234*c36125f6SEmmanuel Vadot #define	 BUS_MODE_DEFAULT_PBL	8
235*c36125f6SEmmanuel Vadot #define	TRANSMIT_POLL_DEMAND	0x1004
236*c36125f6SEmmanuel Vadot #define	RECEIVE_POLL_DEMAND	0x1008
237*c36125f6SEmmanuel Vadot #define	RX_DESCR_LIST_ADDR	0x100C
238*c36125f6SEmmanuel Vadot #define	TX_DESCR_LIST_ADDR	0x1010
239*c36125f6SEmmanuel Vadot #define	DMA_STATUS		0x1014
240*c36125f6SEmmanuel Vadot #define	 DMA_STATUS_NIS		(1 << 16)
241*c36125f6SEmmanuel Vadot #define	 DMA_STATUS_AIS		(1 << 15)
242*c36125f6SEmmanuel Vadot #define	 DMA_STATUS_FBI		(1 << 13)
243*c36125f6SEmmanuel Vadot #define	 DMA_STATUS_RI		(1 << 6)
244*c36125f6SEmmanuel Vadot #define	 DMA_STATUS_TI		(1 << 0)
245*c36125f6SEmmanuel Vadot #define	 DMA_STATUS_INTR_MASK	0x1ffff
246*c36125f6SEmmanuel Vadot #define	OPERATION_MODE		0x1018
247*c36125f6SEmmanuel Vadot #define	 MODE_RSF		(1 << 25) /* RX Full Frame */
248*c36125f6SEmmanuel Vadot #define	 MODE_TSF		(1 << 21) /* TX Full Frame */
249*c36125f6SEmmanuel Vadot #define	 MODE_FTF		(1 << 20) /* Flush TX FIFO */
250*c36125f6SEmmanuel Vadot #define	 MODE_ST		(1 << 13) /* Start DMA TX */
251*c36125f6SEmmanuel Vadot #define	 MODE_FUF		(1 << 6)  /* TX frames < 64bytes */
252*c36125f6SEmmanuel Vadot #define	 MODE_RTC_LEV32		0x1
253*c36125f6SEmmanuel Vadot #define	 MODE_RTC_SHIFT		3
254*c36125f6SEmmanuel Vadot #define	 MODE_OSF		(1 << 2) /* Process Second frame */
255*c36125f6SEmmanuel Vadot #define	 MODE_SR		(1 << 1) /* Start DMA RX */
256*c36125f6SEmmanuel Vadot #define	INTERRUPT_ENABLE	0x101C
257*c36125f6SEmmanuel Vadot #define	 INT_EN_NIE		(1 << 16) /* Normal/Summary */
258*c36125f6SEmmanuel Vadot #define	 INT_EN_AIE		(1 << 15) /* Abnormal/Summary */
259*c36125f6SEmmanuel Vadot #define	 INT_EN_ERE		(1 << 14) /* Early receive */
260*c36125f6SEmmanuel Vadot #define	 INT_EN_FBE		(1 << 13) /* Fatal bus error */
261*c36125f6SEmmanuel Vadot #define	 INT_EN_ETE		(1 << 10) /* Early transmit */
262*c36125f6SEmmanuel Vadot #define	 INT_EN_RWE		(1 << 9)  /* Receive watchdog */
263*c36125f6SEmmanuel Vadot #define	 INT_EN_RSE		(1 << 8)  /* Receive stopped */
264*c36125f6SEmmanuel Vadot #define	 INT_EN_RUE		(1 << 7)  /* Recv buf unavailable */
265*c36125f6SEmmanuel Vadot #define	 INT_EN_RIE		(1 << 6)  /* Receive interrupt */
266*c36125f6SEmmanuel Vadot #define	 INT_EN_UNE		(1 << 5)  /* Tx underflow */
267*c36125f6SEmmanuel Vadot #define	 INT_EN_OVE		(1 << 4)  /* Receive overflow */
268*c36125f6SEmmanuel Vadot #define	 INT_EN_TJE		(1 << 3)  /* Transmit jabber */
269*c36125f6SEmmanuel Vadot #define	 INT_EN_TUE		(1 << 2)  /* Tx. buf unavailable */
270*c36125f6SEmmanuel Vadot #define	 INT_EN_TSE		(1 << 1)  /* Transmit stopped */
271*c36125f6SEmmanuel Vadot #define	 INT_EN_TIE		(1 << 0)  /* Transmit interrupt */
272*c36125f6SEmmanuel Vadot #define	 INT_EN_DEFAULT		(INT_EN_TIE|INT_EN_RIE|	\
273*c36125f6SEmmanuel Vadot 	    INT_EN_NIE|INT_EN_AIE|			\
274*c36125f6SEmmanuel Vadot 	    INT_EN_FBE|INT_EN_UNE)
275*c36125f6SEmmanuel Vadot 
276*c36125f6SEmmanuel Vadot #define	MISSED_FRAMEBUF_OVERFLOW_CNTR	0x1020
277*c36125f6SEmmanuel Vadot #define	RECEIVE_INT_WATCHDOG_TMR	0x1024
278*c36125f6SEmmanuel Vadot #define	AXI_BUS_MODE			0x1028
279*c36125f6SEmmanuel Vadot #define	AHB_OR_AXI_STATUS		0x102C
280*c36125f6SEmmanuel Vadot #define	CURRENT_HOST_TRANSMIT_DESCR	0x1048
281*c36125f6SEmmanuel Vadot #define	CURRENT_HOST_RECEIVE_DESCR	0x104C
282*c36125f6SEmmanuel Vadot #define	CURRENT_HOST_TRANSMIT_BUF_ADDR	0x1050
283*c36125f6SEmmanuel Vadot #define	CURRENT_HOST_RECEIVE_BUF_ADDR	0x1054
284*c36125f6SEmmanuel Vadot #define	HW_FEATURE			0x1058
285*c36125f6SEmmanuel Vadot 
286*c36125f6SEmmanuel Vadot #define	DWC_GMAC_NORMAL_DESC		0x1
287*c36125f6SEmmanuel Vadot #define	DWC_GMAC_EXT_DESC		0x2
288*c36125f6SEmmanuel Vadot 
289*c36125f6SEmmanuel Vadot #define	GMAC_MII_CLK_60_100M_DIV42	0x0
290*c36125f6SEmmanuel Vadot #define	GMAC_MII_CLK_100_150M_DIV62	0x1
291*c36125f6SEmmanuel Vadot #define	GMAC_MII_CLK_25_35M_DIV16	0x2
292*c36125f6SEmmanuel Vadot #define	GMAC_MII_CLK_35_60M_DIV26	0x3
293*c36125f6SEmmanuel Vadot #define	GMAC_MII_CLK_150_250M_DIV102	0x4
294*c36125f6SEmmanuel Vadot #define	GMAC_MII_CLK_250_300M_DIV124	0x5
295*c36125f6SEmmanuel Vadot #define	GMAC_MII_CLK_DIV4		0x8
296*c36125f6SEmmanuel Vadot #define	GMAC_MII_CLK_DIV6		0x9
297*c36125f6SEmmanuel Vadot #define	GMAC_MII_CLK_DIV8		0xa
298*c36125f6SEmmanuel Vadot #define	GMAC_MII_CLK_DIV10		0xb
299*c36125f6SEmmanuel Vadot #define	GMAC_MII_CLK_DIV12		0xc
300*c36125f6SEmmanuel Vadot #define	GMAC_MII_CLK_DIV14		0xd
301*c36125f6SEmmanuel Vadot #define	GMAC_MII_CLK_DIV16		0xe
302*c36125f6SEmmanuel Vadot #define	GMAC_MII_CLK_DIV18		0xf
303*c36125f6SEmmanuel Vadot 
304*c36125f6SEmmanuel Vadot #endif	/* __DWC1000_REG_H__ */
305