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