xref: /dflybsd-src/sys/dev/netif/et/if_etreg.h (revision 86d7f5d305c6adaa56ff4582ece9859d73106103)
186d7f5d3SJohn Marino /*
286d7f5d3SJohn Marino  * Copyright (c) 2007 The DragonFly Project.  All rights reserved.
386d7f5d3SJohn Marino  *
486d7f5d3SJohn Marino  * This code is derived from software contributed to The DragonFly Project
586d7f5d3SJohn Marino  * by Sepherosa Ziehau <sepherosa@gmail.com>
686d7f5d3SJohn Marino  *
786d7f5d3SJohn Marino  * Redistribution and use in source and binary forms, with or without
886d7f5d3SJohn Marino  * modification, are permitted provided that the following conditions
986d7f5d3SJohn Marino  * are met:
1086d7f5d3SJohn Marino  *
1186d7f5d3SJohn Marino  * 1. Redistributions of source code must retain the above copyright
1286d7f5d3SJohn Marino  *    notice, this list of conditions and the following disclaimer.
1386d7f5d3SJohn Marino  * 2. Redistributions in binary form must reproduce the above copyright
1486d7f5d3SJohn Marino  *    notice, this list of conditions and the following disclaimer in
1586d7f5d3SJohn Marino  *    the documentation and/or other materials provided with the
1686d7f5d3SJohn Marino  *    distribution.
1786d7f5d3SJohn Marino  * 3. Neither the name of The DragonFly Project nor the names of its
1886d7f5d3SJohn Marino  *    contributors may be used to endorse or promote products derived
1986d7f5d3SJohn Marino  *    from this software without specific, prior written permission.
2086d7f5d3SJohn Marino  *
2186d7f5d3SJohn Marino  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
2286d7f5d3SJohn Marino  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
2386d7f5d3SJohn Marino  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
2486d7f5d3SJohn Marino  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
2586d7f5d3SJohn Marino  * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
2686d7f5d3SJohn Marino  * INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
2786d7f5d3SJohn Marino  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
2886d7f5d3SJohn Marino  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
2986d7f5d3SJohn Marino  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
3086d7f5d3SJohn Marino  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
3186d7f5d3SJohn Marino  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
3286d7f5d3SJohn Marino  * SUCH DAMAGE.
3386d7f5d3SJohn Marino  *
3486d7f5d3SJohn Marino  * $DragonFly: src/sys/dev/netif/et/if_etreg.h,v 1.4 2008/10/18 11:36:37 sephe Exp $
3586d7f5d3SJohn Marino  */
3686d7f5d3SJohn Marino 
3786d7f5d3SJohn Marino #ifndef _IF_ETREG_H
3886d7f5d3SJohn Marino #define _IF_ETREG_H
3986d7f5d3SJohn Marino 
4086d7f5d3SJohn Marino #define ET_MEM_TXSIZE_EX		182
4186d7f5d3SJohn Marino #define ET_MEM_RXSIZE_MIN		608
4286d7f5d3SJohn Marino #define ET_MEM_RXSIZE_DEFAULT		11216
4386d7f5d3SJohn Marino #define ET_MEM_SIZE			16384
4486d7f5d3SJohn Marino #define ET_MEM_UNIT			16
4586d7f5d3SJohn Marino 
4686d7f5d3SJohn Marino /*
4786d7f5d3SJohn Marino  * PCI registers
4886d7f5d3SJohn Marino  *
4986d7f5d3SJohn Marino  * ET_PCIV_ACK_LATENCY_{128,256} are from
5086d7f5d3SJohn Marino  * PCI EXPRESS BASE SPECIFICATION, REV. 1.0a, Table 3-5
5186d7f5d3SJohn Marino  *
5286d7f5d3SJohn Marino  * ET_PCIV_REPLAY_TIMER_{128,256} are from
5386d7f5d3SJohn Marino  * PCI EXPRESS BASE SPECIFICATION, REV. 1.0a, Table 3-4
5486d7f5d3SJohn Marino  */
5586d7f5d3SJohn Marino #define ET_PCIR_BAR			PCIR_BAR(0)
5686d7f5d3SJohn Marino 
5786d7f5d3SJohn Marino #define ET_PCIR_DEVICE_CAPS		0x4c
5886d7f5d3SJohn Marino #define ET_PCIM_DEVICE_CAPS_MAX_PLSZ	0x7	/* Max playload size */
5986d7f5d3SJohn Marino #define ET_PCIV_DEVICE_CAPS_PLSZ_128	0x0
6086d7f5d3SJohn Marino #define ET_PCIV_DEVICE_CAPS_PLSZ_256	0x1
6186d7f5d3SJohn Marino 
6286d7f5d3SJohn Marino #define ET_PCIR_DEVICE_CTRL		0x50
6386d7f5d3SJohn Marino #define ET_PCIM_DEVICE_CTRL_MAX_RRSZ	0x7000	/* Max read request size */
6486d7f5d3SJohn Marino #define ET_PCIV_DEVICE_CTRL_RRSZ_2K	0x4000
6586d7f5d3SJohn Marino 
6686d7f5d3SJohn Marino #define ET_PCIR_MAC_ADDR0		0xa4
6786d7f5d3SJohn Marino #define ET_PCIR_MAC_ADDR1		0xa8
6886d7f5d3SJohn Marino 
6986d7f5d3SJohn Marino #define ET_PCIR_EEPROM_STATUS		0xb2	/* XXX undocumented */
7086d7f5d3SJohn Marino #define ET_PCIM_EEPROM_STATUS_ERROR	0x4c
7186d7f5d3SJohn Marino 
7286d7f5d3SJohn Marino #define ET_PCIR_ACK_LATENCY		0xc0
7386d7f5d3SJohn Marino #define ET_PCIV_ACK_LATENCY_128		237
7486d7f5d3SJohn Marino #define ET_PCIV_ACK_LATENCY_256		416
7586d7f5d3SJohn Marino 
7686d7f5d3SJohn Marino #define ET_PCIR_REPLAY_TIMER		0xc2
7786d7f5d3SJohn Marino #define ET_REPLAY_TIMER_RX_L0S_ADJ	250	/* XXX infered from default */
7886d7f5d3SJohn Marino #define ET_PCIV_REPLAY_TIMER_128	(711 + ET_REPLAY_TIMER_RX_L0S_ADJ)
7986d7f5d3SJohn Marino #define ET_PCIV_REPLAY_TIMER_256	(1248 + ET_REPLAY_TIMER_RX_L0S_ADJ)
8086d7f5d3SJohn Marino 
8186d7f5d3SJohn Marino #define ET_PCIR_L0S_L1_LATENCY		0xcf
8286d7f5d3SJohn Marino #define ET_PCIM_L0S_LATENCY		__BITS(2, 0)
8386d7f5d3SJohn Marino #define ET_PCIM_L1_LATENCY		__BITS(5, 3)
8486d7f5d3SJohn Marino #define ET_PCIV_L0S_LATENCY(l)		__SHIFTIN((l) - 1, ET_PCIM_L0S_LATENCY)
8586d7f5d3SJohn Marino #define ET_PCIV_L1_LATENCY(l)		__SHIFTIN((l) - 1, ET_PCIM_L1_LATENCY)
8686d7f5d3SJohn Marino 
8786d7f5d3SJohn Marino /*
8886d7f5d3SJohn Marino  * CSR
8986d7f5d3SJohn Marino  */
9086d7f5d3SJohn Marino #define ET_TXQUEUE_START		0x0000
9186d7f5d3SJohn Marino #define ET_TXQUEUE_END			0x0004
9286d7f5d3SJohn Marino #define ET_RXQUEUE_START		0x0008
9386d7f5d3SJohn Marino #define ET_RXQUEUE_END			0x000c
9486d7f5d3SJohn Marino #define ET_QUEUE_ADDR(addr)		(((addr) / ET_MEM_UNIT) - 1)
9586d7f5d3SJohn Marino #define ET_QUEUE_ADDR_START		0
9686d7f5d3SJohn Marino #define ET_QUEUE_ADDR_END		ET_QUEUE_ADDR(ET_MEM_SIZE)
9786d7f5d3SJohn Marino 
9886d7f5d3SJohn Marino #define ET_PM				0x0010
9986d7f5d3SJohn Marino #define ET_PM_SYSCLK_GATE		__BIT(3)
10086d7f5d3SJohn Marino #define ET_PM_TXCLK_GATE		__BIT(4)
10186d7f5d3SJohn Marino #define ET_PM_RXCLK_GATE		__BIT(5)
10286d7f5d3SJohn Marino 
10386d7f5d3SJohn Marino #define ET_INTR_STATUS			0x0018
10486d7f5d3SJohn Marino #define ET_INTR_MASK			0x001c
10586d7f5d3SJohn Marino 
10686d7f5d3SJohn Marino #define ET_SWRST			0x0028
10786d7f5d3SJohn Marino #define ET_SWRST_TXDMA			__BIT(0)
10886d7f5d3SJohn Marino #define ET_SWRST_RXDMA			__BIT(1)
10986d7f5d3SJohn Marino #define ET_SWRST_TXMAC			__BIT(2)
11086d7f5d3SJohn Marino #define ET_SWRST_RXMAC			__BIT(3)
11186d7f5d3SJohn Marino #define ET_SWRST_MAC			__BIT(4)
11286d7f5d3SJohn Marino #define ET_SWRST_MAC_STAT		__BIT(5)
11386d7f5d3SJohn Marino #define ET_SWRST_MMC			__BIT(6)
11486d7f5d3SJohn Marino #define ET_SWRST_SELFCLR_DISABLE	__BIT(31)
11586d7f5d3SJohn Marino 
11686d7f5d3SJohn Marino #define ET_MSI_CFG			0x0030
11786d7f5d3SJohn Marino 
11886d7f5d3SJohn Marino #define ET_LOOPBACK			0x0034
11986d7f5d3SJohn Marino 
12086d7f5d3SJohn Marino #define ET_TIMER			0x0038
12186d7f5d3SJohn Marino 
12286d7f5d3SJohn Marino #define ET_TXDMA_CTRL			0x1000
12386d7f5d3SJohn Marino #define ET_TXDMA_CTRL_HALT		__BIT(0)
12486d7f5d3SJohn Marino #define ET_TXDMA_CTRL_CACHE_THR		__BITS(7, 4)
12586d7f5d3SJohn Marino #define ET_TXDMA_CTRL_SINGLE_EPKT	__BIT(8)	/* ??? */
12686d7f5d3SJohn Marino 
12786d7f5d3SJohn Marino #define ET_TX_RING_HI			0x1004
12886d7f5d3SJohn Marino #define ET_TX_RING_LO			0x1008
12986d7f5d3SJohn Marino #define ET_TX_RING_CNT			0x100c
13086d7f5d3SJohn Marino 
13186d7f5d3SJohn Marino #define ET_TX_STATUS_HI			0x101c
13286d7f5d3SJohn Marino #define ET_TX_STATUS_LO			0x1020
13386d7f5d3SJohn Marino 
13486d7f5d3SJohn Marino #define ET_TX_READY_POS			0x1024
13586d7f5d3SJohn Marino #define ET_TX_READY_POS_INDEX		__BITS(9, 0)
13686d7f5d3SJohn Marino #define ET_TX_READY_POS_WRAP		__BIT(10)
13786d7f5d3SJohn Marino 
13886d7f5d3SJohn Marino #define ET_TX_DONE_POS			0x1060
13986d7f5d3SJohn Marino #define ET_TX_DONE_POS_INDEX		__BITS(9, 0)
14086d7f5d3SJohn Marino #define ET_TX_DONE_POS_WRAP		__BIT(10)
14186d7f5d3SJohn Marino 
14286d7f5d3SJohn Marino #define ET_RXDMA_CTRL			0x2000
14386d7f5d3SJohn Marino #define ET_RXDMA_CTRL_HALT		__BIT(0)
14486d7f5d3SJohn Marino #define ET_RXDMA_CTRL_RING0_SIZE	__BITS(9, 8)
14586d7f5d3SJohn Marino #define ET_RXDMA_CTRL_RING0_128		0		/* 127 */
14686d7f5d3SJohn Marino #define ET_RXDMA_CTRL_RING0_256		1		/* 255 */
14786d7f5d3SJohn Marino #define ET_RXDMA_CTRL_RING0_512		2		/* 511 */
14886d7f5d3SJohn Marino #define ET_RXDMA_CTRL_RING0_1024	3		/* 1023 */
14986d7f5d3SJohn Marino #define ET_RXDMA_CTRL_RING0_ENABLE	__BIT(10)
15086d7f5d3SJohn Marino #define ET_RXDMA_CTRL_RING1_SIZE	__BITS(12, 11)
15186d7f5d3SJohn Marino #define ET_RXDMA_CTRL_RING1_2048	0		/* 2047 */
15286d7f5d3SJohn Marino #define ET_RXDMA_CTRL_RING1_4096	1		/* 4095 */
15386d7f5d3SJohn Marino #define ET_RXDMA_CTRL_RING1_8192	2		/* 8191 */
15486d7f5d3SJohn Marino #define ET_RXDMA_CTRL_RING1_16384	3		/* 16383 (9022?) */
15586d7f5d3SJohn Marino #define ET_RXDMA_CTRL_RING1_ENABLE	__BIT(13)
15686d7f5d3SJohn Marino #define ET_RXDMA_CTRL_HALTED		__BIT(17)
15786d7f5d3SJohn Marino 
15886d7f5d3SJohn Marino #define ET_RX_STATUS_LO			0x2004
15986d7f5d3SJohn Marino #define ET_RX_STATUS_HI			0x2008
16086d7f5d3SJohn Marino 
16186d7f5d3SJohn Marino #define ET_RX_INTR_NPKTS		0x200c
16286d7f5d3SJohn Marino #define ET_RX_INTR_DELAY		0x2010
16386d7f5d3SJohn Marino 
16486d7f5d3SJohn Marino #define ET_RXSTAT_LO			0x2020
16586d7f5d3SJohn Marino #define ET_RXSTAT_HI			0x2024
16686d7f5d3SJohn Marino #define ET_RXSTAT_CNT			0x2028
16786d7f5d3SJohn Marino 
16886d7f5d3SJohn Marino #define ET_RXSTAT_POS			0x2030
16986d7f5d3SJohn Marino #define ET_RXSTAT_POS_INDEX		__BITS(11, 0)
17086d7f5d3SJohn Marino #define ET_RXSTAT_POS_WRAP		__BIT(12)
17186d7f5d3SJohn Marino 
17286d7f5d3SJohn Marino #define ET_RXSTAT_MINCNT		0x2038
17386d7f5d3SJohn Marino 
17486d7f5d3SJohn Marino #define ET_RX_RING0_LO			0x203c
17586d7f5d3SJohn Marino #define ET_RX_RING0_HI			0x2040
17686d7f5d3SJohn Marino #define ET_RX_RING0_CNT			0x2044
17786d7f5d3SJohn Marino 
17886d7f5d3SJohn Marino #define ET_RX_RING0_POS			0x204c
17986d7f5d3SJohn Marino #define ET_RX_RING0_POS_INDEX		__BITS(9, 0)
18086d7f5d3SJohn Marino #define ET_RX_RING0_POS_WRAP		__BIT(10)
18186d7f5d3SJohn Marino 
18286d7f5d3SJohn Marino #define ET_RX_RING0_MINCNT		0x2054
18386d7f5d3SJohn Marino 
18486d7f5d3SJohn Marino #define ET_RX_RING1_LO			0x2058
18586d7f5d3SJohn Marino #define ET_RX_RING1_HI			0x205c
18686d7f5d3SJohn Marino #define ET_RX_RING1_CNT			0x2060
18786d7f5d3SJohn Marino 
18886d7f5d3SJohn Marino #define ET_RX_RING1_POS			0x2068
18986d7f5d3SJohn Marino #define ET_RX_RING1_POS_INDEX		__BITS(9, 0)
19086d7f5d3SJohn Marino #define ET_RX_RING1_POS_WRAP		__BIT(10)
19186d7f5d3SJohn Marino 
19286d7f5d3SJohn Marino #define ET_RX_RING1_MINCNT		0x2070
19386d7f5d3SJohn Marino 
19486d7f5d3SJohn Marino #define ET_TXMAC_CTRL			0x3000
19586d7f5d3SJohn Marino #define ET_TXMAC_CTRL_ENABLE		__BIT(0)
19686d7f5d3SJohn Marino #define ET_TXMAC_CTRL_FC_DISABLE	__BIT(3)
19786d7f5d3SJohn Marino 
19886d7f5d3SJohn Marino #define ET_TXMAC_FLOWCTRL		0x3010
19986d7f5d3SJohn Marino 
20086d7f5d3SJohn Marino #define ET_RXMAC_CTRL			0x4000
20186d7f5d3SJohn Marino #define ET_RXMAC_CTRL_ENABLE		__BIT(0)
20286d7f5d3SJohn Marino #define ET_RXMAC_CTRL_NO_PKTFILT	__BIT(2)
20386d7f5d3SJohn Marino #define ET_RXMAC_CTRL_WOL_DISABLE	__BIT(3)
20486d7f5d3SJohn Marino 
20586d7f5d3SJohn Marino #define ET_WOL_CRC			0x4004
20686d7f5d3SJohn Marino #define ET_WOL_SA_LO			0x4010
20786d7f5d3SJohn Marino #define ET_WOL_SA_HI			0x4014
20886d7f5d3SJohn Marino #define ET_WOL_MASK			0x4018
20986d7f5d3SJohn Marino 
21086d7f5d3SJohn Marino #define ET_UCAST_FILTADDR1		0x4068
21186d7f5d3SJohn Marino #define ET_UCAST_FILTADDR2		0x406c
21286d7f5d3SJohn Marino #define ET_UCAST_FILTADDR3		0x4070
21386d7f5d3SJohn Marino 
21486d7f5d3SJohn Marino #define ET_MULTI_HASH			0x4074
21586d7f5d3SJohn Marino 
21686d7f5d3SJohn Marino #define ET_PKTFILT			0x4084
21786d7f5d3SJohn Marino #define ET_PKTFILT_BCAST		__BIT(0)
21886d7f5d3SJohn Marino #define ET_PKTFILT_MCAST		__BIT(1)
21986d7f5d3SJohn Marino #define ET_PKTFILT_UCAST		__BIT(2)
22086d7f5d3SJohn Marino #define ET_PKTFILT_FRAG			__BIT(3)
22186d7f5d3SJohn Marino #define ET_PKTFILT_MINLEN		__BITS(22, 16)
22286d7f5d3SJohn Marino 
22386d7f5d3SJohn Marino #define ET_RXMAC_MC_SEGSZ		0x4088
22486d7f5d3SJohn Marino #define ET_RXMAC_MC_SEGSZ_ENABLE	__BIT(0)
22586d7f5d3SJohn Marino #define ET_RXMAC_MC_SEGSZ_FC		__BIT(1)
22686d7f5d3SJohn Marino #define ET_RXMAC_MC_SEGSZ_MAX		__BITS(9, 2)
22786d7f5d3SJohn Marino #define ET_RXMAC_SEGSZ(segsz)		((segsz) / ET_MEM_UNIT)
22886d7f5d3SJohn Marino #define ET_RXMAC_CUT_THRU_FRMLEN	6122
22986d7f5d3SJohn Marino 
23086d7f5d3SJohn Marino #define ET_RXMAC_MC_WATERMARK		0x408c
23186d7f5d3SJohn Marino #define ET_RXMAC_SPACE_AVL		0x4094
23286d7f5d3SJohn Marino 
23386d7f5d3SJohn Marino #define ET_RXMAC_MGT			0x4098
23486d7f5d3SJohn Marino #define ET_RXMAC_MGT_PASS_ECRC		__BIT(4)
23586d7f5d3SJohn Marino #define ET_RXMAC_MGT_PASS_ELEN		__BIT(5)
23686d7f5d3SJohn Marino #define ET_RXMAC_MGT_PASS_ETRUNC	__BIT(16)
23786d7f5d3SJohn Marino #define ET_RXMAC_MGT_CHECK_PKT		__BIT(17)
23886d7f5d3SJohn Marino 
23986d7f5d3SJohn Marino #define ET_MAC_CFG1			0x5000
24086d7f5d3SJohn Marino #define ET_MAC_CFG1_TXEN		__BIT(0)
24186d7f5d3SJohn Marino #define ET_MAC_CFG1_SYNC_TXEN		__BIT(1)
24286d7f5d3SJohn Marino #define ET_MAC_CFG1_RXEN		__BIT(2)
24386d7f5d3SJohn Marino #define ET_MAC_CFG1_SYNC_RXEN		__BIT(3)
24486d7f5d3SJohn Marino #define ET_MAC_CFG1_TXFLOW		__BIT(4)
24586d7f5d3SJohn Marino #define ET_MAC_CFG1_RXFLOW		__BIT(5)
24686d7f5d3SJohn Marino #define ET_MAC_CFG1_LOOPBACK		__BIT(8)
24786d7f5d3SJohn Marino #define ET_MAC_CFG1_RST_TXFUNC		__BIT(16)
24886d7f5d3SJohn Marino #define ET_MAC_CFG1_RST_RXFUNC		__BIT(17)
24986d7f5d3SJohn Marino #define ET_MAC_CFG1_RST_TXMC		__BIT(18)
25086d7f5d3SJohn Marino #define ET_MAC_CFG1_RST_RXMC		__BIT(19)
25186d7f5d3SJohn Marino #define ET_MAC_CFG1_SIM_RST		__BIT(30)
25286d7f5d3SJohn Marino #define ET_MAC_CFG1_SOFT_RST		__BIT(31)
25386d7f5d3SJohn Marino 
25486d7f5d3SJohn Marino #define ET_MAC_CFG2			0x5004
25586d7f5d3SJohn Marino #define ET_MAC_CFG2_FDX			__BIT(0)
25686d7f5d3SJohn Marino #define ET_MAC_CFG2_CRC			__BIT(1)
25786d7f5d3SJohn Marino #define ET_MAC_CFG2_PADCRC		__BIT(2)
25886d7f5d3SJohn Marino #define ET_MAC_CFG2_LENCHK		__BIT(4)
25986d7f5d3SJohn Marino #define ET_MAC_CFG2_BIGFRM		__BIT(5)
26086d7f5d3SJohn Marino #define ET_MAC_CFG2_MODE_MII		__BIT(8)
26186d7f5d3SJohn Marino #define ET_MAC_CFG2_MODE_GMII		__BIT(9)
26286d7f5d3SJohn Marino #define ET_MAC_CFG2_PREAMBLE_LEN	__BITS(15, 12)
26386d7f5d3SJohn Marino 
26486d7f5d3SJohn Marino #define ET_IPG				0x5008
26586d7f5d3SJohn Marino #define ET_IPG_B2B			__BITS(6, 0)
26686d7f5d3SJohn Marino #define ET_IPG_MINIFG			__BITS(15, 8)
26786d7f5d3SJohn Marino #define ET_IPG_NONB2B_2			__BITS(22, 16)
26886d7f5d3SJohn Marino #define ET_IPG_NONB2B_1			__BITS(30, 24)
26986d7f5d3SJohn Marino 
27086d7f5d3SJohn Marino #define ET_MAC_HDX			0x500c
27186d7f5d3SJohn Marino #define ET_MAC_HDX_COLLWIN		__BITS(9, 0)
27286d7f5d3SJohn Marino #define ET_MAC_HDX_REXMIT_MAX		__BITS(15, 12)
27386d7f5d3SJohn Marino #define ET_MAC_HDX_EXC_DEFER		__BIT(16)
27486d7f5d3SJohn Marino #define ET_MAC_HDX_NOBACKOFF		__BIT(17)
27586d7f5d3SJohn Marino #define ET_MAC_HDX_BP_NOBACKOFF		__BIT(18)
27686d7f5d3SJohn Marino #define ET_MAC_HDX_ALT_BEB		__BIT(19)
27786d7f5d3SJohn Marino #define ET_MAC_HDX_ALT_BEB_TRUNC	__BITS(23, 20)
27886d7f5d3SJohn Marino 
27986d7f5d3SJohn Marino #define ET_MAX_FRMLEN			0x5010
28086d7f5d3SJohn Marino 
28186d7f5d3SJohn Marino #define ET_MII_CFG			0x5020
28286d7f5d3SJohn Marino #define ET_MII_CFG_CLKRST		__BITS(2, 0)
28386d7f5d3SJohn Marino #define ET_MII_CFG_PREAMBLE_SUP		__BIT(4)
28486d7f5d3SJohn Marino #define ET_MII_CFG_SCAN_AUTOINC		__BIT(5)
28586d7f5d3SJohn Marino #define ET_MII_CFG_RST			__BIT(31)
28686d7f5d3SJohn Marino 
28786d7f5d3SJohn Marino #define ET_MII_CMD			0x5024
28886d7f5d3SJohn Marino #define ET_MII_CMD_READ			__BIT(0)
28986d7f5d3SJohn Marino 
29086d7f5d3SJohn Marino #define ET_MII_ADDR			0x5028
29186d7f5d3SJohn Marino #define ET_MII_ADDR_REG			__BITS(4, 0)
29286d7f5d3SJohn Marino #define ET_MII_ADDR_PHY			__BITS(12, 8)
29386d7f5d3SJohn Marino 
29486d7f5d3SJohn Marino #define ET_MII_CTRL			0x502c
29586d7f5d3SJohn Marino #define ET_MII_CTRL_VALUE		__BITS(15, 0)
29686d7f5d3SJohn Marino 
29786d7f5d3SJohn Marino #define ET_MII_STAT			0x5030
29886d7f5d3SJohn Marino #define ET_MII_STAT_VALUE		__BITS(15, 0)
29986d7f5d3SJohn Marino 
30086d7f5d3SJohn Marino #define ET_MII_IND			0x5034
30186d7f5d3SJohn Marino #define ET_MII_IND_BUSY			__BIT(0)
30286d7f5d3SJohn Marino #define ET_MII_IND_INVALID		__BIT(2)
30386d7f5d3SJohn Marino 
30486d7f5d3SJohn Marino #define ET_MAC_CTRL			0x5038
30586d7f5d3SJohn Marino #define ET_MAC_CTRL_MODE_MII		__BIT(24)
30686d7f5d3SJohn Marino #define ET_MAC_CTRL_LHDX		__BIT(25)
30786d7f5d3SJohn Marino #define ET_MAC_CTRL_GHDX		__BIT(26)
30886d7f5d3SJohn Marino 
30986d7f5d3SJohn Marino #define ET_MAC_ADDR1			0x5040
31086d7f5d3SJohn Marino #define ET_MAC_ADDR2			0x5044
31186d7f5d3SJohn Marino 
31286d7f5d3SJohn Marino #define ET_MMC_CTRL			0x7000
31386d7f5d3SJohn Marino #define ET_MMC_CTRL_ENABLE		__BIT(0)
31486d7f5d3SJohn Marino #define ET_MMC_CTRL_ARB_DISABLE		__BIT(1)
31586d7f5d3SJohn Marino #define ET_MMC_CTRL_RXMAC_DISABLE	__BIT(2)
31686d7f5d3SJohn Marino #define ET_MMC_CTRL_TXMAC_DISABLE	__BIT(3)
31786d7f5d3SJohn Marino #define ET_MMC_CTRL_TXDMA_DISABLE	__BIT(4)
31886d7f5d3SJohn Marino #define ET_MMC_CTRL_RXDMA_DISABLE	__BIT(5)
31986d7f5d3SJohn Marino #define ET_MMC_CTRL_FORCE_CE		__BIT(6)
32086d7f5d3SJohn Marino 
32186d7f5d3SJohn Marino /*
32286d7f5d3SJohn Marino  * Interrupts
32386d7f5d3SJohn Marino  */
32486d7f5d3SJohn Marino #define ET_INTR_TXEOF			__BIT(3)
32586d7f5d3SJohn Marino #define ET_INTR_TXDMA_ERROR		__BIT(4)
32686d7f5d3SJohn Marino #define ET_INTR_RXEOF			__BIT(5)
32786d7f5d3SJohn Marino #define ET_INTR_RXRING0_LOW		__BIT(6)
32886d7f5d3SJohn Marino #define ET_INTR_RXRING1_LOW		__BIT(7)
32986d7f5d3SJohn Marino #define ET_INTR_RXSTAT_LOW		__BIT(8)
33086d7f5d3SJohn Marino #define ET_INTR_RXDMA_ERROR		__BIT(9)
33186d7f5d3SJohn Marino #define ET_INTR_TIMER			__BIT(14)
33286d7f5d3SJohn Marino #define ET_INTR_WOL			__BIT(15)
33386d7f5d3SJohn Marino #define ET_INTR_PHY			__BIT(16)
33486d7f5d3SJohn Marino #define ET_INTR_TXMAC			__BIT(17)
33586d7f5d3SJohn Marino #define ET_INTR_RXMAC			__BIT(18)
33686d7f5d3SJohn Marino #define ET_INTR_MAC_STATS		__BIT(19)
33786d7f5d3SJohn Marino #define ET_INTR_SLAVE_TO		__BIT(20)
33886d7f5d3SJohn Marino 
33986d7f5d3SJohn Marino #define ET_INTRS			(ET_INTR_TXEOF | \
34086d7f5d3SJohn Marino 					 ET_INTR_RXEOF | \
34186d7f5d3SJohn Marino 					 ET_INTR_TIMER)
34286d7f5d3SJohn Marino 
34386d7f5d3SJohn Marino /*
34486d7f5d3SJohn Marino  * RX ring position uses same layout
34586d7f5d3SJohn Marino  */
34686d7f5d3SJohn Marino #define ET_RX_RING_POS_INDEX		__BITS(9, 0)
34786d7f5d3SJohn Marino #define ET_RX_RING_POS_WRAP		__BIT(10)
34886d7f5d3SJohn Marino 
34986d7f5d3SJohn Marino #endif	/* !_IF_ETREG_H */
350