xref: /freebsd/sys/dev/vte/if_vtereg.h (revision 95ee2897e98f5d444f26ed2334cc7c439f9c16c6)
12608aefcSPyun YongHyeon /*-
2*4d846d26SWarner Losh  * SPDX-License-Identifier: BSD-2-Clause
3718cf2ccSPedro F. Giffuni  *
42608aefcSPyun YongHyeon  * Copyright (c) 2010, Pyun YongHyeon <yongari@FreeBSD.org>
52608aefcSPyun YongHyeon  * All rights reserved.
62608aefcSPyun YongHyeon  *
72608aefcSPyun YongHyeon  * Redistribution and use in source and binary forms, with or without
82608aefcSPyun YongHyeon  * modification, are permitted provided that the following conditions
92608aefcSPyun YongHyeon  * are met:
102608aefcSPyun YongHyeon  * 1. Redistributions of source code must retain the above copyright
112608aefcSPyun YongHyeon  *    notice unmodified, this list of conditions, and the following
122608aefcSPyun YongHyeon  *    disclaimer.
132608aefcSPyun YongHyeon  * 2. Redistributions in binary form must reproduce the above copyright
142608aefcSPyun YongHyeon  *    notice, this list of conditions and the following disclaimer in the
152608aefcSPyun YongHyeon  *    documentation and/or other materials provided with the distribution.
162608aefcSPyun YongHyeon  *
172608aefcSPyun YongHyeon  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
182608aefcSPyun YongHyeon  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
192608aefcSPyun YongHyeon  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
202608aefcSPyun YongHyeon  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
212608aefcSPyun YongHyeon  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
222608aefcSPyun YongHyeon  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
232608aefcSPyun YongHyeon  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
242608aefcSPyun YongHyeon  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
252608aefcSPyun YongHyeon  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
262608aefcSPyun YongHyeon  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
272608aefcSPyun YongHyeon  * SUCH DAMAGE.
282608aefcSPyun YongHyeon  */
292608aefcSPyun YongHyeon 
302608aefcSPyun YongHyeon #ifndef	_IF_VTEREG_H
312608aefcSPyun YongHyeon #define	_IF_VTEREG_H
322608aefcSPyun YongHyeon 
332608aefcSPyun YongHyeon /*
342608aefcSPyun YongHyeon  * RDC Semiconductor PCI vendor ID
352608aefcSPyun YongHyeon  */
362608aefcSPyun YongHyeon #define	VENDORID_RDC		0x17F3
372608aefcSPyun YongHyeon 
382608aefcSPyun YongHyeon /*
392608aefcSPyun YongHyeon  * Vortex86 RDC R6040 FastEthernet device ID
402608aefcSPyun YongHyeon  */
412608aefcSPyun YongHyeon #define	DEVICEID_RDC_R6040		0x6040	/* PMX-1000 */
422608aefcSPyun YongHyeon 
432608aefcSPyun YongHyeon /* MAC control register 0 */
442608aefcSPyun YongHyeon #define	VTE_MCR0			0x00
452608aefcSPyun YongHyeon #define	MCR0_ACCPT_ERR			0x0001
462608aefcSPyun YongHyeon #define	MCR0_RX_ENB			0x0002
472608aefcSPyun YongHyeon #define	MCR0_ACCPT_RUNT			0x0004
482608aefcSPyun YongHyeon #define	MCR0_ACCPT_LONG_PKT		0x0008
492608aefcSPyun YongHyeon #define	MCR0_ACCPT_DRIBBLE		0x0010
502608aefcSPyun YongHyeon #define	MCR0_PROMISC			0x0020
51d8f226b6SPyun YongHyeon #define	MCR0_BROADCAST_DIS		0x0040
522608aefcSPyun YongHyeon #define	MCR0_RX_EARLY_INTR		0x0080
532608aefcSPyun YongHyeon #define	MCR0_MULTICAST			0x0100
542608aefcSPyun YongHyeon #define	MCR0_FC_ENB			0x0200
552608aefcSPyun YongHyeon #define	MCR0_TX_ENB			0x1000
562608aefcSPyun YongHyeon #define	MCR0_TX_EARLY_INTR		0x4000
572608aefcSPyun YongHyeon #define	MCR0_FULL_DUPLEX		0x8000
582608aefcSPyun YongHyeon 
592608aefcSPyun YongHyeon /* MAC control register 1 */
602608aefcSPyun YongHyeon #define	VTE_MCR1			0x04
612608aefcSPyun YongHyeon #define	MCR1_MAC_RESET			0x0001
622608aefcSPyun YongHyeon #define	MCR1_MAC_LOOPBACK		0x0002
632608aefcSPyun YongHyeon #define	MCR1_EXCESS_COL_RETRANS_DIS	0x0004
642608aefcSPyun YongHyeon #define	MCR1_AUTO_CHG_DUPLEX		0x0008
652608aefcSPyun YongHyeon #define	MCR1_PKT_LENGTH_1518		0x0010
662608aefcSPyun YongHyeon #define	MCR1_PKT_LENGTH_1522		0x0020
672608aefcSPyun YongHyeon #define	MCR1_PKT_LENGTH_1534		0x0030
682608aefcSPyun YongHyeon #define	MCR1_PKT_LENGTH_1537		0x0000
692608aefcSPyun YongHyeon #define	MCR1_EARLY_INTR_THRESH_1129	0x0000
702608aefcSPyun YongHyeon #define	MCR1_EARLY_INTR_THRESH_1257	0x0040
712608aefcSPyun YongHyeon #define	MCR1_EARLY_INTR_THRESH_1385	0x0080
722608aefcSPyun YongHyeon #define	MCR1_EARLY_INTR_THRESH_1513	0x00C0
732608aefcSPyun YongHyeon #define	MCR1_EXCESS_COL_RETRY_16	0x0000
742608aefcSPyun YongHyeon #define	MCR1_EXCESS_COL_RETRY_32	0x0100
752608aefcSPyun YongHyeon #define	MCR1_FC_ACTIVE			0x0200
762608aefcSPyun YongHyeon #define	MCR1_RX_DESC_HASH_IDX		0x4000
772608aefcSPyun YongHyeon #define	MCR1_RX_UNICAST_HASH		0x8000
782608aefcSPyun YongHyeon 
792608aefcSPyun YongHyeon #define	MCR1_PKT_LENGTH_MASK		0x0030
802608aefcSPyun YongHyeon #define	MCR1_EARLY_INTR_THRESH_MASK	0x00C0
812608aefcSPyun YongHyeon 
822608aefcSPyun YongHyeon /* MAC bus control register */
832608aefcSPyun YongHyeon #define	VTE_MBCR			0x08
842608aefcSPyun YongHyeon #define	MBCR_FIFO_XFER_LENGTH_4		0x0000
852608aefcSPyun YongHyeon #define	MBCR_FIFO_XFER_LENGTH_8		0x0001
862608aefcSPyun YongHyeon #define	MBCR_FIFO_XFER_LENGTH_16	0x0002
872608aefcSPyun YongHyeon #define	MBCR_FIFO_XFER_LENGTH_32	0x0003
882608aefcSPyun YongHyeon #define	MBCR_TX_FIFO_THRESH_16		0x0000
892608aefcSPyun YongHyeon #define	MBCR_TX_FIFO_THRESH_32		0x0004
902608aefcSPyun YongHyeon #define	MBCR_TX_FIFO_THRESH_64		0x0008
912608aefcSPyun YongHyeon #define	MBCR_TX_FIFO_THRESH_96		0x000C
922608aefcSPyun YongHyeon #define	MBCR_RX_FIFO_THRESH_8		0x0000
932608aefcSPyun YongHyeon #define	MBCR_RX_FIFO_THRESH_16		0x0010
942608aefcSPyun YongHyeon #define	MBCR_RX_FIFO_THRESH_32		0x0020
952608aefcSPyun YongHyeon #define	MBCR_RX_FIFO_THRESH_64		0x0030
962608aefcSPyun YongHyeon #define	MBCR_SDRAM_BUS_REQ_TIMER_MASK	0x1F00
972608aefcSPyun YongHyeon #define	MBCR_SDRAM_BUS_REQ_TIMER_SHIFT	8
982608aefcSPyun YongHyeon #define	MBCR_SDRAM_BUS_REQ_TIMER_DEFAULT	0x1F00
992608aefcSPyun YongHyeon 
1002608aefcSPyun YongHyeon /* MAC TX interrupt control register */
1012608aefcSPyun YongHyeon #define	VTE_MTICR			0x0C
1022608aefcSPyun YongHyeon #define	MTICR_TX_TIMER_MASK		0x001F
1032608aefcSPyun YongHyeon #define	MTICR_TX_BUNDLE_MASK		0x0F00
1042608aefcSPyun YongHyeon #define	VTE_IM_TX_TIMER_DEFAULT		0x7F
1052608aefcSPyun YongHyeon #define	VTE_IM_TX_BUNDLE_DEFAULT	15
1062608aefcSPyun YongHyeon 
1072608aefcSPyun YongHyeon #define	VTE_IM_TIMER_MIN		0
1082608aefcSPyun YongHyeon #define	VTE_IM_TIMER_MAX		82
1092608aefcSPyun YongHyeon #define	VTE_IM_TIMER_MASK		0x001F
1102608aefcSPyun YongHyeon #define	VTE_IM_TIMER_SHIFT		0
1112608aefcSPyun YongHyeon #define	VTE_IM_BUNDLE_MIN		1
1122608aefcSPyun YongHyeon #define	VTE_IM_BUNDLE_MAX		15
1132608aefcSPyun YongHyeon #define	VTE_IM_BUNDLE_SHIFT		8
1142608aefcSPyun YongHyeon 
1152608aefcSPyun YongHyeon /* MAC RX interrupt control register */
1162608aefcSPyun YongHyeon #define	VTE_MRICR			0x10
1172608aefcSPyun YongHyeon #define	MRICR_RX_TIMER_MASK		0x001F
1182608aefcSPyun YongHyeon #define	MRICR_RX_BUNDLE_MASK		0x0F00
1192608aefcSPyun YongHyeon #define	VTE_IM_RX_TIMER_DEFAULT		0x7F
1202608aefcSPyun YongHyeon #define	VTE_IM_RX_BUNDLE_DEFAULT	15
1212608aefcSPyun YongHyeon 
1222608aefcSPyun YongHyeon /* MAC TX poll command register */
1232608aefcSPyun YongHyeon #define	VTE_TX_POLL			0x14
1242608aefcSPyun YongHyeon #define	TX_POLL_START			0x0001
1252608aefcSPyun YongHyeon 
1262608aefcSPyun YongHyeon /* MAC RX buffer size register */
1272608aefcSPyun YongHyeon #define	VTE_MRBSR			0x18
1282608aefcSPyun YongHyeon #define	VTE_MRBSR_SIZE_MASK		0x03FF
1292608aefcSPyun YongHyeon 
1302608aefcSPyun YongHyeon /* MAC RX descriptor control register */
1312608aefcSPyun YongHyeon #define	VTE_MRDCR			0x1A
1322608aefcSPyun YongHyeon #define	VTE_MRDCR_RESIDUE_MASK		0x00FF
1332608aefcSPyun YongHyeon #define	VTE_MRDCR_RX_PAUSE_THRESH_MASK	0xFF00
1342608aefcSPyun YongHyeon #define	VTE_MRDCR_RX_PAUSE_THRESH_SHIFT	8
1352608aefcSPyun YongHyeon 
1362608aefcSPyun YongHyeon /* MAC Last status register */
1372608aefcSPyun YongHyeon #define	VTE_MLSR			0x1C
1382608aefcSPyun YongHyeon #define	MLSR_MULTICAST			0x0001
1392608aefcSPyun YongHyeon #define	MLSR_BROADCAST			0x0002
1402608aefcSPyun YongHyeon #define	MLSR_CRC_ERR			0x0004
1412608aefcSPyun YongHyeon #define	MLSR_RUNT			0x0008
1422608aefcSPyun YongHyeon #define	MLSR_LONG_PKT			0x0010
1432608aefcSPyun YongHyeon #define	MLSR_TRUNC			0x0020
1442608aefcSPyun YongHyeon #define	MLSR_DRIBBLE			0x0040
1452608aefcSPyun YongHyeon #define	MLSR_PHY_ERR			0x0080
1462608aefcSPyun YongHyeon #define	MLSR_TX_FIFO_UNDERRUN		0x0200
1472608aefcSPyun YongHyeon #define	MLSR_RX_DESC_UNAVAIL		0x0400
1482608aefcSPyun YongHyeon #define	MLSR_TX_EXCESS_COL		0x2000
1492608aefcSPyun YongHyeon #define	MLSR_TX_LATE_COL		0x4000
1502608aefcSPyun YongHyeon #define	MLSR_RX_FIFO_OVERRUN		0x8000
1512608aefcSPyun YongHyeon 
1522608aefcSPyun YongHyeon /* MAC MDIO control register */
1532608aefcSPyun YongHyeon #define	VTE_MMDIO			0x20
1542608aefcSPyun YongHyeon #define	MMDIO_REG_ADDR_MASK		0x001F
1552608aefcSPyun YongHyeon #define	MMDIO_PHY_ADDR_MASK		0x1F00
1562608aefcSPyun YongHyeon #define	MMDIO_READ			0x2000
1572608aefcSPyun YongHyeon #define	MMDIO_WRITE			0x4000
1582608aefcSPyun YongHyeon #define	MMDIO_REG_ADDR_SHIFT		0
1592608aefcSPyun YongHyeon #define	MMDIO_PHY_ADDR_SHIFT		8
1602608aefcSPyun YongHyeon 
1612608aefcSPyun YongHyeon /* MAC MDIO read data register */
1622608aefcSPyun YongHyeon #define	VTE_MMRD			0x24
1632608aefcSPyun YongHyeon #define	MMRD_DATA_MASK			0xFFFF
1642608aefcSPyun YongHyeon 
1652608aefcSPyun YongHyeon /* MAC MDIO write data register */
1662608aefcSPyun YongHyeon #define	VTE_MMWD			0x28
1672608aefcSPyun YongHyeon #define	MMWD_DATA_MASK			0xFFFF
1682608aefcSPyun YongHyeon 
1692608aefcSPyun YongHyeon /* MAC TX descriptor start address 0 */
1702608aefcSPyun YongHyeon #define	VTE_MTDSA0			0x2C
1712608aefcSPyun YongHyeon 
1722608aefcSPyun YongHyeon /* MAC TX descriptor start address 1 */
1732608aefcSPyun YongHyeon #define	VTE_MTDSA1			0x30
1742608aefcSPyun YongHyeon 
1752608aefcSPyun YongHyeon /* MAC RX descriptor start address 0 */
1762608aefcSPyun YongHyeon #define	VTE_MRDSA0			0x34
1772608aefcSPyun YongHyeon 
1782608aefcSPyun YongHyeon /* MAC RX descriptor start address 1 */
1792608aefcSPyun YongHyeon #define	VTE_MRDSA1			0x38
1802608aefcSPyun YongHyeon 
1812608aefcSPyun YongHyeon /* MAC Interrupt status register */
1822608aefcSPyun YongHyeon #define	VTE_MISR			0x3C
1832608aefcSPyun YongHyeon #define	MISR_RX_DONE			0x0001
1842608aefcSPyun YongHyeon #define	MISR_RX_DESC_UNAVAIL		0x0002
1852608aefcSPyun YongHyeon #define	MISR_RX_FIFO_FULL		0x0004
1862608aefcSPyun YongHyeon #define	MISR_RX_EARLY_INTR		0x0008
1872608aefcSPyun YongHyeon #define	MISR_TX_DONE			0x0010
1882608aefcSPyun YongHyeon #define	MISR_TX_EARLY_INTR		0x0080
1892608aefcSPyun YongHyeon #define	MISR_EVENT_CNT_OFLOW		0x0100
1902608aefcSPyun YongHyeon #define	MISR_PHY_MEDIA_CHG		0x0200
1912608aefcSPyun YongHyeon 
1922608aefcSPyun YongHyeon /* MAC Interrupt enable register */
1932608aefcSPyun YongHyeon #define	VTE_MIER			0x40
1942608aefcSPyun YongHyeon 
1952608aefcSPyun YongHyeon #define	VTE_INTRS							\
1962608aefcSPyun YongHyeon 	(MISR_RX_DONE | MISR_RX_DESC_UNAVAIL | MISR_RX_FIFO_FULL |	\
1972608aefcSPyun YongHyeon 	MISR_TX_DONE | MISR_EVENT_CNT_OFLOW)
1982608aefcSPyun YongHyeon 
1992608aefcSPyun YongHyeon /* MAC Event counter interrupt status register */
2002608aefcSPyun YongHyeon #define	VTE_MECISR			0x44
2012608aefcSPyun YongHyeon #define	MECISR_EC_RX_DONE		0x0001
2022608aefcSPyun YongHyeon #define	MECISR_EC_MULTICAST		0x0002
2032608aefcSPyun YongHyeon #define	MECISR_EC_BROADCAST		0x0004
2042608aefcSPyun YongHyeon #define	MECISR_EC_CRC_ERR		0x0008
2052608aefcSPyun YongHyeon #define	MECISR_EC_RUNT			0x0010
2062608aefcSPyun YongHyeon #define	MESCIR_EC_LONG_PKT		0x0020
2072608aefcSPyun YongHyeon #define	MESCIR_EC_RX_DESC_UNAVAIL	0x0080
2082608aefcSPyun YongHyeon #define	MESCIR_EC_RX_FIFO_FULL		0x0100
2092608aefcSPyun YongHyeon #define	MESCIR_EC_TX_DONE		0x0200
2102608aefcSPyun YongHyeon #define	MESCIR_EC_LATE_COL		0x0400
2112608aefcSPyun YongHyeon #define	MESCIR_EC_TX_UNDERRUN		0x0800
2122608aefcSPyun YongHyeon 
2132608aefcSPyun YongHyeon /* MAC Event counter interrupt enable register */
2142608aefcSPyun YongHyeon #define	VTE_MECIER			0x48
2152608aefcSPyun YongHyeon #define	VTE_MECIER_INTRS						 \
2162608aefcSPyun YongHyeon 	(MECISR_EC_RX_DONE | MECISR_EC_MULTICAST | MECISR_EC_BROADCAST | \
2172608aefcSPyun YongHyeon 	MECISR_EC_CRC_ERR | MECISR_EC_RUNT | MESCIR_EC_LONG_PKT |	 \
2182608aefcSPyun YongHyeon 	MESCIR_EC_RX_DESC_UNAVAIL | MESCIR_EC_RX_FIFO_FULL |		 \
2192608aefcSPyun YongHyeon 	MESCIR_EC_TX_DONE | MESCIR_EC_LATE_COL | MESCIR_EC_TX_UNDERRUN)
2202608aefcSPyun YongHyeon 
2212608aefcSPyun YongHyeon #define	VTE_CNT_RX_DONE			0x50
2222608aefcSPyun YongHyeon 
2232608aefcSPyun YongHyeon #define	VTE_CNT_MECNT0			0x52
2242608aefcSPyun YongHyeon 
2252608aefcSPyun YongHyeon #define	VTE_CNT_MECNT1			0x54
2262608aefcSPyun YongHyeon 
2272608aefcSPyun YongHyeon #define	VTE_CNT_MECNT2			0x56
2282608aefcSPyun YongHyeon 
2292608aefcSPyun YongHyeon #define	VTE_CNT_MECNT3			0x58
2302608aefcSPyun YongHyeon 
2312608aefcSPyun YongHyeon #define	VTE_CNT_TX_DONE			0x5A
2322608aefcSPyun YongHyeon 
2332608aefcSPyun YongHyeon #define	VTE_CNT_MECNT4			0x5C
2342608aefcSPyun YongHyeon 
2352608aefcSPyun YongHyeon #define	VTE_CNT_PAUSE			0x5E
2362608aefcSPyun YongHyeon 
2372608aefcSPyun YongHyeon /* MAC Hash table register */
2382608aefcSPyun YongHyeon #define	VTE_MAR0			0x60
2392608aefcSPyun YongHyeon #define	VTE_MAR1			0x62
2402608aefcSPyun YongHyeon #define	VTE_MAR2			0x64
2412608aefcSPyun YongHyeon #define	VTE_MAR3			0x66
2422608aefcSPyun YongHyeon 
2432608aefcSPyun YongHyeon /* MAC station address and multicast address register */
2442608aefcSPyun YongHyeon #define	VTE_MID0L			0x68
2452608aefcSPyun YongHyeon #define	VTE_MID0M			0x6A
2462608aefcSPyun YongHyeon #define	VTE_MID0H			0x6C
2472608aefcSPyun YongHyeon #define	VTE_MID1L			0x70
2482608aefcSPyun YongHyeon #define	VTE_MID1M			0x72
2492608aefcSPyun YongHyeon #define	VTE_MID1H			0x74
2502608aefcSPyun YongHyeon #define	VTE_MID2L			0x78
2512608aefcSPyun YongHyeon #define	VTE_MID2M			0x7A
2522608aefcSPyun YongHyeon #define	VTE_MID2H			0x7C
2532608aefcSPyun YongHyeon #define	VTE_MID3L			0x80
2542608aefcSPyun YongHyeon #define	VTE_MID3M			0x82
2552608aefcSPyun YongHyeon #define	VTE_MID3H			0x84
2562608aefcSPyun YongHyeon 
2572608aefcSPyun YongHyeon #define	VTE_RXFILTER_PEEFECT_BASE	VTE_MID1L
2582608aefcSPyun YongHyeon #define	VTE_RXFILT_PERFECT_CNT		3
2592608aefcSPyun YongHyeon 
2602608aefcSPyun YongHyeon /* MAC PHY status change configuration register */
2612608aefcSPyun YongHyeon #define	VTE_MPSCCR			0x88
2622608aefcSPyun YongHyeon #define	MPSCCR_TIMER_DIVIDER_MASK	0x0007
2632608aefcSPyun YongHyeon #define	MPSCCR_PHY_ADDR_MASK		0x1F00
2642608aefcSPyun YongHyeon #define	MPSCCR_PHY_STS_CHG_ENB		0x8000
2652608aefcSPyun YongHyeon #define	MPSCCR_PHY_ADDR_SHIFT		8
2662608aefcSPyun YongHyeon 
2672608aefcSPyun YongHyeon /* MAC PHY status register2 */
2682608aefcSPyun YongHyeon #define	VTE_MPSR			0x8A
2692608aefcSPyun YongHyeon #define	MPSR_LINK_UP			0x0001
2702608aefcSPyun YongHyeon #define	MPSR_SPEED_100			0x0002
2712608aefcSPyun YongHyeon #define	MPSR_FULL_DUPLEX		0x0004
2722608aefcSPyun YongHyeon 
2732608aefcSPyun YongHyeon /* MAC Status machine(undocumented). */
2742608aefcSPyun YongHyeon #define	VTE_MACSM			0xAC
2752608aefcSPyun YongHyeon 
2762608aefcSPyun YongHyeon /* MDC Speed control register */
2772608aefcSPyun YongHyeon #define	VTE_MDCSC			0xB6
2782608aefcSPyun YongHyeon #define	MDCSC_DEFAULT			0x0030
2792608aefcSPyun YongHyeon 
2802608aefcSPyun YongHyeon /* MAC Identifier and revision register */
2812608aefcSPyun YongHyeon #define	VTE_MACID_REV			0xBC
2822608aefcSPyun YongHyeon #define	VTE_MACID_REV_MASK		0x00FF
2832608aefcSPyun YongHyeon #define	VTE_MACID_MASK			0xFF00
2842608aefcSPyun YongHyeon #define	VTE_MACID_REV_SHIFT		0
2852608aefcSPyun YongHyeon #define	VTE_MACID_SHIFT			8
2862608aefcSPyun YongHyeon 
2872608aefcSPyun YongHyeon /* MAC Identifier register */
2882608aefcSPyun YongHyeon #define	VTE_MACID			0xBE
2892608aefcSPyun YongHyeon 
2902608aefcSPyun YongHyeon /*
2912608aefcSPyun YongHyeon  * RX descriptor
2922608aefcSPyun YongHyeon  * - Added one more uint16_t member to align it 4 on bytes boundary.
2932608aefcSPyun YongHyeon  *   This does not affect operation of controller since it includes
2942608aefcSPyun YongHyeon  *   next pointer address.
2952608aefcSPyun YongHyeon  */
2962608aefcSPyun YongHyeon struct vte_rx_desc {
2972608aefcSPyun YongHyeon 	uint16_t drst;
2982608aefcSPyun YongHyeon 	uint16_t drlen;
2992608aefcSPyun YongHyeon 	uint32_t drbp;
3002608aefcSPyun YongHyeon 	uint32_t drnp;
3012608aefcSPyun YongHyeon 	uint16_t hidx;
3022608aefcSPyun YongHyeon 	uint16_t rsvd2;
3032608aefcSPyun YongHyeon 	uint16_t rsvd3;
3042608aefcSPyun YongHyeon 	uint16_t __pad;	/* Not actual descriptor member. */
3052608aefcSPyun YongHyeon };
3062608aefcSPyun YongHyeon 
3072608aefcSPyun YongHyeon #define	VTE_DRST_MID_MASK	0x0003
3082608aefcSPyun YongHyeon #define	VTE_DRST_MID_HIT	0x0004
3092608aefcSPyun YongHyeon #define	VTE_DRST_MULTICAST_HIT	0x0008
3102608aefcSPyun YongHyeon #define	VTE_DRST_MULTICAST	0x0010
3112608aefcSPyun YongHyeon #define	VTE_DRST_BROADCAST	0x0020
3122608aefcSPyun YongHyeon #define	VTE_DRST_CRC_ERR	0x0040
3132608aefcSPyun YongHyeon #define	VTE_DRST_RUNT		0x0080
3142608aefcSPyun YongHyeon #define	VTE_DRST_LONG		0x0100
3152608aefcSPyun YongHyeon #define	VTE_DRST_TRUNC		0x0200
3162608aefcSPyun YongHyeon #define	VTE_DRST_DRIBBLE	0x0400
3172608aefcSPyun YongHyeon #define	VTE_DRST_PHY_ERR	0x0800
3182608aefcSPyun YongHyeon #define	VTE_DRST_RX_OK		0x4000
3192608aefcSPyun YongHyeon #define	VTE_DRST_RX_OWN		0x8000
3202608aefcSPyun YongHyeon 
3212608aefcSPyun YongHyeon #define	VTE_RX_LEN(x)		((x) & 0x7FF)
3222608aefcSPyun YongHyeon 
3232608aefcSPyun YongHyeon #define	VTE_RX_HIDX(x)		((x) & 0x3F)
3242608aefcSPyun YongHyeon 
3252608aefcSPyun YongHyeon /*
3262608aefcSPyun YongHyeon  * TX descriptor
3272608aefcSPyun YongHyeon  * - Added one more uint32_t member to align it on 16 bytes boundary.
3282608aefcSPyun YongHyeon  */
3292608aefcSPyun YongHyeon struct vte_tx_desc {
3302608aefcSPyun YongHyeon 	uint16_t dtst;
3312608aefcSPyun YongHyeon 	uint16_t dtlen;
3322608aefcSPyun YongHyeon 	uint32_t dtbp;
3332608aefcSPyun YongHyeon 	uint32_t dtnp;
3342608aefcSPyun YongHyeon 	uint32_t __pad;	/* Not actual descriptor member. */
3352608aefcSPyun YongHyeon };
3362608aefcSPyun YongHyeon 
3372608aefcSPyun YongHyeon #define	VTE_DTST_EXCESS_COL	0x0010
3382608aefcSPyun YongHyeon #define	VTE_DTST_LATE_COL	0x0020
3392608aefcSPyun YongHyeon #define	VTE_DTST_UNDERRUN	0x0040
3402608aefcSPyun YongHyeon #define	VTE_DTST_NO_CRC		0x2000
3412608aefcSPyun YongHyeon #define	VTE_DTST_TX_OK		0x4000
3422608aefcSPyun YongHyeon #define	VTE_DTST_TX_OWN		0x8000
3432608aefcSPyun YongHyeon 
3442608aefcSPyun YongHyeon #define	VTE_TX_LEN(x)		((x) & 0x7FF)
3452608aefcSPyun YongHyeon 
3462608aefcSPyun YongHyeon #endif	/* _IF_VTEREG_H */
347