Home | History | Annotate | Line # | Download | only in gemini
      1  1.4  msaitoh /* $NetBSD: gemini_gmacreg.h,v 1.4 2024/05/13 00:25:23 msaitoh Exp $ */
      2  1.1     matt /*-
      3  1.1     matt  * Copyright (c) 2008 The NetBSD Foundation, Inc.
      4  1.1     matt  * All rights reserved.
      5  1.1     matt  *
      6  1.1     matt  * This code is derived from software contributed to The NetBSD Foundation
      7  1.1     matt  * by Matt Thomas <matt (at) 3am-software.com>
      8  1.1     matt  *
      9  1.1     matt  * Redistribution and use in source and binary forms, with or without
     10  1.1     matt  * modification, are permitted provided that the following conditions
     11  1.1     matt  * are met:
     12  1.1     matt  * 1. Redistributions of source code must retain the above copyright
     13  1.1     matt  *    notice, this list of conditions and the following disclaimer.
     14  1.1     matt  * 2. Redistributions in binary form must reproduce the above copyright
     15  1.1     matt  *    notice, this list of conditions and the following disclaimer in the
     16  1.1     matt  *    documentation and/or other materials provided with the distribution.
     17  1.1     matt  *
     18  1.1     matt  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     19  1.1     matt  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     20  1.1     matt  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     21  1.1     matt  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     22  1.1     matt  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     23  1.1     matt  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     24  1.1     matt  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     25  1.1     matt  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     26  1.1     matt  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     27  1.1     matt  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     28  1.1     matt  * POSSIBILITY OF SUCH DAMAGE.
     29  1.1     matt  */
     30  1.1     matt 
     31  1.1     matt #ifndef _ARM_GEMINI_GEMINI_GMACREG_H
     32  1.1     matt #define _ARM_GEMINI_GEMINI_GMACREG_H
     33  1.1     matt 
     34  1.1     matt #define	GMAC_GLOBAL_OFFSET	0x0000
     35  1.1     matt #define	GMAC_GLOBAL_SIZE	0x2000
     36  1.1     matt 
     37  1.1     matt #define	GMAC_TOE_VERSION	0x0000
     38  1.1     matt #define	GMAC_TOE_DEVID(x)	(((x) >> 4) & 0xfff)
     39  1.1     matt #define	GMAC_TOE_REVID(x)	(((x) >> 0) & 0x00f)
     40  1.1     matt 
     41  1.1     matt #define	GMAC_SWFREEQ_BASE	0x0004
     42  1.1     matt #define	GMAC_HWFREEQ_BASE	0x0008
     43  1.1     matt 
     44  1.1     matt #define	FREEQ_SIZE		0x000f	/* 2^n from 3 to 15 */
     45  1.1     matt 
     46  1.1     matt #define	GMAC_SKBSIZE		0x0010
     47  1.1     matt #define	SKB_SIZE_SET(hw,sw)	(((hw) << 16) | (sw))
     48  1.1     matt 
     49  1.1     matt #define	GMAC_SWFREEQ_RWPTR	0x0014
     50  1.1     matt #define	GMAC_HWFREEQ_RWPTR	0x0018
     51  1.1     matt 
     52  1.1     matt #define	GMAC_INT0_STATUS	0x0020
     53  1.1     matt #define	GMAC_INT0_MASK		0x0024
     54  1.1     matt #define	GMAC_INT0_SELECT	0x0028
     55  1.1     matt 
     56  1.1     matt #define	INT0_TXDERR1		__BIT(31)	/* GMAC1 AHB bus err while TX */
     57  1.1     matt #define	INT0_TXPERR1		__BIT(30)	/* GMAC1 TX descriptor error */
     58  1.1     matt #define	INT0_TXDERR0		__BIT(29)	/* GMAC0 AHB bus err while TX */
     59  1.1     matt #define	INT0_TXPERR0		__BIT(28)	/* GMAC0 TX descriptor error */
     60  1.1     matt #define	INT0_RXDERR1		__BIT(27)	/* GMAC1 AHB bus err while RX */
     61  1.1     matt #define	INT0_RXPERR1		__BIT(26)	/* GMAC1 RX descriptor error */
     62  1.1     matt #define	INT0_RXDERR0		__BIT(25)	/* GMAC0 AHB bus err while RX */
     63  1.1     matt #define	INT0_RXPERR0		__BIT(24)	/* GMAC0 RX descriptor error */
     64  1.1     matt #define	INT0_SWTXQ15_FIN	__BIT(23)	/* GMAC1 SW TX queue 5 finish */
     65  1.1     matt #define	INT0_SWTXQ14_FIN	__BIT(22)	/* GMAC1 SW TX queue 4 finish */
     66  1.1     matt #define	INT0_SWTXQ13_FIN	__BIT(21)	/* GMAC1 SW TX queue 3 finish */
     67  1.1     matt #define	INT0_SWTXQ12_FIN	__BIT(20)	/* GMAC1 SW TX queue 2 finish */
     68  1.1     matt #define	INT0_SWTXQ11_FIN	__BIT(19)	/* GMAC1 SW TX queue 1 finish */
     69  1.1     matt #define	INT0_SWTXQ10_FIN	__BIT(18)	/* GMAC1 SW TX queue 0 finish */
     70  1.1     matt #define	INT0_SWTXQ1n_FIN(n)	__BIT(18 + n)
     71  1.1     matt #define	INT0_SWTXQ1_FIN		__BITS(18,23)
     72  1.1     matt #define	INT0_SWTXQ05_FIN	__BIT(17)	/* GMAC0 SW TX queue 5 finish */
     73  1.1     matt #define	INT0_SWTXQ04_FIN	__BIT(16)	/* GMAC0 SW TX queue 4 finish */
     74  1.1     matt #define	INT0_SWTXQ03_FIN	__BIT(15)	/* GMAC0 SW TX queue 3 finish */
     75  1.1     matt #define	INT0_SWTXQ02_FIN	__BIT(14)	/* GMAC0 SW TX queue 2 finish */
     76  1.1     matt #define	INT0_SWTXQ01_FIN	__BIT(13)	/* GMAC0 SW TX queue 1 finish */
     77  1.1     matt #define	INT0_SWTXQ00_FIN	__BIT(12)	/* GMAC0 SW TX queue 0 finish */
     78  1.1     matt #define	INT0_SWTXQ0n_FIN(n)	__BIT(12 + n)
     79  1.1     matt #define	INT0_SWTXQ0_FIN		__BITS(12,17)
     80  1.1     matt #define	INT0_SWTXQ_FIN		__BITS(12,23)
     81  1.1     matt #define	INT0_SWTXQ15_EOF	__BIT(11)	/* GMAC1 SW TX queue 5 EOF */
     82  1.1     matt #define	INT0_SWTXQ14_EOF	__BIT(10)	/* GMAC1 SW TX queue 4 EOF */
     83  1.1     matt #define	INT0_SWTXQ13_EOF	__BIT( 9)	/* GMAC1 SW TX queue 3 EOF */
     84  1.1     matt #define	INT0_SWTXQ12_EOF	__BIT( 8)	/* GMAC1 SW TX queue 2 EOF */
     85  1.1     matt #define	INT0_SWTXQ11_EOF	__BIT( 7)	/* GMAC1 SW TX queue 1 EOF */
     86  1.1     matt #define	INT0_SWTXQ10_EOF	__BIT( 6)	/* GMAC1 SW TX queue 0 EOF */
     87  1.1     matt #define	INT0_SWTXQ1n_EOF(n)	__BIT( 6 + n)
     88  1.1     matt #define	INT0_SWTXQ1_EOF		__BITS(6,11)
     89  1.1     matt #define	INT0_SWTXQ05_EOF	__BIT( 5)	/* GMAC0 SW TX queue 5 EOF */
     90  1.1     matt #define	INT0_SWTXQ04_EOF	__BIT( 4)	/* GMAC0 SW TX queue 4 EOF */
     91  1.1     matt #define	INT0_SWTXQ03_EOF	__BIT( 3)	/* GMAC0 SW TX queue 3 EOF */
     92  1.1     matt #define	INT0_SWTXQ02_EOF	__BIT( 2)	/* GMAC0 SW TX queue 2 EOF */
     93  1.1     matt #define	INT0_SWTXQ01_EOF	__BIT( 1)	/* GMAC0 SW TX queue 1 EOF */
     94  1.1     matt #define	INT0_SWTXQ00_EOF	__BIT( 0)	/* GMAC0 SW TX queue 0 EOF */
     95  1.1     matt #define	INT0_SWTXQ0n_EOF(n)	__BIT( n)
     96  1.1     matt #define	INT0_SWTXQ0_EOF		__BITS(0,5)
     97  1.1     matt #define	INT0_SWTXQ_EOF		__BITS(0,11)
     98  1.1     matt 
     99  1.1     matt #define	INT0_TXDERR		(INT0_TXDERR0|INT0_TXDERR1)
    100  1.1     matt #define	INT0_TXPERR		(INT0_TXPERR0|INT0_TXPERR1)
    101  1.1     matt #define	INT0_RXDERR		(INT0_RXDERR0|INT0_RXDERR1)
    102  1.1     matt #define	INT0_RXPERR		(INT0_RXPERR0|INT0_RXPERR1)
    103  1.1     matt 
    104  1.1     matt #define	INT0_SWTXQn_FIN(n)	(INT0_SWTXQ0n_FIN(n)|INT0_SWTXQ1n_FIN(n))
    105  1.1     matt #define	INT0_SWTXQn_EOF(n)	(INT0_SWTXQ0n_EOF(n)|INT0_SWTXQ1n_EOF(n))
    106  1.1     matt 
    107  1.1     matt #define	INT0_GMAC0		\
    108  1.1     matt 	(INT0_TXDERR0|INT0_TXPERR0|INT0_RXDERR0|INT0_RXPERR0 \
    109  1.1     matt 	 |INT0_SWTXQ05_FIN|INT0_SWTXQ04_FIN|INT0_SWTXQ03_FIN \
    110  1.1     matt 	 |INT0_SWTXQ02_FIN|INT0_SWTXQ01_FIN|INT0_SWTXQ00_FIN \
    111  1.1     matt 	 |INT0_SWTXQ05_EOF|INT0_SWTXQ04_EOF|INT0_SWTXQ03_EOF \
    112  1.1     matt 	 |INT0_SWTXQ02_EOF|INT0_SWTXQ01_EOF|INT0_SWTXQ00_EOF)
    113  1.1     matt #define	INT0_GMAC1		\
    114  1.1     matt 	(INT0_TXDERR1|INT0_TXPERR1|INT0_RXDERR1|INT0_RXPERR1 \
    115  1.1     matt 	 |INT0_SWTXQ15_FIN|INT0_SWTXQ14_FIN|INT0_SWTXQ13_FIN \
    116  1.1     matt 	 |INT0_SWTXQ12_FIN|INT0_SWTXQ11_FIN|INT0_SWTXQ10_FIN \
    117  1.1     matt 	 |INT0_SWTXQ15_EOF|INT0_SWTXQ14_EOF|INT0_SWTXQ13_EOF \
    118  1.1     matt 	 |INT0_SWTXQ12_EOF|INT0_SWTXQ11_EOF|INT0_SWTXQ10_EOF)
    119  1.1     matt 
    120  1.1     matt #define	GMAC_INT1_STATUS	0x0030
    121  1.1     matt #define	GMAC_INT1_MASK		0x0034
    122  1.1     matt #define	GMAC_INT1_SELECT	0x0038
    123  1.1     matt 
    124  1.1     matt #define	INT1_TOE_IQ3_FULL	__BIT(31)	/* TOE Intr Queue3 Full */
    125  1.1     matt #define	INT1_TOE_IQ2_FULL	__BIT(30)	/* TOE Intr Queue2 Full */
    126  1.1     matt #define	INT1_TOE_IQ1_FULL	__BIT(29)	/* TOE Intr Queue1 Full */
    127  1.1     matt #define	INT1_TOE_IQ0_FULL	__BIT(28)	/* TOE Intr Queue0 Full */
    128  1.4  msaitoh #define	INT1_TOE_IQ3_NONEMPTY	__BIT(27)	/* TOE Intr Queue3 !Empty */
    129  1.4  msaitoh #define	INT1_TOE_IQ2_NONEMPTY	__BIT(26)	/* TOE Intr Queue2 !Empty */
    130  1.4  msaitoh #define	INT1_TOE_IQ1_NONEMPTY	__BIT(25)	/* TOE Intr Queue1 !Empty */
    131  1.4  msaitoh #define	INT1_TOE_IQ0_NONEMPTY	__BIT(24)	/* TOE Intr Queue0 !Empty */
    132  1.1     matt #define	INT1_HWTQ13_EOF		__BIT(23)	/* GMAC1 HW TX Queue3 EOF */
    133  1.1     matt #define	INT1_HWTQ12_EOF		__BIT(22)	/* GMAC1 HW TX Queue2 EOF */
    134  1.1     matt #define	INT1_HWTQ11_EOF		__BIT(21)	/* GMAC1 HW TX Queue1 EOF */
    135  1.1     matt #define	INT1_HWTQ10_EOF		__BIT(20)	/* GMAC1 HW TX Queue0 EOF */
    136  1.1     matt #define	INT1_HWTQ03_EOF		__BIT(19)	/* GMAC0 HW TX Queue3 EOF */
    137  1.1     matt #define	INT1_HWTQ02_EOF		__BIT(18)	/* GMAC0 HW TX Queue2 EOF */
    138  1.1     matt #define	INT1_HWTQ01_EOF		__BIT(17)	/* GMAC0 HW TX Queue1 EOF */
    139  1.1     matt #define	INT1_HWTQ00_EOF		__BIT(16)	/* GMAC0 HW TX Queue0 EOF */
    140  1.1     matt #define	INT1_CLASS_Q_EOF(n)	__BIT((n)+2)	/* Classfication Q[n] EOF */
    141  1.1     matt #define	INT1_DEF_RXQ1_EOF	__BIT(1)	/* GMAC1 Default RX Queue EOF */
    142  1.1     matt #define	INT1_DEF_RXQ0_EOF	__BIT(0)	/* GMAC0 Default RX Queue EOF */
    143  1.1     matt 
    144  1.1     matt #define	INT1_DEF_RXQ_EOF	(INT1_DEF_RXQ0_EOF|INT1_DEF_RXQ1_EOF)
    145  1.1     matt #define	INT1_HWTQ3_EOF		(INT1_HWTQ03_EOF|INT1_HWTQ13_EOF)
    146  1.1     matt #define	INT1_HWTQ2_EOF		(INT1_HWTQ02_EOF|INT1_HWTQ12_EOF)
    147  1.1     matt #define	INT1_HWTQ1_EOF		(INT1_HWTQ01_EOF|INT1_HWTQ11_EOF)
    148  1.1     matt #define	INT1_HWTQ0_EOF		(INT1_HWTQ00_EOF|INT1_HWTQ10_EOF)
    149  1.1     matt 
    150  1.1     matt #define	INT1_GMAC0	\
    151  1.1     matt 	(INT1_HWTQ03_EOF|INT1_HWTQ02_EOF|INT1_HWTQ01_EOF|INT1_HWTQ00_EOF \
    152  1.1     matt 	 |INT1_DEF_RXQ0_EOF)
    153  1.1     matt #define	INT1_GMAC1	\
    154  1.1     matt 	(INT1_HWTQ13_EOF|INT1_HWTQ12_EOF|INT1_HWTQ11_EOF|INT1_HWTQ10_EOF \
    155  1.1     matt 	 |INT1_DEF_RXQ1_EOF)
    156  1.1     matt 
    157  1.1     matt #define	GMAC_INT2_STATUS	0x0040
    158  1.1     matt #define	GMAC_INT2_MASK		0x0044
    159  1.1     matt #define	GMAC_INT2_SELECT	0x0048
    160  1.1     matt 
    161  1.1     matt #define	INT2_TOE_QFULL(n)	__BIT((n)-32)	/* TOE (32-63) Q[n] Full */
    162  1.1     matt #define	INT2_GMAC0		0
    163  1.1     matt #define	INT2_GMAC1		0
    164  1.1     matt 
    165  1.1     matt #define	GMAC_INT3_STATUS	0x0050
    166  1.1     matt #define	GMAC_INT3_MASK		0x0054
    167  1.1     matt #define	GMAC_INT3_SELECT	0x0058
    168  1.1     matt 
    169  1.1     matt #define	INT3_TOE_QFULL(n)	__BIT((n))	/* TOE (0-31) Q[n] Full */
    170  1.1     matt #define	INT3_GMAC0		0
    171  1.1     matt #define	INT3_GMAC1		0
    172  1.1     matt 
    173  1.1     matt #define	GMAC_INT4_STATUS	0x0060
    174  1.1     matt #define	GMAC_INT4_MASK		0x0064
    175  1.1     matt #define	GMAC_INT4_SELECT	0x0068
    176  1.1     matt 
    177  1.1     matt #define	INT4_TX_FAIL0		__BIT(23)	/* GMAC0 TX fail */
    178  1.1     matt #define	INT4_TX_FAIL1		__BIT(23+8)	/* GMAC1 TX fail */
    179  1.1     matt #define	INT4_TX_FAIL		(INT4_TX_FAIL0|INT4_TX_FAIL1)
    180  1.1     matt #define	INT4_MIB_HEMIWRAP0	__BIT(22)	/* GMAC0 MIB counters 1/2 */
    181  1.1     matt #define	INT4_MIB_HEMIWRAP1	__BIT(22+8)	/* GMAC1 MIB counters 1/2 */
    182  1.1     matt #define	INT4_MIB_HEMIWRAP	(INT4_MIB_HEMIWRAP0|INT4_MIB_HEMIWRAP1)
    183  1.1     matt #define	INT4_RX_XON0		__BIT(21)	/* GMAC0 RX Pause On */
    184  1.1     matt #define	INT4_RX_XON1		__BIT(21+8)	/* GMAC1 RX Pause On */
    185  1.1     matt #define	INT4_RX_XON		(INT4_RX_XON0|INT4_RX_XON1)
    186  1.1     matt #define	INT4_TX_XON0		__BIT(20)	/* GMAC0 TX Pause On */
    187  1.1     matt #define	INT4_TX_XON1		__BIT(20+8)	/* GMAC1 TX Pause On */
    188  1.1     matt #define	INT4_TX_XON		(INT4_TX_XON0|INT4_TX_XON1)
    189  1.1     matt #define	INT4_RX_XOFF0		__BIT(19)	/* GMAC0 RX Pause Off */
    190  1.1     matt #define	INT4_RX_XOFF1		__BIT(19+8)	/* GMAC1 RX Pause Off */
    191  1.1     matt #define	INT4_RX_XOFF		(INT4_RX_XOFF0|INT4_RX_XOFF1)
    192  1.1     matt #define	INT4_TX_XOFF0		__BIT(18)	/* GMAC0 TX Pause Off */
    193  1.1     matt #define	INT4_TX_XOFF1		__BIT(18+8)	/* GMAC1 TX Pause Off */
    194  1.1     matt #define	INT4_TX_XOFF		(INT4_TX_XOFF0|INT4_TX_XOFF1)
    195  1.1     matt #define	INT4_RX_FIFO_OVRN0	__BIT(17)	/* GMAC0 RX FIFO overrun */
    196  1.1     matt #define	INT4_RX_FIFO_OVRN1	__BIT(17+8)	/* GMAC1 RX FIFO overrun */
    197  1.1     matt #define	INT4_RX_FIFO_OVRN	(INT4_RX_FIFO_OVRN0|INT4_RX_FIFO_OVRN1)
    198  1.1     matt #define	INT4_RGMII_STSCHG0	__BIT(16)	/* GMAC0 RGMII status change */
    199  1.1     matt #define	INT4_RGMII_STSCHG1	__BIT(16+8)	/* GMAC1 RGMII status change */
    200  1.1     matt #define	INT4_RGMII_STSCHG	(INT4_RGMII_STSCHG0|INT4_RGMII_STSCHG1)
    201  1.1     matt #define	INT4_CLASS_Q_FULL(n)	__BIT((n)+2)	/* Classification Q[n] Full */
    202  1.1     matt #define	INT4_HW_FREEQ_EMPTY	__BIT(1)	/* HW Free Q empty */
    203  1.1     matt #define	INT4_SW_FREEQ_EMPTY	__BIT(0)	/* SW Free Q empty */
    204  1.1     matt 
    205  1.1     matt #define	INT4_GMAC0		__BITS(16,23)
    206  1.2     matt #define	INT4_GMAC1		(__BITS(24,31)|INT4_HW_FREEQ_EMPTY)
    207  1.1     matt 
    208  1.3     matt #define	GMAC_QFE_THRESHOLD	0x0070
    209  1.3     matt #define	QFE_TOEQ_THRESHOLD_MASK	__BITS(24,31)
    210  1.3     matt #define	QFE_TOEQ_THRESHOLD_GET(x) (((x) >> 24) & 0xff)
    211  1.3     matt #define	QFE_TOEQ_THRESHOLD(x)	 (((x) & 0xff) << 24)
    212  1.3     matt #define	QFE_INTQ_THRESHOLD_MASK	__BITS(16,23)
    213  1.3     matt #define	QFE_INTQ_THRESHOLD_GET(x) (((x) >> 16) & 0xff)
    214  1.3     matt #define	QFE_INTQ_THRESHOLD(x)	 (((x) & 0xff) << 16)
    215  1.3     matt #define	QFE_HWFQ_THRESHOLD_MASK	__BITS(8,15)
    216  1.3     matt #define	QFE_HWFQ_THRESHOLD_GET(x) (((x) >> 8) & 0xff)
    217  1.3     matt #define	QFE_HWFQ_THRESHOLD(x)	 (((x) & 0xff) << 8)
    218  1.3     matt #define	QFE_SWFQ_THRESHOLD_MASK	__BITS(0,7)
    219  1.3     matt #define	QFE_SWFQ_THRESHOLD_GET(x) (((x) >> 0) & 0xff)
    220  1.3     matt #define	QFE_SWFQ_THRESHOLD(x)	 (((x) & 0xff) << 0)
    221  1.3     matt 
    222  1.1     matt #define	GMAC_NONTOE_QH_OFFSET	0x2000
    223  1.1     matt #define	GMAC_NONTOE_QH_SIZE	0x1000
    224  1.1     matt 
    225  1.1     matt #define	GMAC_DEF_RXQn_BASE(n)	(0x2000 + (n) * 4)
    226  1.1     matt #define	GMAC_DEF_RXQn_RWPTR(n)	(0x2004 + (n) * 4)
    227  1.1     matt #define	GMAC_DEF_RXQ0_BASE	0x2000
    228  1.1     matt #define	GMAC_DEF_RXQ0_RWPTR	0x2004
    229  1.1     matt #define	GMAC_DEF_RXQ1_BASE	0x2008
    230  1.1     matt #define	GMAC_DEF_RXQ1_RWPTR	0x200c
    231  1.1     matt 
    232  1.1     matt #define	GMAC_TOE_QH_OFFSET	0x3000
    233  1.1     matt #define	GMAC_TOE_QH_SIZE	0x1000
    234  1.1     matt 
    235  1.1     matt #define	GMAC_VBIT_MEM_OFFSET	0x4000
    236  1.1     matt #define	GMAC_VBIT_MEM_SIZE	0x2000
    237  1.1     matt 
    238  1.1     matt #define	GMAC_ABIT_MEM_OFFSET	0x6000
    239  1.1     matt #define	GMAC_ABIT_MEM_SIZE	0x2000
    240  1.1     matt 
    241  1.1     matt #define	GMAC_PORT0_DMA_OFFSET	0x8000
    242  1.1     matt #define	GMAC_PORT_DMA_SIZE	0x2000
    243  1.1     matt 
    244  1.1     matt #define	GMAC_DMAVR		0x0000
    245  1.1     matt #define	DMAVR_RXDMA_ENABLE	__BIT(31)
    246  1.1     matt #define	DMAVR_TXDMA_ENABLE	__BIT(30)
    247  1.1     matt #define	DMAVR_LOOPBACK		__BIT(29)
    248  1.1     matt #define	DMAVR_DROP_SMALL_ACK	__BIT(28)
    249  1.1     matt #define	DMAVR_EXTRABYTES_MASK	__BITS(16,17)
    250  1.1     matt #define	DMAVR_EXTRABYTES_GET(x)	(((x) >> 16) & DMAR_EXTRABYTES_MASK)
    251  1.3     matt #define	DMAVR_EXTRABYTES(x)	(((x) & 3) << 16)
    252  1.1     matt #define	DMAVR_RXBURSTSIZE_MASK	__BITS(10,11)
    253  1.1     matt #define	DMAVR_RXBURSTSIZE_GET(x) (((x) >> 10) & DMAR_BURSTSIZE_MASK)
    254  1.3     matt #define	DMAVR_RXBURSTSIZE(x)	(((x) & 3) << 10)
    255  1.1     matt #define	DMAVR_RXBUSWIDTH_MASK	__BITS(8,9)
    256  1.1     matt #define	DMAVR_RXBUSWIDTH_GET(x)	(((x) >> 8) & DMAVR_BUSWIDTH_MASK)
    257  1.3     matt #define	DMAVR_RXBUSWIDTH(x)	(((x) & 3) << 8)
    258  1.1     matt #define	DMAVR_TXBURSTSIZE_MASK	__BITS(2,3)
    259  1.1     matt #define	DMAVR_TXBURSTSIZE_GET(x) (((x) >> 2) & DMAR_BURSTSIZE_MASK)
    260  1.3     matt #define	DMAVR_TXBURSTSIZE(x)	(((x) & 3) << 2)
    261  1.1     matt #define	DMAVR_TXBUSWIDTH_MASK	__BITS(0,1)
    262  1.1     matt #define	DMAVR_TXBUSWIDTH_GET(x)	(((x) >> 0) & DMAVR_BUSWIDTH_MASK)
    263  1.3     matt #define	DMAVR_TXBUSWIDTH(x)	(((x) & 3) << 0)
    264  1.1     matt #define	DMAVR_BURSTSIZE_4W	0
    265  1.1     matt #define	DMAVR_BURSTSIZE_8W	1
    266  1.1     matt #define	DMAVR_BURSTSIZE_16W	2
    267  1.1     matt #define	DMAVR_BURSTSIZE_32W	3
    268  1.1     matt #define	DMAVR_BURSTSIZE_MASK	3
    269  1.1     matt #define	DMAVR_BUSWIDTH_8BITS	0
    270  1.1     matt #define	DMAVR_BUSWIDTH_16BITS	2
    271  1.1     matt #define	DMAVR_BUSWIDTH_32BITS	3
    272  1.1     matt #define	DMAVR_BUSWIDTH_MASK	3
    273  1.1     matt #define	GMAC_TX_WEIGHTING_1	0x0004
    274  1.1     matt #define	GMAC_TX_WEIGHTING_2	0x0008
    275  1.1     matt #define	GMAC_SW_TX_Qn_RWPTR(n)	(0x000c+(n)*4)
    276  1.2     matt #define	GMAC_SW_TX_Q0_RWPTR	GMAC_SW_TX_Qn_RWPTR(0)
    277  1.2     matt #define	GMAC_SW_TX_Q1_RWPTR	GMAC_SW_TX_Qn_RWPTR(1)
    278  1.2     matt #define	GMAC_SW_TX_Q2_RWPTR	GMAC_SW_TX_Qn_RWPTR(2)
    279  1.2     matt #define	GMAC_SW_TX_Q3_RWPTR	GMAC_SW_TX_Qn_RWPTR(3)
    280  1.2     matt #define	GMAC_SW_TX_Q4_RWPTR	GMAC_SW_TX_Qn_RWPTR(4)
    281  1.2     matt #define	GMAC_SW_TX_Q5_RWPTR	GMAC_SW_TX_Qn_RWPTR(5)
    282  1.1     matt #define	GMAC_HW_TX_Qn_RWPTR(n)	(0x0024+(n)*4)
    283  1.2     matt #define	GMAC_HW_TX_Q0_RWPTR	GMAC_HW_TX_Qn_RWPTR(0)
    284  1.2     matt #define	GMAC_HW_TX_Q1_RWPTR	GMAC_HW_TX_Qn_RWPTR(1)
    285  1.2     matt #define	GMAC_HW_TX_Q2_RWPTR	GMAC_HW_TX_Qn_RWPTR(2)
    286  1.2     matt #define	GMAC_HW_TX_Q3_RWPTR	GMAC_HW_TX_Qn_RWPTR(3)
    287  1.1     matt 
    288  1.1     matt #define	GMAC_DMA_TX_1ST_DESC	0x0038
    289  1.1     matt #define	GMAC_DMA_TX_CUR_DESC	0x003c
    290  1.1     matt #define	GMAC_DMA_TX_DESC(n)	(0x0040+(n)*4)
    291  1.1     matt #define	GMAC_DMA_TX_DESC0	GMAC_DMA_TX_DESC(0)
    292  1.1     matt #define	GMAC_DMA_TX_DESC1	GMAC_DMA_TX_DESC(1)
    293  1.1     matt #define	GMAC_DMA_TX_DESC2	GMAC_DMA_TX_DESC(2)
    294  1.1     matt #define	GMAC_DMA_TX_DESC3	GMAC_DMA_TX_DESC(3)
    295  1.1     matt #define	GMAC_SW_TX_Q_BASE	0x0050
    296  1.1     matt #define	GMAC_HW_TX_Q_BASE	0x0054
    297  1.1     matt 
    298  1.1     matt #define	GMAC_DMA_RX_1ST_DESC	0x0058
    299  1.1     matt #define	GMAC_DMA_RX_CUR_DESC	0x005c
    300  1.1     matt #define	GMAC_DMA_RX_DESC(n)	(0x0060+(n)*4)
    301  1.1     matt #define	GMAC_DMA_RX_DESC0	GMAC_DMA_RX_DESC(0)
    302  1.1     matt #define	GMAC_DMA_RX_DESC1	GMAC_DMA_RX_DESC(1)
    303  1.1     matt #define	GMAC_DMA_RX_DESC2	GMAC_DMA_RX_DESC(2)
    304  1.1     matt #define	GMAC_DMA_RX_DESC3	GMAC_DMA_RX_DESC(3)
    305  1.1     matt 
    306  1.1     matt #define	GMAC_HEE_AO_EL0		0x0070	/* HashEngineEna/ActionOff/EntryLen */
    307  1.1     matt #define	GMAC_HEE_AO_EL1		0x0070	/* HashEngineEna/ActionOff/EntryLen */
    308  1.1     matt 
    309  1.1     matt #define	GMAC_RULEMATCH0(n)	(0x0078+(n)*12)
    310  1.1     matt #define	GMAC_RULEMATCH1(n)	(0x0080+(n)*12)
    311  1.1     matt #define	GMAC_RULEMATCH2(n)	(0x0084+(n)*12)
    312  1.1     matt 
    313  1.1     matt #define	GMAC_SUPPORTEDPROTO(n)	(0x00a8+(n)*4)
    314  1.1     matt #define	GMAC_HRT_AHB_WEIGHTING	0x00c8	/* Hash/Rx/Tx AHB Weighting */
    315  1.1     matt 
    316  1.1     matt #define	HRT_AHB_TQDV_START	__BITS(20,24)
    317  1.1     matt #define	HRT_AHB_RX_PREREQ	__BITS(15,19)
    318  1.1     matt #define	HRT_AHB_TX_WEIGHT	__BITS(10,14)
    319  1.1     matt #define	HRT_AHB_RX_WEIGHT	__BITS(5,9)
    320  1.1     matt #define	HRT_AHB_HASH_WEIGHT	__BITS(0,4)
    321  1.1     matt 
    322  1.1     matt #define	GMAC_PORTn_DMA_OFFSET(n)	(0x8000 + (n) * 0x4000)
    323  1.1     matt #define	GMAC_PORTn_GMAC_OFFSET(n)	(0xa000 + (n) * 0x4000)
    324  1.1     matt #define	GMAC_PORTn_DMA_SIZE	0x2000
    325  1.1     matt #define	GMAC_PORTn_GMAC_SIZE	0x2000
    326  1.1     matt 
    327  1.1     matt #define	GMAC_STA_ADD0		0x0000
    328  1.1     matt #define	GMAC_STA_ADD1		0x0004
    329  1.1     matt #define	GMAC_STA_ADD2		0x0008
    330  1.1     matt 
    331  1.1     matt #define	GMAC_RX_FILTER		0x000c
    332  1.1     matt #define	RXFILTER_PROMISC_ALL	__BIT(4)
    333  1.1     matt #define	RXFILTER_PROMISC	__BIT(3)
    334  1.1     matt #define	RXFILTER_BROADCAST	__BIT(2)
    335  1.1     matt #define	RXFILTER_MULTICAST	__BIT(1)
    336  1.1     matt #define	RXFILTER_UNICAST	__BIT(0)
    337  1.1     matt 
    338  1.1     matt #define	GMAC_MCAST_FILTER0	0x0010
    339  1.1     matt #define	GMAC_MCAST_FILTER1	0x0014
    340  1.1     matt 
    341  1.1     matt #define	GMAC_CONFIG0		0x0018
    342  1.1     matt 
    343  1.1     matt #define	CONFIG0_PORT1_CLASSIFY_QCHECK_EN	__BIT(29)
    344  1.1     matt #define	CONFIG0_PORT0_CLASSIFY_QCHECK_EN	__BIT(28)
    345  1.1     matt #define	CONFIG0_PORT1_TOE_ALMOSTFULL_EN		__BIT(27)
    346  1.1     matt #define	CONFIG0_PORT0_TOE_ALMOSTFULL_EN		__BIT(26)
    347  1.1     matt #define	CONFIG0_PORT1_RX_HW_QCHECK_EN		__BIT(25)
    348  1.1     matt #define	CONFIG0_PORT0_RX_HW_QCHECK_EN		__BIT(24)
    349  1.1     matt #define	CONFIG0_RX_ER_DETECTING_INDEX_DIS	__BIT(23)
    350  1.1     matt #define	CONFIG0_IPV6_STRICT_ORDER		__BIT(22)
    351  1.1     matt #define	CONFIG0_INVERSE_RXC_RGMII		__BIT(21)
    352  1.1     matt #define	CONFIG0_R_LATCHED_MMII			__BIT(20)
    353  1.1     matt #define	CONFIG0_VLAN_TAG_REMOVAL		__BIT(19)
    354  1.1     matt #define	CONFIG0_IPV6_RX_CHECKSUM_ENABLE		__BIT(18)
    355  1.1     matt #define	CONFIG0_IPV4_RX_CHECKSUM_ENABLE		__BIT(17)
    356  1.1     matt #define	CONFIG0_RGMII_INBAND_STATUS_ENABLE	__BIT(16)
    357  1.1     matt #define	CONFIG0_TX_FLOWCTL_ENABLE		__BIT(15)
    358  1.1     matt #define	CONFIG0_RX_FLOWCTL_ENABLE		__BIT(14)
    359  1.1     matt #define	CONFIG0_SIM_TEST			__BIT(13)
    360  1.1     matt #define	CONFIG0_BACKOFF_MASK			__BITS(11,12)
    361  1.1     matt #define	CONFIG0_BACKOFF_GET(x)			(((x) >> 11) & CONFIG0_BACKOFF_MASK)
    362  1.1     matt #define	CONFIG0_BACKOFF(x)			(((x) & CONFIG0_BACKOFF_MASK) << 11)
    363  1.1     matt #define	CONFIG0_BACKOFF_NORMAL			0
    364  1.1     matt #define	CONFIG0_BACKOFF_2X			1
    365  1.1     matt #define	CONFIG0_BACKOFF_4X			2
    366  1.1     matt #define	CONFIG0_BACKOFF_DISABLE			3
    367  1.1     matt #define	CONFIG0_MAXLEN_MASK			__BITS(8,10)
    368  1.1     matt #define	CONFIG0_MAXLEN_GET(x)			(((x) >> 8) & CONFIG0_MAXLEN_MASK)
    369  1.1     matt #define	CONFIG0_MAXLEN(x)			(((x) & CONFIG0_MAXLEN_MASK) << 8)
    370  1.1     matt #define	CONFIG0_MAXLEN_1536			0
    371  1.1     matt #define	CONFIG0_MAXLEN_1518			1
    372  1.1     matt #define	CONFIG0_MAXLEN_1522			2
    373  1.1     matt #define	CONFIG0_MAXLEN_1548			3
    374  1.1     matt #define	CONFIG0_MAXLEN_JUMBO			4
    375  1.1     matt #define	CONFIG0_IFG_ADJUST_MASK			__BITS(4,7)
    376  1.1     matt #define	CONFIG0_IFG_ADJUST_GET(x)		(((x) >> 4) & CONFIG0_IFG_ADJUST_MASK)
    377  1.1     matt #define	CONFIG0_IFG_ADJUST(x)			(((x) & CONFIG0_IFG_ADJUST_MASK) << 4)
    378  1.1     matt #define	CONFIG0_DROP_16COLL_ENABLE		__BIT(3)
    379  1.1     matt #define	CONFIG0_LOOPBACK			__BIT(2)
    380  1.1     matt #define	CONFIG0_RX_DISABLE			__BIT(1)
    381  1.1     matt #define	CONFIG0_TX_DISABLE			__BIT(0)
    382  1.1     matt 
    383  1.1     matt #define	GMAC_STATUS		0x002c
    384  1.1     matt #define	STATUS_PHYMODE_MASK	__BITS(5,6)
    385  1.1     matt #define	STATUS_PHYMODE_MII	(0 << 5)
    386  1.1     matt #define	STATUS_PHYMODE_GMII	(1 << 5)
    387  1.1     matt #define	STATUS_PHYMODE_RGMII_A	(2 << 5)
    388  1.1     matt #define	STATUS_PHYMODE_RGMII_B	(3 << 5)
    389  1.1     matt #define	STATUS_DUPLEX_FULL	__BIT(3)
    390  1.1     matt #define	STATUS_SPEED_MASK	__BITS(1,2)
    391  1.1     matt #define	STATUS_SPEED_10M	(0 << 1)
    392  1.1     matt #define	STATUS_SPEED_100M	(1 << 1)
    393  1.1     matt #define	STATUS_SPEED_1000M	(2 << 1)
    394  1.1     matt #define	STATUS_LINK_ON		__BIT(0)
    395  1.1     matt 
    396  1.1     matt #define	DESC0_DROP	__BIT(31)
    397  1.1     matt #define	DESC0_DERR	__BIT(30)
    398  1.1     matt #define	DESC0_PERR	__BIT(29)
    399  1.1     matt #define	DESC0_STATUS	__BITS(22, 28)
    400  1.1     matt #define	DESC0_DESC_CNT	__BITS(16, 21)
    401  1.1     matt #define	DESC0_BUF_SIZE	__BITS(0, 15)
    402  1.1     matt 
    403  1.1     matt #define	DESC0_RXCSUMSTS_GET(x)		(((x) >> 26) & 7)
    404  1.1     matt #define	DESC0_RXCSUMSTS_IPALL_OK	0	/* IP Hdr OK & TCP/UDP OK */
    405  1.1     matt #define	DESC0_RXCSUMSTS_IPHDR_OK	1	/* IP Hdr OK (!TCP/UDP) */
    406  1.1     matt #define	DESC0_RXCSUMSTS_NOTIP		2	/* Not an IP PKT */
    407  1.1     matt #define	DESC0_RXCSUMSTS_INVALID		3	/* Invalid PKT */
    408  1.1     matt #define	DESC0_RXCSUMSTS__RSVR4		4
    409  1.1     matt #define	DESC0_RXCSUMSTS_IPHDR_BAD	5	/* IP Hdr BAD */
    410  1.1     matt #define	DESC0_RXCSUMSTS_IPPAY_BAD	6	/* IP Hdr OK, TDP/UDP BAD */
    411  1.1     matt #define	DESC0_RXCSUMSTS__RSVR7		7
    412  1.1     matt 
    413  1.1     matt #define	DESC0_RXSTS_GET(x)		(((x) >> 22) & 15)
    414  1.1     matt #define	DESC0_RXSTS_GOOD		0	/* good frame */
    415  1.1     matt #define	DESC0_RXSTS_LONG		1	/* long frame (CRC OK) */
    416  1.1     matt #define	DESC0_RXSTS_RUNT		2	/* runt frame */
    417  1.1     matt #define	DESC0_RXSTS_NOSFD		3	/* SFD not found */
    418  1.1     matt #define	DESC0_RXSTS_BADCRC		4	/* bad CRC */
    419  1.1     matt #define	DESC0_RXSTS_LONG_BADCRC		5	/* Too long with bad CRC */
    420  1.1     matt #define	DESC0_RXSTS_BADALIGN		6	/* Alignment error */
    421  1.1     matt #define	DESC0_RXSTS_ALLBAD		7	/* Long & bad CRC & Align Err */
    422  1.1     matt #define	DESC0_RXSTS_PAUSE		8	/* Pause Frame received */
    423  1.1     matt #define	DESC0_RXSTS_RX_ER		9	/* RX_ER Error detected */
    424  1.1     matt #define	DESC0_RXSTS_ADDR_FILTER		10	/* DA is not matched */
    425  1.1     matt #define	DESC0_RXSTS_OVERRUN		11	/* RX FIFO Overrun */
    426  1.1     matt 
    427  1.1     matt #define	DESC0_TXSTS_OK			__BIT(22)	/* TX successful */
    428  1.1     matt 
    429  1.1     matt #define	DESC1_RX_SWID			__BITS(16, 31)
    430  1.1     matt #define	DESC1_TX_FLAG			__BITS(16, 31)
    431  1.1     matt #define	DESC1_BUFLEN			__BITS(0, 15)
    432  1.1     matt 
    433  1.1     matt #define	DESC1_TX_IPLEN_FIXED		__BITS(22)	/* IPLEN is fixed */
    434  1.1     matt #define	DESC1_TX_TSS_BYPASS		__BITS(21)	/* TSS Bypass */
    435  1.1     matt #define	DESC1_TX_UDP_CSUM_EN		__BITS(20)	/* Calc UDP CSUM */
    436  1.1     matt #define	DESC1_TX_TCP_CSUM_EN		__BITS(19)	/* Calc TCP CSUM */
    437  1.1     matt #define	DESC1_TX_IPV6_EN		__BITS(18)	/* Calc UDP CSUM */
    438  1.1     matt #define	DESC1_TX_IPV4_CSUM_EN		__BITS(17)	/* Calc IP HDR CSUM */
    439  1.1     matt #define	DESC1_TX_SEG_OFFLOAD_EN		__BITS(16)	/* TSS Bypass */
    440  1.1     matt 
    441  1.1     matt #define	DESC2_BUFADDR			__BITS(2,31)
    442  1.1     matt 
    443  1.1     matt #define	DESC3_SOF			__BIT(31)
    444  1.1     matt #define	DESC3_EOF			__BIT(30)
    445  1.1     matt #define	DESC3_EOFIE			__BIT(29)
    446  1.1     matt 
    447  1.1     matt #define	DESC3_RX_CTL			__BIT(28)
    448  1.1     matt #define	DESC3_RX_OSQ			__BIT(27)
    449  1.1     matt #define	DESC3_RX_OPT			__BIT(26)
    450  1.1     matt #define	DESC3_RX_ABN			__BIT(25)
    451  1.1     matt #define	DESC3_RX_DACK			__BIT(24)
    452  1.1     matt #define	DESC3_RX_L3_OFF			__BITS(16, 32)
    453  1.1     matt #define	DESC3_RX_L4_OFF			__BITS(8, 15)
    454  1.1     matt #define	DESC3_RX_L7_OFF			__BITS(0, 7)
    455  1.1     matt 
    456  1.1     matt #define	DESC3_TX_TSS_MTU		__BITS(0, 10)
    457  1.1     matt 
    458  1.1     matt typedef struct {
    459  1.1     matt 	volatile uint32_t d_desc0;
    460  1.1     matt 	volatile uint32_t d_desc1;
    461  1.1     matt 	uint32_t d_bufaddr;
    462  1.1     matt 	volatile uint32_t d_desc3;
    463  1.1     matt } gmac_desc_t;
    464  1.1     matt 
    465  1.1     matt #endif /* _ARM_GEMINI_GEMINI_GMACREG_H */
    466