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