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