1 /* $OpenBSD: if_mvppreg.h,v 1.1 2020/06/25 12:09:11 patrick Exp $ */ 2 /* 3 * Copyright (c) 2008, 2019 Mark Kettenis <kettenis@openbsd.org> 4 * Copyright (c) 2017, 2020 Patrick Wildt <patrick@blueri.se> 5 * 6 * Permission to use, copy, modify, and distribute this software for any 7 * purpose with or without fee is hereby granted, provided that the above 8 * copyright notice and this permission notice appear in all copies. 9 * 10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 */ 18 /* 19 * Copyright (C) 2016 Marvell International Ltd. 20 * 21 * Marvell BSD License Option 22 * 23 * If you received this File from Marvell, you may opt to use, redistribute 24 * and/or modify this File under the following licensing terms. 25 * Redistribution and use in source and binary forms, with or without 26 * modification, are permitted provided that the following conditions are met: 27 * 28 * * Redistributions of source code must retain the above copyright notice, 29 * this list of conditions and the following disclaimer. 30 * 31 * * Redistributions in binary form must reproduce the above copyright 32 * notice, this list of conditions and the following disclaimer in the 33 * documentation and/or other materials provided with the distribution. 34 * 35 * * Neither the name of Marvell nor the names of its contributors may be 36 * used to endorse or promote products derived from this software without 37 * specific prior written permission. 38 * 39 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 40 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 41 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 42 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 43 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 44 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 45 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 46 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 47 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 48 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 49 * POSSIBILITY OF SUCH DAMAGE. 50 */ 51 52 #ifndef __MVPP2_LIB_HW__ 53 #define __MVPP2_LIB_HW__ 54 55 #ifndef BIT 56 #define BIT(nr) (1 << (nr)) 57 #endif 58 59 /* PP2v2 registers offsets */ 60 #define MVPP22_SMI_OFFSET 0x1200 61 #define MVPP22_MPCS_OFFSET 0x7000 62 #define MVPP22_MPCS_REG_SIZE 0x1000 63 #define MVPP22_XPCS_OFFSET 0x7400 64 #define MVPP22_XPCS_REG_SIZE 0x1000 65 #define MVPP22_GMAC_OFFSET 0x7e00 66 #define MVPP22_GMAC_REG_SIZE 0x1000 67 #define MVPP22_XLG_OFFSET 0x7f00 68 #define MVPP22_XLG_REG_SIZE 0x1000 69 #define MVPP22_RFU1_OFFSET 0x318000 70 #define MVPP22_ADDR_SPACE_SIZE 0x10000 71 72 /* RX Fifo Registers */ 73 #define MVPP2_RX_DATA_FIFO_SIZE_REG(port) (0x00 + 4 * (port)) 74 #define MVPP2_RX_ATTR_FIFO_SIZE_REG(port) (0x20 + 4 * (port)) 75 #define MVPP2_RX_MIN_PKT_SIZE_REG 0x60 76 #define MVPP2_RX_FIFO_INIT_REG 0x64 77 #define MVPP22_TX_FIFO_THRESH_REG(port) (0x8840 + 4 * (port)) 78 #define MVPP22_TX_FIFO_SIZE_REG(port) (0x8860 + 4 * (port)) 79 80 /* RX DMA Top Registers */ 81 #define MVPP2_RX_CTRL_REG(port) (0x140 + 4 * (port)) 82 #define MVPP2_RX_LOW_LATENCY_PKT_SIZE(s) (((s) & 0xfff) << 16) 83 #define MVPP2_RX_USE_PSEUDO_FOR_CSUM_MASK BIT(31) 84 #define MVPP2_POOL_BUF_SIZE_REG(pool) (0x180 + 4 * (pool)) 85 #define MVPP2_POOL_BUF_SIZE_OFFSET 5 86 #define MVPP2_RXQ_CONFIG_REG(rxq) (0x800 + 4 * (rxq)) 87 #define MVPP2_SNOOP_PKT_SIZE_MASK 0x1ff 88 #define MVPP2_SNOOP_BUF_HDR_MASK BIT(9) 89 #define MVPP2_RXQ_POOL_SHORT_OFFS 20 90 #define MVPP2_RXQ_POOL_SHORT_MASK 0xf00000 91 #define MVPP2_RXQ_POOL_LONG_OFFS 24 92 #define MVPP2_RXQ_POOL_LONG_MASK 0xf000000 93 #define MVPP2_RXQ_PACKET_OFFSET_OFFS 28 94 #define MVPP2_RXQ_PACKET_OFFSET_MASK 0x70000000 95 #define MVPP2_RXQ_DISABLE_MASK BIT(31) 96 97 /* Parser Registers */ 98 #define MVPP2_PRS_INIT_LOOKUP_REG 0x1000 99 #define MVPP2_PRS_PORT_LU_MAX 0xf 100 #define MVPP2_PRS_PORT_LU_MASK(port) (0xff << ((port) * 4)) 101 #define MVPP2_PRS_PORT_LU_VAL(port, val) ((val) << ((port) * 4)) 102 #define MVPP2_PRS_INIT_OFFS_REG(port) (0x1004 + ((port) & 4)) 103 #define MVPP2_PRS_INIT_OFF_MASK(port) (0x3f << (((port) % 4) * 8)) 104 #define MVPP2_PRS_INIT_OFF_VAL(port, val) ((val) << (((port) % 4) * 8)) 105 #define MVPP2_PRS_MAX_LOOP_REG(port) (0x100c + ((port) & 4)) 106 #define MVPP2_PRS_MAX_LOOP_MASK(port) (0xff << (((port) % 4) * 8)) 107 #define MVPP2_PRS_MAX_LOOP_VAL(port, val) ((val) << (((port) % 4) * 8)) 108 #define MVPP2_PRS_TCAM_IDX_REG 0x1100 109 #define MVPP2_PRS_TCAM_DATA_REG(idx) (0x1104 + (idx) * 4) 110 #define MVPP2_PRS_TCAM_INV_MASK BIT(31) 111 #define MVPP2_PRS_SRAM_IDX_REG 0x1200 112 #define MVPP2_PRS_SRAM_DATA_REG(idx) (0x1204 + (idx) * 4) 113 #define MVPP2_PRS_TCAM_CTRL_REG 0x1230 114 #define MVPP2_PRS_TCAM_EN_MASK BIT(0) 115 116 /* Classifier Registers */ 117 #define MVPP2_CLS_MODE_REG 0x1800 118 #define MVPP2_CLS_MODE_ACTIVE_MASK BIT(0) 119 #define MVPP2_CLS_PORT_WAY_REG 0x1810 120 #define MVPP2_CLS_PORT_WAY_MASK(port) (1 << (port)) 121 #define MVPP2_CLS_LKP_INDEX_REG 0x1814 122 #define MVPP2_CLS_LKP_INDEX_WAY_OFFS 6 123 #define MVPP2_CLS_LKP_TBL_REG 0x1818 124 #define MVPP2_CLS_LKP_TBL_RXQ_MASK 0xff 125 #define MVPP2_CLS_LKP_TBL_LOOKUP_EN_MASK BIT(25) 126 #define MVPP2_CLS_FLOW_INDEX_REG 0x1820 127 #define MVPP2_CLS_FLOW_TBL0_REG 0x1824 128 #define MVPP2_CLS_FLOW_TBL1_REG 0x1828 129 #define MVPP2_CLS_FLOW_TBL2_REG 0x182c 130 #define MVPP2_CLS_OVERSIZE_RXQ_LOW_REG(port) (0x1980 + ((port) * 4)) 131 #define MVPP2_CLS_OVERSIZE_RXQ_LOW_BITS 3 132 #define MVPP2_CLS_OVERSIZE_RXQ_LOW_MASK 0x7 133 #define MVPP2_CLS_SWFWD_P2HQ_REG(port) (0x19b0 + ((port) * 4)) 134 #define MVPP2_CLS_SWFWD_PCTRL_REG 0x19d0 135 #define MVPP2_CLS_SWFWD_PCTRL_MASK(port) (1 << (port)) 136 137 /* Descriptor Manager Top Registers */ 138 #define MVPP2_RXQ_NUM_REG 0x2040 139 #define MVPP2_RXQ_DESC_ADDR_REG 0x2044 140 #define MVPP2_RXQ_DESC_SIZE_REG 0x2048 141 #define MVPP2_RXQ_DESC_SIZE_MASK 0x3ff0 142 #define MVPP2_RXQ_STATUS_UPDATE_REG(rxq) (0x3000 + 4 * (rxq)) 143 #define MVPP2_RXQ_NUM_PROCESSED_OFFSET 0 144 #define MVPP2_RXQ_NUM_NEW_OFFSET 16 145 #define MVPP2_RXQ_STATUS_REG(rxq) (0x3400 + 4 * (rxq)) 146 #define MVPP2_RXQ_OCCUPIED_MASK 0x3fff 147 #define MVPP2_RXQ_NON_OCCUPIED_OFFSET 16 148 #define MVPP2_RXQ_NON_OCCUPIED_MASK 0x3fff0000 149 #define MVPP2_RXQ_THRESH_REG 0x204c 150 #define MVPP2_OCCUPIED_THRESH_OFFSET 0 151 #define MVPP2_OCCUPIED_THRESH_MASK 0x3fff 152 #define MVPP2_RXQ_INDEX_REG 0x2050 153 #define MVPP2_TXQ_NUM_REG 0x2080 154 #define MVPP2_TXQ_DESC_ADDR_REG 0x2084 155 #define MVPP22_TXQ_DESC_ADDR_HIGH_REG 0x20a8 156 #define MVPP22_TXQ_DESC_ADDR_HIGH_MASK 0xff 157 #define MVPP2_TXQ_DESC_SIZE_REG 0x2088 158 #define MVPP2_TXQ_DESC_SIZE_MASK 0x3ff0 159 #define MVPP2_AGGR_TXQ_UPDATE_REG 0x2090 160 #define MVPP2_TXQ_THRESH_REG 0x2094 161 #define MVPP2_TRANSMITTED_THRESH_OFFSET 16 162 #define MVPP2_TRANSMITTED_THRESH_MASK 0x3fff 163 #define MVPP2_TXQ_INDEX_REG 0x2098 164 #define MVPP2_TXQ_PREF_BUF_REG 0x209c 165 #define MVPP2_PREF_BUF_PTR(desc) ((desc) & 0xfff) 166 #define MVPP2_PREF_BUF_SIZE_4 (BIT(12) | BIT(13)) 167 #define MVPP2_PREF_BUF_SIZE_16 (BIT(12) | BIT(14)) 168 #define MVPP2_PREF_BUF_THRESH(val) ((val) << 17) 169 #define MVPP2_TXQ_DRAIN_EN_MASK BIT(31) 170 #define MVPP2_TXQ_PENDING_REG 0x20a0 171 #define MVPP2_TXQ_PENDING_MASK 0x3fff 172 #define MVPP2_TXQ_INT_STATUS_REG 0x20a4 173 #define MVPP2_TXQ_SENT_REG(txq) (0x3c00 + 4 * (txq)) 174 #define MVPP22_TXQ_SENT_REG(txq) (0x3e00 + 4 * (txq-128)) 175 #define MVPP2_TRANSMITTED_COUNT_OFFSET 16 176 #define MVPP2_TRANSMITTED_COUNT_MASK 0x3fff0000 177 #define MVPP2_TXQ_RSVD_REQ_REG 0x20b0 178 #define MVPP2_TXQ_RSVD_REQ_Q_OFFSET 16 179 #define MVPP2_TXQ_RSVD_RSLT_REG 0x20b4 180 #define MVPP2_TXQ_RSVD_RSLT_MASK 0x3fff 181 #define MVPP2_TXQ_RSVD_CLR_REG 0x20b8 182 #define MVPP2_TXQ_RSVD_CLR_OFFSET 16 183 #define MVPP2_AGGR_TXQ_DESC_ADDR_REG(cpu) (0x2100 + 4 * (cpu)) 184 #define MVPP2_AGGR_TXQ_DESC_SIZE_REG(cpu) (0x2140 + 4 * (cpu)) 185 #define MVPP2_AGGR_TXQ_DESC_SIZE_MASK 0x3ff0 186 #define MVPP2_AGGR_TXQ_STATUS_REG(cpu) (0x2180 + 4 * (cpu)) 187 #define MVPP2_AGGR_TXQ_PENDING_MASK 0x3fff 188 #define MVPP2_AGGR_TXQ_INDEX_REG(cpu) (0x21c0 + 4 * (cpu)) 189 190 /* MBUS bridge registers */ 191 #define MVPP2_WIN_BASE(w) (0x4000 + ((w) << 2)) 192 #define MVPP2_WIN_SIZE(w) (0x4020 + ((w) << 2)) 193 #define MVPP2_WIN_REMAP(w) (0x4040 + ((w) << 2)) 194 #define MVPP2_BASE_ADDR_ENABLE 0x4060 195 196 /* Interrupt Cause and Mask registers */ 197 #define MVPP2_ISR_TX_THRESHOLD_REG(port) (0x5140 + 4 * (port)) 198 #define MVPP2_ISR_RX_THRESHOLD_REG(rxq) (0x5200 + 4 * (rxq)) 199 #define MVPP2_ISR_RXQ_GROUP_REG(rxq) (0x5400 + 4 * (rxq)) 200 #define MVPP2_ISR_RXQ_GROUP_INDEX_REG 0x5400 201 #define MVPP2_ISR_RXQ_GROUP_INDEX_GROUP_SHIFT 7 202 #define MVPP2_ISR_RXQ_SUB_GROUP_CONFIG_REG 0x5404 203 #define MVPP2_ISR_RXQ_SUB_GROUP_CONFIG_SIZE_SHIFT 8 204 #define MVPP2_ISR_ENABLE_REG(port) (0x5420 + 4 * (port)) 205 #define MVPP2_ISR_ENABLE_INTERRUPT(mask) ((mask) & 0xffff) 206 #define MVPP2_ISR_DISABLE_INTERRUPT(mask) (((mask) << 16) & 0xffff0000) 207 #define MVPP2_ISR_RX_TX_CAUSE_REG(port) (0x5480 + 4 * (port)) 208 #define MVPP2_CAUSE_RXQ_OCCUP_DESC_ALL_MASK 0xff 209 #define MVPP2_CAUSE_TXQ_OCCUP_DESC_ALL_MASK 0xff0000 210 #define MVPP2_CAUSE_TXQ_OCCUP_DESC_ALL_OFFSET 16 211 #define MVPP2_CAUSE_RX_FIFO_OVERRUN_MASK BIT(24) 212 #define MVPP2_CAUSE_FCS_ERR_MASK BIT(25) 213 #define MVPP2_CAUSE_TX_FIFO_UNDERRUN_MASK BIT(26) 214 #define MVPP2_CAUSE_TX_EXCEPTION_SUM_MASK BIT(29) 215 #define MVPP2_CAUSE_RX_EXCEPTION_SUM_MASK BIT(30) 216 #define MVPP2_CAUSE_MISC_SUM_MASK BIT(31) 217 #define MVPP2_ISR_RX_TX_MASK_REG(port) (0x54a0 + 4 * (port)) 218 #define MVPP2_ISR_PON_RX_TX_MASK_REG 0x54bc 219 #define MVPP2_PON_CAUSE_RXQ_OCCUP_DESC_ALL_MASK 0xffff 220 #define MVPP2_PON_CAUSE_TXP_OCCUP_DESC_ALL_MASK 0x3fc00000 221 #define MVPP2_PON_CAUSE_MISC_SUM_MASK BIT(31) 222 #define MVPP2_ISR_MISC_CAUSE_REG 0x55b0 223 224 /* Buffer Manager registers */ 225 #define MVPP2_BM_POOL_BASE_REG(pool) (0x6000 + ((pool) * 4)) 226 #define MVPP2_BM_POOL_BASE_ADDR_MASK 0xfffff80 227 #define MVPP2_BM_POOL_SIZE_REG(pool) (0x6040 + ((pool) * 4)) 228 #define MVPP2_BM_POOL_SIZE_MASK 0xfff0 229 #define MVPP2_BM_POOL_READ_PTR_REG(pool) (0x6080 + ((pool) * 4)) 230 #define MVPP2_BM_POOL_GET_READ_PTR_MASK 0xfff0 231 #define MVPP2_BM_POOL_PTRS_NUM_REG(pool) (0x60c0 + ((pool) * 4)) 232 #define MVPP2_BM_POOL_PTRS_NUM_MASK 0xfff8 233 #define MVPP2_BM_BPPI_READ_PTR_REG(pool) (0x6100 + ((pool) * 4)) 234 #define MVPP2_BM_BPPI_PTRS_NUM_REG(pool) (0x6140 + ((pool) * 4)) 235 #define MVPP2_BM_BPPI_PTR_NUM_MASK 0x7ff 236 #define MVPP2_BM_BPPI_PREFETCH_FULL_MASK BIT(16) 237 #define MVPP2_BM_POOL_CTRL_REG(pool) (0x6200 + ((pool) * 4)) 238 #define MVPP2_BM_START_MASK BIT(0) 239 #define MVPP2_BM_STOP_MASK BIT(1) 240 #define MVPP2_BM_STATE_MASK BIT(4) 241 #define MVPP2_BM_LOW_THRESH_OFFS 8 242 #define MVPP2_BM_LOW_THRESH_MASK 0x7f00 243 #define MVPP2_BM_LOW_THRESH_VALUE(val) ((val) << MVPP2_BM_LOW_THRESH_OFFS) 244 #define MVPP2_BM_HIGH_THRESH_OFFS 16 245 #define MVPP2_BM_HIGH_THRESH_MASK 0x7f0000 246 #define MVPP2_BM_HIGH_THRESH_VALUE(val) ((val) << MVPP2_BM_HIGH_THRESH_OFFS) 247 #define MVPP2_BM_INTR_CAUSE_REG(pool) (0x6240 + ((pool) * 4)) 248 #define MVPP2_BM_RELEASED_DELAY_MASK BIT(0) 249 #define MVPP2_BM_ALLOC_FAILED_MASK BIT(1) 250 #define MVPP2_BM_BPPE_EMPTY_MASK BIT(2) 251 #define MVPP2_BM_BPPE_FULL_MASK BIT(3) 252 #define MVPP2_BM_AVAILABLE_BP_LOW_MASK BIT(4) 253 #define MVPP2_BM_INTR_MASK_REG(pool) (0x6280 + ((pool) * 4)) 254 #define MVPP2_BM_PHY_ALLOC_REG(pool) (0x6400 + ((pool) * 4)) 255 #define MVPP2_BM_PHY_ALLOC_GRNTD_MASK BIT(0) 256 #define MVPP2_BM_VIRT_ALLOC_REG 0x6440 257 #define MVPP2_BM_PHY_RLS_REG(pool) (0x6480 + ((pool) * 4)) 258 #define MVPP2_BM_PHY_RLS_MC_BUFF_MASK BIT(0) 259 #define MVPP2_BM_PHY_RLS_PRIO_EN_MASK BIT(1) 260 #define MVPP2_BM_PHY_RLS_GRNTD_MASK BIT(2) 261 #define MVPP2_BM_VIRT_RLS_REG 0x64c0 262 #define MVPP2_BM_MC_RLS_REG 0x64c4 263 #define MVPP2_BM_MC_ID_MASK 0xfff 264 #define MVPP2_BM_FORCE_RELEASE_MASK BIT(12) 265 266 #define MVPP22_BM_PHY_VIRT_HIGH_ALLOC_REG 0x6444 267 #define MVPP22_BM_PHY_HIGH_ALLOC_OFFSET 0 268 #define MVPP22_BM_VIRT_HIGH_ALLOC_OFFSET 8 269 #define MVPP22_BM_VIRT_HIGH_ALLOC_MASK 0xff00 270 271 #define MVPP22_BM_PHY_VIRT_HIGH_RLS_REG 0x64c4 272 273 #define MVPP22_BM_PHY_HIGH_RLS_OFFSET 0 274 #define MVPP22_BM_VIRT_HIGH_RLS_OFFST 8 275 276 #define MVPP22_BM_POOL_BASE_HIGH_REG 0x6310 277 #define MVPP22_BM_POOL_BASE_HIGH_MASK 0xff 278 #define MVPP2_BM_PRIO_CTRL_REG 0x6800 279 280 /* TX Scheduler registers */ 281 #define MVPP2_TXP_SCHED_PORT_INDEX_REG 0x8000 282 #define MVPP2_TXP_SCHED_Q_CMD_REG 0x8004 283 #define MVPP2_TXP_SCHED_ENQ_MASK 0xff 284 #define MVPP2_TXP_SCHED_DISQ_OFFSET 8 285 #define MVPP2_TXP_SCHED_CMD_1_REG 0x8010 286 #define MVPP2_TXP_SCHED_PERIOD_REG 0x8018 287 #define MVPP2_TXP_SCHED_MTU_REG 0x801c 288 #define MVPP2_TXP_MTU_MAX 0x7FFFF 289 #define MVPP2_TXP_SCHED_REFILL_REG 0x8020 290 #define MVPP2_TXP_REFILL_TOKENS_ALL_MASK 0x7ffff 291 #define MVPP2_TXP_REFILL_PERIOD_ALL_MASK 0x3ff00000 292 #define MVPP2_TXP_REFILL_PERIOD_MASK(v) ((v) << 20) 293 #define MVPP2_TXP_SCHED_TOKEN_SIZE_REG 0x8024 294 #define MVPP2_TXP_TOKEN_SIZE_MAX 0xffffffff 295 #define MVPP2_TXQ_SCHED_REFILL_REG(q) (0x8040 + ((q) << 2)) 296 #define MVPP2_TXQ_REFILL_TOKENS_ALL_MASK 0x7ffff 297 #define MVPP2_TXQ_REFILL_PERIOD_ALL_MASK 0x3ff00000 298 #define MVPP2_TXQ_REFILL_PERIOD_MASK(v) ((v) << 20) 299 #define MVPP2_TXQ_SCHED_TOKEN_SIZE_REG(q) (0x8060 + ((q) << 2)) 300 #define MVPP2_TXQ_TOKEN_SIZE_MAX 0x7fffffff 301 #define MVPP2_TXQ_SCHED_TOKEN_CNTR_REG(q) (0x8080 + ((q) << 2)) 302 #define MVPP2_TXQ_TOKEN_CNTR_MAX 0xffffffff 303 304 /* TX general registers */ 305 #define MVPP2_TX_SNOOP_REG 0x8800 306 #define MVPP2_TX_PORT_FLUSH_REG 0x8810 307 #define MVPP2_TX_PORT_FLUSH_MASK(port) (1 << (port)) 308 309 /* LMS registers */ 310 #define MVPP2_SRC_ADDR_MIDDLE 0x24 311 #define MVPP2_SRC_ADDR_HIGH 0x28 312 #define MVPP2_PHY_AN_CFG0_REG 0x34 313 #define MVPP2_PHY_AN_STOP_SMI0_MASK BIT(7) 314 #define MVPP2_MIB_COUNTERS_BASE(port) (0x1000 + ((port) >> 1) * 0x400 + (port) * 0x400) 315 #define MVPP2_MIB_LATE_COLLISION 0x7c 316 #define MVPP2_ISR_SUM_MASK_REG 0x220c 317 #define MVPP2_MNG_EXTENDED_GLOBAL_CTRL_REG 0x305c 318 #define MVPP2_EXT_GLOBAL_CTRL_DEFAULT 0x27 319 320 /* Per-port registers */ 321 #define MVPP2_GMAC_CTRL_0_REG 0x0 322 #define MVPP2_GMAC_PORT_EN_MASK BIT(0) 323 #define MVPP2_GMAC_PORT_TYPE_MASK BIT(1) 324 #define MVPP2_GMAC_MAX_RX_SIZE_OFFS 2 325 #define MVPP2_GMAC_MAX_RX_SIZE_MASK 0x7ffc 326 #define MVPP2_GMAC_MIB_CNTR_EN_MASK BIT(15) 327 #define MVPP2_GMAC_CTRL_1_REG 0x4 328 #define MVPP2_GMAC_PERIODIC_XON_EN_MASK BIT(1) 329 #define MVPP2_GMAC_GMII_LB_EN_MASK BIT(5) 330 #define MVPP2_GMAC_PCS_LB_EN_BIT 6 331 #define MVPP2_GMAC_PCS_LB_EN_MASK BIT(6) 332 #define MVPP2_GMAC_SA_LOW_OFFS 7 333 #define MVPP2_GMAC_CTRL_2_REG 0x8 334 #define MVPP2_GMAC_INBAND_AN_MASK BIT(0) 335 #define MVPP2_GMAC_PCS_ENABLE_MASK BIT(3) 336 #define MVPP2_GMAC_PORT_RGMII_MASK BIT(4) 337 #define MVPP2_GMAC_PORT_RESET_MASK BIT(6) 338 #define MVPP2_GMAC_AUTONEG_CONFIG 0xc 339 #define MVPP2_GMAC_FORCE_LINK_DOWN BIT(0) 340 #define MVPP2_GMAC_FORCE_LINK_PASS BIT(1) 341 #define MVPP2_GMAC_IN_BAND_AUTONEG BIT(2) 342 #define MVPP2_GMAC_IN_BAND_AUTONEG_BYPASS BIT(3) 343 #define MVPP2_GMAC_IN_BAND_RESTART_AN BIT(4) 344 #define MVPP2_GMAC_CONFIG_MII_SPEED BIT(5) 345 #define MVPP2_GMAC_CONFIG_GMII_SPEED BIT(6) 346 #define MVPP2_GMAC_AN_SPEED_EN BIT(7) 347 #define MVPP2_GMAC_FC_ADV_EN BIT(9) 348 #define MVPP2_GMAC_FC_ADV_ASM_EN BIT(10) 349 #define MVPP2_GMAC_FLOW_CTRL_AUTONEG BIT(11) 350 #define MVPP2_GMAC_CONFIG_FULL_DUPLEX BIT(12) 351 #define MVPP2_GMAC_AN_DUPLEX_EN BIT(13) 352 #define MVPP2_GMAC_PORT_FIFO_CFG_1_REG 0x1c 353 #define MVPP2_GMAC_TX_FIFO_MIN_TH_OFFS 6 354 #define MVPP2_GMAC_TX_FIFO_MIN_TH_ALL_MASK 0x1fc0 355 #define MVPP2_GMAC_TX_FIFO_MIN_TH_MASK(v) (((v) << 6) & MVPP2_GMAC_TX_FIFO_MIN_TH_ALL_MASK) 356 357 /* Port Interrupts */ 358 #define MV_GMAC_INTERRUPT_CAUSE_REG (0x0020) 359 #define MV_GMAC_INTERRUPT_MASK_REG (0x0024) 360 #define MV_GMAC_INTERRUPT_CAUSE_LINK_CHANGE_OFFS 1 361 #define MV_GMAC_INTERRUPT_CAUSE_LINK_CHANGE_MASK (0x1 << MV_GMAC_INTERRUPT_CAUSE_LINK_CHANGE_OFFS) 362 363 /* Port Interrupt Summary */ 364 #define MV_GMAC_INTERRUPT_SUM_CAUSE_REG (0x00A0) 365 #define MV_GMAC_INTERRUPT_SUM_MASK_REG (0x00A4) 366 #define MV_GMAC_INTERRUPT_SUM_CAUSE_LINK_CHANGE_OFFS 1 367 #define MV_GMAC_INTERRUPT_SUM_CAUSE_LINK_CHANGE_MASK (0x1 << MV_GMAC_INTERRUPT_SUM_CAUSE_LINK_CHANGE_OFFS) 368 369 /* Port Mac Control0 */ 370 #define MVPP2_PORT_CTRL0_REG (0x0000) 371 #define MVPP2_PORT_CTRL0_PORTEN_OFFS 0 372 #define MVPP2_PORT_CTRL0_PORTEN_MASK \ 373 (0x00000001 << MVPP2_PORT_CTRL0_PORTEN_OFFS) 374 375 #define MVPP2_PORT_CTRL0_PORTTYPE_OFFS 1 376 #define MVPP2_PORT_CTRL0_PORTTYPE_MASK \ 377 (0x00000001 << MVPP2_PORT_CTRL0_PORTTYPE_OFFS) 378 379 #define MVPP2_PORT_CTRL0_FRAMESIZELIMIT_OFFS 2 380 #define MVPP2_PORT_CTRL0_FRAMESIZELIMIT_MASK \ 381 (0x00001fff << MVPP2_PORT_CTRL0_FRAMESIZELIMIT_OFFS) 382 383 #define MVPP2_PORT_CTRL0_COUNT_EN_OFFS 15 384 #define MVPP2_PORT_CTRL0_COUNT_EN_MASK \ 385 (0x00000001 << MVPP2_PORT_CTRL0_COUNT_EN_OFFS) 386 387 /* Port Mac Control1 */ 388 #define MVPP2_PORT_CTRL1_REG (0x0004) 389 #define MVPP2_PORT_CTRL1_EN_RX_CRC_CHECK_OFFS 0 390 #define MVPP2_PORT_CTRL1_EN_RX_CRC_CHECK_MASK \ 391 (0x00000001 << MVPP2_PORT_CTRL1_EN_RX_CRC_CHECK_OFFS) 392 393 #define MVPP2_PORT_CTRL1_EN_PERIODIC_FC_XON_OFFS 1 394 #define MVPP2_PORT_CTRL1_EN_PERIODIC_FC_XON_MASK \ 395 (0x00000001 << MVPP2_PORT_CTRL1_EN_PERIODIC_FC_XON_OFFS) 396 397 #define MVPP2_PORT_CTRL1_MGMII_MODE_OFFS 2 398 #define MVPP2_PORT_CTRL1_MGMII_MODE_MASK \ 399 (0x00000001 << MVPP2_PORT_CTRL1_MGMII_MODE_OFFS) 400 401 #define MVPP2_PORT_CTRL1_PFC_CASCADE_PORT_ENABLE_OFFS 3 402 #define MVPP2_PORT_CTRL1_PFC_CASCADE_PORT_ENABLE_MASK \ 403 (0x00000001 << MVPP2_PORT_CTRL1_PFC_CASCADE_PORT_ENABLE_OFFS) 404 405 #define MVPP2_PORT_CTRL1_DIS_EXCESSIVE_COL_OFFS 4 406 #define MVPP2_PORT_CTRL1_DIS_EXCESSIVE_COL_MASK \ 407 (0x00000001 << MVPP2_PORT_CTRL1_DIS_EXCESSIVE_COL_OFFS) 408 409 #define MVPP2_PORT_CTRL1_GMII_LOOPBACK_OFFS 5 410 #define MVPP2_PORT_CTRL1_GMII_LOOPBACK_MASK \ 411 (0x00000001 << MVPP2_PORT_CTRL1_GMII_LOOPBACK_OFFS) 412 413 #define MVPP2_PORT_CTRL1_PCS_LOOPBACK_OFFS 6 414 #define MVPP2_PORT_CTRL1_PCS_LOOPBACK_MASK \ 415 (0x00000001 << MVPP2_PORT_CTRL1_PCS_LOOPBACK_OFFS) 416 417 #define MVPP2_PORT_CTRL1_FC_SA_ADDR_LO_OFFS 7 418 #define MVPP2_PORT_CTRL1_FC_SA_ADDR_LO_MASK \ 419 (0x000000ff << MVPP2_PORT_CTRL1_FC_SA_ADDR_LO_OFFS) 420 421 #define MVPP2_PORT_CTRL1_EN_SHORT_PREAMBLE_OFFS 15 422 #define MVPP2_PORT_CTRL1_EN_SHORT_PREAMBLE_MASK \ 423 (0x00000001 << MVPP2_PORT_CTRL1_EN_SHORT_PREAMBLE_OFFS) 424 425 /* Port Mac Control2 */ 426 #define MVPP2_PORT_CTRL2_REG (0x0008) 427 #define MVPP2_PORT_CTRL2_SGMII_MODE_OFFS 0 428 #define MVPP2_PORT_CTRL2_SGMII_MODE_MASK \ 429 (0x00000001 << MVPP2_PORT_CTRL2_SGMII_MODE_OFFS) 430 431 #define MVPP2_PORT_CTRL2_FC_MODE_OFFS 1 432 #define MVPP2_PORT_CTRL2_FC_MODE_MASK \ 433 (0x00000003 << MVPP2_PORT_CTRL2_FC_MODE_OFFS) 434 435 #define MVPP2_PORT_CTRL2_PCS_EN_OFFS 3 436 #define MVPP2_PORT_CTRL2_PCS_EN_MASK \ 437 (0x00000001 << MVPP2_PORT_CTRL2_PCS_EN_OFFS) 438 439 #define MVPP2_PORT_CTRL2_RGMII_MODE_OFFS 4 440 #define MVPP2_PORT_CTRL2_RGMII_MODE_MASK \ 441 (0x00000001 << MVPP2_PORT_CTRL2_RGMII_MODE_OFFS) 442 443 #define MVPP2_PORT_CTRL2_DIS_PADING_OFFS 5 444 #define MVPP2_PORT_CTRL2_DIS_PADING_MASK \ 445 (0x00000001 << MVPP2_PORT_CTRL2_DIS_PADING_OFFS) 446 447 #define MVPP2_PORT_CTRL2_PORTMACRESET_OFFS 6 448 #define MVPP2_PORT_CTRL2_PORTMACRESET_MASK \ 449 (0x00000001 << MVPP2_PORT_CTRL2_PORTMACRESET_OFFS) 450 451 #define MVPP2_PORT_CTRL2_TX_DRAIN_OFFS 7 452 #define MVPP2_PORT_CTRL2_TX_DRAIN_MASK \ 453 (0x00000001 << MVPP2_PORT_CTRL2_TX_DRAIN_OFFS) 454 455 #define MVPP2_PORT_CTRL2_EN_MII_ODD_PRE_OFFS 8 456 #define MVPP2_PORT_CTRL2_EN_MII_ODD_PRE_MASK \ 457 (0x00000001 << MVPP2_PORT_CTRL2_EN_MII_ODD_PRE_OFFS) 458 459 #define MVPP2_PORT_CTRL2_CLK_125_BYPS_EN_OFFS 9 460 #define MVPP2_PORT_CTRL2_CLK_125_BYPS_EN_MASK \ 461 (0x00000001 << MVPP2_PORT_CTRL2_CLK_125_BYPS_EN_OFFS) 462 463 #define MVPP2_PORT_CTRL2_PRBS_CHECK_EN_OFFS 10 464 #define MVPP2_PORT_CTRL2_PRBS_CHECK_EN_MASK \ 465 (0x00000001 << MVPP2_PORT_CTRL2_PRBS_CHECK_EN_OFFS) 466 467 #define MVPP2_PORT_CTRL2_PRBS_GEN_EN_OFFS 11 468 #define MVPP2_PORT_CTRL2_PRBS_GEN_EN_MASK \ 469 (0x00000001 << MVPP2_PORT_CTRL2_PRBS_GEN_EN_OFFS) 470 471 #define MVPP2_PORT_CTRL2_SELECT_DATA_TO_TX_OFFS 12 472 #define MVPP2_PORT_CTRL2_SELECT_DATA_TO_TX_MASK \ 473 (0x00000003 << MVPP2_PORT_CTRL2_SELECT_DATA_TO_TX_OFFS) 474 475 #define MVPP2_PORT_CTRL2_EN_COL_ON_BP_OFFS 14 476 #define MVPP2_PORT_CTRL2_EN_COL_ON_BP_MASK \ 477 (0x00000001 << MVPP2_PORT_CTRL2_EN_COL_ON_BP_OFFS) 478 479 #define MVPP2_PORT_CTRL2_EARLY_REJECT_MODE_OFFS 15 480 #define MVPP2_PORT_CTRL2_EARLY_REJECT_MODE_MASK \ 481 (0x00000001 << MVPP2_PORT_CTRL2_EARLY_REJECT_MODE_OFFS) 482 483 /* Port Auto-negotiation Configuration */ 484 #define MVPP2_PORT_AUTO_NEG_CFG_REG (0x000c) 485 #define MVPP2_PORT_AUTO_NEG_CFG_FORCE_LINK_DOWN_OFFS 0 486 #define MVPP2_PORT_AUTO_NEG_CFG_FORCE_LINK_DOWN_MASK \ 487 (0x00000001 << MVPP2_PORT_AUTO_NEG_CFG_FORCE_LINK_DOWN_OFFS) 488 489 #define MVPP2_PORT_AUTO_NEG_CFG_FORCE_LINK_UP_OFFS 1 490 #define MVPP2_PORT_AUTO_NEG_CFG_FORCE_LINK_UP_MASK \ 491 (0x00000001 << MVPP2_PORT_AUTO_NEG_CFG_FORCE_LINK_UP_OFFS) 492 493 #define MVPP2_PORT_AUTO_NEG_CFG_EN_PCS_AN_OFFS 2 494 #define MVPP2_PORT_AUTO_NEG_CFG_EN_PCS_AN_MASK \ 495 (0x00000001 << MVPP2_PORT_AUTO_NEG_CFG_EN_PCS_AN_OFFS) 496 497 #define MVPP2_PORT_AUTO_NEG_CFG_AN_BYPASS_EN_OFFS 3 498 #define MVPP2_PORT_AUTO_NEG_CFG_AN_BYPASS_EN_MASK \ 499 (0x00000001 << MVPP2_PORT_AUTO_NEG_CFG_AN_BYPASS_EN_OFFS) 500 501 #define MVPP2_PORT_AUTO_NEG_CFG_INBAND_RESTARTAN_OFFS 4 502 #define MVPP2_PORT_AUTO_NEG_CFG_INBAND_RESTARTAN_MASK \ 503 (0x00000001 << MVPP2_PORT_AUTO_NEG_CFG_INBAND_RESTARTAN_OFFS) 504 505 #define MVPP2_PORT_AUTO_NEG_CFG_SET_MII_SPEED_OFFS 5 506 #define MVPP2_PORT_AUTO_NEG_CFG_SET_MII_SPEED_MASK \ 507 (0x00000001 << MVPP2_PORT_AUTO_NEG_CFG_SET_MII_SPEED_OFFS) 508 509 #define MVPP2_PORT_AUTO_NEG_CFG_SET_GMII_SPEED_OFFS 6 510 #define MVPP2_PORT_AUTO_NEG_CFG_SET_GMII_SPEED_MASK \ 511 (0x00000001 << MVPP2_PORT_AUTO_NEG_CFG_SET_GMII_SPEED_OFFS) 512 513 #define MVPP2_PORT_AUTO_NEG_CFG_EN_AN_SPEED_OFFS 7 514 #define MVPP2_PORT_AUTO_NEG_CFG_EN_AN_SPEED_MASK \ 515 (0x00000001 << MVPP2_PORT_AUTO_NEG_CFG_EN_AN_SPEED_OFFS) 516 517 #define MVPP2_PORT_AUTO_NEG_CFG_ADV_PAUSE_OFFS 9 518 #define MVPP2_PORT_AUTO_NEG_CFG_ADV_PAUSE_MASK \ 519 (0x00000001 << MVPP2_PORT_AUTO_NEG_CFG_ADV_PAUSE_OFFS) 520 521 #define MVPP2_PORT_AUTO_NEG_CFG_ADV_ASM_PAUSE_OFFS 10 522 #define MVPP2_PORT_AUTO_NEG_CFG_ADV_ASM_PAUSE_MASK \ 523 (0x00000001 << MVPP2_PORT_AUTO_NEG_CFG_ADV_ASM_PAUSE_OFFS) 524 525 #define MVPP2_PORT_AUTO_NEG_CFG_EN_FC_AN_OFFS 11 526 #define MVPP2_PORT_AUTO_NEG_CFG_EN_FC_AN_MASK \ 527 (0x00000001 << MVPP2_PORT_AUTO_NEG_CFG_EN_FC_AN_OFFS) 528 529 #define MVPP2_PORT_AUTO_NEG_CFG_SET_FULL_DX_OFFS 12 530 #define MVPP2_PORT_AUTO_NEG_CFG_SET_FULL_DX_MASK \ 531 (0x00000001 << MVPP2_PORT_AUTO_NEG_CFG_SET_FULL_DX_OFFS) 532 533 #define MVPP2_PORT_AUTO_NEG_CFG_EN_FDX_AN_OFFS 13 534 #define MVPP2_PORT_AUTO_NEG_CFG_EN_FDX_AN_MASK \ 535 (0x00000001 << MVPP2_PORT_AUTO_NEG_CFG_EN_FDX_AN_OFFS) 536 537 #define MVPP2_PORT_AUTO_NEG_CFG_PHY_MODE_OFFS 14 538 #define MVPP2_PORT_AUTO_NEG_CFG_PHY_MODE_MASK \ 539 (0x00000001 << MVPP2_PORT_AUTO_NEG_CFG_PHY_MODE_OFFS) 540 541 #define MVPP2_PORT_AUTO_NEG_CFG_CHOOSE_SAMPLE_TX_CONFIG_OFFS 15 542 #define MVPP2_PORT_AUTO_NEG_CFG_CHOOSE_SAMPLE_TX_CONFIG_MASK \ 543 (0x00000001 << MVPP2_PORT_AUTO_NEG_CFG_CHOOSE_SAMPLE_TX_CONFIG_OFFS) 544 545 /* Port Status0 */ 546 #define MVPP2_PORT_STATUS0_REG (0x0010) 547 #define MVPP2_PORT_STATUS0_LINKUP_OFFS 0 548 #define MVPP2_PORT_STATUS0_LINKUP_MASK \ 549 (0x00000001 << MVPP2_PORT_STATUS0_LINKUP_OFFS) 550 551 #define MVPP2_PORT_STATUS0_GMIISPEED_OFFS 1 552 #define MVPP2_PORT_STATUS0_GMIISPEED_MASK \ 553 (0x00000001 << MVPP2_PORT_STATUS0_GMIISPEED_OFFS) 554 555 #define MVPP2_PORT_STATUS0_MIISPEED_OFFS 2 556 #define MVPP2_PORT_STATUS0_MIISPEED_MASK \ 557 (0x00000001 << MVPP2_PORT_STATUS0_MIISPEED_OFFS) 558 559 #define MVPP2_PORT_STATUS0_FULLDX_OFFS 3 560 #define MVPP2_PORT_STATUS0_FULLDX_MASK \ 561 (0x00000001 << MVPP2_PORT_STATUS0_FULLDX_OFFS) 562 563 #define MVPP2_PORT_STATUS0_RXFCEN_OFFS 4 564 #define MVPP2_PORT_STATUS0_RXFCEN_MASK \ 565 (0x00000001 << MVPP2_PORT_STATUS0_RXFCEN_OFFS) 566 567 #define MVPP2_PORT_STATUS0_TXFCEN_OFFS 5 568 #define MVPP2_PORT_STATUS0_TXFCEN_MASK \ 569 (0x00000001 << MVPP2_PORT_STATUS0_TXFCEN_OFFS) 570 571 #define MVPP2_PORT_STATUS0_PORTRXPAUSE_OFFS 6 572 #define MVPP2_PORT_STATUS0_PORTRXPAUSE_MASK \ 573 (0x00000001 << MVPP2_PORT_STATUS0_PORTRXPAUSE_OFFS) 574 575 #define MVPP2_PORT_STATUS0_PORTTXPAUSE_OFFS 7 576 #define MVPP2_PORT_STATUS0_PORTTXPAUSE_MASK \ 577 (0x00000001 << MVPP2_PORT_STATUS0_PORTTXPAUSE_OFFS) 578 579 #define MVPP2_PORT_STATUS0_PORTIS_DOINGPRESSURE_OFFS 8 580 #define MVPP2_PORT_STATUS0_PORTIS_DOINGPRESSURE_MASK \ 581 (0x00000001 << MVPP2_PORT_STATUS0_PORTIS_DOINGPRESSURE_OFFS) 582 583 #define MVPP2_PORT_STATUS0_PORTBUFFULL_OFFS 9 584 #define MVPP2_PORT_STATUS0_PORTBUFFULL_MASK \ 585 (0x00000001 << MVPP2_PORT_STATUS0_PORTBUFFULL_OFFS) 586 587 #define MVPP2_PORT_STATUS0_SYNCFAIL10MS_OFFS 10 588 #define MVPP2_PORT_STATUS0_SYNCFAIL10MS_MASK \ 589 (0x00000001 << MVPP2_PORT_STATUS0_SYNCFAIL10MS_OFFS) 590 591 #define MVPP2_PORT_STATUS0_ANDONE_OFFS 11 592 #define MVPP2_PORT_STATUS0_ANDONE_MASK \ 593 (0x00000001 << MVPP2_PORT_STATUS0_ANDONE_OFFS) 594 595 #define MVPP2_PORT_STATUS0_INBAND_AUTONEG_BYPASSACT_OFFS 12 596 #define MVPP2_PORT_STATUS0_INBAND_AUTONEG_BYPASSACT_MASK \ 597 (0x00000001 << MVPP2_PORT_STATUS0_INBAND_AUTONEG_BYPASSACT_OFFS) 598 599 #define MVPP2_PORT_STATUS0_SERDESPLL_LOCKED_OFFS 13 600 #define MVPP2_PORT_STATUS0_SERDESPLL_LOCKED_MASK \ 601 (0x00000001 << MVPP2_PORT_STATUS0_SERDESPLL_LOCKED_OFFS) 602 603 #define MVPP2_PORT_STATUS0_SYNCOK_OFFS 14 604 #define MVPP2_PORT_STATUS0_SYNCOK_MASK \ 605 (0x00000001 << MVPP2_PORT_STATUS0_SYNCOK_OFFS) 606 607 #define MVPP2_PORT_STATUS0_SQUELCHNOT_DETECTED_OFFS 15 608 #define MVPP2_PORT_STATUS0_SQUELCHNOT_DETECTED_MASK \ 609 (0x00000001 << MVPP2_PORT_STATUS0_SQUELCHNOT_DETECTED_OFFS) 610 611 /* Port Serial Parameters Configuration */ 612 #define MVPP2_PORT_SERIAL_PARAM_CFG_REG (0x0014) 613 #define MVPP2_PORT_SERIAL_PARAM_CFG_UNIDIRECTIONAL_ENABLE_OFFS 0 614 #define MVPP2_PORT_SERIAL_PARAM_CFG_UNIDIRECTIONAL_ENABLE_MASK \ 615 (0x00000001 << MVPP2_PORT_SERIAL_PARAM_CFG_UNIDIRECTIONAL_ENABLE_OFFS) 616 617 #define MVPP2_PORT_SERIAL_PARAM_CFG_RETRANSMIT_COLLISION_DOMAIN_OFFS 1 618 #define MVPP2_PORT_SERIAL_PARAM_CFG_RETRANSMIT_COLLISION_DOMAIN_MASK \ 619 (0x00000001 << MVPP2_PORT_SERIAL_PARAM_CFG_RETRANSMIT_COLLISION_DOMAIN_OFFS) 620 621 #define MVPP2_PORT_SERIAL_PARAM_CFG_PUMA2_BTS1444_EN_OFFS 2 622 #define MVPP2_PORT_SERIAL_PARAM_CFG_PUMA2_BTS1444_EN_MASK \ 623 (0x00000001 << MVPP2_PORT_SERIAL_PARAM_CFG_PUMA2_BTS1444_EN_OFFS) 624 625 #define MVPP2_PORT_SERIAL_PARAM_CFG_FORWARD_802_3X_FC_EN_OFFS 3 626 #define MVPP2_PORT_SERIAL_PARAM_CFG_FORWARD_802_3X_FC_EN_MASK \ 627 (0x00000001 << MVPP2_PORT_SERIAL_PARAM_CFG_FORWARD_802_3X_FC_EN_OFFS) 628 629 #define MVPP2_PORT_SERIAL_PARAM_CFG_BP_EN_OFFS 4 630 #define MVPP2_PORT_SERIAL_PARAM_CFG_BP_EN_MASK \ 631 (0x00000001 << MVPP2_PORT_SERIAL_PARAM_CFG_BP_EN_OFFS) 632 633 #define MVPP2_PORT_SERIAL_PARAM_CFG_RX_NEGEDGE_SAMPLE_EN_OFFS 5 634 #define MVPP2_PORT_SERIAL_PARAM_CFG_RX_NEGEDGE_SAMPLE_EN_MASK \ 635 (0x00000001 << MVPP2_PORT_SERIAL_PARAM_CFG_RX_NEGEDGE_SAMPLE_EN_OFFS) 636 637 #define MVPP2_PORT_SERIAL_PARAM_CFG_COL_DOMAIN_LIMIT_OFFS 6 638 #define MVPP2_PORT_SERIAL_PARAM_CFG_COL_DOMAIN_LIMIT_MASK \ 639 (0x0000003f << MVPP2_PORT_SERIAL_PARAM_CFG_COL_DOMAIN_LIMIT_OFFS) 640 641 #define MVPP2_PORT_SERIAL_PARAM_CFG_PERIODIC_TYPE_SELECT_OFFS 12 642 #define MVPP2_PORT_SERIAL_PARAM_CFG_PERIODIC_TYPE_SELECT_MASK \ 643 (0x00000001 << MVPP2_PORT_SERIAL_PARAM_CFG_PERIODIC_TYPE_SELECT_OFFS) 644 645 #define MVPP2_PORT_SERIAL_PARAM_CFG_PER_PRIORITY_FC_EN_OFFS 13 646 #define MVPP2_PORT_SERIAL_PARAM_CFG_PER_PRIORITY_FC_EN_MASK \ 647 (0x00000001 << MVPP2_PORT_SERIAL_PARAM_CFG_PER_PRIORITY_FC_EN_OFFS) 648 649 #define MVPP2_PORT_SERIAL_PARAM_CFG_TX_STANDARD_PRBS7_OFFS 14 650 #define MVPP2_PORT_SERIAL_PARAM_CFG_TX_STANDARD_PRBS7_MASK \ 651 (0x00000001 << MVPP2_PORT_SERIAL_PARAM_CFG_TX_STANDARD_PRBS7_OFFS) 652 653 #define MVPP2_PORT_SERIAL_PARAM_CFG_REVERSE_PRBS_RX_OFFS 15 654 #define MVPP2_PORT_SERIAL_PARAM_CFG_REVERSE_PRBS_RX_MASK \ 655 (0x00000001 << MVPP2_PORT_SERIAL_PARAM_CFG_REVERSE_PRBS_RX_OFFS) 656 657 /* Port Fifo Configuration 0 */ 658 #define MVPP2_PORT_FIFO_CFG_0_REG (0x0018) 659 #define MVPP2_PORT_FIFO_CFG_0_TX_FIFO_HIGH_WM_OFFS 0 660 #define MVPP2_PORT_FIFO_CFG_0_TX_FIFO_HIGH_WM_MASK \ 661 (0x000000ff << MVPP2_PORT_FIFO_CFG_0_TX_FIFO_HIGH_WM_OFFS) 662 663 #define MVPP2_PORT_FIFO_CFG_0_TX_FIFO_LOW_WM_OFFS 8 664 #define MVPP2_PORT_FIFO_CFG_0_TX_FIFO_LOW_WM_MASK \ 665 (0x000000ff << MVPP2_PORT_FIFO_CFG_0_TX_FIFO_LOW_WM_OFFS) 666 667 /* Port Fifo Configuration 1 */ 668 #define MVPP2_PORT_FIFO_CFG_1_REG (0x001c) 669 #define MVPP2_PORT_FIFO_CFG_1_RX_FIFO_MAX_TH_OFFS 0 670 #define MVPP2_PORT_FIFO_CFG_1_RX_FIFO_MAX_TH_MASK \ 671 (0x0000003f << MVPP2_PORT_FIFO_CFG_1_RX_FIFO_MAX_TH_OFFS) 672 673 #define MVPP2_PORT_FIFO_CFG_1_TX_FIFO_MIN_TH_OFFS 6 674 #define MVPP2_PORT_FIFO_CFG_1_TX_FIFO_MIN_TH_MASK \ 675 (0x000000ff << MVPP2_PORT_FIFO_CFG_1_TX_FIFO_MIN_TH_OFFS) 676 677 #define MVPP2_PORT_FIFO_CFG_1_PORT_EN_FIX_EN_OFFS 15 678 #define MVPP2_PORT_FIFO_CFG_1_PORT_EN_FIX_EN_MASK \ 679 (0x00000001 << MVPP2_PORT_FIFO_CFG_1_PORT_EN_FIX_EN_OFFS) 680 681 /* Port Serdes Configuration0 */ 682 #define MVPP2_PORT_SERDES_CFG0_REG (0x0028) 683 #define MVPP2_PORT_SERDES_CFG0_SERDESRESET_OFFS 0 684 #define MVPP2_PORT_SERDES_CFG0_SERDESRESET_MASK \ 685 (0x00000001 << MVPP2_PORT_SERDES_CFG0_SERDESRESET_OFFS) 686 687 #define MVPP2_PORT_SERDES_CFG0_PU_TX_OFFS 1 688 #define MVPP2_PORT_SERDES_CFG0_PU_TX_MASK \ 689 (0x00000001 << MVPP2_PORT_SERDES_CFG0_PU_TX_OFFS) 690 691 #define MVPP2_PORT_SERDES_CFG0_PU_RX_OFFS 2 692 #define MVPP2_PORT_SERDES_CFG0_PU_RX_MASK \ 693 (0x00000001 << MVPP2_PORT_SERDES_CFG0_PU_RX_OFFS) 694 695 #define MVPP2_PORT_SERDES_CFG0_PU_PLL_OFFS 3 696 #define MVPP2_PORT_SERDES_CFG0_PU_PLL_MASK \ 697 (0x00000001 << MVPP2_PORT_SERDES_CFG0_PU_PLL_OFFS) 698 699 #define MVPP2_PORT_SERDES_CFG0_PU_IVREF_OFFS 4 700 #define MVPP2_PORT_SERDES_CFG0_PU_IVREF_MASK \ 701 (0x00000001 << MVPP2_PORT_SERDES_CFG0_PU_IVREF_OFFS) 702 703 #define MVPP2_PORT_SERDES_CFG0_TESTEN_OFFS 5 704 #define MVPP2_PORT_SERDES_CFG0_TESTEN_MASK \ 705 (0x00000001 << MVPP2_PORT_SERDES_CFG0_TESTEN_OFFS) 706 707 #define MVPP2_PORT_SERDES_CFG0_DPHER_EN_OFFS 6 708 #define MVPP2_PORT_SERDES_CFG0_DPHER_EN_MASK \ 709 (0x00000001 << MVPP2_PORT_SERDES_CFG0_DPHER_EN_OFFS) 710 711 #define MVPP2_PORT_SERDES_CFG0_RUDI_INVALID_ENABLE_OFFS 7 712 #define MVPP2_PORT_SERDES_CFG0_RUDI_INVALID_ENABLE_MASK \ 713 (0x00000001 << MVPP2_PORT_SERDES_CFG0_RUDI_INVALID_ENABLE_OFFS) 714 715 #define MVPP2_PORT_SERDES_CFG0_ACK_OVERRIDE_ENABLE_OFFS 8 716 #define MVPP2_PORT_SERDES_CFG0_ACK_OVERRIDE_ENABLE_MASK \ 717 (0x00000001 << MVPP2_PORT_SERDES_CFG0_ACK_OVERRIDE_ENABLE_OFFS) 718 719 #define MVPP2_PORT_SERDES_CFG0_CONFIG_WORD_ENABLE_OFFS 9 720 #define MVPP2_PORT_SERDES_CFG0_CONFIG_WORD_ENABLE_MASK \ 721 (0x00000001 << MVPP2_PORT_SERDES_CFG0_CONFIG_WORD_ENABLE_OFFS) 722 723 #define MVPP2_PORT_SERDES_CFG0_SYNC_FAIL_INT_ENABLE_OFFS 10 724 #define MVPP2_PORT_SERDES_CFG0_SYNC_FAIL_INT_ENABLE_MASK \ 725 (0x00000001 << MVPP2_PORT_SERDES_CFG0_SYNC_FAIL_INT_ENABLE_OFFS) 726 727 #define MVPP2_PORT_SERDES_CFG0_MASTER_MODE_ENABLE_OFFS 11 728 #define MVPP2_PORT_SERDES_CFG0_MASTER_MODE_ENABLE_MASK \ 729 (0x00000001 << MVPP2_PORT_SERDES_CFG0_MASTER_MODE_ENABLE_OFFS) 730 731 #define MVPP2_PORT_SERDES_CFG0_TERM75_TX_OFFS 12 732 #define MVPP2_PORT_SERDES_CFG0_TERM75_TX_MASK \ 733 (0x00000001 << MVPP2_PORT_SERDES_CFG0_TERM75_TX_OFFS) 734 735 #define MVPP2_PORT_SERDES_CFG0_OUTAMP_OFFS 13 736 #define MVPP2_PORT_SERDES_CFG0_OUTAMP_MASK \ 737 (0x00000001 << MVPP2_PORT_SERDES_CFG0_OUTAMP_OFFS) 738 739 #define MVPP2_PORT_SERDES_CFG0_BTS712_FIX_EN_OFFS 14 740 #define MVPP2_PORT_SERDES_CFG0_BTS712_FIX_EN_MASK \ 741 (0x00000001 << MVPP2_PORT_SERDES_CFG0_BTS712_FIX_EN_OFFS) 742 743 #define MVPP2_PORT_SERDES_CFG0_BTS156_FIX_EN_OFFS 15 744 #define MVPP2_PORT_SERDES_CFG0_BTS156_FIX_EN_MASK \ 745 (0x00000001 << MVPP2_PORT_SERDES_CFG0_BTS156_FIX_EN_OFFS) 746 747 /* Port Serdes Configuration1 */ 748 #define MVPP2_PORT_SERDES_CFG1_REG (0x002c) 749 #define MVPP2_PORT_SERDES_CFG1_SMII_RX_10MB_CLK_EDGE_SEL_OFFS 0 750 #define MVPP2_PORT_SERDES_CFG1_SMII_RX_10MB_CLK_EDGE_SEL_MASK \ 751 (0x00000001 << MVPP2_GMAC_PORT_SERDES_CFG1_SMII_RX_10MB_CLK_EDGE_SEL_OFFS) 752 753 #define MVPP2_GMAC_PORT_SERDES_CFG1_SMII_TX_10MB_CLK_EDGE_SEL_OFFS 1 754 #define MVPP2_GMAC_PORT_SERDES_CFG1_SMII_TX_10MB_CLK_EDGE_SEL_MASK \ 755 (0x00000001 << MVPP2_GMAC_PORT_SERDES_CFG1_SMII_TX_10MB_CLK_EDGE_SEL_OFFS) 756 757 #define MVPP2_GMAC_PORT_SERDES_CFG1_MEN_OFFS 2 758 #define MVPP2_GMAC_PORT_SERDES_CFG1_MEN_MASK \ 759 (0x00000003 << MVPP2_GMAC_PORT_SERDES_CFG1_MEN_OFFS) 760 761 #define MVPP2_GMAC_PORT_SERDES_CFG1_VCMS_OFFS 4 762 #define MVPP2_GMAC_PORT_SERDES_CFG1_VCMS_MASK \ 763 (0x00000001 << MVPP2_GMAC_PORT_SERDES_CFG1_VCMS_OFFS) 764 765 #define MVPP2_GMAC_PORT_SERDES_CFG1_100FX_PCS_USE_SIGDET_OFFS 5 766 #define MVPP2_GMAC_PORT_SERDES_CFG1_100FX_PCS_USE_SIGDET_MASK \ 767 (0x00000001 << MVPP2_GMAC_PORT_SERDES_CFG1_100FX_PCS_USE_SIGDET_OFFS) 768 769 #define MVPP2_GMAC_PORT_SERDES_CFG1_EN_CRS_MASK_TX_OFFS 6 770 #define MVPP2_GMAC_PORT_SERDES_CFG1_EN_CRS_MASK_TX_MASK \ 771 (0x00000001 << MVPP2_GMAC_PORT_SERDES_CFG1_EN_CRS_MASK_TX_OFFS) 772 773 #define MVPP2_GMAC_PORT_SERDES_CFG1_100FX_ENABLE_OFFS 7 774 #define MVPP2_GMAC_PORT_SERDES_CFG1_100FX_ENABLE_MASK \ 775 (0x00000001 << MVPP2_GMAC_PORT_SERDES_CFG1_100FX_ENABLE_OFFS) 776 777 #define MVPP2_GMAC_PORT_SERDES_CFG1_100FX_PCS_PHY_ADDRESS_OFFS 8 778 #define MVPP2_GMAC_PORT_SERDES_CFG1_100FX_PCS_PHY_ADDRESS_MASK \ 779 (0x0000001f << MVPP2_GMAC_PORT_SERDES_CFG1_100FX_PCS_PHY_ADDRESS_OFFS) 780 781 #define MVPP2_GMAC_PORT_SERDES_CFG1_100FX_PCS_SIGDET_POLARITY_OFFS 13 782 #define MVPP2_GMAC_PORT_SERDES_CFG1_100FX_PCS_SIGDET_POLARITY_MASK \ 783 (0x00000001 << MVPP2_GMAC_PORT_SERDES_CFG1_100FX_PCS_SIGDET_POLARITY_OFFS) 784 785 #define MVPP2_GMAC_PORT_SERDES_CFG1_100FX_PCS_INTERRUPT_POLARITY_OFFS 14 786 #define MVPP2_GMAC_PORT_SERDES_CFG1_100FX_PCS_INTERRUPT_POLARITY_MASK \ 787 (0x00000001 << MVPP2_GMAC_PORT_SERDES_CFG1_100FX_PCS_INTERRUPT_POLARITY_OFFS) 788 789 #define MVPP2_GMAC_PORT_SERDES_CFG1_100FX_PCS_SERDES_POLARITY_OFFS 15 790 #define MVPP2_GMAC_PORT_SERDES_CFG1_100FX_PCS_SERDES_POLARITY_MASK \ 791 (0x00000001 << MVPP2_GMAC_PORT_SERDES_CFG1_100FX_PCS_SERDES_POLARITY_OFFS) 792 793 /* Port Serdes Configuration2 */ 794 #define MVPP2_PORT_SERDES_CFG2_REG (0x0030) 795 #define MVPP2_PORT_SERDES_CFG2_AN_ADV_CONFIGURATION_OFFS 0 796 #define MVPP2_PORT_SERDES_CFG2_AN_ADV_CONFIGURATION_MASK \ 797 (0x0000ffff << MVPP2_PORT_SERDES_CFG2_AN_ADV_CONFIGURATION_OFFS) 798 799 /* Port Serdes Configuration3 */ 800 #define MVPP2_PORT_SERDES_CFG3_REG (0x0034) 801 #define MVPP2_PORT_SERDES_CFG3_ABILITY_MATCH_STATUS_OFFS 0 802 #define MVPP2_PORT_SERDES_CFG3_ABILITY_MATCH_STATUS_MASK \ 803 (0x0000ffff << MVPP2_PORT_SERDES_CFG3_ABILITY_MATCH_STATUS_OFFS) 804 805 /* Port Prbs Status */ 806 #define MVPP2_PORT_PRBS_STATUS_REG (0x0038) 807 #define MVPP2_PORT_PRBS_STATUS_PRBSCHECK_LOCKED_OFFS 0 808 #define MVPP2_PORT_PRBS_STATUS_PRBSCHECK_LOCKED_MASK \ 809 (0x00000001 << MVPP2_PORT_PRBS_STATUS_PRBSCHECK_LOCKED_OFFS) 810 811 #define MVPP2_PORT_PRBS_STATUS_PRBSCHECKRDY_OFFS 1 812 #define MVPP2_PORT_PRBS_STATUS_PRBSCHECKRDY_MASK \ 813 (0x00000001 << MVPP2_PORT_PRBS_STATUS_PRBSCHECKRDY_OFFS) 814 815 /* Port Prbs Error Counter */ 816 #define MVPP2_PORT_PRBS_ERR_CNTR_REG (0x003c) 817 #define MVPP2_PORT_PRBS_ERR_CNTR_PRBSBITERRCNT_OFFS 0 818 #define MVPP2_PORT_PRBS_ERR_CNTR_PRBSBITERRCNT_MASK \ 819 (0x0000ffff << MVPP2_PORT_PRBS_ERR_CNTR_PRBSBITERRCNT_OFFS) 820 821 /* Port Status1 */ 822 #define MVPP2_PORT_STATUS1_REG (0x0040) 823 #define MVPP2_PORT_STATUS1_MEDIAACTIVE_OFFS 0 824 #define MVPP2_PORT_STATUS1_MEDIAACTIVE_MASK \ 825 (0x00000001 << MVPP2_PORT_STATUS1_MEDIAACTIVE_OFFS) 826 827 /* Port Mib Counters Control */ 828 #define MVPP2_PORT_MIB_CNTRS_CTRL_REG (0x0044) 829 #define MVPP2_PORT_MIB_CNTRS_CTRL_MIB_COPY_TRIGGER_OFFS 0 830 #define MVPP2_PORT_MIB_CNTRS_CTRL_MIB_COPY_TRIGGER_MASK \ 831 (0x00000001 << MVPP2_PORT_MIB_CNTRS_CTRL_MIB_COPY_TRIGGER_OFFS) 832 833 #define MVPP2_PORT_MIB_CNTRS_CTRL_MIB_CLEAR_ON_READ__OFFS 1 834 #define MVPP2_PORT_MIB_CNTRS_CTRL_MIB_CLEAR_ON_READ__MASK \ 835 (0x00000001 << MVPP2_PORT_MIB_CNTRS_CTRL_MIB_CLEAR_ON_READ__OFFS) 836 837 #define MVPP2_PORT_MIB_CNTRS_CTRL_RX_HISTOGRAM_EN_OFFS 2 838 #define MVPP2_PORT_MIB_CNTRS_CTRL_RX_HISTOGRAM_EN_MASK \ 839 (0x00000001 << MVPP2_PORT_MIB_CNTRS_CTRL_RX_HISTOGRAM_EN_OFFS) 840 841 #define MVPP2_PORT_MIB_CNTRS_CTRL_TX_HISTOGRAM_EN_OFFS 3 842 #define MVPP2_PORT_MIB_CNTRS_CTRL_TX_HISTOGRAM_EN_MASK \ 843 (0x00000001 << MVPP2_PORT_MIB_CNTRS_CTRL_TX_HISTOGRAM_EN_OFFS) 844 845 #define MVPP2_PORT_MIB_CNTRS_CTRL_MFA1_BTT940_FIX_ENABLE__OFFS 4 846 #define MVPP2_PORT_MIB_CNTRS_CTRL_MFA1_BTT940_FIX_ENABLE__MASK \ 847 (0x00000001 << MVPP2_PORT_MIB_CNTRS_CTRL_MFA1_BTT940_FIX_ENABLE__OFFS) 848 849 #define MVPP2_PORT_MIB_CNTRS_CTRL_XCAT_BTS_340_EN__OFFS 5 850 #define MVPP2_PORT_MIB_CNTRS_CTRL_XCAT_BTS_340_EN__MASK \ 851 (0x00000001 << MVPP2_PORT_MIB_CNTRS_CTRL_XCAT_BTS_340_EN__OFFS) 852 853 #define MVPP2_PORT_MIB_CNTRS_CTRL_MIB_4_COUNT_HIST_OFFS 6 854 #define MVPP2_PORT_MIB_CNTRS_CTRL_MIB_4_COUNT_HIST_MASK \ 855 (0x00000001 << MVPP2_PORT_MIB_CNTRS_CTRL_MIB_4_COUNT_HIST_OFFS) 856 857 #define MVPP2_PORT_MIB_CNTRS_CTRL_MIB_4_LIMIT_1518_1522_OFFS 7 858 #define MVPP2_PORT_MIB_CNTRS_CTRL_MIB_4_LIMIT_1518_1522_MASK \ 859 (0x00000001 << MVPP2_PORT_MIB_CNTRS_CTRL_MIB_4_LIMIT_1518_1522_OFFS) 860 861 /* Port Mac Control3 */ 862 #define MVPP2_PORT_CTRL3_REG (0x0048) 863 #define MVPP2_PORT_CTRL3_BUF_SIZE_OFFS 0 864 #define MVPP2_PORT_CTRL3_BUF_SIZE_MASK \ 865 (0x0000003f << MVPP2_PORT_CTRL3_BUF_SIZE_OFFS) 866 867 #define MVPP2_PORT_CTRL3_IPG_DATA_OFFS 6 868 #define MVPP2_PORT_CTRL3_IPG_DATA_MASK \ 869 (0x000001ff << MVPP2_PORT_CTRL3_IPG_DATA_OFFS) 870 871 #define MVPP2_PORT_CTRL3_LLFC_GLOBAL_FC_ENABLE_OFFS 15 872 #define MVPP2_PORT_CTRL3_LLFC_GLOBAL_FC_ENABLE_MASK \ 873 (0x00000001 << MVPP2_PORT_CTRL3_LLFC_GLOBAL_FC_ENABLE_OFFS) 874 #define MVPP2_CAUSE_TXQ_SENT_DESC_ALL_MASK 0xff 875 876 /* Port Mac Control4 */ 877 #define MVPP2_PORT_CTRL4_REG (0x0090) 878 #define MVPP2_PORT_CTRL4_EXT_PIN_GMII_SEL_OFFS 0 879 #define MVPP2_PORT_CTRL4_EXT_PIN_GMII_SEL_MASK \ 880 (0x00000001 << MVPP2_PORT_CTRL4_EXT_PIN_GMII_SEL_OFFS) 881 882 #define MVPP2_PORT_CTRL4_PREAMBLE_FIX_OFFS 1 883 #define MVPP2_PORT_CTRL4_PREAMBLE_FIX_MASK \ 884 (0x00000001 << MVPP2_PORT_CTRL4_PREAMBLE_FIX_OFFS) 885 886 #define MVPP2_PORT_CTRL4_SQ_DETECT_FIX_EN_OFFS 2 887 #define MVPP2_PORT_CTRL4_SQ_DETECT_FIX_EN_MASK \ 888 (0x00000001 << MVPP2_PORT_CTRL4_SQ_DETECT_FIX_EN_OFFS) 889 890 #define MVPP2_PORT_CTRL4_FC_EN_RX_OFFS 3 891 #define MVPP2_PORT_CTRL4_FC_EN_RX_MASK \ 892 (0x00000001 << MVPP2_PORT_CTRL4_FC_EN_RX_OFFS) 893 894 #define MVPP2_PORT_CTRL4_FC_EN_TX_OFFS 4 895 #define MVPP2_PORT_CTRL4_FC_EN_TX_MASK \ 896 (0x00000001 << MVPP2_PORT_CTRL4_FC_EN_TX_OFFS) 897 898 #define MVPP2_PORT_CTRL4_DP_CLK_SEL_OFFS 5 899 #define MVPP2_PORT_CTRL4_DP_CLK_SEL_MASK \ 900 (0x00000001 << MVPP2_PORT_CTRL4_DP_CLK_SEL_OFFS) 901 902 #define MVPP2_PORT_CTRL4_SYNC_BYPASS_OFFS 6 903 #define MVPP2_PORT_CTRL4_SYNC_BYPASS_MASK \ 904 (0x00000001 << MVPP2_PORT_CTRL4_SYNC_BYPASS_OFFS) 905 906 #define MVPP2_PORT_CTRL4_QSGMII_BYPASS_ACTIVE_OFFS 7 907 #define MVPP2_PORT_CTRL4_QSGMII_BYPASS_ACTIVE_MASK \ 908 (0x00000001 << MVPP2_PORT_CTRL4_QSGMII_BYPASS_ACTIVE_OFFS) 909 910 #define MVPP2_PORT_CTRL4_COUNT_EXTERNAL_FC_EN_OFFS 8 911 #define MVPP2_PORT_CTRL4_COUNT_EXTERNAL_FC_EN_MASK \ 912 (0x00000001 << MVPP2_PORT_CTRL4_COUNT_EXTERNAL_FC_EN_OFFS) 913 914 #define MVPP2_PORT_CTRL4_MARVELL_HEADER_EN_OFFS 9 915 #define MVPP2_PORT_CTRL4_MARVELL_HEADER_EN_MASK \ 916 (0x00000001 << MVPP2_PORT_CTRL4_MARVELL_HEADER_EN_OFFS) 917 918 #define MVPP2_PORT_CTRL4_LEDS_NUMBER_OFFS 10 919 #define MVPP2_PORT_CTRL4_LEDS_NUMBER_MASK \ 920 (0x0000003f << MVPP2_PORT_CTRL4_LEDS_NUMBER_OFFS) 921 922 /* XPCS registers */ 923 924 /* Global Configuration 0 */ 925 #define MVPP22_XPCS_GLOBAL_CFG_0_REG 0x0 926 #define MVPP22_XPCS_PCSRESET BIT(0) 927 #define MVPP22_XPCS_PCSMODE_OFFS 3 928 #define MVPP22_XPCS_PCSMODE_MASK (0x3 << MVPP22_XPCS_PCSMODE_OFFS) 929 #define MVPP22_XPCS_LANEACTIVE_OFFS 5 930 #define MVPP22_XPCS_LANEACTIVE_MASK (0x3 << MVPP22_XPCS_LANEACTIVE_OFFS) 931 932 /* MPCS registers */ 933 934 #define MVPP22_MPCS40G_COMMON_CONTROL 0x14 935 #define MVPP22_MPCS_FORWARD_ERROR_CORRECTION_MASK BIT(10) 936 937 #define MVPP22_MPCS_CLOCK_RESET 0x14c 938 #define MVPP22_MPCS_TX_SD_CLK_RESET_MASK BIT(0) 939 #define MVPP22_MPCS_RX_SD_CLK_RESET_MASK BIT(1) 940 #define MVPP22_MPCS_MAC_CLK_RESET_MASK BIT(2) 941 #define MVPP22_MPCS_CLK_DIVISION_RATIO_OFFS 4 942 #define MVPP22_MPCS_CLK_DIVISION_RATIO_MASK (0x7 << MVPP22_MPCS_CLK_DIVISION_RATIO_OFFS) 943 #define MVPP22_MPCS_CLK_DIVISION_RATIO_DEFAULT (0x1 << MVPP22_MPCS_CLK_DIVISION_RATIO_OFFS) 944 #define MVPP22_MPCS_CLK_DIV_PHASE_SET_MASK BIT(11) 945 946 /* Descriptor ring Macros */ 947 #define MVPP2_QUEUE_NEXT_DESC(q, index) (((index) < (q)->LastDesc) ? ((index) + 1) : 0) 948 949 /* Various constants */ 950 951 /* Coalescing */ 952 #define MVPP2_TXDONE_COAL_PKTS_THRESH 64 953 #define MVPP2_TXDONE_HRTIMER_PERIOD_NS 1000000UL 954 #define MVPP2_TXDONE_COAL_USEC 1000 955 #define MVPP2_RX_COAL_PKTS 32 956 #define MVPP2_RX_COAL_USEC 64 957 958 /* 959 * The two bytes Marvell header. Either contains a special value used 960 * by Marvell switches when a specific hardware mode is enabled (not 961 * supported by this driver) or is filled automatically by zeroes on 962 * the RX side. Those two bytes being at the front of the Ethernet 963 * header, they allow to have the IP header aligned on a 4 bytes 964 * boundary automatically: the hardware skips those two bytes on its 965 * own. 966 */ 967 #define MVPP2_MH_SIZE 2 968 #define MVPP2_ETH_TYPE_LEN 2 969 #define MVPP2_PPPOE_HDR_SIZE 8 970 #define MVPP2_VLAN_TAG_LEN 4 971 972 /* Lbtd 802.3 type */ 973 #define MVPP2_IP_LBDT_TYPE 0xfffa 974 975 #define MVPP2_CPU_D_CACHE_LINE_SIZE 32 976 #define MVPP2_TX_CSUM_MAX_SIZE 9800 977 978 /* Timeout constants */ 979 #define MVPP2_TX_DISABLE_TIMEOUT_MSEC 1000 980 #define MVPP2_TX_PENDING_TIMEOUT_MSEC 1000 981 982 #define MVPP2_TX_MTU_MAX 0x7ffff 983 984 /* Maximum number of T-CONTs of PON port */ 985 #define MVPP2_MAX_TCONT 16 986 987 /* Maximum number of supported ports */ 988 #define MVPP2_MAX_PORTS 4 989 990 /* Maximum number of TXQs used by single port */ 991 #define MVPP2_MAX_TXQ 8 992 993 /* Maximum number of RXQs used by single port */ 994 #define MVPP2_MAX_RXQ 8 995 996 /* Dfault number of RXQs in use */ 997 #define MVPP2_DEFAULT_RXQ 4 998 999 /* Total number of RXQs available to all ports */ 1000 #define MVPP2_RXQ_TOTAL_NUM (MVPP2_MAX_PORTS * MVPP2_MAX_RXQ) 1001 1002 /* Max number of Rx descriptors */ 1003 #define MVPP2_MAX_RXD 64 1004 1005 /* Max number of Tx descriptors */ 1006 #define MVPP2_MAX_TXD 32 1007 1008 /* Amount of Tx descriptors that can be reserved at once by CPU */ 1009 #define MVPP2_CPU_DESC_CHUNK 64 1010 1011 /* Max number of Tx descriptors in each aggregated queue */ 1012 #define MVPP2_AGGR_TXQ_SIZE 256 1013 1014 /* Descriptor aligned size */ 1015 #define MVPP2_DESC_ALIGNED_SIZE 32 1016 1017 /* Descriptor alignment mask */ 1018 #define MVPP2_TX_DESC_ALIGN (MVPP2_DESC_ALIGNED_SIZE - 1) 1019 1020 /* RX FIFO constants */ 1021 #define MVPP2_RX_FIFO_PORT_DATA_SIZE_32KB 0x8000 1022 #define MVPP2_RX_FIFO_PORT_DATA_SIZE_8KB 0x2000 1023 #define MVPP2_RX_FIFO_PORT_DATA_SIZE_4KB 0x1000 1024 #define MVPP2_RX_FIFO_PORT_ATTR_SIZE_32KB 0x200 1025 #define MVPP2_RX_FIFO_PORT_ATTR_SIZE_8KB 0x80 1026 #define MVPP2_RX_FIFO_PORT_ATTR_SIZE_4KB 0x40 1027 #define MVPP2_RX_FIFO_PORT_MIN_PKT 0x80 1028 1029 /* TX FIFO constants */ 1030 #define MVPP22_TX_FIFO_DATA_SIZE_10KB 0xa 1031 #define MVPP22_TX_FIFO_DATA_SIZE_3KB 0x3 1032 #define MVPP2_TX_FIFO_THRESHOLD_MIN 256 1033 #define MVPP2_TX_FIFO_THRESHOLD_10KB \ 1034 (MVPP22_TX_FIFO_DATA_SIZE_10KB * 1024 - MVPP2_TX_FIFO_THRESHOLD_MIN) 1035 #define MVPP2_TX_FIFO_THRESHOLD_3KB \ 1036 (MVPP22_TX_FIFO_DATA_SIZE_3KB * 1024 - MVPP2_TX_FIFO_THRESHOLD_MIN) 1037 1038 #define MVPP2_BIT_TO_BYTE(bit) ((bit) / 8) 1039 1040 /* IPv6 max L3 address size */ 1041 #define MVPP2_MAX_L3_ADDR_SIZE 16 1042 1043 /* Port flags */ 1044 #define MVPP2_F_LOOPBACK BIT(0) 1045 1046 /* SD1 Control1 */ 1047 #define SD1_CONTROL_1_REG (0x148) 1048 1049 #define SD1_CONTROL_XAUI_EN_OFFSET 28 1050 #define SD1_CONTROL_XAUI_EN_MASK (0x1 << SD1_CONTROL_XAUI_EN_OFFSET) 1051 1052 #define SD1_CONTROL_RXAUI0_L23_EN_OFFSET 27 1053 #define SD1_CONTROL_RXAUI0_L23_EN_MASK (0x1 << SD1_CONTROL_RXAUI0_L23_EN_OFFSET) 1054 1055 #define SD1_CONTROL_RXAUI1_L45_EN_OFFSET 26 1056 #define SD1_CONTROL_RXAUI1_L45_EN_MASK (0x1 << SD1_CONTROL_RXAUI1_L45_EN_OFFSET) 1057 1058 /* System Soft Reset 1 */ 1059 #define MV_GOP_SOFT_RESET_1_REG (0x108) 1060 1061 #define NETC_GOP_SOFT_RESET_OFFSET 6 1062 #define NETC_GOP_SOFT_RESET_MASK (0x1 << NETC_GOP_SOFT_RESET_OFFSET) 1063 1064 /* Ports Control 0 */ 1065 #define MV_NETCOMP_PORTS_CONTROL_0 (0x110) 1066 1067 #define NETC_CLK_DIV_PHASE_OFFSET 31 1068 #define NETC_CLK_DIV_PHASE_MASK (0x1 << NETC_CLK_DIV_PHASE_OFFSET) 1069 1070 #define NETC_GIG_RX_DATA_SAMPLE_OFFSET 29 1071 #define NETC_GIG_RX_DATA_SAMPLE_MASK (0x1 << NETC_GIG_RX_DATA_SAMPLE_OFFSET) 1072 1073 #define NETC_BUS_WIDTH_SELECT_OFFSET 1 1074 #define NETC_BUS_WIDTH_SELECT_MASK (0x1 << NETC_BUS_WIDTH_SELECT_OFFSET) 1075 1076 #define NETC_GOP_ENABLE_OFFSET 0 1077 #define NETC_GOP_ENABLE_MASK (0x1 << NETC_GOP_ENABLE_OFFSET) 1078 1079 /* Ports Control 1 */ 1080 #define MV_NETCOMP_PORTS_CONTROL_1 (0x114) 1081 1082 #define NETC_PORT_GIG_RF_RESET_OFFSET(port) (28 + port) 1083 #define NETC_PORT_GIG_RF_RESET_MASK(port) (0x1 << NETC_PORT_GIG_RF_RESET_OFFSET(port)) 1084 1085 #define NETC_PORTS_ACTIVE_OFFSET(port) (0 + port) 1086 #define NETC_PORTS_ACTIVE_MASK(port) (0x1 << NETC_PORTS_ACTIVE_OFFSET(port)) 1087 1088 /* Ports Status */ 1089 #define MV_NETCOMP_PORTS_STATUS (0x11C) 1090 #define NETC_PORTS_STATUS_OFFSET(port) (0 + port) 1091 #define NETC_PORTS_STATUS_MASK(port) (0x1 << NETC_PORTS_STATUS_OFFSET(port)) 1092 1093 /* Networking Complex Control 0 */ 1094 #define MV_NETCOMP_CONTROL_0 (0x120) 1095 1096 #define NETC_GBE_PORT1_MII_MODE_OFFSET 2 1097 #define NETC_GBE_PORT1_MII_MODE_MASK (0x1 << NETC_GBE_PORT1_MII_MODE_OFFSET) 1098 1099 #define NETC_GBE_PORT1_SGMII_MODE_OFFSET 1 1100 #define NETC_GBE_PORT1_SGMII_MODE_MASK (0x1 << NETC_GBE_PORT1_SGMII_MODE_OFFSET) 1101 1102 #define NETC_GBE_PORT0_SGMII_MODE_OFFSET 0 1103 #define NETC_GBE_PORT0_SGMII_MODE_MASK (0x1 << NETC_GBE_PORT0_SGMII_MODE_OFFSET) 1104 1105 /* Port Mac Control0 */ 1106 #define MV_XLG_PORT_MAC_CTRL0_REG ( 0x0000) 1107 #define MV_XLG_MAC_CTRL0_PORTEN_OFFS 0 1108 #define MV_XLG_MAC_CTRL0_PORTEN_MASK \ 1109 (0x00000001 << MV_XLG_MAC_CTRL0_PORTEN_OFFS) 1110 1111 #define MV_XLG_MAC_CTRL0_MACRESETN_OFFS 1 1112 #define MV_XLG_MAC_CTRL0_MACRESETN_MASK \ 1113 (0x00000001 << MV_XLG_MAC_CTRL0_MACRESETN_OFFS) 1114 1115 #define MV_XLG_MAC_CTRL0_FORCELINKDOWN_OFFS 2 1116 #define MV_XLG_MAC_CTRL0_FORCELINKDOWN_MASK \ 1117 (0x00000001 << MV_XLG_MAC_CTRL0_FORCELINKDOWN_OFFS) 1118 1119 #define MV_XLG_MAC_CTRL0_FORCELINKPASS_OFFS 3 1120 #define MV_XLG_MAC_CTRL0_FORCELINKPASS_MASK \ 1121 (0x00000001 << MV_XLG_MAC_CTRL0_FORCELINKPASS_OFFS) 1122 1123 #define MV_XLG_MAC_CTRL0_TXIPGMODE_OFFS 5 1124 #define MV_XLG_MAC_CTRL0_TXIPGMODE_MASK \ 1125 (0x00000003 << MV_XLG_MAC_CTRL0_TXIPGMODE_OFFS) 1126 1127 #define MV_XLG_MAC_CTRL0_RXFCEN_OFFS 7 1128 #define MV_XLG_MAC_CTRL0_RXFCEN_MASK \ 1129 (0x00000001 << MV_XLG_MAC_CTRL0_RXFCEN_OFFS) 1130 1131 #define MV_XLG_MAC_CTRL0_TXFCEN_OFFS 8 1132 #define MV_XLG_MAC_CTRL0_TXFCEN_MASK \ 1133 (0x00000001 << MV_XLG_MAC_CTRL0_TXFCEN_OFFS) 1134 1135 #define MV_XLG_MAC_CTRL0_RXCRCCHECKEN_OFFS 9 1136 #define MV_XLG_MAC_CTRL0_RXCRCCHECKEN_MASK \ 1137 (0x00000001 << MV_XLG_MAC_CTRL0_RXCRCCHECKEN_OFFS) 1138 1139 #define MV_XLG_MAC_CTRL0_PERIODICXONEN_OFFS 10 1140 #define MV_XLG_MAC_CTRL0_PERIODICXONEN_MASK \ 1141 (0x00000001 << MV_XLG_MAC_CTRL0_PERIODICXONEN_OFFS) 1142 1143 #define MV_XLG_MAC_CTRL0_RXCRCSTRIPEN_OFFS 11 1144 #define MV_XLG_MAC_CTRL0_RXCRCSTRIPEN_MASK \ 1145 (0x00000001 << MV_XLG_MAC_CTRL0_RXCRCSTRIPEN_OFFS) 1146 1147 #define MV_XLG_MAC_CTRL0_PADDINGDIS_OFFS 13 1148 #define MV_XLG_MAC_CTRL0_PADDINGDIS_MASK \ 1149 (0x00000001 << MV_XLG_MAC_CTRL0_PADDINGDIS_OFFS) 1150 1151 #define MV_XLG_MAC_CTRL0_MIBCNTDIS_OFFS 14 1152 #define MV_XLG_MAC_CTRL0_MIBCNTDIS_MASK \ 1153 (0x00000001 << MV_XLG_MAC_CTRL0_MIBCNTDIS_OFFS) 1154 1155 #define MV_XLG_MAC_CTRL0_PFC_CASCADE_PORT_ENABLE_OFFS 15 1156 #define MV_XLG_MAC_CTRL0_PFC_CASCADE_PORT_ENABLE_MASK \ 1157 (0x00000001 << MV_XLG_MAC_CTRL0_PFC_CASCADE_PORT_ENABLE_OFFS) 1158 1159 /* Port Mac Control1 */ 1160 #define MV_XLG_PORT_MAC_CTRL1_REG (0x0004) 1161 #define MV_XLG_MAC_CTRL1_FRAMESIZELIMIT_OFFS 0 1162 #define MV_XLG_MAC_CTRL1_FRAMESIZELIMIT_MASK \ 1163 (0x00001fff << MV_XLG_MAC_CTRL1_FRAMESIZELIMIT_OFFS) 1164 #define MV_XLG_MAC_CTRL1_FRAMESIZELIMIT_DEFAULT 0x1400 1165 1166 #define MV_XLG_MAC_CTRL1_MACLOOPBACKEN_OFFS 13 1167 #define MV_XLG_MAC_CTRL1_MACLOOPBACKEN_MASK \ 1168 (0x00000001 << MV_XLG_MAC_CTRL1_MACLOOPBACKEN_OFFS) 1169 1170 #define MV_XLG_MAC_CTRL1_XGMIILOOPBACKEN_OFFS 14 1171 #define MV_XLG_MAC_CTRL1_XGMIILOOPBACKEN_MASK \ 1172 (0x00000001 << MV_XLG_MAC_CTRL1_XGMIILOOPBACKEN_OFFS) 1173 1174 #define MV_XLG_MAC_CTRL1_LOOPBACKCLOCKSELECT_OFFS 15 1175 #define MV_XLG_MAC_CTRL1_LOOPBACKCLOCKSELECT_MASK \ 1176 (0x00000001 << MV_XLG_MAC_CTRL1_LOOPBACKCLOCKSELECT_OFFS) 1177 1178 /* Port Mac Control2 */ 1179 #define MV_XLG_PORT_MAC_CTRL2_REG (0x0008) 1180 #define MV_XLG_MAC_CTRL2_SALOW_7_0_OFFS 0 1181 #define MV_XLG_MAC_CTRL2_SALOW_7_0_MASK \ 1182 (0x000000ff << MV_XLG_MAC_CTRL2_SALOW_7_0_OFFS) 1183 1184 #define MV_XLG_MAC_CTRL2_UNIDIRECTIONALEN_OFFS 8 1185 #define MV_XLG_MAC_CTRL2_UNIDIRECTIONALEN_MASK \ 1186 (0x00000001 << MV_XLG_MAC_CTRL2_UNIDIRECTIONALEN_OFFS) 1187 1188 #define MV_XLG_MAC_CTRL2_FIXEDIPGBASE_OFFS 9 1189 #define MV_XLG_MAC_CTRL2_FIXEDIPGBASE_MASK \ 1190 (0x00000001 << MV_XLG_MAC_CTRL2_FIXEDIPGBASE_OFFS) 1191 1192 #define MV_XLG_MAC_CTRL2_PERIODICXOFFEN_OFFS 10 1193 #define MV_XLG_MAC_CTRL2_PERIODICXOFFEN_MASK \ 1194 (0x00000001 << MV_XLG_MAC_CTRL2_PERIODICXOFFEN_OFFS) 1195 1196 #define MV_XLG_MAC_CTRL2_SIMPLEXMODEEN_OFFS 13 1197 #define MV_XLG_MAC_CTRL2_SIMPLEXMODEEN_MASK \ 1198 (0x00000001 << MV_XLG_MAC_CTRL2_SIMPLEXMODEEN_OFFS) 1199 1200 #define MV_XLG_MAC_CTRL2_FC_MODE_OFFS 14 1201 #define MV_XLG_MAC_CTRL2_FC_MODE_MASK \ 1202 (0x00000003 << MV_XLG_MAC_CTRL2_FC_MODE_OFFS) 1203 1204 /* Port Status */ 1205 #define MV_XLG_MAC_PORT_STATUS_REG (0x000c) 1206 #define MV_XLG_MAC_PORT_STATUS_LINKSTATUS_OFFS 0 1207 #define MV_XLG_MAC_PORT_STATUS_LINKSTATUS_MASK \ 1208 (0x00000001 << MV_XLG_MAC_PORT_STATUS_LINKSTATUS_OFFS) 1209 1210 #define MV_XLG_MAC_PORT_STATUS_REMOTEFAULT_OFFS 1 1211 #define MV_XLG_MAC_PORT_STATUS_REMOTEFAULT_MASK \ 1212 (0x00000001 << MV_XLG_MAC_PORT_STATUS_REMOTEFAULT_OFFS) 1213 1214 #define MV_XLG_MAC_PORT_STATUS_LOCALFAULT_OFFS 2 1215 #define MV_XLG_MAC_PORT_STATUS_LOCALFAULT_MASK \ 1216 (0x00000001 << MV_XLG_MAC_PORT_STATUS_LOCALFAULT_OFFS) 1217 1218 #define MV_XLG_MAC_PORT_STATUS_LINKSTATUSCLEAN_OFFS 3 1219 #define MV_XLG_MAC_PORT_STATUS_LINKSTATUSCLEAN_MASK \ 1220 (0x00000001 << MV_XLG_MAC_PORT_STATUS_LINKSTATUSCLEAN_OFFS) 1221 1222 #define MV_XLG_MAC_PORT_STATUS_LOCALFAULTCLEAN_OFFS 4 1223 #define MV_XLG_MAC_PORT_STATUS_LOCALFAULTCLEAN_MASK \ 1224 (0x00000001 << MV_XLG_MAC_PORT_STATUS_LOCALFAULTCLEAN_OFFS) 1225 1226 #define MV_XLG_MAC_PORT_STATUS_REMOTEFAULTCLEAN_OFFS 5 1227 #define MV_XLG_MAC_PORT_STATUS_REMOTEFAULTCLEAN_MASK \ 1228 (0x00000001 << MV_XLG_MAC_PORT_STATUS_REMOTEFAULTCLEAN_OFFS) 1229 1230 #define MV_XLG_MAC_PORT_STATUS_PORTRXPAUSE_OFFS 6 1231 #define MV_XLG_MAC_PORT_STATUS_PORTRXPAUSE_MASK \ 1232 (0x00000001 << MV_XLG_MAC_PORT_STATUS_PORTRXPAUSE_OFFS) 1233 1234 #define MV_XLG_MAC_PORT_STATUS_PORTTXPAUSE_OFFS 7 1235 #define MV_XLG_MAC_PORT_STATUS_PORTTXPAUSE_MASK \ 1236 (0x00000001 << MV_XLG_MAC_PORT_STATUS_PORTTXPAUSE_OFFS) 1237 1238 #define MV_XLG_MAC_PORT_STATUS_PFC_SYNC_FIFO_FULL_OFFS 8 1239 #define MV_XLG_MAC_PORT_STATUS_PFC_SYNC_FIFO_FULL_MASK \ 1240 (0x00000001 << MV_XLG_MAC_PORT_STATUS_PFC_SYNC_FIFO_FULL_OFFS) 1241 1242 /* Port Fifos Thresholds Configuration */ 1243 #define MV_XLG_PORT_FIFOS_THRS_CFG_REG (0x0010) 1244 #define MV_XLG_MAC_PORT_FIFOS_THRS_CFG_RXFULLTHR_OFFS 0 1245 #define MV_XLG_MAC_PORT_FIFOS_THRS_CFG_RXFULLTHR_MASK \ 1246 (0x0000001f << MV_XLG_MAC_PORT_FIFOS_THRS_CFG_RXFULLTHR_OFFS) 1247 1248 #define MV_XLG_MAC_PORT_FIFOS_THRS_CFG_TXFIFOSIZE_OFFS 5 1249 #define MV_XLG_MAC_PORT_FIFOS_THRS_CFG_TXFIFOSIZE_MASK \ 1250 (0x0000003f << MV_XLG_MAC_PORT_FIFOS_THRS_CFG_TXFIFOSIZE_OFFS) 1251 1252 #define MV_XLG_MAC_PORT_FIFOS_THRS_CFG_TXRDTHR_OFFS 11 1253 #define MV_XLG_MAC_PORT_FIFOS_THRS_CFG_TXRDTHR_MASK \ 1254 (0x0000001f << MV_XLG_MAC_PORT_FIFOS_THRS_CFG_TXRDTHR_OFFS) 1255 1256 /* Port Mac Control3 */ 1257 #define MV_XLG_PORT_MAC_CTRL3_REG (0x001c) 1258 #define MV_XLG_MAC_CTRL3_BUFSIZE_OFFS 0 1259 #define MV_XLG_MAC_CTRL3_BUFSIZE_MASK \ 1260 (0x0000003f << MV_XLG_MAC_CTRL3_BUFSIZE_OFFS) 1261 1262 #define MV_XLG_MAC_CTRL3_XTRAIPG_OFFS 6 1263 #define MV_XLG_MAC_CTRL3_XTRAIPG_MASK \ 1264 (0x0000007f << MV_XLG_MAC_CTRL3_XTRAIPG_OFFS) 1265 1266 #define MV_XLG_MAC_CTRL3_MACMODESELECT_OFFS 13 1267 #define MV_XLG_MAC_CTRL3_MACMODESELECT_MASK \ 1268 (0x00000007 << MV_XLG_MAC_CTRL3_MACMODESELECT_OFFS) 1269 #define MV_XLG_MAC_CTRL3_MACMODESELECT_GMAC \ 1270 (0x00000000 << MV_XLG_MAC_CTRL3_MACMODESELECT_OFFS) 1271 #define MV_XLG_MAC_CTRL3_MACMODESELECT_10G \ 1272 (0x00000001 << MV_XLG_MAC_CTRL3_MACMODESELECT_OFFS) 1273 1274 /* Port Per Prio Flow Control Status */ 1275 #define MV_XLG_PORT_PER_PRIO_FLOW_CTRL_STATUS_REG (0x0020) 1276 #define MV_XLG_MAC_PORT_PER_PRIO_FLOW_CTRL_STATUS_PRIONSTATUS_OFFS 0 1277 #define MV_XLG_MAC_PORT_PER_PRIO_FLOW_CTRL_STATUS_PRIONSTATUS_MASK \ 1278 (0x00000001 << MV_XLG_MAC_PORT_PER_PRIO_FLOW_CTRL_STATUS_PRIONSTATUS_OFFS) 1279 1280 /* Debug Bus Status */ 1281 #define MV_XLG_DEBUG_BUS_STATUS_REG (0x0024) 1282 #define MV_XLG_MAC_DEBUG_BUS_STATUS_DEBUG_BUS_OFFS 0 1283 #define MV_XLG_MAC_DEBUG_BUS_STATUS_DEBUG_BUS_MASK \ 1284 (0x0000ffff << MV_XLG_MAC_DEBUG_BUS_STATUS_DEBUG_BUS_OFFS) 1285 1286 /* Port Metal Fix */ 1287 #define MV_XLG_PORT_METAL_FIX_REG (0x002c) 1288 #define MV_XLG_MAC_PORT_METAL_FIX_EN_EOP_IN_FIFO__OFFS 0 1289 #define MV_XLG_MAC_PORT_METAL_FIX_EN_EOP_IN_FIFO__MASK \ 1290 (0x00000001 << MV_XLG_MAC_PORT_METAL_FIX_EN_EOP_IN_FIFO__OFFS) 1291 1292 #define MV_XLG_MAC_PORT_METAL_FIX_EN_LTF_FIX__OFFS 1 1293 #define MV_XLG_MAC_PORT_METAL_FIX_EN_LTF_FIX__MASK \ 1294 (0x00000001 << MV_XLG_MAC_PORT_METAL_FIX_EN_LTF_FIX__OFFS) 1295 1296 #define MV_XLG_MAC_PORT_METAL_FIX_EN_HOLD_FIX__OFFS 2 1297 #define MV_XLG_MAC_PORT_METAL_FIX_EN_HOLD_FIX__MASK \ 1298 (0x00000001 << MV_XLG_MAC_PORT_METAL_FIX_EN_HOLD_FIX__OFFS) 1299 1300 #define MV_XLG_MAC_PORT_METAL_FIX_EN_LED_FIX__OFFS 3 1301 #define MV_XLG_MAC_PORT_METAL_FIX_EN_LED_FIX__MASK \ 1302 (0x00000001 << MV_XLG_MAC_PORT_METAL_FIX_EN_LED_FIX__OFFS) 1303 1304 #define MV_XLG_MAC_PORT_METAL_FIX_EN_PAD_PROTECT__OFFS 4 1305 #define MV_XLG_MAC_PORT_METAL_FIX_EN_PAD_PROTECT__MASK \ 1306 (0x00000001 << MV_XLG_MAC_PORT_METAL_FIX_EN_PAD_PROTECT__OFFS) 1307 1308 #define MV_XLG_MAC_PORT_METAL_FIX_EN_NX_BTS44__OFFS 5 1309 #define MV_XLG_MAC_PORT_METAL_FIX_EN_NX_BTS44__MASK \ 1310 (0x00000001 << MV_XLG_MAC_PORT_METAL_FIX_EN_NX_BTS44__OFFS) 1311 1312 #define MV_XLG_MAC_PORT_METAL_FIX_EN_NX_BTS42__OFFS 6 1313 #define MV_XLG_MAC_PORT_METAL_FIX_EN_NX_BTS42__MASK \ 1314 (0x00000001 << MV_XLG_MAC_PORT_METAL_FIX_EN_NX_BTS42__OFFS) 1315 1316 #define MV_XLG_MAC_PORT_METAL_FIX_EN_FLUSH_FIX_OFFS 7 1317 #define MV_XLG_MAC_PORT_METAL_FIX_EN_FLUSH_FIX_MASK \ 1318 (0x00000001 << MV_XLG_MAC_PORT_METAL_FIX_EN_FLUSH_FIX_OFFS) 1319 1320 #define MV_XLG_MAC_PORT_METAL_FIX_EN_PORT_EN_FIX_OFFS 8 1321 #define MV_XLG_MAC_PORT_METAL_FIX_EN_PORT_EN_FIX_MASK \ 1322 (0x00000001 << MV_XLG_MAC_PORT_METAL_FIX_EN_PORT_EN_FIX_OFFS) 1323 1324 #define MV_XLG_MAC_PORT_METAL_FIX_SPARE_DEF0_BITS_OFFS 9 1325 #define MV_XLG_MAC_PORT_METAL_FIX_SPARE_DEF0_BITS_MASK \ 1326 (0x0000000f << MV_XLG_MAC_PORT_METAL_FIX_SPARE_DEF0_BITS_OFFS) 1327 1328 #define MV_XLG_MAC_PORT_METAL_FIX_SPARE_DEF1_BITS_OFFS 13 1329 #define MV_XLG_MAC_PORT_METAL_FIX_SPARE_DEF1_BITS_MASK \ 1330 (0x00000007 << MV_XLG_MAC_PORT_METAL_FIX_SPARE_DEF1_BITS_OFFS) 1331 1332 /* Xg Mib Counters Control */ 1333 #define MV_XLG_MIB_CNTRS_CTRL_REG (0x0030) 1334 #define MV_XLG_MAC_XG_MIB_CNTRS_CTRL_XGCAPTURETRIGGER_OFFS 0 1335 #define MV_XLG_MAC_XG_MIB_CNTRS_CTRL_XGCAPTURETRIGGER_MASK \ 1336 (0x00000001 << MV_XLG_MAC_XG_MIB_CNTRS_CTRL_XGCAPTURETRIGGER_OFFS) 1337 1338 #define MV_XLG_MAC_XG_MIB_CNTRS_CTRL_XGDONTCLEARAFTERREAD_OFFS 1 1339 #define MV_XLG_MAC_XG_MIB_CNTRS_CTRL_XGDONTCLEARAFTERREAD_MASK \ 1340 (0x00000001 << MV_XLG_MAC_XG_MIB_CNTRS_CTRL_XGDONTCLEARAFTERREAD_OFFS) 1341 1342 #define MV_XLG_MAC_XG_MIB_CNTRS_CTRL_XGRXHISTOGRAMEN_OFFS 2 1343 #define MV_XLG_MAC_XG_MIB_CNTRS_CTRL_XGRXHISTOGRAMEN_MASK \ 1344 (0x00000001 << MV_XLG_MAC_XG_MIB_CNTRS_CTRL_XGRXHISTOGRAMEN_OFFS) 1345 1346 #define MV_XLG_MAC_XG_MIB_CNTRS_CTRL_XGTXHISTOGRAMEN_OFFS 3 1347 #define MV_XLG_MAC_XG_MIB_CNTRS_CTRL_XGTXHISTOGRAMEN_MASK \ 1348 (0x00000001 << MV_XLG_MAC_XG_MIB_CNTRS_CTRL_XGTXHISTOGRAMEN_OFFS) 1349 1350 #define MV_XLG_MAC_XG_MIB_CNTRS_CTRL_MFA1_BTT940_FIX_ENABLE__OFFS 4 1351 #define MV_XLG_MAC_XG_MIB_CNTRS_CTRL_MFA1_BTT940_FIX_ENABLE__MASK \ 1352 (0x00000001 << MV_XLG_MAC_XG_MIB_CNTRS_CTRL_MFA1_BTT940_FIX_ENABLE__OFFS) 1353 1354 #define MV_XLG_MAC_XG_MIB_CNTRS_CTRL_LEDS_NUMBER_OFFS 5 1355 #define MV_XLG_MAC_XG_MIB_CNTRS_CTRL_LEDS_NUMBER_MASK \ 1356 (0x0000003f << MV_XLG_MAC_XG_MIB_CNTRS_CTRL_LEDS_NUMBER_OFFS) 1357 1358 #define MV_XLG_MAC_XG_MIB_CNTRS_CTRL_MIB_4_COUNT_HIST_OFFS 11 1359 #define MV_XLG_MAC_XG_MIB_CNTRS_CTRL_MIB_4_COUNT_HIST_MASK \ 1360 (0x00000001 << MV_XLG_MAC_XG_MIB_CNTRS_CTRL_MIB_4_COUNT_HIST_OFFS) 1361 1362 #define MV_XLG_MAC_XG_MIB_CNTRS_CTRL_MIB_4_LIMIT_1518_1522_OFFS 12 1363 #define MV_XLG_MAC_XG_MIB_CNTRS_CTRL_MIB_4_LIMIT_1518_1522_MASK \ 1364 (0x00000001 << MV_XLG_MAC_XG_MIB_CNTRS_CTRL_MIB_4_LIMIT_1518_1522_OFFS) 1365 1366 /* Cn/ccfc Timer%i */ 1367 #define MV_XLG_CNCCFC_TIMERI_REG(t) ((0x0038 + (t) * 4)) 1368 #define MV_XLG_MAC_CNCCFC_TIMERI_PORTSPEEDTIMER_OFFS 0 1369 #define MV_XLG_MAC_CNCCFC_TIMERI_PORTSPEEDTIMER_MASK \ 1370 (0x0000ffff << MV_XLG_MAC_CNCCFC_TIMERI_PORTSPEEDTIMER_OFFS) 1371 1372 /* Ppfc Control */ 1373 #define MV_XLG_MAC_PPFC_CTRL_REG (0x0060) 1374 #define MV_XLG_MAC_PPFC_CTRL_GLOBAL_PAUSE_ENI_OFFS 0 1375 #define MV_XLG_MAC_PPFC_CTRL_GLOBAL_PAUSE_ENI_MASK \ 1376 (0x00000001 << MV_XLG_MAC_PPFC_CTRL_GLOBAL_PAUSE_ENI_OFFS) 1377 1378 #define MV_XLG_MAC_PPFC_CTRL_DIP_BTS_677_EN_OFFS 9 1379 #define MV_XLG_MAC_PPFC_CTRL_DIP_BTS_677_EN_MASK \ 1380 (0x00000001 << MV_XLG_MAC_PPFC_CTRL_DIP_BTS_677_EN_OFFS) 1381 1382 /* Fc Dsa Tag 0 */ 1383 #define MV_XLG_MAC_FC_DSA_TAG_0_REG (0x0068) 1384 #define MV_XLG_MAC_FC_DSA_TAG_0_DSATAGREG0_OFFS 0 1385 #define MV_XLG_MAC_FC_DSA_TAG_0_DSATAGREG0_MASK \ 1386 (0x0000ffff << MV_XLG_MAC_FC_DSA_TAG_0_DSATAGREG0_OFFS) 1387 1388 /* Fc Dsa Tag 1 */ 1389 #define MV_XLG_MAC_FC_DSA_TAG_1_REG (0x006c) 1390 #define MV_XLG_MAC_FC_DSA_TAG_1_DSATAGREG1_OFFS 0 1391 #define MV_XLG_MAC_FC_DSA_TAG_1_DSATAGREG1_MASK \ 1392 (0x0000ffff << MV_XLG_MAC_FC_DSA_TAG_1_DSATAGREG1_OFFS) 1393 1394 /* Fc Dsa Tag 2 */ 1395 #define MV_XLG_MAC_FC_DSA_TAG_2_REG (0x0070) 1396 #define MV_XLG_MAC_FC_DSA_TAG_2_DSATAGREG2_OFFS 0 1397 #define MV_XLG_MAC_FC_DSA_TAG_2_DSATAGREG2_MASK \ 1398 (0x0000ffff << MV_XLG_MAC_FC_DSA_TAG_2_DSATAGREG2_OFFS) 1399 1400 /* Fc Dsa Tag 3 */ 1401 #define MV_XLG_MAC_FC_DSA_TAG_3_REG (0x0074) 1402 #define MV_XLG_MAC_FC_DSA_TAG_3_DSATAGREG3_OFFS 0 1403 #define MV_XLG_MAC_FC_DSA_TAG_3_DSATAGREG3_MASK \ 1404 (0x0000ffff << MV_XLG_MAC_FC_DSA_TAG_3_DSATAGREG3_OFFS) 1405 1406 /* Dic Budget Compensation */ 1407 #define MV_XLG_MAC_DIC_BUDGET_COMPENSATION_REG (0x0080) 1408 #define MV_XLG_MAC_DIC_BUDGET_COMPENSATION_DIC_COUNTER_TO_ADD_8BYTES_OFFS 0 1409 #define MV_XLG_MAC_DIC_BUDGET_COMPENSATION_DIC_COUNTER_TO_ADD_8BYTES_MASK \ 1410 (0x0000ffff << MV_XLG_MAC_DIC_BUDGET_COMPENSATION_DIC_COUNTER_TO_ADD_8BYTES_OFFS) 1411 1412 /* Port Mac Control4 */ 1413 #define MV_XLG_PORT_MAC_CTRL4_REG (0x0084) 1414 #define MV_XLG_MAC_CTRL4_LLFC_GLOBAL_FC_ENABLE_OFFS 0 1415 #define MV_XLG_MAC_CTRL4_LLFC_GLOBAL_FC_ENABLE_MASK \ 1416 (0x00000001 << MV_XLG_MAC_CTRL4_LLFC_GLOBAL_FC_ENABLE_OFFS) 1417 1418 #define MV_XLG_MAC_CTRL4_LED_STREAM_SELECT_OFFS 1 1419 #define MV_XLG_MAC_CTRL4_LED_STREAM_SELECT_MASK \ 1420 (0x00000001 << MV_XLG_MAC_CTRL4_LED_STREAM_SELECT_OFFS) 1421 1422 #define MV_XLG_MAC_CTRL4_DEBUG_BUS_SELECT_OFFS 2 1423 #define MV_XLG_MAC_CTRL4_DEBUG_BUS_SELECT_MASK \ 1424 (0x00000001 << MV_XLG_MAC_CTRL4_DEBUG_BUS_SELECT_OFFS) 1425 1426 #define MV_XLG_MAC_CTRL4_MASK_PCS_RESET_OFFS 3 1427 #define MV_XLG_MAC_CTRL4_MASK_PCS_RESET_MASK \ 1428 (0x00000001 << MV_XLG_MAC_CTRL4_MASK_PCS_RESET_OFFS) 1429 1430 #define MV_XLG_MAC_CTRL4_ENABLE_SHORT_PREAMBLE_FOR_XLG_OFFS 4 1431 #define MV_XLG_MAC_CTRL4_ENABLE_SHORT_PREAMBLE_FOR_XLG_MASK \ 1432 (0x00000001 << MV_XLG_MAC_CTRL4_ENABLE_SHORT_PREAMBLE_FOR_XLG_OFFS) 1433 1434 #define MV_XLG_MAC_CTRL4_FORWARD_802_3X_FC_EN_OFFS 5 1435 #define MV_XLG_MAC_CTRL4_FORWARD_802_3X_FC_EN_MASK \ 1436 (0x00000001 << MV_XLG_MAC_CTRL4_FORWARD_802_3X_FC_EN_OFFS) 1437 1438 #define MV_XLG_MAC_CTRL4_FORWARD_PFC_EN_OFFS 6 1439 #define MV_XLG_MAC_CTRL4_FORWARD_PFC_EN_MASK \ 1440 (0x00000001 << MV_XLG_MAC_CTRL4_FORWARD_PFC_EN_OFFS) 1441 1442 #define MV_XLG_MAC_CTRL4_FORWARD_UNKNOWN_FC_EN_OFFS 7 1443 #define MV_XLG_MAC_CTRL4_FORWARD_UNKNOWN_FC_EN_MASK \ 1444 (0x00000001 << MV_XLG_MAC_CTRL4_FORWARD_UNKNOWN_FC_EN_OFFS) 1445 1446 #define MV_XLG_MAC_CTRL4_USE_XPCS_OFFS 8 1447 #define MV_XLG_MAC_CTRL4_USE_XPCS_MASK \ 1448 (0x00000001 << MV_XLG_MAC_CTRL4_USE_XPCS_OFFS) 1449 1450 #define MV_XLG_MAC_CTRL4_DMA_INTERFACE_IS_64_BIT_OFFS 9 1451 #define MV_XLG_MAC_CTRL4_DMA_INTERFACE_IS_64_BIT_MASK \ 1452 (0x00000001 << MV_XLG_MAC_CTRL4_DMA_INTERFACE_IS_64_BIT_OFFS) 1453 1454 #define MV_XLG_MAC_CTRL4_TX_DMA_INTERFACE_BITS_OFFS 10 1455 #define MV_XLG_MAC_CTRL4_TX_DMA_INTERFACE_BITS_MASK \ 1456 (0x00000003 << MV_XLG_MAC_CTRL4_TX_DMA_INTERFACE_BITS_OFFS) 1457 1458 #define MV_XLG_MAC_CTRL4_MAC_MODE_DMA_1G_OFFS 12 1459 #define MV_XLG_MAC_CTRL4_MAC_MODE_DMA_1G_MASK \ 1460 (0x00000001 << MV_XLG_MAC_CTRL4_MAC_MODE_DMA_1G_OFFS) 1461 1462 #define MV_XLG_MAC_CTRL4_EN_IDLE_CHECK_FOR_LINK 14 1463 #define MV_XLG_MAC_CTRL4_EN_IDLE_CHECK_FOR_LINK_MASK \ 1464 (0x00000001 << MV_XLG_MAC_CTRL4_EN_IDLE_CHECK_FOR_LINK) 1465 1466 /* Port Mac Control5 */ 1467 #define MV_XLG_PORT_MAC_CTRL5_REG (0x0088) 1468 #define MV_XLG_MAC_CTRL5_TXIPGLENGTH_OFFS 0 1469 #define MV_XLG_MAC_CTRL5_TXIPGLENGTH_MASK \ 1470 (0x0000000f << MV_XLG_MAC_CTRL5_TXIPGLENGTH_OFFS) 1471 1472 #define MV_XLG_MAC_CTRL5_PREAMBLELENGTHTX_OFFS 4 1473 #define MV_XLG_MAC_CTRL5_PREAMBLELENGTHTX_MASK \ 1474 (0x00000007 << MV_XLG_MAC_CTRL5_PREAMBLELENGTHTX_OFFS) 1475 1476 #define MV_XLG_MAC_CTRL5_PREAMBLELENGTHRX_OFFS 7 1477 #define MV_XLG_MAC_CTRL5_PREAMBLELENGTHRX_MASK \ 1478 (0x00000007 << MV_XLG_MAC_CTRL5_PREAMBLELENGTHRX_OFFS) 1479 1480 #define MV_XLG_MAC_CTRL5_TXNUMCRCBYTES_OFFS 10 1481 #define MV_XLG_MAC_CTRL5_TXNUMCRCBYTES_MASK \ 1482 (0x00000007 << MV_XLG_MAC_CTRL5_TXNUMCRCBYTES_OFFS) 1483 1484 #define MV_XLG_MAC_CTRL5_RXNUMCRCBYTES_OFFS 13 1485 #define MV_XLG_MAC_CTRL5_RXNUMCRCBYTES_MASK \ 1486 (0x00000007 << MV_XLG_MAC_CTRL5_RXNUMCRCBYTES_OFFS) 1487 1488 /* External Control */ 1489 #define MV_XLG_MAC_EXT_CTRL_REG (0x0090) 1490 #define MV_XLG_MAC_EXT_CTRL_EXTERNAL_CTRL0_OFFS 0 1491 #define MV_XLG_MAC_EXT_CTRL_EXTERNAL_CTRL0_MASK \ 1492 (0x00000001 << MV_XLG_MAC_EXT_CTRL_EXTERNAL_CTRL0_OFFS) 1493 1494 #define MV_XLG_MAC_EXT_CTRL_EXTERNAL_CTRL1_OFFS 1 1495 #define MV_XLG_MAC_EXT_CTRL_EXTERNAL_CTRL1_MASK \ 1496 (0x00000001 << MV_XLG_MAC_EXT_CTRL_EXTERNAL_CTRL1_OFFS) 1497 1498 #define MV_XLG_MAC_EXT_CTRL_EXTERNAL_CTRL2_OFFS 2 1499 #define MV_XLG_MAC_EXT_CTRL_EXTERNAL_CTRL2_MASK \ 1500 (0x00000001 << MV_XLG_MAC_EXT_CTRL_EXTERNAL_CTRL2_OFFS) 1501 1502 #define MV_XLG_MAC_EXT_CTRL_EXTERNAL_CTRL3_OFFS 3 1503 #define MV_XLG_MAC_EXT_CTRL_EXTERNAL_CTRL3_MASK \ 1504 (0x00000001 << MV_XLG_MAC_EXT_CTRL_EXTERNAL_CTRL3_OFFS) 1505 1506 #define MV_XLG_MAC_EXT_CTRL_EXTERNAL_CTRL4_OFFS 4 1507 #define MV_XLG_MAC_EXT_CTRL_EXTERNAL_CTRL4_MASK \ 1508 (0x00000001 << MV_XLG_MAC_EXT_CTRL_EXTERNAL_CTRL4_OFFS) 1509 1510 #define MV_XLG_MAC_EXT_CTRL_EXTERNAL_CTRL5_OFFS 5 1511 #define MV_XLG_MAC_EXT_CTRL_EXTERNAL_CTRL5_MASK \ 1512 (0x00000001 << MV_XLG_MAC_EXT_CTRL_EXTERNAL_CTRL5_OFFS) 1513 1514 #define MV_XLG_MAC_EXT_CTRL_EXTERNAL_CTRL6_OFFS 6 1515 #define MV_XLG_MAC_EXT_CTRL_EXTERNAL_CTRL6_MASK \ 1516 (0x00000001 << MV_XLG_MAC_EXT_CTRL_EXTERNAL_CTRL6_OFFS) 1517 1518 #define MV_XLG_MAC_EXT_CTRL_EXTERNAL_CTRL7_OFFS 7 1519 #define MV_XLG_MAC_EXT_CTRL_EXTERNAL_CTRL7_MASK \ 1520 (0x00000001 << MV_XLG_MAC_EXT_CTRL_EXTERNAL_CTRL7_OFFS) 1521 1522 #define MV_XLG_MAC_EXT_CTRL_EXTERNAL_CTRL8_OFFS 8 1523 #define MV_XLG_MAC_EXT_CTRL_EXTERNAL_CTRL8_MASK \ 1524 (0x00000001 << MV_XLG_MAC_EXT_CTRL_EXTERNAL_CTRL8_OFFS) 1525 1526 #define MV_XLG_MAC_EXT_CTRL_EXTERNAL_CTRL9_OFFS 9 1527 #define MV_XLG_MAC_EXT_CTRL_EXTERNAL_CTRL9_MASK \ 1528 (0x00000001 << MV_XLG_MAC_EXT_CTRL_EXTERNAL_CTRL9_OFFS) 1529 1530 #define MV_XLG_MAC_EXT_CTRL_EXT_CTRL_10_OFFS 10 1531 #define MV_XLG_MAC_EXT_CTRL_EXT_CTRL_10_MASK \ 1532 (0x00000001 << MV_XLG_MAC_EXT_CTRL_EXT_CTRL_10_OFFS) 1533 1534 #define MV_XLG_MAC_EXT_CTRL_EXT_CTRL_11_OFFS 11 1535 #define MV_XLG_MAC_EXT_CTRL_EXT_CTRL_11_MASK \ 1536 (0x00000001 << MV_XLG_MAC_EXT_CTRL_EXT_CTRL_11_OFFS) 1537 1538 #define MV_XLG_MAC_EXT_CTRL_EXT_CTRL_12_OFFS 12 1539 #define MV_XLG_MAC_EXT_CTRL_EXT_CTRL_12_MASK \ 1540 (0x00000001 << MV_XLG_MAC_EXT_CTRL_EXT_CTRL_12_OFFS) 1541 1542 #define MV_XLG_MAC_EXT_CTRL_EXT_CTRL_13_OFFS 13 1543 #define MV_XLG_MAC_EXT_CTRL_EXT_CTRL_13_MASK \ 1544 (0x00000001 << MV_XLG_MAC_EXT_CTRL_EXT_CTRL_13_OFFS) 1545 1546 #define MV_XLG_MAC_EXT_CTRL_EXT_CTRL_14_OFFS 14 1547 #define MV_XLG_MAC_EXT_CTRL_EXT_CTRL_14_MASK \ 1548 (0x00000001 << MV_XLG_MAC_EXT_CTRL_EXT_CTRL_14_OFFS) 1549 1550 #define MV_XLG_MAC_EXT_CTRL_EXT_CTRL_15_OFFS 15 1551 #define MV_XLG_MAC_EXT_CTRL_EXT_CTRL_15_MASK \ 1552 (0x00000001 << MV_XLG_MAC_EXT_CTRL_EXT_CTRL_15_OFFS) 1553 1554 /* Macro Control */ 1555 #define MV_XLG_MAC_MACRO_CTRL_REG (0x0094) 1556 #define MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_0_OFFS 0 1557 #define MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_0_MASK \ 1558 (0x00000001 << MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_0_OFFS) 1559 1560 #define MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_1_OFFS 1 1561 #define MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_1_MASK \ 1562 (0x00000001 << MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_1_OFFS) 1563 1564 #define MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_2_OFFS 2 1565 #define MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_2_MASK \ 1566 (0x00000001 << MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_2_OFFS) 1567 1568 #define MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_3_OFFS 3 1569 #define MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_3_MASK \ 1570 (0x00000001 << MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_3_OFFS) 1571 1572 #define MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_4_OFFS 4 1573 #define MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_4_MASK \ 1574 (0x00000001 << MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_4_OFFS) 1575 1576 #define MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_5_OFFS 5 1577 #define MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_5_MASK \ 1578 (0x00000001 << MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_5_OFFS) 1579 1580 #define MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_6_OFFS 6 1581 #define MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_6_MASK \ 1582 (0x00000001 << MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_6_OFFS) 1583 1584 #define MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_7_OFFS 7 1585 #define MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_7_MASK \ 1586 (0x00000001 << MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_7_OFFS) 1587 1588 #define MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_8_OFFS 8 1589 #define MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_8_MASK \ 1590 (0x00000001 << MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_8_OFFS) 1591 1592 #define MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_9_OFFS 9 1593 #define MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_9_MASK \ 1594 (0x00000001 << MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_9_OFFS) 1595 1596 #define MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_10_OFFS 10 1597 #define MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_10_MASK \ 1598 (0x00000001 << MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_10_OFFS) 1599 1600 #define MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_11_OFFS 11 1601 #define MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_11_MASK \ 1602 (0x00000001 << MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_11_OFFS) 1603 1604 #define MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_12_OFFS 12 1605 #define MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_12_MASK \ 1606 (0x00000001 << MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_12_OFFS) 1607 1608 #define MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_13_OFFS 13 1609 #define MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_13_MASK \ 1610 (0x00000001 << MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_13_OFFS) 1611 1612 #define MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_14_OFFS 14 1613 #define MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_14_MASK \ 1614 (0x00000001 << MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_14_OFFS) 1615 1616 #define MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_15_OFFS 15 1617 #define MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_15_MASK \ 1618 (0x00000001 << MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_15_OFFS) 1619 1620 #define MV_XLG_MAC_DIC_PPM_IPG_REDUCE_REG (0x0094) 1621 1622 /* Port Interrupt Cause */ 1623 #define MV_XLG_INTERRUPT_CAUSE_REG (0x0014) 1624 /* Port Interrupt Mask */ 1625 #define MV_XLG_INTERRUPT_MASK_REG (0x0018) 1626 #define MV_XLG_SUMMARY_INTERRUPT_OFFSET 0 1627 #define MV_XLG_SUMMARY_INTERRUPT_MASK \ 1628 (0x1 << MV_XLG_SUMMARY_INTERRUPT_OFFSET) 1629 #define MV_XLG_INTERRUPT_LINK_CHANGE_OFFS 1 1630 #define MV_XLG_INTERRUPT_LINK_CHANGE_MASK \ 1631 (0x1 << MV_XLG_INTERRUPT_LINK_CHANGE_OFFS) 1632 1633 /* Port Interrupt Summary Cause */ 1634 #define MV_XLG_EXTERNAL_INTERRUPT_CAUSE_REG (0x0058) 1635 /* Port Interrupt Summary Mask */ 1636 #define MV_XLG_EXTERNAL_INTERRUPT_MASK_REG (0x005C) 1637 #define MV_XLG_EXTERNAL_INTERRUPT_LINK_CHANGE_XLG_OFFS 1 1638 #define MV_XLG_EXTERNAL_INTERRUPT_LINK_CHANGE_XLG_MASK \ 1639 (0x1 << MV_XLG_EXTERNAL_INTERRUPT_LINK_CHANGE_XLG_OFFS) 1640 #define MV_XLG_EXTERNAL_INTERRUPT_LINK_CHANGE_GIG_OFFS 2 1641 #define MV_XLG_EXTERNAL_INTERRUPT_LINK_CHANGE_GIG_MASK \ 1642 (0x1 << MV_XLG_EXTERNAL_INTERRUPT_LINK_CHANGE_GIG_OFFS) 1643 1644 /*All PPV22 Addresses are 40-bit */ 1645 #define MVPP22_ADDR_HIGH_SIZE 8 1646 #define MVPP22_ADDR_HIGH_MASK ((1<<MVPP22_ADDR_HIGH_SIZE) - 1) 1647 #define MVPP22_ADDR_MASK (0xFFFFFFFFFF) 1648 1649 /* Desc addr shift */ 1650 #define MVPP21_DESC_ADDR_SHIFT 0 /*Applies to RXQ, AGGR_TXQ*/ 1651 #define MVPP22_DESC_ADDR_SHIFT 8 /*Applies to RXQ, AGGR_TXQ*/ 1652 1653 /* AXI Bridge Registers */ 1654 #define MVPP22_AXI_BM_WR_ATTR_REG 0x4100 1655 #define MVPP22_AXI_BM_RD_ATTR_REG 0x4104 1656 #define MVPP22_AXI_AGGRQ_DESCR_RD_ATTR_REG 0x4110 1657 #define MVPP22_AXI_TXQ_DESCR_WR_ATTR_REG 0x4114 1658 #define MVPP22_AXI_TXQ_DESCR_RD_ATTR_REG 0x4118 1659 #define MVPP22_AXI_RXQ_DESCR_WR_ATTR_REG 0x411c 1660 #define MVPP22_AXI_RX_DATA_WR_ATTR_REG 0x4120 1661 #define MVPP22_AXI_TX_DATA_RD_ATTR_REG 0x4130 1662 #define MVPP22_AXI_RD_NORMAL_CODE_REG 0x4150 1663 #define MVPP22_AXI_RD_SNOOP_CODE_REG 0x4154 1664 #define MVPP22_AXI_WR_NORMAL_CODE_REG 0x4160 1665 #define MVPP22_AXI_WR_SNOOP_CODE_REG 0x4164 1666 1667 #define MVPP22_AXI_ATTR_CACHE_OFFS 0 1668 #define MVPP22_AXI_ATTR_DOMAIN_OFFS 12 1669 1670 #define MVPP22_AXI_CODE_CACHE_OFFS 0 1671 #define MVPP22_AXI_CODE_DOMAIN_OFFS 4 1672 1673 #define MVPP22_AXI_CODE_CACHE_NON_CACHE 0x3 1674 #define MVPP22_AXI_CODE_CACHE_WR_CACHE 0x7 1675 #define MVPP22_AXI_CODE_CACHE_RD_CACHE 0xb 1676 1677 #define MVPP22_AXI_CODE_DOMAIN_OUTER_DOM 2 1678 #define MVPP22_AXI_CODE_DOMAIN_SYSTEM 3 1679 1680 /* PHY address register */ 1681 #define MV_SMI_PHY_ADDRESS_REG(n) (0xC + 0x4 * (n)) 1682 #define MV_SMI_PHY_ADDRESS_PHYAD_OFFS 0 1683 #define MV_SMI_PHY_ADDRESS_PHYAD_MASK \ 1684 (0x1F << MV_SMI_PHY_ADDRESS_PHYAD_OFFS) 1685 1686 /* Marvell tag types */ 1687 enum Mvpp2TagType { 1688 MVPP2_TAG_TYPE_NONE = 0, 1689 MVPP2_TAG_TYPE_MH = 1, 1690 MVPP2_TAG_TYPE_DSA = 2, 1691 MVPP2_TAG_TYPE_EDSA = 3, 1692 MVPP2_TAG_TYPE_VLAN = 4, 1693 MVPP2_TAG_TYPE_LAST = 5 1694 }; 1695 1696 /* Parser constants */ 1697 #define MVPP2_PRS_TCAM_SRAM_SIZE 256 1698 #define MVPP2_PRS_TCAM_WORDS 6 1699 #define MVPP2_PRS_SRAM_WORDS 4 1700 #define MVPP2_PRS_FLOW_ID_SIZE 64 1701 #define MVPP2_PRS_FLOW_ID_MASK 0x3f 1702 #define MVPP2_PRS_TCAM_ENTRY_INVALID 1 1703 #define MVPP2_PRS_TCAM_DSA_TAGGED_BIT BIT(5) 1704 #define MVPP2_PRS_IPV4_HEAD 0x40 1705 #define MVPP2_PRS_IPV4_HEAD_MASK 0xf0 1706 #define MVPP2_PRS_IPV4_MC 0xe0 1707 #define MVPP2_PRS_IPV4_MC_MASK 0xf0 1708 #define MVPP2_PRS_IPV4_BC_MASK 0xff 1709 #define MVPP2_PRS_IPV4_IHL 0x5 1710 #define MVPP2_PRS_IPV4_IHL_MASK 0xf 1711 #define MVPP2_PRS_IPV6_MC 0xff 1712 #define MVPP2_PRS_IPV6_MC_MASK 0xff 1713 #define MVPP2_PRS_IPV6_HOP_MASK 0xff 1714 #define MVPP2_PRS_TCAM_PROTO_MASK 0xff 1715 #define MVPP2_PRS_TCAM_PROTO_MASK_L 0x3f 1716 #define MVPP2_PRS_DBL_VLANS_MAX 100 1717 1718 /* 1719 * Tcam structure: 1720 * - lookup ID - 4 bits 1721 * - port ID - 1 byte 1722 * - additional information - 1 byte 1723 * - header data - 8 bytes 1724 * The fields are represented by MVPP2_PRS_TCAM_DATA_REG(5)->(0). 1725 */ 1726 #define MVPP2_PRS_AI_BITS 8 1727 #define MVPP2_PRS_PORT_MASK 0xff 1728 #define MVPP2_PRS_LU_MASK 0xf 1729 #define MVPP2_PRS_TCAM_DATA_BYTE(offs) (((offs) - ((offs) % 2)) * 2 + ((offs) % 2)) 1730 #define MVPP2_PRS_TCAM_DATA_BYTE_EN(offs) (((offs) * 2) - ((offs) % 2) + 2) 1731 #define MVPP2_PRS_TCAM_AI_BYTE 16 1732 #define MVPP2_PRS_TCAM_PORT_BYTE 17 1733 #define MVPP2_PRS_TCAM_LU_BYTE 20 1734 #define MVPP2_PRS_TCAM_EN_OFFS(offs) ((offs) + 2) 1735 #define MVPP2_PRS_TCAM_INV_WORD 5 1736 /* Tcam entries ID */ 1737 #define MVPP2_PE_DROP_ALL 0 1738 #define MVPP2_PE_FIRST_FREE_TID 1 1739 #define MVPP2_PE_LAST_FREE_TID (MVPP2_PRS_TCAM_SRAM_SIZE - 31) 1740 #define MVPP2_PE_IP6_EXT_PROTO_UN (MVPP2_PRS_TCAM_SRAM_SIZE - 30) 1741 #define MVPP2_PE_MAC_MC_IP6 (MVPP2_PRS_TCAM_SRAM_SIZE - 29) 1742 #define MVPP2_PE_IP6_ADDR_UN (MVPP2_PRS_TCAM_SRAM_SIZE - 28) 1743 #define MVPP2_PE_IP4_ADDR_UN (MVPP2_PRS_TCAM_SRAM_SIZE - 27) 1744 #define MVPP2_PE_LAST_DEFAULT_FLOW (MVPP2_PRS_TCAM_SRAM_SIZE - 26) 1745 #define MVPP2_PE_FIRST_DEFAULT_FLOW (MVPP2_PRS_TCAM_SRAM_SIZE - 19) 1746 #define MVPP2_PE_EDSA_TAGGED (MVPP2_PRS_TCAM_SRAM_SIZE - 18) 1747 #define MVPP2_PE_EDSA_UNTAGGED (MVPP2_PRS_TCAM_SRAM_SIZE - 17) 1748 #define MVPP2_PE_DSA_TAGGED (MVPP2_PRS_TCAM_SRAM_SIZE - 16) 1749 #define MVPP2_PE_DSA_UNTAGGED (MVPP2_PRS_TCAM_SRAM_SIZE - 15) 1750 #define MVPP2_PE_ETYPE_EDSA_TAGGED (MVPP2_PRS_TCAM_SRAM_SIZE - 14) 1751 #define MVPP2_PE_ETYPE_EDSA_UNTAGGED (MVPP2_PRS_TCAM_SRAM_SIZE - 13) 1752 #define MVPP2_PE_ETYPE_DSA_TAGGED (MVPP2_PRS_TCAM_SRAM_SIZE - 12) 1753 #define MVPP2_PE_ETYPE_DSA_UNTAGGED (MVPP2_PRS_TCAM_SRAM_SIZE - 11) 1754 #define MVPP2_PE_MH_DEFAULT (MVPP2_PRS_TCAM_SRAM_SIZE - 10) 1755 #define MVPP2_PE_DSA_DEFAULT (MVPP2_PRS_TCAM_SRAM_SIZE - 9) 1756 #define MVPP2_PE_IP6_PROTO_UN (MVPP2_PRS_TCAM_SRAM_SIZE - 8) 1757 #define MVPP2_PE_IP4_PROTO_UN (MVPP2_PRS_TCAM_SRAM_SIZE - 7) 1758 #define MVPP2_PE_ETH_TYPE_UN (MVPP2_PRS_TCAM_SRAM_SIZE - 6) 1759 #define MVPP2_PE_VLAN_DBL (MVPP2_PRS_TCAM_SRAM_SIZE - 5) 1760 #define MVPP2_PE_VLAN_NONE (MVPP2_PRS_TCAM_SRAM_SIZE - 4) 1761 #define MVPP2_PE_MAC_MC_ALL (MVPP2_PRS_TCAM_SRAM_SIZE - 3) 1762 #define MVPP2_PE_MAC_PROMISCUOUS (MVPP2_PRS_TCAM_SRAM_SIZE - 2) 1763 #define MVPP2_PE_MAC_NON_PROMISCUOUS (MVPP2_PRS_TCAM_SRAM_SIZE - 1) 1764 1765 /* 1766 * Sram structure 1767 * The fields are represented by MVPP2_PRS_TCAM_DATA_REG(3)->(0). 1768 */ 1769 #define MVPP2_PRS_SRAM_RI_OFFS 0 1770 #define MVPP2_PRS_SRAM_RI_WORD 0 1771 #define MVPP2_PRS_SRAM_RI_CTRL_OFFS 32 1772 #define MVPP2_PRS_SRAM_RI_CTRL_WORD 1 1773 #define MVPP2_PRS_SRAM_RI_CTRL_BITS 32 1774 #define MVPP2_PRS_SRAM_SHIFT_OFFS 64 1775 #define MVPP2_PRS_SRAM_SHIFT_SIGN_BIT 72 1776 #define MVPP2_PRS_SRAM_SHIFT_MASK 0xff 1777 #define MVPP2_PRS_SRAM_UDF_OFFS 73 1778 #define MVPP2_PRS_SRAM_UDF_BITS 8 1779 #define MVPP2_PRS_SRAM_UDF_MASK 0xff 1780 #define MVPP2_PRS_SRAM_UDF_SIGN_BIT 81 1781 #define MVPP2_PRS_SRAM_UDF_TYPE_OFFS 82 1782 #define MVPP2_PRS_SRAM_UDF_TYPE_MASK 0x7 1783 #define MVPP2_PRS_SRAM_UDF_TYPE_L3 1 1784 #define MVPP2_PRS_SRAM_UDF_TYPE_L4 4 1785 #define MVPP2_PRS_SRAM_OP_SEL_SHIFT_OFFS 85 1786 #define MVPP2_PRS_SRAM_OP_SEL_SHIFT_MASK 0x3 1787 #define MVPP2_PRS_SRAM_OP_SEL_SHIFT_ADD 1 1788 #define MVPP2_PRS_SRAM_OP_SEL_SHIFT_IP4_ADD 2 1789 #define MVPP2_PRS_SRAM_OP_SEL_SHIFT_IP6_ADD 3 1790 #define MVPP2_PRS_SRAM_OP_SEL_UDF_OFFS 87 1791 #define MVPP2_PRS_SRAM_OP_SEL_UDF_BITS 2 1792 #define MVPP2_PRS_SRAM_OP_SEL_UDF_MASK 0x3 1793 #define MVPP2_PRS_SRAM_OP_SEL_UDF_ADD 0 1794 #define MVPP2_PRS_SRAM_OP_SEL_UDF_IP4_ADD 2 1795 #define MVPP2_PRS_SRAM_OP_SEL_UDF_IP6_ADD 3 1796 #define MVPP2_PRS_SRAM_OP_SEL_BASE_OFFS 89 1797 #define MVPP2_PRS_SRAM_AI_OFFS 90 1798 #define MVPP2_PRS_SRAM_AI_CTRL_OFFS 98 1799 #define MVPP2_PRS_SRAM_AI_CTRL_BITS 8 1800 #define MVPP2_PRS_SRAM_AI_MASK 0xff 1801 #define MVPP2_PRS_SRAM_NEXT_LU_OFFS 106 1802 #define MVPP2_PRS_SRAM_NEXT_LU_MASK 0xf 1803 #define MVPP2_PRS_SRAM_LU_DONE_BIT 110 1804 #define MVPP2_PRS_SRAM_LU_GEN_BIT 111 1805 1806 /* Sram result info bits assignment */ 1807 #define MVPP2_PRS_RI_MAC_ME_MASK 0x1 1808 #define MVPP2_PRS_RI_DSA_MASK 0x2 1809 #define MVPP2_PRS_RI_VLAN_MASK 0xc 1810 #define MVPP2_PRS_RI_VLAN_NONE ~(BIT(2) | BIT(3)) 1811 #define MVPP2_PRS_RI_VLAN_SINGLE BIT(2) 1812 #define MVPP2_PRS_RI_VLAN_DOUBLE BIT(3) 1813 #define MVPP2_PRS_RI_VLAN_TRIPLE (BIT(2) | BIT(3)) 1814 #define MVPP2_PRS_RI_CPU_CODE_MASK 0x70 1815 #define MVPP2_PRS_RI_CPU_CODE_RX_SPEC BIT(4) 1816 #define MVPP2_PRS_RI_L2_CAST_MASK 0x600 1817 #define MVPP2_PRS_RI_L2_UCAST ~(BIT(9) | BIT(10)) 1818 #define MVPP2_PRS_RI_L2_MCAST BIT(9) 1819 #define MVPP2_PRS_RI_L2_BCAST BIT(10) 1820 #define MVPP2_PRS_RI_PPPOE_MASK 0x800 1821 #define MVPP2_PRS_RI_L3_PROTO_MASK 0x7000 1822 #define MVPP2_PRS_RI_L3_UN ~(BIT(12) | BIT(13) | BIT(14)) 1823 #define MVPP2_PRS_RI_L3_IP4 BIT(12) 1824 #define MVPP2_PRS_RI_L3_IP4_OPT BIT(13) 1825 #define MVPP2_PRS_RI_L3_IP4_OTHER (BIT(12) | BIT(13)) 1826 #define MVPP2_PRS_RI_L3_IP6 BIT(14) 1827 #define MVPP2_PRS_RI_L3_IP6_EXT (BIT(12) | BIT(14)) 1828 #define MVPP2_PRS_RI_L3_ARP (BIT(13) | BIT(14)) 1829 #define MVPP2_PRS_RI_L3_ADDR_MASK 0x18000 1830 #define MVPP2_PRS_RI_L3_UCAST ~(BIT(15) | BIT(16)) 1831 #define MVPP2_PRS_RI_L3_MCAST BIT(15) 1832 #define MVPP2_PRS_RI_L3_BCAST (BIT(15) | BIT(16)) 1833 #define MVPP2_PRS_RI_IP_FRAG_MASK 0x20000 1834 #define MVPP2_PRS_RI_UDF3_MASK 0x300000 1835 #define MVPP2_PRS_RI_UDF3_RX_SPECIAL BIT(21) 1836 #define MVPP2_PRS_RI_L4_PROTO_MASK 0x1c00000 1837 #define MVPP2_PRS_RI_L4_TCP BIT(22) 1838 #define MVPP2_PRS_RI_L4_UDP BIT(23) 1839 #define MVPP2_PRS_RI_L4_OTHER (BIT(22) | BIT(23)) 1840 #define MVPP2_PRS_RI_UDF7_MASK 0x60000000 1841 #define MVPP2_PRS_RI_UDF7_IP6_LITE BIT(29) 1842 #define MVPP2_PRS_RI_DROP_MASK 0x80000000 1843 1844 /* Sram additional info bits assignment */ 1845 #define MVPP2_PRS_IPV4_DIP_AI_BIT BIT(0) 1846 #define MVPP2_PRS_IPV6_NO_EXT_AI_BIT BIT(0) 1847 #define MVPP2_PRS_IPV6_EXT_AI_BIT BIT(1) 1848 #define MVPP2_PRS_IPV6_EXT_AH_AI_BIT BIT(2) 1849 #define MVPP2_PRS_IPV6_EXT_AH_LEN_AI_BIT BIT(3) 1850 #define MVPP2_PRS_IPV6_EXT_AH_L4_AI_BIT BIT(4) 1851 #define MVPP2_PRS_SINGLE_VLAN_AI 0 1852 #define MVPP2_PRS_DBL_VLAN_AI_BIT BIT(7) 1853 1854 /* DSA/EDSA type */ 1855 #define MVPP2_PRS_TAGGED 1 1856 #define MVPP2_PRS_UNTAGGED 0 1857 #define MVPP2_PRS_EDSA 1 1858 #define MVPP2_PRS_DSA 0 1859 1860 /* MAC entries, shadow udf */ 1861 enum Mvpp2PrsUdf { 1862 MVPP2_PRS_UDF_MAC_DEF, 1863 MVPP2_PRS_UDF_MAC_RANGE, 1864 MVPP2_PRS_UDF_L2_DEF, 1865 MVPP2_PRS_UDF_L2_DEF_COPY, 1866 MVPP2_PRS_UDF_L2_USER, 1867 }; 1868 1869 /* Lookup ID */ 1870 enum Mvpp2PrsLookup { 1871 MVPP2_PRS_LU_MH, 1872 MVPP2_PRS_LU_MAC, 1873 MVPP2_PRS_LU_DSA, 1874 MVPP2_PRS_LU_VLAN, 1875 MVPP2_PRS_LU_L2, 1876 MVPP2_PRS_LU_PPPOE, 1877 MVPP2_PRS_LU_IP4, 1878 MVPP2_PRS_LU_IP6, 1879 MVPP2_PRS_LU_FLOWS, 1880 MVPP2_PRS_LU_LAST, 1881 }; 1882 1883 /* L3 cast enum */ 1884 enum Mvpp2PrsL3Cast { 1885 MVPP2_PRS_L3_UNI_CAST, 1886 MVPP2_PRS_L3_MULTI_CAST, 1887 MVPP2_PRS_L3_BROAD_CAST 1888 }; 1889 1890 /* Classifier constants */ 1891 #define MVPP2_CLS_FLOWS_TBL_SIZE 512 1892 #define MVPP2_CLS_FLOWS_TBL_DATA_WORDS 3 1893 #define MVPP2_CLS_LKP_TBL_SIZE 64 1894 1895 /* BM cookie (32 bits) definition */ 1896 #define MVPP2_BM_COOKIE_POOL_OFFS 8 1897 #define MVPP2_BM_COOKIE_CPU_OFFS 24 1898 1899 /* 1900 * The MVPP2_TX_DESC and MVPP2_RX_DESC structures describe the 1901 * layout of the transmit and reception DMA descriptors, and their 1902 * layout is therefore defined by the hardware design 1903 */ 1904 #define MVPP2_TXD_L3_OFF_SHIFT 0 1905 #define MVPP2_TXD_IP_HLEN_SHIFT 8 1906 #define MVPP2_TXD_L4_CSUM_FRAG BIT(13) 1907 #define MVPP2_TXD_L4_CSUM_NOT BIT(14) 1908 #define MVPP2_TXD_IP_CSUM_DISABLE BIT(15) 1909 #define MVPP2_TXD_PADDING_DISABLE BIT(23) 1910 #define MVPP2_TXD_L4_UDP BIT(24) 1911 #define MVPP2_TXD_L3_IP6 BIT(26) 1912 #define MVPP2_TXD_L_DESC BIT(28) 1913 #define MVPP2_TXD_F_DESC BIT(29) 1914 1915 #define MVPP2_RXD_ERR_SUMMARY BIT(15) 1916 #define MVPP2_RXD_ERR_CODE_MASK (BIT(13) | BIT(14)) 1917 #define MVPP2_RXD_ERR_CRC 0x0 1918 #define MVPP2_RXD_ERR_OVERRUN BIT(13) 1919 #define MVPP2_RXD_ERR_RESOURCE (BIT(13) | BIT(14)) 1920 #define MVPP2_RXD_BM_POOL_ID_OFFS 16 1921 #define MVPP2_RXD_BM_POOL_ID_MASK (BIT(16) | BIT(17) | BIT(18)) 1922 #define MVPP2_RXD_HWF_SYNC BIT(21) 1923 #define MVPP2_RXD_L4_CSUM_OK BIT(22) 1924 #define MVPP2_RXD_IP4_HEADER_ERR BIT(24) 1925 #define MVPP2_RXD_L4_TCP BIT(25) 1926 #define MVPP2_RXD_L4_UDP BIT(26) 1927 #define MVPP2_RXD_L3_IP4 BIT(28) 1928 #define MVPP2_RXD_L3_IP6 BIT(30) 1929 #define MVPP2_RXD_BUF_HDR BIT(31) 1930 1931 struct mvpp2_tx_desc { 1932 uint32_t command; /* Options used by HW for packet transmitting.*/ 1933 uint8_t packet_offset; /* the offset from the buffer beginning */ 1934 uint8_t phys_txq; /* destination queue ID */ 1935 uint16_t data_size; /* data size of transmitted packet in bytes */ 1936 uint64_t rsrvd_hw_cmd1; /* HwCmd (BM, PON, PNC) */ 1937 uint64_t buf_phys_addr_hw_cmd2; 1938 uint64_t buf_cookie_bm_qset_hw_cmd3; 1939 }; 1940 1941 struct mvpp2_rx_desc { 1942 uint32_t status; /* info about received packet */ 1943 uint16_t reserved1; /* ParserInfo (for future use, PnC) */ 1944 uint16_t data_size; /* size of received packet in bytes */ 1945 uint16_t rsrvd_gem; /* GemPortId (for future use, PON) */ 1946 uint16_t rsrvd_l4_csum; /* CsumL4 (for future use, PnC) */ 1947 uint32_t rsrvd_timestamp; 1948 uint64_t buf_phys_addr_key_hash; 1949 uint64_t buf_cookie_bm_qset_cls_info; 1950 }; 1951 1952 union mvpp2_prs_tcam_entry { 1953 uint32_t word[MVPP2_PRS_TCAM_WORDS]; 1954 uint8_t byte[MVPP2_PRS_TCAM_WORDS * 4]; 1955 }; 1956 1957 union mvpp2_prs_sram_entry { 1958 uint32_t word[MVPP2_PRS_SRAM_WORDS]; 1959 uint8_t byte[MVPP2_PRS_SRAM_WORDS * 4]; 1960 }; 1961 1962 struct mvpp2_prs_entry { 1963 uint32_t index; 1964 union mvpp2_prs_tcam_entry tcam; 1965 union mvpp2_prs_sram_entry sram; 1966 }; 1967 1968 struct mvpp2_prs_shadow { 1969 int valid; 1970 int finish; 1971 1972 /* Lookup ID */ 1973 int32_t lu; 1974 1975 /* User defined offset */ 1976 int32_t udf; 1977 1978 /* Result info */ 1979 uint32_t ri; 1980 uint32_t ri_mask; 1981 }; 1982 1983 struct mvpp2_cls_flow_entry { 1984 uint32_t index; 1985 uint32_t data[MVPP2_CLS_FLOWS_TBL_DATA_WORDS]; 1986 }; 1987 1988 struct mvpp2_cls_lookup_entry { 1989 uint32_t lkpid; 1990 uint32_t way; 1991 uint32_t data; 1992 }; 1993 1994 typedef struct { 1995 uint32_t NextBuffPhysAddr; 1996 uint32_t NextBuffVirtAddr; 1997 uint16_t ByteCount; 1998 uint16_t info; 1999 uint8_t reserved1; /* BmQset (for future use, BM) */ 2000 } MVPP2_BUFF_HDR; 2001 2002 /* Buffer header info bits */ 2003 #define MVPP2_B_HDR_INFO_MC_ID_MASK 0xfff 2004 #define MVPP2_B_HDR_INFO_MC_ID(info) ((info) & MVPP2_B_HDR_INFO_MC_ID_MASK) 2005 #define MVPP2_B_HDR_INFO_LAST_OFFS 12 2006 #define MVPP2_B_HDR_INFO_LAST_MASK BIT(12) 2007 #define MVPP2_B_HDR_INFO_IS_LAST(info) ((info & MVPP2_B_HDR_INFO_LAST_MASK) >> MVPP2_B_HDR_INFO_LAST_OFFS) 2008 2009 /* SerDes */ 2010 #define MVPP2_SFI_LANE_COUNT 1 2011 2012 /* Net Complex */ 2013 enum MvNetcTopology { 2014 MV_NETC_GE_MAC0_RXAUI_L23 = BIT(0), 2015 MV_NETC_GE_MAC0_RXAUI_L45 = BIT(1), 2016 MV_NETC_GE_MAC0_XAUI = BIT(2), 2017 MV_NETC_GE_MAC2_SGMII = BIT(3), 2018 MV_NETC_GE_MAC3_SGMII = BIT(4), 2019 MV_NETC_GE_MAC3_RGMII = BIT(5), 2020 }; 2021 2022 enum MvNetcPhase { 2023 MV_NETC_FIRST_PHASE, 2024 MV_NETC_SECOND_PHASE, 2025 }; 2026 2027 enum MvNetcSgmiiXmiMode { 2028 MV_NETC_GBE_SGMII, 2029 MV_NETC_GBE_XMII, 2030 }; 2031 2032 enum MvNetcMiiMode { 2033 MV_NETC_GBE_RGMII, 2034 MV_NETC_GBE_MII, 2035 }; 2036 2037 enum MvNetcLanes { 2038 MV_NETC_LANE_23, 2039 MV_NETC_LANE_45, 2040 }; 2041 2042 /* Port related */ 2043 enum MvReset { 2044 RESET, 2045 UNRESET 2046 }; 2047 2048 enum Mvpp2Command { 2049 MVPP2_START, /* Start */ 2050 MVPP2_STOP, /* Stop */ 2051 MVPP2_PAUSE, /* Pause */ 2052 MVPP2_RESTART /* Restart */ 2053 }; 2054 2055 enum MvPortDuplex { 2056 MV_PORT_DUPLEX_AN, 2057 MV_PORT_DUPLEX_HALF, 2058 MV_PORT_DUPLEX_FULL 2059 }; 2060 2061 /* L2 and L3 protocol macros */ 2062 #define MV_IPPR_TCP 0 2063 #define MV_IPPR_UDP 1 2064 #define MV_IPPR_IPIP 2 2065 #define MV_IPPR_ICMPV6 3 2066 #define MV_IPPR_IGMP 4 2067 #define MV_ETH_P_IP 5 2068 #define MV_ETH_P_IPV6 6 2069 #define MV_ETH_P_PPP_SES 7 2070 #define MV_ETH_P_ARP 8 2071 #define MV_ETH_P_8021Q 9 2072 #define MV_ETH_P_8021AD 10 2073 #define MV_ETH_P_EDSA 11 2074 #define MV_PPP_IP 12 2075 #define MV_PPP_IPV6 13 2076 2077 #endif /* __MVPP2_LIB_HW__ */ 2078