xref: /dflybsd-src/sys/dev/netif/jme/if_jmereg.h (revision 352c844402021717e99107e9d86302ddf2f846a6)
176fbb0b9SSepherosa Ziehau /*-
276fbb0b9SSepherosa Ziehau  * Copyright (c) 2008, Pyun YongHyeon <yongari@FreeBSD.org>
376fbb0b9SSepherosa Ziehau  * All rights reserved.
476fbb0b9SSepherosa Ziehau  *
576fbb0b9SSepherosa Ziehau  * Redistribution and use in source and binary forms, with or without
676fbb0b9SSepherosa Ziehau  * modification, are permitted provided that the following conditions
776fbb0b9SSepherosa Ziehau  * are met:
876fbb0b9SSepherosa Ziehau  * 1. Redistributions of source code must retain the above copyright
976fbb0b9SSepherosa Ziehau  *    notice unmodified, this list of conditions, and the following
1076fbb0b9SSepherosa Ziehau  *    disclaimer.
1176fbb0b9SSepherosa Ziehau  * 2. Redistributions in binary form must reproduce the above copyright
1276fbb0b9SSepherosa Ziehau  *    notice, this list of conditions and the following disclaimer in the
1376fbb0b9SSepherosa Ziehau  *    documentation and/or other materials provided with the distribution.
1476fbb0b9SSepherosa Ziehau  *
1576fbb0b9SSepherosa Ziehau  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
1676fbb0b9SSepherosa Ziehau  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1776fbb0b9SSepherosa Ziehau  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1876fbb0b9SSepherosa Ziehau  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
1976fbb0b9SSepherosa Ziehau  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2076fbb0b9SSepherosa Ziehau  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2176fbb0b9SSepherosa Ziehau  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2276fbb0b9SSepherosa Ziehau  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2376fbb0b9SSepherosa Ziehau  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2476fbb0b9SSepherosa Ziehau  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2576fbb0b9SSepherosa Ziehau  * SUCH DAMAGE.
2676fbb0b9SSepherosa Ziehau  *
2776fbb0b9SSepherosa Ziehau  * $FreeBSD: src/sys/dev/jme/if_jmereg.h,v 1.1 2008/05/27 01:42:01 yongari Exp $
28b249905bSSepherosa Ziehau  * $DragonFly: src/sys/dev/netif/jme/if_jmereg.h,v 1.6 2008/11/26 11:55:18 sephe Exp $
2976fbb0b9SSepherosa Ziehau  */
3076fbb0b9SSepherosa Ziehau 
3176fbb0b9SSepherosa Ziehau #ifndef	_IF_JMEREG_H
3276fbb0b9SSepherosa Ziehau #define	_IF_JMEREG_H
3376fbb0b9SSepherosa Ziehau 
34b249905bSSepherosa Ziehau /* FM/ECO revision.  FM revision is in the upper 4bits. */
35b249905bSSepherosa Ziehau #define JME_REV1_A1		0x10
36b249905bSSepherosa Ziehau #define JME_REV1_A2		0x11	/* JMC250A2 */
37b249905bSSepherosa Ziehau #define JME_REV2		0x20
38*352c8444SSepherosa Ziehau #define JME_REV2_2		0x22
39*352c8444SSepherosa Ziehau #define JME_REV3_1		0x31
40*352c8444SSepherosa Ziehau #define JME_REV3_2		0x32
41409fe405SSepherosa Ziehau #define JME_REV5		0x50
42*352c8444SSepherosa Ziehau #define JME_REV5_1		0x51
43*352c8444SSepherosa Ziehau #define JME_REV5_3		0x53
44*352c8444SSepherosa Ziehau #define JME_REV6		0x60
4508c76ecfSSepherosa Ziehau 
4676fbb0b9SSepherosa Ziehau /* JMC250 PCI configuration register. */
4776fbb0b9SSepherosa Ziehau #define JME_PCIR_BAR		PCIR_BAR(0)
4876fbb0b9SSepherosa Ziehau 
4976fbb0b9SSepherosa Ziehau #define	JME_PCI_EROM		0x30
5076fbb0b9SSepherosa Ziehau 
5176fbb0b9SSepherosa Ziehau #define	JME_PCI_DBG		0x9C
5276fbb0b9SSepherosa Ziehau 
5376fbb0b9SSepherosa Ziehau #define	JME_PCI_SPI		0xB0
5476fbb0b9SSepherosa Ziehau 
5576fbb0b9SSepherosa Ziehau #define	SPI_ENB			0x00000010
5676fbb0b9SSepherosa Ziehau #define	SPI_SO_STATUS		0x00000008
5776fbb0b9SSepherosa Ziehau #define	SPI_SI_CTRL		0x00000004
5876fbb0b9SSepherosa Ziehau #define	SPI_SCK_CTRL		0x00000002
5976fbb0b9SSepherosa Ziehau #define	SPI_CS_N_CTRL		0x00000001
6076fbb0b9SSepherosa Ziehau 
6176fbb0b9SSepherosa Ziehau #define	JME_PCI_PHYCFG0		0xC0
6276fbb0b9SSepherosa Ziehau 
6376fbb0b9SSepherosa Ziehau #define	JME_PCI_PHYCFG1		0xC4
6476fbb0b9SSepherosa Ziehau 
6576fbb0b9SSepherosa Ziehau #define	JME_PCI_PHYCFG2		0xC8
6676fbb0b9SSepherosa Ziehau 
6776fbb0b9SSepherosa Ziehau #define	JME_PCI_PHYCFG3		0xCC
6876fbb0b9SSepherosa Ziehau 
6976fbb0b9SSepherosa Ziehau #define	JME_PCI_PIPECTL1	0xD0
7076fbb0b9SSepherosa Ziehau 
7176fbb0b9SSepherosa Ziehau #define	JME_PCI_PIPECTL2	0xD4
7276fbb0b9SSepherosa Ziehau 
7376fbb0b9SSepherosa Ziehau /* PCIe link error/status. */
7476fbb0b9SSepherosa Ziehau #define	JME_PCI_LES		0xD8
7576fbb0b9SSepherosa Ziehau 
7676fbb0b9SSepherosa Ziehau /* propeietary register 0. */
7776fbb0b9SSepherosa Ziehau #define	JME_PCI_PE0		0xE0
7876fbb0b9SSepherosa Ziehau #define	PE0_SPI_EXIST		0x00200000
7976fbb0b9SSepherosa Ziehau #define	PE0_PME_D0		0x00100000
8076fbb0b9SSepherosa Ziehau #define	PE0_PME_D3H		0x00080000
8176fbb0b9SSepherosa Ziehau #define	PE0_PME_SPI_PAD		0x00040000
8276fbb0b9SSepherosa Ziehau #define	PE0_MASK_ASPM		0x00020000
8376fbb0b9SSepherosa Ziehau #define	PE0_EEPROM_RW_DIS	0x00008000
8476fbb0b9SSepherosa Ziehau #define	PE0_PCI_INTA		0x00001000
8576fbb0b9SSepherosa Ziehau #define	PE0_PCI_INTB		0x00002000
8676fbb0b9SSepherosa Ziehau #define	PE0_PCI_INTC		0x00003000
8776fbb0b9SSepherosa Ziehau #define	PE0_PCI_INTD		0x00004000
8876fbb0b9SSepherosa Ziehau #define	PE0_PCI_SVSSID_WR_ENB	0x00000800
8976fbb0b9SSepherosa Ziehau #define	PE0_MSIX_SIZE_8		0x00000700
9076fbb0b9SSepherosa Ziehau #define	PE0_MSIX_SIZE_7		0x00000600
9176fbb0b9SSepherosa Ziehau #define	PE0_MSIX_SIZE_6		0x00000500
9276fbb0b9SSepherosa Ziehau #define	PE0_MSIX_SIZE_5		0x00000400
9376fbb0b9SSepherosa Ziehau #define	PE0_MSIX_SIZE_4		0x00000300
9476fbb0b9SSepherosa Ziehau #define	PE0_MSIX_SIZE_3		0x00000200
9576fbb0b9SSepherosa Ziehau #define	PE0_MSIX_SIZE_2		0x00000100
9676fbb0b9SSepherosa Ziehau #define	PE0_MSIX_SIZE_1		0x00000000
9776fbb0b9SSepherosa Ziehau #define	PE0_MSIX_SIZE_DEF	0x00000700
9876fbb0b9SSepherosa Ziehau #define	PE0_MSIX_CAP_DIS	0x00000080
9976fbb0b9SSepherosa Ziehau #define	PE0_MSI_PVMC_ENB	0x00000040
10076fbb0b9SSepherosa Ziehau #define	PE0_LCAP_EXIT_LAT_MASK	0x00000038
10176fbb0b9SSepherosa Ziehau #define	PE0_LCAP_EXIT_LAT_DEF	0x00000038
10276fbb0b9SSepherosa Ziehau #define	PE0_PM_AUXC_MASK	0x00000007
10376fbb0b9SSepherosa Ziehau #define	PE0_PM_AUXC_DEF		0x00000007
10476fbb0b9SSepherosa Ziehau 
10576fbb0b9SSepherosa Ziehau #define	JME_PCI_PE1		0xE4
106*352c8444SSepherosa Ziehau #define PE1_GPREG0_PHYBG	0x0000C000
107*352c8444SSepherosa Ziehau #define PE1_GPREG0_ENBG		0x00000000
108*352c8444SSepherosa Ziehau #define PE1_GPREG0_PDD3COLD	0x00004000
109*352c8444SSepherosa Ziehau 
110*352c8444SSepherosa Ziehau #define JME_PCI_SSCTRL		0xF4
111*352c8444SSepherosa Ziehau #define SSCTRL_PHYMASK		0x30
112*352c8444SSepherosa Ziehau #define SSCTRL_PHYEA		0x20
11376fbb0b9SSepherosa Ziehau 
11476fbb0b9SSepherosa Ziehau #define	JME_PCI_PHYTEST		0xF8
11576fbb0b9SSepherosa Ziehau 
11676fbb0b9SSepherosa Ziehau #define	JME_PCI_GPR		0xFC
11776fbb0b9SSepherosa Ziehau 
11876fbb0b9SSepherosa Ziehau /*
11976fbb0b9SSepherosa Ziehau  * JMC Register Map.
12076fbb0b9SSepherosa Ziehau  * -----------------------------------------------------------------------
12176fbb0b9SSepherosa Ziehau  *   Register               Size           IO space         Memory space
12276fbb0b9SSepherosa Ziehau  * -----------------------------------------------------------------------
12376fbb0b9SSepherosa Ziehau  * Tx/Rx MAC registers    128 bytes     BAR1 + 0x00 ~       BAR0 + 0x00 ~
12476fbb0b9SSepherosa Ziehau  *                                       BAR1 + 0x7F         BAR0 + 0x7F
12576fbb0b9SSepherosa Ziehau  * -----------------------------------------------------------------------
12676fbb0b9SSepherosa Ziehau  * PHY registers          128 bytes     BAR2 + 0x00 ~       BAR0 + 0x400 ~
12776fbb0b9SSepherosa Ziehau  *                                       BAR2 + 0x7F         BAR0 + 0x47F
12876fbb0b9SSepherosa Ziehau  * -----------------------------------------------------------------------
12976fbb0b9SSepherosa Ziehau  * Misc registers         128 bytes     BAR2 + 0x80 ~       BAR0 + 0x800 ~
13076fbb0b9SSepherosa Ziehau  *                                       BAR2 + 0x7F         BAR0 + 0x87F
13176fbb0b9SSepherosa Ziehau  * -----------------------------------------------------------------------
13276fbb0b9SSepherosa Ziehau  * To simplify register access fuctions and to get better performance
13376fbb0b9SSepherosa Ziehau  * this driver doesn't support IO space access. It could be implemented
13476fbb0b9SSepherosa Ziehau  * as a function which selects appropriate BARs to access requested
13576fbb0b9SSepherosa Ziehau  * register.
13676fbb0b9SSepherosa Ziehau  */
13776fbb0b9SSepherosa Ziehau 
13876fbb0b9SSepherosa Ziehau /* Tx control and status. */
13976fbb0b9SSepherosa Ziehau #define	JME_TXCSR		0x0000
14076fbb0b9SSepherosa Ziehau #define	TXCSR_QWEIGHT_MASK	0x0F000000
14176fbb0b9SSepherosa Ziehau #define	TXCSR_QWEIGHT_SHIFT	24
14276fbb0b9SSepherosa Ziehau #define	TXCSR_TXQ_SEL_MASK	0x00070000
14376fbb0b9SSepherosa Ziehau #define	TXCSR_TXQ_SEL_SHIFT	16
14476fbb0b9SSepherosa Ziehau #define	TXCSR_TXQ_START		0x00000001
14576fbb0b9SSepherosa Ziehau #define	TXCSR_TXQ_START_SHIFT	8
14676fbb0b9SSepherosa Ziehau #define	TXCSR_FIFO_THRESH_4QW	0x00000000
14776fbb0b9SSepherosa Ziehau #define	TXCSR_FIFO_THRESH_8QW	0x00000040
14876fbb0b9SSepherosa Ziehau #define	TXCSR_FIFO_THRESH_12QW	0x00000080
14976fbb0b9SSepherosa Ziehau #define	TXCSR_FIFO_THRESH_16QW	0x000000C0
15076fbb0b9SSepherosa Ziehau #define	TXCSR_DMA_SIZE_64	0x00000000
15176fbb0b9SSepherosa Ziehau #define	TXCSR_DMA_SIZE_128	0x00000010
15276fbb0b9SSepherosa Ziehau #define	TXCSR_DMA_SIZE_256	0x00000020
15376fbb0b9SSepherosa Ziehau #define	TXCSR_DMA_SIZE_512	0x00000030
15476fbb0b9SSepherosa Ziehau #define	TXCSR_DMA_BURST		0x00000004
15576fbb0b9SSepherosa Ziehau #define	TXCSR_TX_SUSPEND	0x00000002
15676fbb0b9SSepherosa Ziehau #define	TXCSR_TX_ENB		0x00000001
15776fbb0b9SSepherosa Ziehau #define	TXCSR_TXQ0		0
15876fbb0b9SSepherosa Ziehau #define	TXCSR_TXQ1		1
15976fbb0b9SSepherosa Ziehau #define	TXCSR_TXQ2		2
16076fbb0b9SSepherosa Ziehau #define	TXCSR_TXQ3		3
16176fbb0b9SSepherosa Ziehau #define	TXCSR_TXQ4		4
16276fbb0b9SSepherosa Ziehau #define	TXCSR_TXQ5		5
16376fbb0b9SSepherosa Ziehau #define	TXCSR_TXQ6		6
16476fbb0b9SSepherosa Ziehau #define	TXCSR_TXQ7		7
16576fbb0b9SSepherosa Ziehau #define	TXCSR_TXQ_WEIGHT(x)	\
16676fbb0b9SSepherosa Ziehau 	(((x) << TXCSR_QWEIGHT_SHIFT) & TXCSR_QWEIGHT_MASK)
16776fbb0b9SSepherosa Ziehau #define	TXCSR_TXQ_WEIGHT_MIN	0
16876fbb0b9SSepherosa Ziehau #define	TXCSR_TXQ_WEIGHT_MAX	15
16976fbb0b9SSepherosa Ziehau #define	TXCSR_TXQ_N_SEL(x)	\
17076fbb0b9SSepherosa Ziehau 	(((x) << TXCSR_TXQ_SEL_SHIFT) & TXCSR_TXQ_SEL_MASK)
17176fbb0b9SSepherosa Ziehau #define	TXCSR_TXQ_N_START(x)	\
17276fbb0b9SSepherosa Ziehau 	(TXCSR_TXQ_START << (TXCSR_TXQ_START_SHIFT + (x)))
17376fbb0b9SSepherosa Ziehau 
17476fbb0b9SSepherosa Ziehau /* Tx queue descriptor base address. 16bytes alignment required. */
17576fbb0b9SSepherosa Ziehau #define	JME_TXDBA_LO		0x0004
17676fbb0b9SSepherosa Ziehau #define	JME_TXDBA_HI		0x0008
17776fbb0b9SSepherosa Ziehau 
17876fbb0b9SSepherosa Ziehau /* Tx queue descriptor count. multiple of 16(max = 1024). */
17976fbb0b9SSepherosa Ziehau #define	JME_TXQDC		0x000C
18076fbb0b9SSepherosa Ziehau #define	TXQDC_MASK		0x0000007F0
18176fbb0b9SSepherosa Ziehau 
18276fbb0b9SSepherosa Ziehau /* Tx queue next descriptor address. */
18376fbb0b9SSepherosa Ziehau #define	JME_TXNDA		0x0010
18476fbb0b9SSepherosa Ziehau #define	TXNDA_ADDR_MASK		0xFFFFFFF0
18576fbb0b9SSepherosa Ziehau #define	TXNDA_DESC_EMPTY	0x00000008
18676fbb0b9SSepherosa Ziehau #define	TXNDA_DESC_VALID	0x00000004
18776fbb0b9SSepherosa Ziehau #define	TXNDA_DESC_WAIT		0x00000002
18876fbb0b9SSepherosa Ziehau #define	TXNDA_DESC_FETCH	0x00000001
18976fbb0b9SSepherosa Ziehau 
19076fbb0b9SSepherosa Ziehau /* Tx MAC control ans status. */
19176fbb0b9SSepherosa Ziehau #define	JME_TXMAC		0x0014
19276fbb0b9SSepherosa Ziehau #define	TXMAC_IFG2_MASK		0xC0000000
19376fbb0b9SSepherosa Ziehau #define	TXMAC_IFG2_DEFAULT	0x40000000
19476fbb0b9SSepherosa Ziehau #define	TXMAC_IFG1_MASK		0x30000000
19576fbb0b9SSepherosa Ziehau #define	TXMAC_IFG1_DEFAULT	0x20000000
19676fbb0b9SSepherosa Ziehau #define	TXMAC_THRESH_1_PKT	0x00000300
19776fbb0b9SSepherosa Ziehau #define	TXMAC_THRESH_1_2_PKT	0x00000200
19876fbb0b9SSepherosa Ziehau #define	TXMAC_THRESH_1_4_PKT	0x00000100
19976fbb0b9SSepherosa Ziehau #define	TXMAC_THRESH_1_8_PKT	0x00000000
20076fbb0b9SSepherosa Ziehau #define	TXMAC_FRAME_BURST	0x00000080
20176fbb0b9SSepherosa Ziehau #define	TXMAC_CARRIER_EXT	0x00000040
20276fbb0b9SSepherosa Ziehau #define	TXMAC_IFG_ENB		0x00000020
20376fbb0b9SSepherosa Ziehau #define	TXMAC_BACKOFF		0x00000010
20476fbb0b9SSepherosa Ziehau #define	TXMAC_CARRIER_SENSE	0x00000008
20576fbb0b9SSepherosa Ziehau #define	TXMAC_COLL_ENB		0x00000004
20676fbb0b9SSepherosa Ziehau #define	TXMAC_CRC_ENB		0x00000002
20776fbb0b9SSepherosa Ziehau #define	TXMAC_PAD_ENB		0x00000001
20876fbb0b9SSepherosa Ziehau 
20976fbb0b9SSepherosa Ziehau /* Tx pause frame control. */
21076fbb0b9SSepherosa Ziehau #define	JME_TXPFC		0x0018
21176fbb0b9SSepherosa Ziehau #define	TXPFC_VLAN_TAG_MASK	0xFFFF0000
21276fbb0b9SSepherosa Ziehau #define	TXPFC_VLAN_TAG_SHIFT	16
21376fbb0b9SSepherosa Ziehau #define	TXPFC_VLAN_ENB		0x00008000
21476fbb0b9SSepherosa Ziehau #define	TXPFC_PAUSE_ENB		0x00000001
21576fbb0b9SSepherosa Ziehau 
21676fbb0b9SSepherosa Ziehau /* Tx timer/retry at half duplex. */
21776fbb0b9SSepherosa Ziehau #define	JME_TXTRHD		0x001C
21876fbb0b9SSepherosa Ziehau #define	TXTRHD_RT_PERIOD_ENB	0x80000000
21976fbb0b9SSepherosa Ziehau #define	TXTRHD_RT_PERIOD_MASK	0x7FFFFF00
22076fbb0b9SSepherosa Ziehau #define	TXTRHD_RT_PERIOD_SHIFT	8
22176fbb0b9SSepherosa Ziehau #define	TXTRHD_RT_LIMIT_ENB	0x00000080
22276fbb0b9SSepherosa Ziehau #define	TXTRHD_RT_LIMIT_MASK	0x0000007F
22376fbb0b9SSepherosa Ziehau #define	TXTRHD_RT_LIMIT_SHIFT	0
22476fbb0b9SSepherosa Ziehau #define	TXTRHD_RT_PERIOD_DEFAULT	8192
22576fbb0b9SSepherosa Ziehau #define	TXTRHD_RT_LIMIT_DEFAULT	8
22676fbb0b9SSepherosa Ziehau 
22776fbb0b9SSepherosa Ziehau /* Rx control & status. */
22876fbb0b9SSepherosa Ziehau #define	JME_RXCSR		0x0020
22976fbb0b9SSepherosa Ziehau #define	RXCSR_FIFO_FTHRESH_16T	0x00000000
23076fbb0b9SSepherosa Ziehau #define	RXCSR_FIFO_FTHRESH_32T	0x10000000
23176fbb0b9SSepherosa Ziehau #define	RXCSR_FIFO_FTHRESH_64T	0x20000000
23276fbb0b9SSepherosa Ziehau #define	RXCSR_FIFO_FTHRESH_128T	0x30000000
23376fbb0b9SSepherosa Ziehau #define	RXCSR_FIFO_FTHRESH_MASK	0x30000000
23476fbb0b9SSepherosa Ziehau #define	RXCSR_FIFO_THRESH_16QW	0x00000000
23576fbb0b9SSepherosa Ziehau #define	RXCSR_FIFO_THRESH_32QW	0x04000000
23676fbb0b9SSepherosa Ziehau #define	RXCSR_FIFO_THRESH_64QW	0x08000000
23776fbb0b9SSepherosa Ziehau #define	RXCSR_FIFO_THRESH_128QW	0x0C000000
23876fbb0b9SSepherosa Ziehau #define	RXCSR_FIFO_THRESH_MASK	0x0C000000
23976fbb0b9SSepherosa Ziehau #define	RXCSR_DMA_SIZE_16	0x00000000
24076fbb0b9SSepherosa Ziehau #define	RXCSR_DMA_SIZE_32	0x01000000
24176fbb0b9SSepherosa Ziehau #define	RXCSR_DMA_SIZE_64	0x02000000
24276fbb0b9SSepherosa Ziehau #define	RXCSR_DMA_SIZE_128	0x03000000
24376fbb0b9SSepherosa Ziehau #define	RXCSR_RXQ_SEL_MASK	0x00030000
24476fbb0b9SSepherosa Ziehau #define	RXCSR_RXQ_SEL_SHIFT	16
24576fbb0b9SSepherosa Ziehau #define	RXCSR_DESC_RT_GAP_MASK	0x0000F000
24676fbb0b9SSepherosa Ziehau #define	RXCSR_DESC_RT_GAP_SHIFT	12
24776fbb0b9SSepherosa Ziehau #define	RXCSR_DESC_RT_GAP_256	0x00000000
24876fbb0b9SSepherosa Ziehau #define	RXCSR_DESC_RT_GAP_512	0x00001000
24976fbb0b9SSepherosa Ziehau #define	RXCSR_DESC_RT_GAP_1024	0x00002000
25076fbb0b9SSepherosa Ziehau #define	RXCSR_DESC_RT_GAP_2048	0x00003000
25176fbb0b9SSepherosa Ziehau #define	RXCSR_DESC_RT_GAP_4096	0x00004000
25276fbb0b9SSepherosa Ziehau #define	RXCSR_DESC_RT_GAP_8192	0x00005000
25376fbb0b9SSepherosa Ziehau #define	RXCSR_DESC_RT_GAP_16384	0x00006000
25476fbb0b9SSepherosa Ziehau #define	RXCSR_DESC_RT_GAP_32768	0x00007000
25576fbb0b9SSepherosa Ziehau #define	RXCSR_DESC_RT_CNT_MASK	0x00000F00
25676fbb0b9SSepherosa Ziehau #define	RXCSR_DESC_RT_CNT_SHIFT	8
25776fbb0b9SSepherosa Ziehau #define	RXCSR_PASS_WAKEUP_PKT	0x00000040
25876fbb0b9SSepherosa Ziehau #define	RXCSR_PASS_MAGIC_PKT	0x00000020
25976fbb0b9SSepherosa Ziehau #define	RXCSR_PASS_RUNT_PKT	0x00000010
26076fbb0b9SSepherosa Ziehau #define	RXCSR_PASS_BAD_PKT	0x00000008
26176fbb0b9SSepherosa Ziehau #define	RXCSR_RXQ_START		0x00000004
26276fbb0b9SSepherosa Ziehau #define	RXCSR_RX_SUSPEND	0x00000002
26376fbb0b9SSepherosa Ziehau #define	RXCSR_RX_ENB		0x00000001
26476fbb0b9SSepherosa Ziehau 
26576fbb0b9SSepherosa Ziehau #define	RXCSR_RXQ_N_SEL(x)	((x) << RXCSR_RXQ_SEL_SHIFT)
26676fbb0b9SSepherosa Ziehau #define	RXCSR_RXQ0		0
26776fbb0b9SSepherosa Ziehau #define	RXCSR_RXQ1		1
26876fbb0b9SSepherosa Ziehau #define	RXCSR_RXQ2		2
26976fbb0b9SSepherosa Ziehau #define	RXCSR_RXQ3		3
27076fbb0b9SSepherosa Ziehau #define	RXCSR_DESC_RT_CNT(x)	\
27176fbb0b9SSepherosa Ziehau 	((((x) / 4) << RXCSR_DESC_RT_CNT_SHIFT) & RXCSR_DESC_RT_CNT_MASK)
27276fbb0b9SSepherosa Ziehau #define	RXCSR_DESC_RT_CNT_DEFAULT	32
27376fbb0b9SSepherosa Ziehau 
27476fbb0b9SSepherosa Ziehau /* Rx queue descriptor base address. 16bytes alignment needed. */
27576fbb0b9SSepherosa Ziehau #define	JME_RXDBA_LO		0x0024
27676fbb0b9SSepherosa Ziehau #define	JME_RXDBA_HI		0x0028
27776fbb0b9SSepherosa Ziehau 
27876fbb0b9SSepherosa Ziehau /* Rx queue descriptor count. multiple of 16(max = 1024). */
27976fbb0b9SSepherosa Ziehau #define	JME_RXQDC		0x002C
28076fbb0b9SSepherosa Ziehau #define	RXQDC_MASK		0x0000007F0
28176fbb0b9SSepherosa Ziehau 
28276fbb0b9SSepherosa Ziehau /* Rx queue next descriptor address. */
28376fbb0b9SSepherosa Ziehau #define	JME_RXNDA		0x0030
28476fbb0b9SSepherosa Ziehau #define	RXNDA_ADDR_MASK		0xFFFFFFF0
28576fbb0b9SSepherosa Ziehau #define	RXNDA_DESC_EMPTY	0x00000008
28676fbb0b9SSepherosa Ziehau #define	RXNDA_DESC_VALID	0x00000004
28776fbb0b9SSepherosa Ziehau #define	RXNDA_DESC_WAIT		0x00000002
28876fbb0b9SSepherosa Ziehau #define	RXNDA_DESC_FETCH	0x00000001
28976fbb0b9SSepherosa Ziehau 
29076fbb0b9SSepherosa Ziehau /* Rx MAC control and status. */
29176fbb0b9SSepherosa Ziehau #define	JME_RXMAC		0x0034
29276fbb0b9SSepherosa Ziehau #define	RXMAC_RSS_UNICAST	0x00000000
29376fbb0b9SSepherosa Ziehau #define	RXMAC_RSS_UNI_MULTICAST	0x00010000
29476fbb0b9SSepherosa Ziehau #define	RXMAC_RSS_UNI_MULTI_BROADCAST	0x00020000
29576fbb0b9SSepherosa Ziehau #define	RXMAC_RSS_ALLFRAME	0x00030000
29676fbb0b9SSepherosa Ziehau #define	RXMAC_PROMISC		0x00000800
29776fbb0b9SSepherosa Ziehau #define	RXMAC_BROADCAST		0x00000400
29876fbb0b9SSepherosa Ziehau #define	RXMAC_MULTICAST		0x00000200
29976fbb0b9SSepherosa Ziehau #define	RXMAC_UNICAST		0x00000100
30076fbb0b9SSepherosa Ziehau #define	RXMAC_ALLMULTI		0x00000080
30176fbb0b9SSepherosa Ziehau #define	RXMAC_MULTICAST_FILTER	0x00000040
30276fbb0b9SSepherosa Ziehau #define	RXMAC_COLL_DET_ENB	0x00000020
30376fbb0b9SSepherosa Ziehau #define	RXMAC_FC_ENB		0x00000008
30476fbb0b9SSepherosa Ziehau #define	RXMAC_VLAN_ENB		0x00000004
30576fbb0b9SSepherosa Ziehau #define	RXMAC_PAD_10BYTES	0x00000002
30676fbb0b9SSepherosa Ziehau #define	RXMAC_CSUM_ENB		0x00000001
30776fbb0b9SSepherosa Ziehau 
30876fbb0b9SSepherosa Ziehau /* Rx unicast MAC address. */
30976fbb0b9SSepherosa Ziehau #define	JME_PAR0		0x0038
31076fbb0b9SSepherosa Ziehau #define	JME_PAR1		0x003C
31176fbb0b9SSepherosa Ziehau 
31276fbb0b9SSepherosa Ziehau /* Rx multicast address hash table. */
31376fbb0b9SSepherosa Ziehau #define	JME_MAR0		0x0040
31476fbb0b9SSepherosa Ziehau #define	JME_MAR1		0x0044
31576fbb0b9SSepherosa Ziehau 
31676fbb0b9SSepherosa Ziehau /* Wakeup frame output data port. */
31776fbb0b9SSepherosa Ziehau #define	JME_WFODP		0x0048
31876fbb0b9SSepherosa Ziehau 
31976fbb0b9SSepherosa Ziehau /* Wakeup frame output interface. */
32076fbb0b9SSepherosa Ziehau #define	JME_WFOI		0x004C
32176fbb0b9SSepherosa Ziehau #define	WFOI_MASK_0_31		0x00000000
32276fbb0b9SSepherosa Ziehau #define	WFOI_MASK_31_63		0x00000010
32376fbb0b9SSepherosa Ziehau #define	WFOI_MASK_64_95		0x00000020
32476fbb0b9SSepherosa Ziehau #define	WFOI_MASK_96_127	0x00000030
32576fbb0b9SSepherosa Ziehau #define	WFOI_MASK_SEL		0x00000008
32676fbb0b9SSepherosa Ziehau #define	WFOI_CRC_SEL		0x00000000
32776fbb0b9SSepherosa Ziehau #define	WFOI_WAKEUP_FRAME_MASK	0x00000007
32876fbb0b9SSepherosa Ziehau #define	WFOI_WAKEUP_FRAME_SEL(x)	((x) & WFOI_WAKEUP_FRAME_MASK)
32976fbb0b9SSepherosa Ziehau 
33076fbb0b9SSepherosa Ziehau /* Station management interface. */
33176fbb0b9SSepherosa Ziehau #define	JME_SMI			0x0050
33276fbb0b9SSepherosa Ziehau #define	SMI_DATA_MASK		0xFFFF0000
33376fbb0b9SSepherosa Ziehau #define	SMI_DATA_SHIFT		16
33476fbb0b9SSepherosa Ziehau #define	SMI_REG_ADDR_MASK	0x0000F800
33576fbb0b9SSepherosa Ziehau #define	SMI_REG_ADDR_SHIFT	11
33676fbb0b9SSepherosa Ziehau #define	SMI_PHY_ADDR_MASK	0x000007C0
33776fbb0b9SSepherosa Ziehau #define	SMI_PHY_ADDR_SHIFT	6
33876fbb0b9SSepherosa Ziehau #define	SMI_OP_WRITE		0x00000020
33976fbb0b9SSepherosa Ziehau #define	SMI_OP_READ		0x00000000
34076fbb0b9SSepherosa Ziehau #define	SMI_OP_EXECUTE		0x00000010
34176fbb0b9SSepherosa Ziehau #define	SMI_MDIO		0x00000008
34276fbb0b9SSepherosa Ziehau #define	SMI_MDOE		0x00000004
34376fbb0b9SSepherosa Ziehau #define	SMI_MDC			0x00000002
34476fbb0b9SSepherosa Ziehau #define	SMI_MDEN		0x00000001
34576fbb0b9SSepherosa Ziehau #define	SMI_REG_ADDR(x)		\
34676fbb0b9SSepherosa Ziehau 	(((x) << SMI_REG_ADDR_SHIFT) & SMI_REG_ADDR_MASK)
34776fbb0b9SSepherosa Ziehau #define	SMI_PHY_ADDR(x)		\
34876fbb0b9SSepherosa Ziehau 	(((x) << SMI_PHY_ADDR_SHIFT) & SMI_PHY_ADDR_MASK)
34976fbb0b9SSepherosa Ziehau 
35076fbb0b9SSepherosa Ziehau /* Global host control. */
35176fbb0b9SSepherosa Ziehau #define	JME_GHC			0x0054
35276fbb0b9SSepherosa Ziehau #define	GHC_LOOPBACK		0x80000000
35376fbb0b9SSepherosa Ziehau #define	GHC_RESET		0x40000000
354b249905bSSepherosa Ziehau #define GHC_TXOFL_CLKSRC	0x00800000
355b249905bSSepherosa Ziehau #define GHC_TXOFL_CLKSRC_1000	0x00400000
356b249905bSSepherosa Ziehau #define GHC_TXMAC_CLKSRC	0x00200000
357b249905bSSepherosa Ziehau #define GHC_TXMAC_CLKSRC_1000	0x00100000
35876fbb0b9SSepherosa Ziehau #define	GHC_FULL_DUPLEX		0x00000040
35976fbb0b9SSepherosa Ziehau #define	GHC_SPEED_UNKNOWN	0x00000000
36076fbb0b9SSepherosa Ziehau #define	GHC_SPEED_10		0x00000010
36176fbb0b9SSepherosa Ziehau #define	GHC_SPEED_100		0x00000020
36276fbb0b9SSepherosa Ziehau #define	GHC_SPEED_1000		0x00000030
36376fbb0b9SSepherosa Ziehau #define	GHC_SPEED_MASK		0x00000030
36476fbb0b9SSepherosa Ziehau #define	GHC_LINK_OFF		0x00000004
36576fbb0b9SSepherosa Ziehau #define	GHC_LINK_ON		0x00000002
36676fbb0b9SSepherosa Ziehau #define	GHC_LINK_STAT_POLLING	0x00000001
36776fbb0b9SSepherosa Ziehau 
36876fbb0b9SSepherosa Ziehau /* Power management control and status. */
36976fbb0b9SSepherosa Ziehau #define	JME_PMCS		0x0060
37076fbb0b9SSepherosa Ziehau #define	PMCS_WAKEUP_FRAME_7	0x80000000
37176fbb0b9SSepherosa Ziehau #define	PMCS_WAKEUP_FRAME_6	0x40000000
37276fbb0b9SSepherosa Ziehau #define	PMCS_WAKEUP_FRAME_5	0x20000000
37376fbb0b9SSepherosa Ziehau #define	PMCS_WAKEUP_FRAME_4	0x10000000
37476fbb0b9SSepherosa Ziehau #define	PMCS_WAKEUP_FRAME_3	0x08000000
37576fbb0b9SSepherosa Ziehau #define	PMCS_WAKEUP_FRAME_2	0x04000000
37676fbb0b9SSepherosa Ziehau #define	PMCS_WAKEUP_FRAME_1	0x02000000
37776fbb0b9SSepherosa Ziehau #define	PMCS_WAKEUP_FRAME_0	0x01000000
37876fbb0b9SSepherosa Ziehau #define	PMCS_LINK_FAIL		0x00040000
37976fbb0b9SSepherosa Ziehau #define	PMCS_LINK_RISING	0x00020000
38076fbb0b9SSepherosa Ziehau #define	PMCS_MAGIC_FRAME	0x00010000
38176fbb0b9SSepherosa Ziehau #define	PMCS_WAKEUP_FRAME_7_ENB	0x00008000
38276fbb0b9SSepherosa Ziehau #define	PMCS_WAKEUP_FRAME_6_ENB	0x00004000
38376fbb0b9SSepherosa Ziehau #define	PMCS_WAKEUP_FRAME_5_ENB	0x00002000
38476fbb0b9SSepherosa Ziehau #define	PMCS_WAKEUP_FRAME_4_ENB	0x00001000
38576fbb0b9SSepherosa Ziehau #define	PMCS_WAKEUP_FRAME_3_ENB	0x00000800
38676fbb0b9SSepherosa Ziehau #define	PMCS_WAKEUP_FRAME_2_ENB	0x00000400
38776fbb0b9SSepherosa Ziehau #define	PMCS_WAKEUP_FRAME_1_ENB	0x00000200
38876fbb0b9SSepherosa Ziehau #define	PMCS_WAKEUP_FRAME_0_ENB	0x00000100
38976fbb0b9SSepherosa Ziehau #define	PMCS_LINK_FAIL_ENB	0x00000004
39076fbb0b9SSepherosa Ziehau #define	PMCS_LINK_RISING_ENB	0x00000002
39176fbb0b9SSepherosa Ziehau #define	PMCS_MAGIC_FRAME_ENB	0x00000001
39276fbb0b9SSepherosa Ziehau #define	PMCS_WOL_ENB_MASK	0x0000FFFF
39376fbb0b9SSepherosa Ziehau 
39476fbb0b9SSepherosa Ziehau /* Giga PHY & EEPROM registers. */
39576fbb0b9SSepherosa Ziehau #define	JME_PHY_EEPROM_BASE_ADDR	0x0400
39676fbb0b9SSepherosa Ziehau 
39776fbb0b9SSepherosa Ziehau #define	JME_GIGAR0LO		0x0400
39876fbb0b9SSepherosa Ziehau #define	JME_GIGAR0HI		0x0404
39976fbb0b9SSepherosa Ziehau #define	JME_GIGARALO		0x0408
40076fbb0b9SSepherosa Ziehau #define	JME_GIGARAHI		0x040C
40176fbb0b9SSepherosa Ziehau #define	JME_GIGARBLO		0x0410
40276fbb0b9SSepherosa Ziehau #define	JME_GIGARBHI		0x0414
40376fbb0b9SSepherosa Ziehau #define	JME_GIGARCLO		0x0418
40476fbb0b9SSepherosa Ziehau #define	JME_GIGARCHI		0x041C
40576fbb0b9SSepherosa Ziehau #define	JME_GIGARDLO		0x0420
40676fbb0b9SSepherosa Ziehau #define	JME_GIGARDHI		0x0424
40776fbb0b9SSepherosa Ziehau 
408*352c8444SSepherosa Ziehau #define JME_PHYPWR		0x0424	/* XXX same as JME_GIGARDHI */
409*352c8444SSepherosa Ziehau #define PHYPWR_DOWN1SEL		0x01000000
410*352c8444SSepherosa Ziehau #define PHYPWR_DOWN1SW		0x02000000
411*352c8444SSepherosa Ziehau #define PHYPWR_DOWN2		0x04000000
412*352c8444SSepherosa Ziehau /*
413*352c8444SSepherosa Ziehau  * XTL_OUT Clock select
414*352c8444SSepherosa Ziehau  * (an internal free-running clock)
415*352c8444SSepherosa Ziehau  * 0: xtl_out = A_XTL25_O
416*352c8444SSepherosa Ziehau  * 1: xtl_out = PD_OSC
417*352c8444SSepherosa Ziehau  */
418*352c8444SSepherosa Ziehau #define PHYPWR_CLKSEL		0x08000000
419*352c8444SSepherosa Ziehau 
420*352c8444SSepherosa Ziehau 
42176fbb0b9SSepherosa Ziehau /* BIST status and control. */
42276fbb0b9SSepherosa Ziehau #define	JME_GIGACSR		0x0428
42376fbb0b9SSepherosa Ziehau #define	GIGACSR_STATUS		0x40000000
42476fbb0b9SSepherosa Ziehau #define	GIGACSR_CTRL_MASK	0x30000000
42576fbb0b9SSepherosa Ziehau #define	GIGACSR_CTRL_DEFAULT	0x30000000
42676fbb0b9SSepherosa Ziehau #define	GIGACSR_TX_CLK_MASK	0x0F000000
42776fbb0b9SSepherosa Ziehau #define	GIGACSR_RX_CLK_MASK	0x00F00000
42876fbb0b9SSepherosa Ziehau #define	GIGACSR_TX_CLK_INV	0x00080000
42976fbb0b9SSepherosa Ziehau #define	GIGACSR_RX_CLK_INV	0x00040000
43076fbb0b9SSepherosa Ziehau #define	GIGACSR_PHY_RST		0x00010000
43176fbb0b9SSepherosa Ziehau #define	GIGACSR_IRQ_N_O		0x00001000
43276fbb0b9SSepherosa Ziehau #define	GIGACSR_BIST_OK		0x00000200
43376fbb0b9SSepherosa Ziehau #define	GIGACSR_BIST_DONE	0x00000100
43476fbb0b9SSepherosa Ziehau #define	GIGACSR_BIST_LED_ENB	0x00000010
43576fbb0b9SSepherosa Ziehau #define	GIGACSR_BIST_MASK	0x00000003
43676fbb0b9SSepherosa Ziehau 
43776fbb0b9SSepherosa Ziehau /* PHY Link Status. */
43876fbb0b9SSepherosa Ziehau #define	JME_LNKSTS		0x0430
43976fbb0b9SSepherosa Ziehau #define	LINKSTS_SPEED_10	0x00000000
44076fbb0b9SSepherosa Ziehau #define	LINKSTS_SPEED_100	0x00004000
44176fbb0b9SSepherosa Ziehau #define	LINKSTS_SPEED_1000	0x00008000
44276fbb0b9SSepherosa Ziehau #define	LINKSTS_FULL_DUPLEX	0x00002000
44376fbb0b9SSepherosa Ziehau #define	LINKSTS_PAGE_RCVD	0x00001000
44476fbb0b9SSepherosa Ziehau #define	LINKSTS_SPDDPX_RESOLVED	0x00000800
44576fbb0b9SSepherosa Ziehau #define	LINKSTS_UP		0x00000400
44676fbb0b9SSepherosa Ziehau #define	LINKSTS_ANEG_COMP	0x00000200
44776fbb0b9SSepherosa Ziehau #define	LINKSTS_MDI_CROSSOVR	0x00000040
44876fbb0b9SSepherosa Ziehau #define	LINKSTS_LPAR_PAUSE_ASYM	0x00000002
44976fbb0b9SSepherosa Ziehau #define	LINKSTS_LPAR_PAUSE	0x00000001
45076fbb0b9SSepherosa Ziehau 
45176fbb0b9SSepherosa Ziehau /* SMB control and status. */
45276fbb0b9SSepherosa Ziehau #define	JME_SMBCSR		0x0440
45376fbb0b9SSepherosa Ziehau #define	SMBCSR_SLAVE_ADDR_MASK	0x7F000000
45476fbb0b9SSepherosa Ziehau #define	SMBCSR_WR_DATA_NACK	0x00040000
45576fbb0b9SSepherosa Ziehau #define	SMBCSR_CMD_NACK		0x00020000
45676fbb0b9SSepherosa Ziehau #define	SMBCSR_RELOAD		0x00010000
45776fbb0b9SSepherosa Ziehau #define	SMBCSR_CMD_ADDR_MASK	0x0000FF00
45876fbb0b9SSepherosa Ziehau #define	SMBCSR_SCL_STAT		0x00000080
45976fbb0b9SSepherosa Ziehau #define	SMBCSR_SDA_STAT		0x00000040
46076fbb0b9SSepherosa Ziehau #define	SMBCSR_EEPROM_PRESENT	0x00000020
46176fbb0b9SSepherosa Ziehau #define	SMBCSR_INIT_LD_DONE	0x00000010
46276fbb0b9SSepherosa Ziehau #define	SMBCSR_HW_BUSY_MASK	0x0000000F
46376fbb0b9SSepherosa Ziehau #define	SMBCSR_HW_IDLE		0x00000000
46476fbb0b9SSepherosa Ziehau 
46576fbb0b9SSepherosa Ziehau /* SMB interface. */
46676fbb0b9SSepherosa Ziehau #define	JME_SMBINTF		0x0444
46776fbb0b9SSepherosa Ziehau #define	SMBINTF_RD_DATA_MASK	0xFF000000
46876fbb0b9SSepherosa Ziehau #define	SMBINTF_RD_DATA_SHIFT	24
46976fbb0b9SSepherosa Ziehau #define	SMBINTF_WR_DATA_MASK	0x00FF0000
47076fbb0b9SSepherosa Ziehau #define	SMBINTF_WR_DATA_SHIFT	16
47176fbb0b9SSepherosa Ziehau #define	SMBINTF_ADDR_MASK	0x0000FF00
47276fbb0b9SSepherosa Ziehau #define	SMBINTF_ADDR_SHIFT	8
47376fbb0b9SSepherosa Ziehau #define	SMBINTF_RD		0x00000020
47476fbb0b9SSepherosa Ziehau #define	SMBINTF_WR		0x00000000
47576fbb0b9SSepherosa Ziehau #define	SMBINTF_CMD_TRIGGER	0x00000010
47676fbb0b9SSepherosa Ziehau #define	SMBINTF_BUSY		0x00000010
47776fbb0b9SSepherosa Ziehau #define	SMBINTF_FAST_MODE	0x00000008
47876fbb0b9SSepherosa Ziehau #define	SMBINTF_GPIO_SCL	0x00000004
47976fbb0b9SSepherosa Ziehau #define	SMBINTF_GPIO_SDA	0x00000002
48076fbb0b9SSepherosa Ziehau #define	SMBINTF_GPIO_ENB	0x00000001
48176fbb0b9SSepherosa Ziehau 
48276fbb0b9SSepherosa Ziehau #define	JME_EEPROM_SIG0		0x55
48376fbb0b9SSepherosa Ziehau #define	JME_EEPROM_SIG1		0xAA
48476fbb0b9SSepherosa Ziehau #define	JME_EEPROM_DESC_BYTES	3
48576fbb0b9SSepherosa Ziehau #define	JME_EEPROM_DESC_END	0x80
48676fbb0b9SSepherosa Ziehau #define	JME_EEPROM_FUNC_MASK	0x70
48776fbb0b9SSepherosa Ziehau #define	JME_EEPROM_FUNC_SHIFT	4
48876fbb0b9SSepherosa Ziehau #define	JME_EEPROM_PAGE_MASK	0x0F
48976fbb0b9SSepherosa Ziehau #define	JME_EEPROM_PAGE_SHIFT	0
49076fbb0b9SSepherosa Ziehau 
49176fbb0b9SSepherosa Ziehau #define	JME_EEPROM_FUNC0	0
49276fbb0b9SSepherosa Ziehau /* PCI configuration space. */
49376fbb0b9SSepherosa Ziehau #define	JME_EEPROM_PAGE_BAR0	0
49476fbb0b9SSepherosa Ziehau /* 128 bytes I/O window. */
49576fbb0b9SSepherosa Ziehau #define	JME_EEPROM_PAGE_BAR1	1
49676fbb0b9SSepherosa Ziehau /* 256 bytes I/O window. */
49776fbb0b9SSepherosa Ziehau #define	JME_EEPROM_PAGE_BAR2	2
49876fbb0b9SSepherosa Ziehau 
49976fbb0b9SSepherosa Ziehau #define	JME_EEPROM_END		0xFF
50076fbb0b9SSepherosa Ziehau 
50176fbb0b9SSepherosa Ziehau #define	JME_EEPROM_MKDESC(f, p)						\
50276fbb0b9SSepherosa Ziehau 	((((f) & JME_EEPROM_FUNC_MASK) << JME_EEPROM_FUNC_SHIFT) |	\
50376fbb0b9SSepherosa Ziehau 	(((p) & JME_EEPROM_PAGE_MASK) << JME_EEPROM_PAGE_SHIFT))
50476fbb0b9SSepherosa Ziehau 
50576fbb0b9SSepherosa Ziehau /* 3-wire EEPROM interface. Obsolete interface, use SMBCSR. */
50676fbb0b9SSepherosa Ziehau #define	JME_EEPINTF		0x0448
50776fbb0b9SSepherosa Ziehau #define	EEPINTF_DATA_MASK	0xFFFF0000
50876fbb0b9SSepherosa Ziehau #define	EEPINTF_DATA_SHIFT	16
50976fbb0b9SSepherosa Ziehau #define	EEPINTF_ADDR_MASK	0x0000FC00
51076fbb0b9SSepherosa Ziehau #define	EEPINTF_ADDR_SHIFT	10
51176fbb0b9SSepherosa Ziehau #define	EEPRINTF_OP_MASK	0x00000300
51276fbb0b9SSepherosa Ziehau #define	EEPINTF_OP_EXECUTE	0x00000080
51376fbb0b9SSepherosa Ziehau #define	EEPINTF_DATA_OUT	0x00000008
51476fbb0b9SSepherosa Ziehau #define	EEPINTF_DATA_IN		0x00000004
51576fbb0b9SSepherosa Ziehau #define	EEPINTF_CLK		0x00000002
51676fbb0b9SSepherosa Ziehau #define	EEPINTF_SEL		0x00000001
51776fbb0b9SSepherosa Ziehau 
51876fbb0b9SSepherosa Ziehau /* 3-wire EEPROM control and status. Obsolete interface, use SMBCSR. */
51976fbb0b9SSepherosa Ziehau #define	JME_EEPCSR		0x044C
52076fbb0b9SSepherosa Ziehau #define	EEPCSR_EEPROM_RELOAD	0x00000002
52176fbb0b9SSepherosa Ziehau #define	EEPCSR_EEPROM_PRESENT	0x00000001
52276fbb0b9SSepherosa Ziehau 
52376fbb0b9SSepherosa Ziehau /* Misc registers. */
52476fbb0b9SSepherosa Ziehau #define	JME_MISC_BASE_ADDR	0x800
52576fbb0b9SSepherosa Ziehau 
52676fbb0b9SSepherosa Ziehau /* Timer control and status. */
52776fbb0b9SSepherosa Ziehau #define	JME_TMCSR		0x0800
52876fbb0b9SSepherosa Ziehau #define	TMCSR_SW_INTR		0x80000000
52976fbb0b9SSepherosa Ziehau #define	TMCSR_TIMER_INTR	0x10000000
53076fbb0b9SSepherosa Ziehau #define	TMCSR_TIMER_ENB		0x01000000
53176fbb0b9SSepherosa Ziehau #define	TMCSR_TIMER_COUNT_MASK	0x00FFFFFF
53276fbb0b9SSepherosa Ziehau 
53376fbb0b9SSepherosa Ziehau /* GPIO control and status. */
53476fbb0b9SSepherosa Ziehau #define	JME_GPIO		0x0804
53576fbb0b9SSepherosa Ziehau #define	GPIO_4_SPI_IN		0x80000000
53676fbb0b9SSepherosa Ziehau #define	GPIO_3_SPI_IN		0x40000000
53776fbb0b9SSepherosa Ziehau #define	GPIO_4_SPI_OUT		0x20000000
53876fbb0b9SSepherosa Ziehau #define	GPIO_4_SPI_OUT_ENB	0x10000000
53976fbb0b9SSepherosa Ziehau #define	GPIO_3_SPI_OUT		0x08000000
54076fbb0b9SSepherosa Ziehau #define	GPIO_3_SPI_OUT_ENB	0x04000000
54176fbb0b9SSepherosa Ziehau #define	GPIO_3_4_LED		0x00000000
54276fbb0b9SSepherosa Ziehau #define	GPIO_3_4_GPIO		0x02000000
54376fbb0b9SSepherosa Ziehau #define	GPIO_2_CLKREQN_IN	0x00100000
54476fbb0b9SSepherosa Ziehau #define	GPIO_2_CLKREQN_OUT	0x00040000
54576fbb0b9SSepherosa Ziehau #define	GPIO_2_CLKREQN_OUT_ENB	0x00020000
54676fbb0b9SSepherosa Ziehau #define	GPIO_1_LED42_IN		0x00001000
54776fbb0b9SSepherosa Ziehau #define	GPIO_1_LED42_OUT	0x00000400
54876fbb0b9SSepherosa Ziehau #define	GPIO_1_LED42_OUT_ENB	0x00000200
54976fbb0b9SSepherosa Ziehau #define	GPIO_1_LED42_ENB	0x00000100
55076fbb0b9SSepherosa Ziehau #define	GPIO_0_SDA_IN		0x00000010
55176fbb0b9SSepherosa Ziehau #define	GPIO_0_SDA_OUT		0x00000004
55276fbb0b9SSepherosa Ziehau #define	GPIO_0_SDA_OUT_ENB	0x00000002
55376fbb0b9SSepherosa Ziehau #define	GPIO_0_SDA_ENB		0x00000001
55476fbb0b9SSepherosa Ziehau 
55576fbb0b9SSepherosa Ziehau /* General purpose register 0. */
55676fbb0b9SSepherosa Ziehau #define	JME_GPREG0		0x0808
55776fbb0b9SSepherosa Ziehau #define	GPREG0_SH_POST_DW7_DIS	0x80000000
55876fbb0b9SSepherosa Ziehau #define	GPREG0_SH_POST_DW6_DIS	0x40000000
55976fbb0b9SSepherosa Ziehau #define	GPREG0_SH_POST_DW5_DIS	0x20000000
56076fbb0b9SSepherosa Ziehau #define	GPREG0_SH_POST_DW4_DIS	0x10000000
56176fbb0b9SSepherosa Ziehau #define	GPREG0_SH_POST_DW3_DIS	0x08000000
56276fbb0b9SSepherosa Ziehau #define	GPREG0_SH_POST_DW2_DIS	0x04000000
56376fbb0b9SSepherosa Ziehau #define	GPREG0_SH_POST_DW1_DIS	0x02000000
56476fbb0b9SSepherosa Ziehau #define	GPREG0_SH_POST_DW0_DIS	0x01000000
56576fbb0b9SSepherosa Ziehau #define	GPREG0_DMA_RD_REQ_8	0x00000000
56676fbb0b9SSepherosa Ziehau #define	GPREG0_DMA_RD_REQ_6	0x00100000
56776fbb0b9SSepherosa Ziehau #define	GPREG0_DMA_RD_REQ_5	0x00200000
56876fbb0b9SSepherosa Ziehau #define	GPREG0_DMA_RD_REQ_4	0x00300000
56976fbb0b9SSepherosa Ziehau #define	GPREG0_POST_DW0_ENB	0x00040000
57076fbb0b9SSepherosa Ziehau #define	GPREG0_PCC_CLR_DIS	0x00020000
57176fbb0b9SSepherosa Ziehau #define	GPREG0_FORCE_SCL_OUT	0x00010000
57276fbb0b9SSepherosa Ziehau #define	GPREG0_DL_RSTB_DIS	0x00008000
57376fbb0b9SSepherosa Ziehau #define	GPREG0_STICKY_RESET	0x00004000
57476fbb0b9SSepherosa Ziehau #define	GPREG0_DL_RSTB_CFG_DIS	0x00002000
57576fbb0b9SSepherosa Ziehau #define	GPREG0_LINK_CHG_POLL	0x00001000
57676fbb0b9SSepherosa Ziehau #define	GPREG0_LINK_CHG_DIRECT	0x00000000
57776fbb0b9SSepherosa Ziehau #define	GPREG0_MSI_GEN_SEL	0x00000800
57876fbb0b9SSepherosa Ziehau #define	GPREG0_SMB_PAD_PU_DIS	0x00000400
57976fbb0b9SSepherosa Ziehau #define	GPREG0_PCC_UNIT_16US	0x00000000
58076fbb0b9SSepherosa Ziehau #define	GPREG0_PCC_UNIT_256US	0x00000100
58176fbb0b9SSepherosa Ziehau #define	GPREG0_PCC_UNIT_US	0x00000200
58276fbb0b9SSepherosa Ziehau #define	GPREG0_PCC_UNIT_MS	0x00000300
58376fbb0b9SSepherosa Ziehau #define	GPREG0_PCC_UNIT_MASK	0x00000300
58476fbb0b9SSepherosa Ziehau #define	GPREG0_INTR_EVENT_ENB	0x00000080
58576fbb0b9SSepherosa Ziehau #define	GPREG0_PME_ENB		0x00000020
58676fbb0b9SSepherosa Ziehau #define	GPREG0_PHY_ADDR_MASK	0x0000001F
58776fbb0b9SSepherosa Ziehau #define	GPREG0_PHY_ADDR_SHIFT	0
58876fbb0b9SSepherosa Ziehau #define	GPREG0_PHY_ADDR		1
58976fbb0b9SSepherosa Ziehau 
5903b3da110SSepherosa Ziehau /* General purpose register 1. */
59176fbb0b9SSepherosa Ziehau #define	JME_GPREG1		0x080C
5923b3da110SSepherosa Ziehau #define GPREG1_WA_HDX		0x00000020 /* 250A2 only, for 10/100 mode */
5933b3da110SSepherosa Ziehau #define GPREG1_WA_IP6RSS	0x00000040 /* 250A2 only, for 10/100 mode */
594409fe405SSepherosa Ziehau #define GPREG1_DIS_RXMAC_CLKSRC	0x04000000
59576fbb0b9SSepherosa Ziehau 
59676fbb0b9SSepherosa Ziehau /* MSIX entry number of interrupt source. */
59776fbb0b9SSepherosa Ziehau #define	JME_MSINUM_BASE		0x0810
59858880b0dSSepherosa Ziehau #define JME_MSINUM(x)		(JME_MSINUM_BASE + (4 * (x)))
59958880b0dSSepherosa Ziehau #define JME_MSINUM_CNT		4
60058880b0dSSepherosa Ziehau #define JME_MSINUM_FACTOR	8
60176fbb0b9SSepherosa Ziehau 
60276fbb0b9SSepherosa Ziehau /* Interrupt event status. */
60376fbb0b9SSepherosa Ziehau #define	JME_INTR_STATUS		0x0820
60476fbb0b9SSepherosa Ziehau #define	INTR_SW			0x80000000
60576fbb0b9SSepherosa Ziehau #define	INTR_TIMER		0x40000000
60676fbb0b9SSepherosa Ziehau #define	INTR_LINKCHG		0x20000000
60776fbb0b9SSepherosa Ziehau #define	INTR_PAUSE		0x10000000
60876fbb0b9SSepherosa Ziehau #define	INTR_MAGIC_PKT		0x08000000
60976fbb0b9SSepherosa Ziehau #define	INTR_WAKEUP_PKT		0x04000000
61076fbb0b9SSepherosa Ziehau #define	INTR_RXQ0_COAL_TO	0x02000000
61176fbb0b9SSepherosa Ziehau #define	INTR_RXQ1_COAL_TO	0x01000000
61276fbb0b9SSepherosa Ziehau #define	INTR_RXQ2_COAL_TO	0x00800000
61376fbb0b9SSepherosa Ziehau #define	INTR_RXQ3_COAL_TO	0x00400000
61476fbb0b9SSepherosa Ziehau #define	INTR_TXQ_COAL_TO	0x00200000
61576fbb0b9SSepherosa Ziehau #define	INTR_RXQ0_COAL		0x00100000
61676fbb0b9SSepherosa Ziehau #define	INTR_RXQ1_COAL		0x00080000
61776fbb0b9SSepherosa Ziehau #define	INTR_RXQ2_COAL		0x00040000
61876fbb0b9SSepherosa Ziehau #define	INTR_RXQ3_COAL		0x00020000
61976fbb0b9SSepherosa Ziehau #define	INTR_TXQ_COAL		0x00010000
62076fbb0b9SSepherosa Ziehau #define	INTR_RXQ3_DESC_EMPTY	0x00008000
62176fbb0b9SSepherosa Ziehau #define	INTR_RXQ2_DESC_EMPTY	0x00004000
62276fbb0b9SSepherosa Ziehau #define	INTR_RXQ1_DESC_EMPTY	0x00002000
62376fbb0b9SSepherosa Ziehau #define	INTR_RXQ0_DESC_EMPTY	0x00001000
62476fbb0b9SSepherosa Ziehau #define	INTR_RXQ3_COMP		0x00000800
62576fbb0b9SSepherosa Ziehau #define	INTR_RXQ2_COMP		0x00000400
62676fbb0b9SSepherosa Ziehau #define	INTR_RXQ1_COMP		0x00000200
62776fbb0b9SSepherosa Ziehau #define	INTR_RXQ0_COMP		0x00000100
62876fbb0b9SSepherosa Ziehau #define	INTR_TXQ7_COMP		0x00000080
62976fbb0b9SSepherosa Ziehau #define	INTR_TXQ6_COMP		0x00000040
63076fbb0b9SSepherosa Ziehau #define	INTR_TXQ5_COMP		0x00000020
63176fbb0b9SSepherosa Ziehau #define	INTR_TXQ4_COMP		0x00000010
63276fbb0b9SSepherosa Ziehau #define	INTR_TXQ3_COMP		0x00000008
63376fbb0b9SSepherosa Ziehau #define	INTR_TXQ2_COMP		0x00000004
63476fbb0b9SSepherosa Ziehau #define	INTR_TXQ1_COMP		0x00000002
63576fbb0b9SSepherosa Ziehau #define	INTR_TXQ0_COMP		0x00000001
63676fbb0b9SSepherosa Ziehau 
63758880b0dSSepherosa Ziehau #define JME_INTR_CNT		32
63858880b0dSSepherosa Ziehau 
63976fbb0b9SSepherosa Ziehau #define	INTR_RXQ_COAL_TO					\
64076fbb0b9SSepherosa Ziehau 	(INTR_RXQ0_COAL_TO | INTR_RXQ1_COAL_TO |		\
64176fbb0b9SSepherosa Ziehau 	 INTR_RXQ2_COAL_TO | INTR_RXQ3_COAL_TO)
64276fbb0b9SSepherosa Ziehau 
64376fbb0b9SSepherosa Ziehau #define	INTR_RXQ_COAL						\
64476fbb0b9SSepherosa Ziehau 	(INTR_RXQ0_COAL | INTR_RXQ1_COAL | INTR_RXQ2_COAL |	\
64576fbb0b9SSepherosa Ziehau 	 INTR_RXQ3_COAL)
64676fbb0b9SSepherosa Ziehau 
64776fbb0b9SSepherosa Ziehau #define	INTR_RXQ_COMP						\
64876fbb0b9SSepherosa Ziehau 	(INTR_RXQ0_COMP | INTR_RXQ1_COMP | INTR_RXQ2_COMP |	\
64976fbb0b9SSepherosa Ziehau 	 INTR_RXQ3_COMP)
65076fbb0b9SSepherosa Ziehau 
65176fbb0b9SSepherosa Ziehau #define	INTR_RXQ_DESC_EMPTY					\
65276fbb0b9SSepherosa Ziehau 	(INTR_RXQ0_DESC_EMPTY | INTR_RXQ1_DESC_EMPTY |		\
65376fbb0b9SSepherosa Ziehau 	INTR_RXQ2_DESC_EMPTY | INTR_RXQ3_DESC_EMPTY)
65476fbb0b9SSepherosa Ziehau 
65576fbb0b9SSepherosa Ziehau #define	INTR_RXQ_COMP						\
65676fbb0b9SSepherosa Ziehau 	(INTR_RXQ0_COMP | INTR_RXQ1_COMP | INTR_RXQ2_COMP |	\
65776fbb0b9SSepherosa Ziehau 	INTR_RXQ3_COMP)
65876fbb0b9SSepherosa Ziehau 
65976fbb0b9SSepherosa Ziehau #define	INTR_TXQ_COMP						\
66076fbb0b9SSepherosa Ziehau 	(INTR_TXQ0_COMP | INTR_TXQ1_COMP | INTR_TXQ2_COMP |	\
66176fbb0b9SSepherosa Ziehau 	INTR_TXQ3_COMP | INTR_TXQ4_COMP | INTR_TXQ5_COMP | 	\
66276fbb0b9SSepherosa Ziehau 	INTR_TXQ6_COMP | INTR_TXQ7_COMP)
66376fbb0b9SSepherosa Ziehau 
66476fbb0b9SSepherosa Ziehau #define	JME_INTRS						\
66576fbb0b9SSepherosa Ziehau 	(INTR_RXQ_COAL_TO | INTR_TXQ_COAL_TO | INTR_RXQ_COAL |	\
66676fbb0b9SSepherosa Ziehau 	 INTR_TXQ_COAL | INTR_RXQ_DESC_EMPTY)
66776fbb0b9SSepherosa Ziehau 
66876fbb0b9SSepherosa Ziehau #define	N_INTR_SW		31
66976fbb0b9SSepherosa Ziehau #define	N_INTR_TIMER		30
67076fbb0b9SSepherosa Ziehau #define	N_INTR_LINKCHG		29
67176fbb0b9SSepherosa Ziehau #define	N_INTR_PAUSE		28
67276fbb0b9SSepherosa Ziehau #define	N_INTR_MAGIC_PKT	27
67376fbb0b9SSepherosa Ziehau #define	N_INTR_WAKEUP_PKT	26
67476fbb0b9SSepherosa Ziehau #define	N_INTR_RXQ0_COAL_TO	25
67576fbb0b9SSepherosa Ziehau #define	N_INTR_RXQ1_COAL_TO	24
67676fbb0b9SSepherosa Ziehau #define	N_INTR_RXQ2_COAL_TO	23
67776fbb0b9SSepherosa Ziehau #define	N_INTR_RXQ3_COAL_TO	22
67876fbb0b9SSepherosa Ziehau #define	N_INTR_TXQ_COAL_TO	21
67976fbb0b9SSepherosa Ziehau #define	N_INTR_RXQ0_COAL	20
68076fbb0b9SSepherosa Ziehau #define	N_INTR_RXQ1_COAL	19
68176fbb0b9SSepherosa Ziehau #define	N_INTR_RXQ2_COAL	18
68276fbb0b9SSepherosa Ziehau #define	N_INTR_RXQ3_COAL	17
68376fbb0b9SSepherosa Ziehau #define	N_INTR_TXQ_COAL		16
68476fbb0b9SSepherosa Ziehau #define	N_INTR_RXQ3_DESC_EMPTY	15
68576fbb0b9SSepherosa Ziehau #define	N_INTR_RXQ2_DESC_EMPTY	14
68676fbb0b9SSepherosa Ziehau #define	N_INTR_RXQ1_DESC_EMPTY	13
68776fbb0b9SSepherosa Ziehau #define	N_INTR_RXQ0_DESC_EMPTY	12
68876fbb0b9SSepherosa Ziehau #define	N_INTR_RXQ3_COMP	11
68976fbb0b9SSepherosa Ziehau #define	N_INTR_RXQ2_COMP	10
69076fbb0b9SSepherosa Ziehau #define	N_INTR_RXQ1_COMP	9
69176fbb0b9SSepherosa Ziehau #define	N_INTR_RXQ0_COMP	8
69276fbb0b9SSepherosa Ziehau #define	N_INTR_TXQ7_COMP	7
69376fbb0b9SSepherosa Ziehau #define	N_INTR_TXQ6_COMP	6
69476fbb0b9SSepherosa Ziehau #define	N_INTR_TXQ5_COMP	5
69576fbb0b9SSepherosa Ziehau #define	N_INTR_TXQ4_COMP	4
69676fbb0b9SSepherosa Ziehau #define	N_INTR_TXQ3_COMP	3
69776fbb0b9SSepherosa Ziehau #define	N_INTR_TXQ2_COMP	2
69876fbb0b9SSepherosa Ziehau #define	N_INTR_TXQ1_COMP	1
69976fbb0b9SSepherosa Ziehau #define	N_INTR_TXQ0_COMP	0
70076fbb0b9SSepherosa Ziehau 
70176fbb0b9SSepherosa Ziehau /* Interrupt request status. */
70276fbb0b9SSepherosa Ziehau #define	JME_INTR_REQ_STATUS	0x0824
70376fbb0b9SSepherosa Ziehau 
70476fbb0b9SSepherosa Ziehau /* Interrupt enable - setting port. */
70576fbb0b9SSepherosa Ziehau #define	JME_INTR_MASK_SET	0x0828
70676fbb0b9SSepherosa Ziehau 
70776fbb0b9SSepherosa Ziehau /* Interrupt enable - clearing port. */
70876fbb0b9SSepherosa Ziehau #define	JME_INTR_MASK_CLR	0x082C
70976fbb0b9SSepherosa Ziehau 
71076fbb0b9SSepherosa Ziehau /* Packet completion coalescing control of Rx queue 0, 1, 2 and 3. */
7114447c752SSepherosa Ziehau #define	JME_PCCRX(r)		(0x0830 + ((r) * 4))
71276fbb0b9SSepherosa Ziehau #define	PCCRX_COAL_TO_MASK	0xFFFF0000
71376fbb0b9SSepherosa Ziehau #define	PCCRX_COAL_TO_SHIFT	16
71476fbb0b9SSepherosa Ziehau #define	PCCRX_COAL_PKT_MASK	0x0000FF00
71576fbb0b9SSepherosa Ziehau #define	PCCRX_COAL_PKT_SHIFT	8
71676fbb0b9SSepherosa Ziehau 
71776fbb0b9SSepherosa Ziehau #define	PCCRX_COAL_TO_MIN	1
7187409c356SSepherosa Ziehau #define	PCCRX_COAL_TO_DEFAULT	150
71976fbb0b9SSepherosa Ziehau #define	PCCRX_COAL_TO_MAX	65535
72076fbb0b9SSepherosa Ziehau 
7214b804818SSepherosa Ziehau #define	PCCRX_COAL_PKT_MIN	0
7222870abc4SSepherosa Ziehau #define	PCCRX_COAL_PKT_DEFAULT	64
72376fbb0b9SSepherosa Ziehau #define	PCCRX_COAL_PKT_MAX	255
72476fbb0b9SSepherosa Ziehau 
72576fbb0b9SSepherosa Ziehau /* Packet completion coalescing control of Tx queue. */
72676fbb0b9SSepherosa Ziehau #define	JME_PCCTX		0x0840
72776fbb0b9SSepherosa Ziehau #define	PCCTX_COAL_TO_MASK	0xFFFF0000
72876fbb0b9SSepherosa Ziehau #define	PCCTX_COAL_TO_SHIFT	16
72976fbb0b9SSepherosa Ziehau #define	PCCTX_COAL_PKT_MASK	0x0000FF00
73076fbb0b9SSepherosa Ziehau #define	PCCTX_COAL_PKT_SHIFT	8
73176fbb0b9SSepherosa Ziehau #define	PCCTX_COAL_TXQ7		0x00000080
73276fbb0b9SSepherosa Ziehau #define	PCCTX_COAL_TXQ6		0x00000040
73376fbb0b9SSepherosa Ziehau #define	PCCTX_COAL_TXQ5		0x00000020
73476fbb0b9SSepherosa Ziehau #define	PCCTX_COAL_TXQ4		0x00000010
73576fbb0b9SSepherosa Ziehau #define	PCCTX_COAL_TXQ3		0x00000008
73676fbb0b9SSepherosa Ziehau #define	PCCTX_COAL_TXQ2		0x00000004
73776fbb0b9SSepherosa Ziehau #define	PCCTX_COAL_TXQ1		0x00000002
73876fbb0b9SSepherosa Ziehau #define	PCCTX_COAL_TXQ0		0x00000001
73976fbb0b9SSepherosa Ziehau 
74076fbb0b9SSepherosa Ziehau #define	PCCTX_COAL_TO_MIN	1
7417409c356SSepherosa Ziehau #define	PCCTX_COAL_TO_DEFAULT	250
74276fbb0b9SSepherosa Ziehau #define	PCCTX_COAL_TO_MAX	65535
74376fbb0b9SSepherosa Ziehau 
7444b804818SSepherosa Ziehau #define	PCCTX_COAL_PKT_MIN	0
7457409c356SSepherosa Ziehau #define	PCCTX_COAL_PKT_DEFAULT	128
74676fbb0b9SSepherosa Ziehau #define	PCCTX_COAL_PKT_MAX	255
74776fbb0b9SSepherosa Ziehau 
74876fbb0b9SSepherosa Ziehau /* Chip mode and FPGA version. */
74976fbb0b9SSepherosa Ziehau #define	JME_CHIPMODE		0x0844
75076fbb0b9SSepherosa Ziehau #define	CHIPMODE_FPGA_REV_MASK	0xFFFF0000
75176fbb0b9SSepherosa Ziehau #define	CHIPMODE_FPGA_REV_SHIFT	16
75276fbb0b9SSepherosa Ziehau #define	CHIPMODE_NOT_FPGA	0
753b249905bSSepherosa Ziehau #define CHIPMODE_REVECO_MASK	0x0000F000
754b249905bSSepherosa Ziehau #define CHIPMODE_REVECO_SHIFT	12
755b249905bSSepherosa Ziehau #define	CHIPMODE_REVFM_MASK	0x00000F00
756b249905bSSepherosa Ziehau #define	CHIPMODE_REVFM_SHIFT	8
75776fbb0b9SSepherosa Ziehau #define	CHIPMODE_MODE_48P	0x0000000C
75876fbb0b9SSepherosa Ziehau #define	CHIPMODE_MODE_64P	0x00000004
75976fbb0b9SSepherosa Ziehau #define	CHIPMODE_MODE_128P_MAC	0x00000003
76076fbb0b9SSepherosa Ziehau #define	CHIPMODE_MODE_128P_DBG	0x00000002
76176fbb0b9SSepherosa Ziehau #define	CHIPMODE_MODE_128P_PHY	0x00000000
76276fbb0b9SSepherosa Ziehau 
76376fbb0b9SSepherosa Ziehau /* Shadow status base address high/low. */
76476fbb0b9SSepherosa Ziehau #define	JME_SHBASE_ADDR_HI	0x0848
76576fbb0b9SSepherosa Ziehau #define	JME_SHBASE_ADDR_LO	0x084C
76676fbb0b9SSepherosa Ziehau #define	SHBASE_ADDR_LO_MASK	0xFFFFFFE0
76776fbb0b9SSepherosa Ziehau #define	SHBASE_POST_FORCE	0x00000002
76876fbb0b9SSepherosa Ziehau #define	SHBASE_POST_ENB		0x00000001
76976fbb0b9SSepherosa Ziehau 
77076fbb0b9SSepherosa Ziehau /* Timer 1 and 2. */
77176fbb0b9SSepherosa Ziehau #define	JME_TIMER1		0x0870
77276fbb0b9SSepherosa Ziehau #define	JME_TIMER2		0x0874
77376fbb0b9SSepherosa Ziehau #define	TIMER_ENB		0x01000000
77476fbb0b9SSepherosa Ziehau #define	TIMER_CNT_MASK		0x00FFFFFF
77576fbb0b9SSepherosa Ziehau #define	TIMER_CNT_SHIFT		0
77676fbb0b9SSepherosa Ziehau #define	TIMER_UNIT		1024	/* 1024us */
77776fbb0b9SSepherosa Ziehau 
77876fbb0b9SSepherosa Ziehau /* Aggresive power mode control. */
77976fbb0b9SSepherosa Ziehau #define	JME_APMC		0x087C
78076fbb0b9SSepherosa Ziehau #define	APMC_PCIE_SDOWN_STAT	0x80000000
78176fbb0b9SSepherosa Ziehau #define	APMC_PCIE_SDOWN_ENB	0x40000000
78276fbb0b9SSepherosa Ziehau #define	APMC_PSEUDO_HOT_PLUG	0x20000000
78376fbb0b9SSepherosa Ziehau #define	APMC_EXT_PLUGIN_ENB	0x04000000
78476fbb0b9SSepherosa Ziehau #define	APMC_EXT_PLUGIN_CTL_MSK	0x03000000
78576fbb0b9SSepherosa Ziehau #define	APMC_DIS_SRAM		0x00000004
78676fbb0b9SSepherosa Ziehau #define	APMC_DIS_CLKPM		0x00000002
78776fbb0b9SSepherosa Ziehau #define	APMC_DIS_CLKTX		0x00000001
78876fbb0b9SSepherosa Ziehau 
78976fbb0b9SSepherosa Ziehau /* Packet completion coalesing status of Rx queue 0, 1, 2 and 3. */
79076fbb0b9SSepherosa Ziehau #define	JME_PCCSRX_BASE		0x0880
79176fbb0b9SSepherosa Ziehau #define	JME_PCCSRX_END		0x088F
79276fbb0b9SSepherosa Ziehau #define	PCCSRX_REG(x)		(JME_PCCSRX_BASE + ((x) * 4))
79376fbb0b9SSepherosa Ziehau #define	PCCSRX_TO_MASK		0xFFFF0000
79476fbb0b9SSepherosa Ziehau #define	PCCSRX_TO_SHIFT		16
79576fbb0b9SSepherosa Ziehau #define	PCCSRX_PKT_CNT_MASK	0x0000FF00
79676fbb0b9SSepherosa Ziehau #define	PCCSRX_PKT_CNT_SHIFT	8
79776fbb0b9SSepherosa Ziehau 
79876fbb0b9SSepherosa Ziehau /* Packet completion coalesing status of Tx queue. */
79976fbb0b9SSepherosa Ziehau #define	JME_PCCSTX		0x0890
80076fbb0b9SSepherosa Ziehau #define	PCCSTX_TO_MASK		0xFFFF0000
80176fbb0b9SSepherosa Ziehau #define	PCCSTX_TO_SHIFT		16
80276fbb0b9SSepherosa Ziehau #define	PCCSTX_PKT_CNT_MASK	0x0000FF00
80376fbb0b9SSepherosa Ziehau #define	PCCSTX_PKT_CNT_SHIFT	8
80476fbb0b9SSepherosa Ziehau 
80576fbb0b9SSepherosa Ziehau /* Tx queues empty indicator. */
80676fbb0b9SSepherosa Ziehau #define	JME_TXQEMPTY		0x0894
80776fbb0b9SSepherosa Ziehau #define	TXQEMPTY_TXQ7		0x00000080
80876fbb0b9SSepherosa Ziehau #define	TXQEMPTY_TXQ6		0x00000040
80976fbb0b9SSepherosa Ziehau #define	TXQEMPTY_TXQ5		0x00000020
81076fbb0b9SSepherosa Ziehau #define	TXQEMPTY_TXQ4		0x00000010
81176fbb0b9SSepherosa Ziehau #define	TXQEMPTY_TXQ3		0x00000008
81276fbb0b9SSepherosa Ziehau #define	TXQEMPTY_TXQ2		0x00000004
81376fbb0b9SSepherosa Ziehau #define	TXQEMPTY_TXQ1		0x00000002
81476fbb0b9SSepherosa Ziehau #define	TXQEMPTY_TXQ0		0x00000001
81576fbb0b9SSepherosa Ziehau #define	TXQEMPTY_N_TXQ(x, y)	((x) & (0x01 << (y)))
81676fbb0b9SSepherosa Ziehau 
81776fbb0b9SSepherosa Ziehau /* RSS control registers. */
81876fbb0b9SSepherosa Ziehau #define	JME_RSS_BASE		0x0C00
81976fbb0b9SSepherosa Ziehau 
82076fbb0b9SSepherosa Ziehau #define	JME_RSSC		0x0C00
82176fbb0b9SSepherosa Ziehau #define	RSSC_HASH_LEN_MASK	0x0000E000
82276fbb0b9SSepherosa Ziehau #define	RSSC_HASH_64_ENTRY	0x0000A000
82376fbb0b9SSepherosa Ziehau #define	RSSC_HASH_128_ENTRY	0x0000E000
82476fbb0b9SSepherosa Ziehau #define	RSSC_HASH_NONE		0x00001000
82576fbb0b9SSepherosa Ziehau #define	RSSC_HASH_IPV6		0x00000800
82676fbb0b9SSepherosa Ziehau #define	RSSC_HASH_IPV4		0x00000400
82776fbb0b9SSepherosa Ziehau #define	RSSC_HASH_IPV6_TCP	0x00000200
82876fbb0b9SSepherosa Ziehau #define	RSSC_HASH_IPV4_TCP	0x00000100
82976fbb0b9SSepherosa Ziehau #define	RSSC_NCPU_MASK		0x000000F8
83076fbb0b9SSepherosa Ziehau #define	RSSC_NCPU_SHIFT		3
83176fbb0b9SSepherosa Ziehau #define	RSSC_DIS_RSS		0x00000000
83276fbb0b9SSepherosa Ziehau #define	RSSC_2RXQ_ENB		0x00000001
83376fbb0b9SSepherosa Ziehau #define	RSSS_4RXQ_ENB		0x00000002
83476fbb0b9SSepherosa Ziehau 
83576fbb0b9SSepherosa Ziehau /* CPU vector. */
83676fbb0b9SSepherosa Ziehau #define	JME_RSSCPU		0x0C04
83776fbb0b9SSepherosa Ziehau #define	RSSCPU_N_SEL(x)		((1 << (x))
83876fbb0b9SSepherosa Ziehau 
83976fbb0b9SSepherosa Ziehau /* RSS Hash value. */
84076fbb0b9SSepherosa Ziehau #define	JME_RSSHASH		0x0C10
84176fbb0b9SSepherosa Ziehau 
84276fbb0b9SSepherosa Ziehau #define	JME_RSSHASH_STAT	0x0C14
84376fbb0b9SSepherosa Ziehau 
84476fbb0b9SSepherosa Ziehau #define	JME_RSS_RDATA0		0x0C18
84576fbb0b9SSepherosa Ziehau 
84676fbb0b9SSepherosa Ziehau #define	JME_RSS_RDATA1		0x0C1C
84776fbb0b9SSepherosa Ziehau 
84876fbb0b9SSepherosa Ziehau /* RSS secret key. */
84976fbb0b9SSepherosa Ziehau #define	JME_RSSKEY_BASE		0x0C40
850760c056cSSepherosa Ziehau #define RSSKEY_NREGS		10
85124dd1705SSepherosa Ziehau #define RSSKEY_REGSIZE		4
85224dd1705SSepherosa Ziehau #define RSSKEY_REGVAL(k, x)	(k[(x) * RSSKEY_REGSIZE] << 24 | \
85324dd1705SSepherosa Ziehau 				 k[(x) * RSSKEY_REGSIZE + 1] << 16 | \
85424dd1705SSepherosa Ziehau 				 k[(x) * RSSKEY_REGSIZE + 2] << 8 | \
85524dd1705SSepherosa Ziehau 				 k[(x) * RSSKEY_REGSIZE + 3])
85624dd1705SSepherosa Ziehau #define	RSSKEY_REG(x)		(JME_RSSKEY_BASE + (RSSKEY_REGSIZE * (x)))
85776fbb0b9SSepherosa Ziehau 
85876fbb0b9SSepherosa Ziehau /* RSS indirection table entries. */
85976fbb0b9SSepherosa Ziehau #define	JME_RSSTBL_BASE		0x0C80
860760c056cSSepherosa Ziehau #define RSSTBL_NREGS		32
86166f75939SSepherosa Ziehau #define RSSTBL_REGSIZE		4
86266f75939SSepherosa Ziehau #define	RSSTBL_REG(x)		(JME_RSSTBL_BASE + (RSSTBL_REGSIZE * (x)))
86376fbb0b9SSepherosa Ziehau 
86476fbb0b9SSepherosa Ziehau /* MSI-X table. */
86576fbb0b9SSepherosa Ziehau #define	JME_MSIX_BASE_ADDR	0x2000
86676fbb0b9SSepherosa Ziehau 
86776fbb0b9SSepherosa Ziehau #define	JME_MSIX_BASE		0x2000
86876fbb0b9SSepherosa Ziehau #define	JME_MSIX_END		0x207F
86976fbb0b9SSepherosa Ziehau #define	JME_MSIX_NENTRY		8
87076fbb0b9SSepherosa Ziehau #define	MSIX_REG(x)		(JME_MSIX_BASE + ((x) * 0x10))
87176fbb0b9SSepherosa Ziehau #define	MSIX_ADDR_HI_OFF	0x00
87276fbb0b9SSepherosa Ziehau #define	MSIX_ADDR_LO_OFF	0x04
87376fbb0b9SSepherosa Ziehau #define	MSIX_ADDR_LO_MASK	0xFFFFFFFC
87476fbb0b9SSepherosa Ziehau #define	MSIX_DATA_OFF		0x08
87576fbb0b9SSepherosa Ziehau #define	MSIX_VECTOR_OFF		0x0C
87676fbb0b9SSepherosa Ziehau #define	MSIX_VECTOR_RSVD	0x80000000
87776fbb0b9SSepherosa Ziehau #define	MSIX_VECTOR_DIS		0x00000001
87876fbb0b9SSepherosa Ziehau 
87976fbb0b9SSepherosa Ziehau /* MSI-X PBA. */
88076fbb0b9SSepherosa Ziehau #define	JME_MSIX_PBA_BASE_ADDR	0x3000
88176fbb0b9SSepherosa Ziehau 
88276fbb0b9SSepherosa Ziehau #define	JME_MSIX_PBA		0x3000
88376fbb0b9SSepherosa Ziehau #define	MSIX_PBA_RSVD_MASK	0xFFFFFF00
88476fbb0b9SSepherosa Ziehau #define	MSIX_PBA_RSVD_SHIFT	8
88576fbb0b9SSepherosa Ziehau #define	MSIX_PBA_PEND_MASK	0x000000FF
88676fbb0b9SSepherosa Ziehau #define	MSIX_PBA_PEND_SHIFT	0
88776fbb0b9SSepherosa Ziehau #define	MSIX_PBA_PEND_ENTRY7	0x00000080
88876fbb0b9SSepherosa Ziehau #define	MSIX_PBA_PEND_ENTRY6	0x00000040
88976fbb0b9SSepherosa Ziehau #define	MSIX_PBA_PEND_ENTRY5	0x00000020
89076fbb0b9SSepherosa Ziehau #define	MSIX_PBA_PEND_ENTRY4	0x00000010
89176fbb0b9SSepherosa Ziehau #define	MSIX_PBA_PEND_ENTRY3	0x00000008
89276fbb0b9SSepherosa Ziehau #define	MSIX_PBA_PEND_ENTRY2	0x00000004
89376fbb0b9SSepherosa Ziehau #define	MSIX_PBA_PEND_ENTRY1	0x00000002
89476fbb0b9SSepherosa Ziehau #define	MSIX_PBA_PEND_ENTRY0	0x00000001
89576fbb0b9SSepherosa Ziehau 
89676fbb0b9SSepherosa Ziehau #define	JME_PHY_OUI		0x001B8C
89776fbb0b9SSepherosa Ziehau #define	JME_PHY_MODEL		0x21
89876fbb0b9SSepherosa Ziehau #define	JME_PHY_REV		0x01
89976fbb0b9SSepherosa Ziehau #define	JME_PHY_ADDR		1
90076fbb0b9SSepherosa Ziehau 
90176fbb0b9SSepherosa Ziehau /* JMC250 shadow status block. */
90276fbb0b9SSepherosa Ziehau struct jme_ssb {
90376fbb0b9SSepherosa Ziehau 	uint32_t	dw0;
90476fbb0b9SSepherosa Ziehau 	uint32_t	dw1;
90576fbb0b9SSepherosa Ziehau 	uint32_t	dw2;
90676fbb0b9SSepherosa Ziehau 	uint32_t	dw3;
90776fbb0b9SSepherosa Ziehau 	uint32_t	dw4;
90876fbb0b9SSepherosa Ziehau 	uint32_t	dw5;
90976fbb0b9SSepherosa Ziehau 	uint32_t	dw6;
91076fbb0b9SSepherosa Ziehau 	uint32_t	dw7;
91176fbb0b9SSepherosa Ziehau };
91276fbb0b9SSepherosa Ziehau 
91376fbb0b9SSepherosa Ziehau /* JMC250 descriptor structures. */
91476fbb0b9SSepherosa Ziehau struct jme_desc {
91576fbb0b9SSepherosa Ziehau 	uint32_t	flags;
91676fbb0b9SSepherosa Ziehau 	uint32_t	buflen;
91776fbb0b9SSepherosa Ziehau 	uint32_t	addr_hi;
91876fbb0b9SSepherosa Ziehau 	uint32_t	addr_lo;
91976fbb0b9SSepherosa Ziehau };
92076fbb0b9SSepherosa Ziehau 
92176fbb0b9SSepherosa Ziehau #define	JME_TD_OWN		0x80000000
92276fbb0b9SSepherosa Ziehau #define	JME_TD_INTR		0x40000000
92376fbb0b9SSepherosa Ziehau #define	JME_TD_64BIT		0x20000000
92476fbb0b9SSepherosa Ziehau #define	JME_TD_TCPCSUM		0x10000000
92576fbb0b9SSepherosa Ziehau #define	JME_TD_UDPCSUM		0x08000000
92676fbb0b9SSepherosa Ziehau #define	JME_TD_IPCSUM		0x04000000
92776fbb0b9SSepherosa Ziehau #define	JME_TD_TSO		0x02000000
92876fbb0b9SSepherosa Ziehau #define	JME_TD_VLAN_TAG		0x01000000
92976fbb0b9SSepherosa Ziehau #define	JME_TD_VLAN_MASK	0x0000FFFF
93076fbb0b9SSepherosa Ziehau 
93176fbb0b9SSepherosa Ziehau #define	JME_TD_MSS_MASK		0xFFFC0000
93276fbb0b9SSepherosa Ziehau #define	JME_TD_MSS_SHIFT	18
93376fbb0b9SSepherosa Ziehau #define	JME_TD_BUF_LEN_MASK	0x0000FFFF
93476fbb0b9SSepherosa Ziehau #define	JME_TD_BUF_LEN_SHIFT	0
93576fbb0b9SSepherosa Ziehau 
93676fbb0b9SSepherosa Ziehau #define	JME_TD_FRAME_LEN_MASK	0x0000FFFF
93776fbb0b9SSepherosa Ziehau #define	JME_TD_FRAME_LEN_SHIFT	0
93876fbb0b9SSepherosa Ziehau 
93976fbb0b9SSepherosa Ziehau /*
94076fbb0b9SSepherosa Ziehau  * Only the first Tx descriptor of a packet is updated
94176fbb0b9SSepherosa Ziehau  * after packet transmission.
94276fbb0b9SSepherosa Ziehau  */
94376fbb0b9SSepherosa Ziehau #define	JME_TD_TMOUT		0x20000000
94476fbb0b9SSepherosa Ziehau #define	JME_TD_RETRY_EXP	0x10000000
94576fbb0b9SSepherosa Ziehau #define	JME_TD_COLLISION	0x08000000
94676fbb0b9SSepherosa Ziehau #define	JME_TD_UNDERRUN		0x04000000
94776fbb0b9SSepherosa Ziehau #define	JME_TD_EHDR_SIZE_MASK	0x000000FF
94876fbb0b9SSepherosa Ziehau #define	JME_TD_EHDR_SIZE_SHIFT	0
94976fbb0b9SSepherosa Ziehau 
95076fbb0b9SSepherosa Ziehau #define	JME_TD_SEG_CNT_MASK	0xFFFF0000
95176fbb0b9SSepherosa Ziehau #define	JME_TD_SEG_CNT_SHIFT	16
95276fbb0b9SSepherosa Ziehau #define	JME_TD_RETRY_CNT_MASK	0x0000FFFF
95376fbb0b9SSepherosa Ziehau #define	JME_TD_RETRY_CNT_SHIFT	0
95476fbb0b9SSepherosa Ziehau 
95576fbb0b9SSepherosa Ziehau #define	JME_RD_OWN		0x80000000
95676fbb0b9SSepherosa Ziehau #define	JME_RD_INTR		0x40000000
95776fbb0b9SSepherosa Ziehau #define	JME_RD_64BIT		0x20000000
95876fbb0b9SSepherosa Ziehau 
95976fbb0b9SSepherosa Ziehau #define	JME_RD_BUF_LEN_MASK	0x0000FFFF
96076fbb0b9SSepherosa Ziehau #define	JME_RD_BUF_LEN_SHIFT	0
96176fbb0b9SSepherosa Ziehau 
96276fbb0b9SSepherosa Ziehau /*
96376fbb0b9SSepherosa Ziehau  * Only the first Rx descriptor of a packet is updated
96476fbb0b9SSepherosa Ziehau  * after packet reception.
96576fbb0b9SSepherosa Ziehau  */
96676fbb0b9SSepherosa Ziehau #define	JME_RD_MORE_FRAG	0x20000000
96776fbb0b9SSepherosa Ziehau #define	JME_RD_TCP		0x10000000
96876fbb0b9SSepherosa Ziehau #define	JME_RD_UDP		0x08000000
96976fbb0b9SSepherosa Ziehau #define	JME_RD_IPCSUM		0x04000000
97076fbb0b9SSepherosa Ziehau #define	JME_RD_TCPCSUM		0x02000000
97176fbb0b9SSepherosa Ziehau #define	JME_RD_UDPCSUM		0x01000000
97276fbb0b9SSepherosa Ziehau #define	JME_RD_VLAN_TAG		0x00800000
97376fbb0b9SSepherosa Ziehau #define	JME_RD_IPV4		0x00400000
97476fbb0b9SSepherosa Ziehau #define	JME_RD_IPV6		0x00200000
97576fbb0b9SSepherosa Ziehau #define	JME_RD_PAUSE		0x00100000
97676fbb0b9SSepherosa Ziehau #define	JME_RD_MAGIC		0x00080000
97776fbb0b9SSepherosa Ziehau #define	JME_RD_WAKEUP		0x00040000
97876fbb0b9SSepherosa Ziehau #define	JME_RD_BCAST		0x00030000
97976fbb0b9SSepherosa Ziehau #define	JME_RD_MCAST		0x00020000
98076fbb0b9SSepherosa Ziehau #define	JME_RD_UCAST		0x00010000
98176fbb0b9SSepherosa Ziehau #define	JME_RD_VLAN_MASK	0x0000FFFF
98276fbb0b9SSepherosa Ziehau #define	JME_RD_VLAN_SHIFT	0
98376fbb0b9SSepherosa Ziehau 
98476fbb0b9SSepherosa Ziehau #define	JME_RD_VALID		0x80000000
98576fbb0b9SSepherosa Ziehau #define	JME_RD_CNT_MASK		0x7F000000
98676fbb0b9SSepherosa Ziehau #define	JME_RD_CNT_SHIFT	24
98776fbb0b9SSepherosa Ziehau #define	JME_RD_GIANT		0x00800000
98876fbb0b9SSepherosa Ziehau #define	JME_RD_GMII_ERR		0x00400000
98976fbb0b9SSepherosa Ziehau #define	JME_RD_NBL_RCVD		0x00200000
99076fbb0b9SSepherosa Ziehau #define	JME_RD_COLL		0x00100000
99176fbb0b9SSepherosa Ziehau #define	JME_RD_ABORT		0x00080000
99276fbb0b9SSepherosa Ziehau #define	JME_RD_RUNT		0x00040000
99376fbb0b9SSepherosa Ziehau #define	JME_RD_FIFO_OVRN	0x00020000
99476fbb0b9SSepherosa Ziehau #define	JME_RD_CRC_ERR		0x00010000
99576fbb0b9SSepherosa Ziehau #define	JME_RD_FRAME_LEN_MASK	0x0000FFFF
99676fbb0b9SSepherosa Ziehau 
99776fbb0b9SSepherosa Ziehau #define	JME_RX_ERR_STAT						\
99876fbb0b9SSepherosa Ziehau 	(JME_RD_GIANT | JME_RD_GMII_ERR | JME_RD_NBL_RCVD |	\
99976fbb0b9SSepherosa Ziehau 	JME_RD_COLL | JME_RD_ABORT | JME_RD_RUNT |		\
100076fbb0b9SSepherosa Ziehau 	JME_RD_FIFO_OVRN | JME_RD_CRC_ERR)
100176fbb0b9SSepherosa Ziehau 
100276fbb0b9SSepherosa Ziehau #define	JME_RD_ERR_MASK		0x00FF0000
100376fbb0b9SSepherosa Ziehau #define	JME_RD_ERR_SHIFT	16
100476fbb0b9SSepherosa Ziehau #define	JME_RX_ERR(x)		(((x) & JME_RD_ERR_MASK) >> JME_RD_ERR_SHIFT)
100576fbb0b9SSepherosa Ziehau #define	JME_RX_ERR_BITS		"\20"					\
100676fbb0b9SSepherosa Ziehau 				"\1CRCERR\2FIFOOVRN\3RUNT\4ABORT"	\
100776fbb0b9SSepherosa Ziehau 				"\5COLL\6NBLRCVD\7GMIIERR\10"
100876fbb0b9SSepherosa Ziehau 
100976fbb0b9SSepherosa Ziehau #define	JME_RX_NSEGS(x)		(((x) & JME_RD_CNT_MASK) >> JME_RD_CNT_SHIFT)
101076fbb0b9SSepherosa Ziehau #define	JME_RX_BYTES(x)		((x) & JME_RD_FRAME_LEN_MASK)
101176fbb0b9SSepherosa Ziehau #define	JME_RX_PAD_BYTES	10
101276fbb0b9SSepherosa Ziehau 
101376fbb0b9SSepherosa Ziehau #define	JME_RD_RSS_HASH_VALUE	0xFFFFFFFF
101476fbb0b9SSepherosa Ziehau 
101576fbb0b9SSepherosa Ziehau #define	JME_RD_RSS_HASH_MASK	0x00003F00
101676fbb0b9SSepherosa Ziehau #define	JME_RD_RSS_HASH_SHIFT	8
101776fbb0b9SSepherosa Ziehau #define	JME_RD_RSS_HASH_NONE	0x00000000
101876fbb0b9SSepherosa Ziehau #define	JME_RD_RSS_HASH_IPV4	0x00000100
101976fbb0b9SSepherosa Ziehau #define	JME_RD_RSS_HASH_IPV4TCP	0x00000200
102076fbb0b9SSepherosa Ziehau #define	JME_RD_RSS_HASH_IPV6	0x00000400
102176fbb0b9SSepherosa Ziehau #define	JME_RD_RSS_HASH_IPV6TCP	0x00001000
1022a6acc6e2SSepherosa Ziehau #define JME_RD_HASH_FN_MASK	0x0000000f
102376fbb0b9SSepherosa Ziehau #define	JME_RD_HASH_FN_NONE	0x00000000
102476fbb0b9SSepherosa Ziehau #define	JME_RD_HASH_FN_TOEPLITZ	0x00000001
102576fbb0b9SSepherosa Ziehau 
1026*352c8444SSepherosa Ziehau /* MII_100T2CR */
1027*352c8444SSepherosa Ziehau #define GTCR_TEST_1		0x2000
1028*352c8444SSepherosa Ziehau 
1029*352c8444SSepherosa Ziehau /* MII register, extended register address */
1030*352c8444SSepherosa Ziehau #define JME_MII_EXT_ADDR	0x1E
1031*352c8444SSepherosa Ziehau #define JME_MII_EXT_ADDR_RD	0x4000
1032*352c8444SSepherosa Ziehau #define JME_MII_EXT_ADDR_WR	0x8000
1033*352c8444SSepherosa Ziehau #define JME_MII_EXT_COM0	0x0030
1034*352c8444SSepherosa Ziehau #define JME_MII_EXT_COM1	0x0031
1035*352c8444SSepherosa Ziehau #define JME_MII_EXT_COM2	0x0032
1036*352c8444SSepherosa Ziehau 
1037*352c8444SSepherosa Ziehau /* MII register, extended register data */
1038*352c8444SSepherosa Ziehau #define JME_MII_EXT_DATA	0x1F
1039*352c8444SSepherosa Ziehau #define JME_MII_EXT_COM2_CALIB_EN	0x0001
1040*352c8444SSepherosa Ziehau #define JME_MII_EXT_COM2_CALIB_MODE0	0x0002
1041*352c8444SSepherosa Ziehau #define JME_MII_EXT_COM2_CALIB_LATCH	0x0010
1042*352c8444SSepherosa Ziehau 
104376fbb0b9SSepherosa Ziehau #endif
1044