if_enetreg.h revision 1.3.4.2 1 1.3.4.2 jdolecek /* $NetBSD: if_enetreg.h,v 1.3.4.2 2017/12/03 11:35:53 jdolecek Exp $ */
2 1.3.4.2 jdolecek
3 1.3.4.2 jdolecek /*-
4 1.3.4.2 jdolecek * Copyright (c) 2014 Ryo Shimizu <ryo (at) nerv.org>
5 1.3.4.2 jdolecek * All rights reserved.
6 1.3.4.2 jdolecek *
7 1.3.4.2 jdolecek * Redistribution and use in source and binary forms, with or without
8 1.3.4.2 jdolecek * modification, are permitted provided that the following conditions
9 1.3.4.2 jdolecek * are met:
10 1.3.4.2 jdolecek * 1. Redistributions of source code must retain the above copyright
11 1.3.4.2 jdolecek * notice, this list of conditions and the following disclaimer.
12 1.3.4.2 jdolecek * 2. Redistributions in binary form must reproduce the above copyright
13 1.3.4.2 jdolecek * notice, this list of conditions and the following disclaimer in the
14 1.3.4.2 jdolecek * documentation and/or other materials provided with the distribution.
15 1.3.4.2 jdolecek *
16 1.3.4.2 jdolecek * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17 1.3.4.2 jdolecek * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 1.3.4.2 jdolecek * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 1.3.4.2 jdolecek * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
20 1.3.4.2 jdolecek * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 1.3.4.2 jdolecek * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22 1.3.4.2 jdolecek * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23 1.3.4.2 jdolecek * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
24 1.3.4.2 jdolecek * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
25 1.3.4.2 jdolecek * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26 1.3.4.2 jdolecek * POSSIBILITY OF SUCH DAMAGE.
27 1.3.4.2 jdolecek */
28 1.3.4.2 jdolecek
29 1.3.4.2 jdolecek /*
30 1.3.4.2 jdolecek * i.MX6,7 10/100/1000-Mbps ethernet MAC (ENET)
31 1.3.4.2 jdolecek */
32 1.3.4.2 jdolecek
33 1.3.4.2 jdolecek #ifndef _ARM_IMX_IF_ENETREG_H_
34 1.3.4.2 jdolecek #define _ARM_IMX_IF_ENETREG_H_
35 1.3.4.2 jdolecek
36 1.3.4.2 jdolecek #include <sys/cdefs.h>
37 1.3.4.2 jdolecek
38 1.3.4.2 jdolecek #define ENET_EIR 0x00000004
39 1.3.4.2 jdolecek # define ENET_EIR_BABR __BIT(30)
40 1.3.4.2 jdolecek # define ENET_EIR_BABT __BIT(29)
41 1.3.4.2 jdolecek # define ENET_EIR_GRA __BIT(28)
42 1.3.4.2 jdolecek # define ENET_EIR_TXF __BIT(27)
43 1.3.4.2 jdolecek # define ENET_EIR_TXB __BIT(26)
44 1.3.4.2 jdolecek # define ENET_EIR_RXF __BIT(25)
45 1.3.4.2 jdolecek # define ENET_EIR_RXB __BIT(24)
46 1.3.4.2 jdolecek # define ENET_EIR_MII __BIT(23)
47 1.3.4.2 jdolecek # define ENET_EIR_EBERR __BIT(22)
48 1.3.4.2 jdolecek # define ENET_EIR_LC __BIT(21)
49 1.3.4.2 jdolecek # define ENET_EIR_RL __BIT(20)
50 1.3.4.2 jdolecek # define ENET_EIR_UN __BIT(19)
51 1.3.4.2 jdolecek # define ENET_EIR_PLR __BIT(18)
52 1.3.4.2 jdolecek # define ENET_EIR_WAKEUP __BIT(17)
53 1.3.4.2 jdolecek # define ENET_EIR_TS_AVAIL __BIT(16)
54 1.3.4.2 jdolecek # define ENET_EIR_TS_TIMER __BIT(15)
55 1.3.4.2 jdolecek # define ENET_EIR_RXFLUSH_2 __BIT(14) /* imx7 */
56 1.3.4.2 jdolecek # define ENET_EIR_RXFLUSH_1 __BIT(13) /* imx7 */
57 1.3.4.2 jdolecek # define ENET_EIR_RXFLUSH_0 __BIT(12) /* imx7 */
58 1.3.4.2 jdolecek # define ENET_EIR_TXF2 __BIT(7) /* imx7 */
59 1.3.4.2 jdolecek # define ENET_EIR_TXB2 __BIT(6) /* imx7 */
60 1.3.4.2 jdolecek # define ENET_EIR_RXF2 __BIT(5) /* imx7 */
61 1.3.4.2 jdolecek # define ENET_EIR_RXB2 __BIT(4) /* imx7 */
62 1.3.4.2 jdolecek # define ENET_EIR_TXF1 __BIT(3) /* imx7 */
63 1.3.4.2 jdolecek # define ENET_EIR_TXB1 __BIT(2) /* imx7 */
64 1.3.4.2 jdolecek # define ENET_EIR_RXF1 __BIT(1) /* imx7 */
65 1.3.4.2 jdolecek # define ENET_EIR_RXB1 __BIT(1) /* imx7 */
66 1.3.4.2 jdolecek #define ENET_EIMR 0x00000008
67 1.3.4.2 jdolecek #define ENET_RDAR 0x00000010
68 1.3.4.2 jdolecek # define ENET_RDAR_ACTIVE __BIT(24)
69 1.3.4.2 jdolecek #define ENET_TDAR 0x00000014
70 1.3.4.2 jdolecek # define ENET_TDAR_ACTIVE __BIT(24)
71 1.3.4.2 jdolecek
72 1.3.4.2 jdolecek #define ENET_ECR 0x00000024
73 1.3.4.2 jdolecek # define ENET_ECR_SVLANDBL __BIT(11) /* imx7 */
74 1.3.4.2 jdolecek # define ENET_ECR_VLANUE2ND __BIT(10) /* imx7 */
75 1.3.4.2 jdolecek # define ENET_ECR_SVLANEN __BIT(9) /* imx7 */
76 1.3.4.2 jdolecek # define ENET_ECR_DBSWP __BIT(8)
77 1.3.4.2 jdolecek # define ENET_ECR_STOPEN __BIT(7)
78 1.3.4.2 jdolecek # define ENET_ECR_DBGEN __BIT(6)
79 1.3.4.2 jdolecek # define ENET_ECR_SPEED __BIT(5)
80 1.3.4.2 jdolecek # define ENET_ECR_EN1588 __BIT(4)
81 1.3.4.2 jdolecek # define ENET_ECR_SLEEP __BIT(3)
82 1.3.4.2 jdolecek # define ENET_ECR_MAGICEN __BIT(2)
83 1.3.4.2 jdolecek # define ENET_ECR_ETHEREN __BIT(1)
84 1.3.4.2 jdolecek # define ENET_ECR_RESET __BIT(0)
85 1.3.4.2 jdolecek #define ENET_MMFR 0x00000040
86 1.3.4.2 jdolecek # define ENET_MMFR_ST 0x40000000
87 1.3.4.2 jdolecek # define ENET_MMFR_OP_FORCEWRITE 0x00000000
88 1.3.4.2 jdolecek # define ENET_MMFR_OP_WRITE 0x10000000
89 1.3.4.2 jdolecek # define ENET_MMFR_OP_READ 0x20000000
90 1.3.4.2 jdolecek # define ENET_MMFR_OP_FORCEREAD 0x30000000
91 1.3.4.2 jdolecek # define ENET_MMFR_TA 0x00020000
92 1.3.4.2 jdolecek # define ENET_MMFR_PHY_ADDR(phy) __SHIFTIN(phy, __BITS(27, 23))
93 1.3.4.2 jdolecek # define ENET_MMFR_PHY_REG(reg) __SHIFTIN(reg, __BITS(22, 18))
94 1.3.4.2 jdolecek # define ENET_MMFR_DATAMASK 0x0000ffff
95 1.3.4.2 jdolecek #define ENET_MSCR 0x00000044
96 1.3.4.2 jdolecek # define ENET_MSCR_HOLDTIME_1CLK 0x00000000
97 1.3.4.2 jdolecek # define ENET_MSCR_HOLDTIME_2CLK 0x00000100
98 1.3.4.2 jdolecek # define ENET_MSCR_HOLDTIME_3CLK 0x00000200
99 1.3.4.2 jdolecek # define ENET_MSCR_HOLDTIME_8CLK 0x00000700
100 1.3.4.2 jdolecek # define ENET_MSCR_DIS_PRE __BIT(7)
101 1.3.4.2 jdolecek # define ENET_MSCR_MII_SPEED_25MHZ __SHIFTIN(4, __BITS(6, 1))
102 1.3.4.2 jdolecek # define ENET_MSCR_MII_SPEED_33MHZ __SHIFTIN(6, __BITS(6, 1))
103 1.3.4.2 jdolecek # define ENET_MSCR_MII_SPEED_40MHZ __SHIFTIN(7, __BITS(6, 1))
104 1.3.4.2 jdolecek # define ENET_MSCR_MII_SPEED_50MHZ __SHIFTIN(9, __BITS(6, 1))
105 1.3.4.2 jdolecek # define ENET_MSCR_MII_SPEED_66MHZ __SHIFTIN(13, __BITS(6, 1))
106 1.3.4.2 jdolecek
107 1.3.4.2 jdolecek #define ENET_MIBC 0x00000064
108 1.3.4.2 jdolecek # define ENET_MIBC_MIB_DIS __BIT(31)
109 1.3.4.2 jdolecek # define ENET_MIBC_MIB_IDLE __BIT(30)
110 1.3.4.2 jdolecek # define ENET_MIBC_MIB_CLEAR __BIT(29)
111 1.3.4.2 jdolecek
112 1.3.4.2 jdolecek #define ENET_RCR 0x00000084
113 1.3.4.2 jdolecek # define ENET_RCR_GRS __BIT(31)
114 1.3.4.2 jdolecek # define ENET_RCR_NLC __BIT(30)
115 1.3.4.2 jdolecek # define ENET_RCR_MAX_FL(n) __SHIFTIN(n, __BITS(29, 16))
116 1.3.4.2 jdolecek # define ENET_RCR_CFEN __BIT(15)
117 1.3.4.2 jdolecek # define ENET_RCR_CRCFWD __BIT(14)
118 1.3.4.2 jdolecek # define ENET_RCR_PAUFWD __BIT(13)
119 1.3.4.2 jdolecek # define ENET_RCR_PADEN __BIT(12)
120 1.3.4.2 jdolecek # define ENET_RCR_RMII_10T __BIT(9)
121 1.3.4.2 jdolecek # define ENET_RCR_RMII_MODE __BIT(8)
122 1.3.4.2 jdolecek # define ENET_RCR_RGMII_EN __BIT(6)
123 1.3.4.2 jdolecek # define ENET_RCR_FCE __BIT(5)
124 1.3.4.2 jdolecek # define ENET_RCR_BC_REJ __BIT(4)
125 1.3.4.2 jdolecek # define ENET_RCR_PROM __BIT(3)
126 1.3.4.2 jdolecek # define ENET_RCR_MII_MODE __BIT(2)
127 1.3.4.2 jdolecek # define ENET_RCR_DRT __BIT(1)
128 1.3.4.2 jdolecek # define ENET_RCR_LOOP __BIT(0)
129 1.3.4.2 jdolecek
130 1.3.4.2 jdolecek #define ENET_TCR 0x000000c4
131 1.3.4.2 jdolecek # define ENET_TCR_FDEN __BIT(2)
132 1.3.4.2 jdolecek
133 1.3.4.2 jdolecek #define ENET_PALR 0x000000e4
134 1.3.4.2 jdolecek #define ENET_PAUR 0x000000e8
135 1.3.4.2 jdolecek #define ENET_OPD 0x000000ec
136 1.3.4.2 jdolecek
137 1.3.4.2 jdolecek #define ENET_TXIC0 0x000000f0 /* imx7 */
138 1.3.4.2 jdolecek #define ENET_TXIC1 0x000000f4 /* imx7 */
139 1.3.4.2 jdolecek #define ENET_TXIC2 0x000000f8 /* imx7 */
140 1.3.4.2 jdolecek #define ENET_RXIC0 0x00000100 /* imx7 */
141 1.3.4.2 jdolecek #define ENET_RXIC1 0x00000104 /* imx7 */
142 1.3.4.2 jdolecek #define ENET_RXIC2 0x00000108 /* imx7 */
143 1.3.4.2 jdolecek
144 1.3.4.2 jdolecek #define ENET_IAUR 0x00000118
145 1.3.4.2 jdolecek #define ENET_IALR 0x0000011c
146 1.3.4.2 jdolecek #define ENET_GAUR 0x00000120
147 1.3.4.2 jdolecek #define ENET_GALR 0x00000124
148 1.3.4.2 jdolecek #define ENET_TFWR 0x00000144
149 1.3.4.2 jdolecek # define ENET_TFWR_STRFWD __BIT(8)
150 1.3.4.2 jdolecek # define ENET_TFWR_FIFO(n) __SHIFTIN(((n) / 64), __BITS(5, 0))
151 1.3.4.2 jdolecek
152 1.3.4.2 jdolecek #define ENET_RDSR1 0x00000160 /* imx7 */
153 1.3.4.2 jdolecek #define ENET_TDSR1 0x00000164 /* imx7 */
154 1.3.4.2 jdolecek #define ENET_MRBR1 0x00000168 /* imx7 */
155 1.3.4.2 jdolecek #define ENET_RDSR2 0x0000016c /* imx7 */
156 1.3.4.2 jdolecek #define ENET_TDSR2 0x00000170 /* imx7 */
157 1.3.4.2 jdolecek #define ENET_MRBR2 0x00000174 /* imx7 */
158 1.3.4.2 jdolecek
159 1.3.4.2 jdolecek #define ENET_RDSR 0x00000180
160 1.3.4.2 jdolecek #define ENET_TDSR 0x00000184
161 1.3.4.2 jdolecek #define ENET_MRBR 0x00000188
162 1.3.4.2 jdolecek #define ENET_RSFL 0x00000190
163 1.3.4.2 jdolecek #define ENET_RSEM 0x00000194
164 1.3.4.2 jdolecek #define ENET_RAEM 0x00000198
165 1.3.4.2 jdolecek #define ENET_RAFL 0x0000019c
166 1.3.4.2 jdolecek #define ENET_TSEM 0x000001a0
167 1.3.4.2 jdolecek #define ENET_TAEM 0x000001a4
168 1.3.4.2 jdolecek #define ENET_TAFL 0x000001a8
169 1.3.4.2 jdolecek #define ENET_TIPG 0x000001ac
170 1.3.4.2 jdolecek #define ENET_FTRL 0x000001b0
171 1.3.4.2 jdolecek #define ENET_TACC 0x000001c0
172 1.3.4.2 jdolecek # define ENET_TACC_PROCHK __BIT(4)
173 1.3.4.2 jdolecek # define ENET_TACC_IPCHK __BIT(3)
174 1.3.4.2 jdolecek # define ENET_TACC_SHIFT16 __BIT(0)
175 1.3.4.2 jdolecek #define ENET_RACC 0x000001c4
176 1.3.4.2 jdolecek # define ENET_RACC_SHIFT16 __BIT(7)
177 1.3.4.2 jdolecek # define ENET_RACC_LINEDIS __BIT(6)
178 1.3.4.2 jdolecek # define ENET_RACC_PRODIS __BIT(2)
179 1.3.4.2 jdolecek # define ENET_RACC_IPDIS __BIT(1)
180 1.3.4.2 jdolecek # define ENET_RACC_PADREM __BIT(0)
181 1.3.4.2 jdolecek
182 1.3.4.2 jdolecek #define ENET_RCMR1 0x000001c8 /* imx7 */
183 1.3.4.2 jdolecek #define ENET_RCMR2 0x000001cc /* imx7 */
184 1.3.4.2 jdolecek #define ENET_DMA1CFG 0x000001d8 /* imx7 */
185 1.3.4.2 jdolecek #define ENET_DMA2CFG 0x000001dc /* imx7 */
186 1.3.4.2 jdolecek #define ENET_RDAR1 0x000001e0 /* imx7 */
187 1.3.4.2 jdolecek #define ENET_TDAR1 0x000001e4 /* imx7 */
188 1.3.4.2 jdolecek #define ENET_RDAR2 0x000001e8 /* imx7 */
189 1.3.4.2 jdolecek #define ENET_TDAR2 0x000001ec /* imx7 */
190 1.3.4.2 jdolecek #define ENET_QOS 0x000001f0 /* imx7 */
191 1.3.4.2 jdolecek
192 1.3.4.2 jdolecek /* Statistics counters */
193 1.3.4.2 jdolecek #define ENET_RMON_T_DROP 0x00000200
194 1.3.4.2 jdolecek #define ENET_RMON_T_PACKETS 0x00000204
195 1.3.4.2 jdolecek #define ENET_RMON_T_BC_PKT 0x00000208
196 1.3.4.2 jdolecek #define ENET_RMON_T_MC_PKT 0x0000020c
197 1.3.4.2 jdolecek #define ENET_RMON_T_CRC_ALIGN 0x00000210
198 1.3.4.2 jdolecek #define ENET_RMON_T_UNDERSIZE 0x00000214
199 1.3.4.2 jdolecek #define ENET_RMON_T_OVERSIZE 0x00000218
200 1.3.4.2 jdolecek #define ENET_RMON_T_FRAG 0x0000021c
201 1.3.4.2 jdolecek #define ENET_RMON_T_JAB 0x00000220
202 1.3.4.2 jdolecek #define ENET_RMON_T_COL 0x00000224
203 1.3.4.2 jdolecek #define ENET_RMON_T_P64 0x00000228
204 1.3.4.2 jdolecek #define ENET_RMON_T_P65TO127N 0x0000022c
205 1.3.4.2 jdolecek #define ENET_RMON_T_P128TO255N 0x00000230
206 1.3.4.2 jdolecek #define ENET_RMON_T_P256TO511 0x00000234
207 1.3.4.2 jdolecek #define ENET_RMON_T_P512TO1023 0x00000238
208 1.3.4.2 jdolecek #define ENET_RMON_T_P1024TO2047 0x0000023c
209 1.3.4.2 jdolecek #define ENET_RMON_T_P_GTE2048 0x00000240
210 1.3.4.2 jdolecek #define ENET_RMON_T_OCTETS 0x00000244
211 1.3.4.2 jdolecek #define ENET_IEEE_T_DROP 0x00000248
212 1.3.4.2 jdolecek #define ENET_IEEE_T_FRAME_OK 0x0000024c
213 1.3.4.2 jdolecek #define ENET_IEEE_T_1COL 0x00000250
214 1.3.4.2 jdolecek #define ENET_IEEE_T_MCOL 0x00000254
215 1.3.4.2 jdolecek #define ENET_IEEE_T_DEF 0x00000258
216 1.3.4.2 jdolecek #define ENET_IEEE_T_LCOL 0x0000025c
217 1.3.4.2 jdolecek #define ENET_IEEE_T_EXCOL 0x00000260
218 1.3.4.2 jdolecek #define ENET_IEEE_T_MACERR 0x00000264
219 1.3.4.2 jdolecek #define ENET_IEEE_T_CSERR 0x00000268
220 1.3.4.2 jdolecek #define ENET_IEEE_T_SQE 0x0000026c
221 1.3.4.2 jdolecek #define ENET_IEEE_T_FDXFC 0x00000270
222 1.3.4.2 jdolecek #define ENET_IEEE_T_OCTETS_OK 0x00000274
223 1.3.4.2 jdolecek #define ENET_RMON_R_PACKETS 0x00000284
224 1.3.4.2 jdolecek #define ENET_RMON_R_BC_PKT 0x00000288
225 1.3.4.2 jdolecek #define ENET_RMON_R_MC_PKT 0x0000028c
226 1.3.4.2 jdolecek #define ENET_RMON_R_CRC_ALIGN 0x00000290
227 1.3.4.2 jdolecek #define ENET_RMON_R_UNDERSIZE 0x00000294
228 1.3.4.2 jdolecek #define ENET_RMON_R_OVERSIZE 0x00000298
229 1.3.4.2 jdolecek #define ENET_RMON_R_FRAG 0x0000029c
230 1.3.4.2 jdolecek #define ENET_RMON_R_JAB 0x000002a0
231 1.3.4.2 jdolecek #define ENET_RMON_R_RESVD_0 0x000002a4
232 1.3.4.2 jdolecek #define ENET_RMON_R_P64 0x000002a8
233 1.3.4.2 jdolecek #define ENET_RMON_R_P65TO127 0x000002ac
234 1.3.4.2 jdolecek #define ENET_RMON_R_P128TO255 0x000002b0
235 1.3.4.2 jdolecek #define ENET_RMON_R_P256TO511 0x000002b4
236 1.3.4.2 jdolecek #define ENET_RMON_R_P512TO1023 0x000002b8
237 1.3.4.2 jdolecek #define ENET_RMON_R_P1024TO2047 0x000002bc
238 1.3.4.2 jdolecek #define ENET_RMON_R_P_GTE2048 0x000002c0
239 1.3.4.2 jdolecek #define ENET_RMON_R_OCTETS 0x000002c4
240 1.3.4.2 jdolecek #define ENET_IEEE_R_DROP 0x000002c8
241 1.3.4.2 jdolecek #define ENET_IEEE_R_FRAME_OK 0x000002cc
242 1.3.4.2 jdolecek #define ENET_IEEE_R_CRC 0x000002d0
243 1.3.4.2 jdolecek #define ENET_IEEE_R_ALIGN 0x000002d4
244 1.3.4.2 jdolecek #define ENET_IEEE_R_MACERR 0x000002d8
245 1.3.4.2 jdolecek #define ENET_IEEE_R_FDXFC 0x000002dc
246 1.3.4.2 jdolecek #define ENET_IEEE_R_OCTETS_OK 0x000002e0
247 1.3.4.2 jdolecek
248 1.3.4.2 jdolecek /* IEEE1588 control */
249 1.3.4.2 jdolecek #define ENET_ATCR 0x00000400
250 1.3.4.2 jdolecek #define ENET_ATVR 0x00000404
251 1.3.4.2 jdolecek #define ENET_ATOFF 0x00000408
252 1.3.4.2 jdolecek #define ENET_ATPER 0x0000040c
253 1.3.4.2 jdolecek #define ENET_ATCOR 0x00000410
254 1.3.4.2 jdolecek #define ENET_ATINC 0x00000414
255 1.3.4.2 jdolecek #define ENET_ATSTMP 0x00000418
256 1.3.4.2 jdolecek
257 1.3.4.2 jdolecek /* Capture/compare block */
258 1.3.4.2 jdolecek #define ENET_TGSR 0x00000604
259 1.3.4.2 jdolecek #define ENET_TCSR0 0x00000608
260 1.3.4.2 jdolecek #define ENET_TCCR0 0x0000060c
261 1.3.4.2 jdolecek #define ENET_TCSR1 0x00000610
262 1.3.4.2 jdolecek #define ENET_TCCR1 0x00000614
263 1.3.4.2 jdolecek #define ENET_TCSR2 0x00000618
264 1.3.4.2 jdolecek #define ENET_TCCR2 0x0000061c
265 1.3.4.2 jdolecek #define ENET_TCSR3 0x00000620
266 1.3.4.2 jdolecek #define ENET_TCCR3 0x00000624
267 1.3.4.2 jdolecek
268 1.3.4.2 jdolecek #define AIPS_ENET_SIZE 0x00000800
269 1.3.4.2 jdolecek
270 1.3.4.2 jdolecek /* enhanced transmit buffer descriptor */
271 1.3.4.2 jdolecek struct enet_txdesc {
272 1.3.4.2 jdolecek uint32_t tx_flags1_len;
273 1.3.4.2 jdolecek #define TXFLAGS1_R __BIT(31) /* Ready */
274 1.3.4.2 jdolecek #define TXFLAGS1_T1 __BIT(30) /* TX software owner1 */
275 1.3.4.2 jdolecek #define TXFLAGS1_W __BIT(29) /* Wrap */
276 1.3.4.2 jdolecek #define TXFLAGS1_T2 __BIT(28) /* TX software owner2 */
277 1.3.4.2 jdolecek #define TXFLAGS1_L __BIT(27) /* Last in frame */
278 1.3.4.2 jdolecek #define TXFLAGS1_TC __BIT(26) /* Transmit CRC */
279 1.3.4.2 jdolecek #define TXFLAGS1_ABC __BIT(25) /* Append bad CRC */
280 1.3.4.2 jdolecek #define TXFLAGS1_LEN(n) ((n) & 0xffff)
281 1.3.4.2 jdolecek uint32_t tx_databuf;
282 1.3.4.2 jdolecek uint32_t tx_flags2;
283 1.3.4.2 jdolecek #define TXFLAGS2_INT __BIT(30) /* Interrupt */
284 1.3.4.2 jdolecek #define TXFLAGS2_TS __BIT(29) /* Timestamp */
285 1.3.4.2 jdolecek #define TXFLAGS2_PINS __BIT(28) /* Insert Proto csum */
286 1.3.4.2 jdolecek #define TXFLAGS2_IINS __BIT(27) /* Insert IP csum */
287 1.3.4.2 jdolecek #define TXFLAGS2_TXE __BIT(15) /* Transmit error */
288 1.3.4.2 jdolecek #define TXFLAGS2_UE __BIT(13) /* Underflow error */
289 1.3.4.2 jdolecek #define TXFLAGS2_EE __BIT(12) /* Excess colls Err */
290 1.3.4.2 jdolecek #define TXFLAGS2_FE __BIT(11) /* Frame Error */
291 1.3.4.2 jdolecek #define TXFLAGS2_LCE __BIT(10) /* Late collision Err */
292 1.3.4.2 jdolecek #define TXFLAGS2_OE __BIT(9) /* Overfow Error */
293 1.3.4.2 jdolecek #define TXFLAGS2_TSE __BIT(8) /* Timestamp Error */
294 1.3.4.2 jdolecek uint32_t tx__reserved1;
295 1.3.4.2 jdolecek uint32_t tx_flags3;
296 1.3.4.2 jdolecek #define TXFLAGS3_BDU __BIT(31)
297 1.3.4.2 jdolecek uint32_t tx_1588timestamp;
298 1.3.4.2 jdolecek uint32_t tx__reserved2;
299 1.3.4.2 jdolecek uint32_t tx__reserved3;
300 1.3.4.2 jdolecek } __packed;
301 1.3.4.2 jdolecek
302 1.3.4.2 jdolecek /* enhanced receive buffer descriptor */
303 1.3.4.2 jdolecek struct enet_rxdesc {
304 1.3.4.2 jdolecek uint32_t rx_flags1_len;
305 1.3.4.2 jdolecek #define RXFLAGS1_E __BIT(31) /* Empty */
306 1.3.4.2 jdolecek #define RXFLAGS1_R1 __BIT(30) /* RX software owner1 */
307 1.3.4.2 jdolecek #define RXFLAGS1_W __BIT(29) /* Wrap */
308 1.3.4.2 jdolecek #define RXFLAGS1_R2 __BIT(28) /* RX software owner2 */
309 1.3.4.2 jdolecek #define RXFLAGS1_L __BIT(27) /* Last in frame */
310 1.3.4.2 jdolecek #define RXFLAGS1_M __BIT(24) /* Miss */
311 1.3.4.2 jdolecek #define RXFLAGS1_BC __BIT(23) /* Broadcast */
312 1.3.4.2 jdolecek #define RXFLAGS1_MC __BIT(22) /* Multicast */
313 1.3.4.2 jdolecek #define RXFLAGS1_LG __BIT(21) /* Length Violation */
314 1.3.4.2 jdolecek #define RXFLAGS1_NO __BIT(20) /* Non-Octet aligned */
315 1.3.4.2 jdolecek #define RXFLAGS1_CR __BIT(18) /* CRC or frame error */
316 1.3.4.2 jdolecek #define RXFLAGS1_OV __BIT(17) /* Overrun */
317 1.3.4.2 jdolecek #define RXFLAGS1_TR __BIT(16) /* Truncated */
318 1.3.4.2 jdolecek #define RXFLAGS1_LEN(n) ((n) & 0xffff)
319 1.3.4.2 jdolecek uint32_t rx_databuf;
320 1.3.4.2 jdolecek uint32_t rx_flags2;
321 1.3.4.2 jdolecek #define RXFLAGS2_ME __BIT(31) /* MAC error */
322 1.3.4.2 jdolecek #define RXFLAGS2_PE __BIT(26) /* PHY error */
323 1.3.4.2 jdolecek #define RXFLAGS2_CE __BIT(25) /* Collision */
324 1.3.4.2 jdolecek #define RXFLAGS2_UC __BIT(24) /* Unicast */
325 1.3.4.2 jdolecek #define RXFLAGS2_INT __BIT(23) /* RXB/RXF interrupt */
326 1.3.4.2 jdolecek #define RXFLAGS2_VPCP __BITS(15, 31) /* VLAN prio pts (imx7) */
327 1.3.4.2 jdolecek #define RXFLAGS2_ICE __BIT(5) /* IP csum error */
328 1.3.4.2 jdolecek #define RXFLAGS2_PCR __BIT(4) /* Proto csum error */
329 1.3.4.2 jdolecek #define RXFLAGS2_VLAN __BIT(2) /* VLAN */
330 1.3.4.2 jdolecek #define RXFLAGS2_IPV6 __BIT(1) /* IPv6 frame */
331 1.3.4.2 jdolecek #define RXFLAGS2_FRAG __BIT(0) /* IPv4 fragment */
332 1.3.4.2 jdolecek #if _BYTE_ORDER == _LITTLE_ENDIAN
333 1.3.4.2 jdolecek uint16_t rx_cksum;
334 1.3.4.2 jdolecek uint8_t rx_proto;
335 1.3.4.2 jdolecek uint8_t rx_hl;
336 1.3.4.2 jdolecek #else
337 1.3.4.2 jdolecek uint8_t rx_hl;
338 1.3.4.2 jdolecek uint8_t rx_proto;
339 1.3.4.2 jdolecek uint16_t rx_cksum;
340 1.3.4.2 jdolecek #endif
341 1.3.4.2 jdolecek uint32_t rx_flags3;
342 1.3.4.2 jdolecek #define RXFLAGS3_BDU __BIT(31)
343 1.3.4.2 jdolecek uint32_t rx_1588timestamp;
344 1.3.4.2 jdolecek uint32_t rx__reserved2;
345 1.3.4.2 jdolecek uint32_t rx__reserved3;
346 1.3.4.2 jdolecek } __packed;
347 1.3.4.2 jdolecek
348 1.3.4.2 jdolecek #endif /* _ARM_IMX_IF_ENETREG_H_ */
349