1 /* $NetBSD: octeon_gmxreg.h,v 1.7 2022/05/23 21:46:12 andvar Exp $ */ 2 3 /* 4 * Copyright (c) 2007 Internet Initiative Japan, Inc. 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions 9 * are met: 10 * 1. Redistributions of source code must retain the above copyright 11 * notice, this list of conditions and the following disclaimer. 12 * 2. Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * 16 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 17 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 20 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 22 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 23 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 24 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26 * SUCH DAMAGE. 27 */ 28 29 /* 30 * GMX Registers 31 */ 32 33 #ifndef _OCTEON_GMXREG_H_ 34 #define _OCTEON_GMXREG_H_ 35 36 #define GMX0_RX0_INT_REG 0x000 37 #define GMX0_RX0_INT_EN 0x008 38 #define GMX0_PRT0_CFG 0x010 39 #define GMX0_RX0_FRM_CTL 0x018 40 #define GMX0_RX0_FRM_CHK 0x020 41 #define GMX0_RX0_FRM_MIN 0x028 42 #define GMX0_RX0_FRM_MAX 0x030 43 #define GMX0_RX0_JABBER 0x038 44 #define GMX0_RX0_DECISION 0x040 45 #define GMX0_RX0_UDD_SKP 0x048 46 #define GMX0_RX0_STATS_CTL 0x050 47 #define GMX0_RX0_IFG 0x058 48 #define GMX0_RX0_RX_INBND 0x060 49 #define GMX0_RX0_STATS_PKTS 0x080 50 #define GMX0_RX0_STATS_OCTS 0x088 51 #define GMX0_RX0_STATS_PKTS_CTL 0x090 52 #define GMX0_RX0_STATS_OCTS_CTL 0x098 53 #define GMX0_RX0_STATS_PKTS_DMAC 0x0a0 54 #define GMX0_RX0_STATS_OCTS_DMAC 0x0a8 55 #define GMX0_RX0_STATS_PKTS_DRP 0x0b0 56 #define GMX0_RX0_STATS_OCTS_DRP 0x0b8 57 #define GMX0_RX0_STATS_PKTS_BAD 0x0c0 58 #define GMX0_RX0_ADR_CTL 0x100 59 #define GMX0_RX0_ADR_CAM_EN 0x108 60 #define GMX0_RX0_ADR_CAM0 0x180 61 #define GMX0_RX0_ADR_CAM1 0x188 62 #define GMX0_RX0_ADR_CAM2 0x190 63 #define GMX0_RX0_ADR_CAM3 0x198 64 #define GMX0_RX0_ADR_CAM4 0x1a0 65 #define GMX0_RX0_ADR_CAM5 0x1a8 66 #define GMX0_TX0_CLK 0x208 67 #define GMX0_TX0_THRESH 0x210 68 #define GMX0_TX0_APPEND 0x218 69 #define GMX0_TX0_SLOT 0x220 70 #define GMX0_TX0_BURST 0x228 71 #define GMX0_SMAC0 0x230 72 #define GMX0_TX0_PAUSE_PKT_TIME 0x238 73 #define GMX0_TX0_MIN_PKT 0x240 74 #define GMX0_TX0_PAUSE_PKT_INTERVAL 0x248 75 #define GMX0_TX0_SOFT_PAUSE 0x250 76 #define GMX0_TX0_PAUSE_TOGO 0x258 77 #define GMX0_TX0_PAUSE_ZERO 0x260 78 #define GMX0_TX0_STATS_CTL 0x268 79 #define GMX0_TX0_CTL 0x270 80 #define GMX0_TX0_STAT0 0x280 81 #define GMX0_TX0_STAT1 0x288 82 #define GMX0_TX0_STAT2 0x290 83 #define GMX0_TX0_STAT3 0x298 84 #define GMX0_TX0_STAT4 0x2a0 85 #define GMX0_TX0_STAT5 0x2a8 86 #define GMX0_TX0_STAT6 0x2b0 87 #define GMX0_TX0_STAT7 0x2b8 88 #define GMX0_TX0_STAT8 0x2c0 89 #define GMX0_TX0_STAT9 0x2c8 90 #define GMX0_BIST0 0x400 91 #define GMX0_RX_PRTS 0x410 92 #define GMX0_RX_BP_DROP0 0x420 93 #define GMX0_RX_BP_DROP1 0x428 94 #define GMX0_RX_BP_DROP2 0x430 95 #define GMX0_RX_BP_ON0 0x440 96 #define GMX0_RX_BP_ON1 0x448 97 #define GMX0_RX_BP_ON2 0x450 98 #define GMX0_RX_BP_OFF0 0x460 99 #define GMX0_RX_BP_OFF1 0x468 100 #define GMX0_RX_BP_OFF2 0x470 101 #define GMX0_TX_PRTS 0x480 102 #define GMX0_TX_IFG 0x488 103 #define GMX0_TX_JAM 0x490 104 #define GMX0_TX_COL_ATTEMPT 0x498 105 #define GMX0_TX_PAUSE_PKT_DMAC 0x4a0 106 #define GMX0_TX_PAUSE_PKT_TYPE 0x4a8 107 #define GMX0_TX_OVR_BP 0x4c8 108 #define GMX0_TX_BP 0x4d0 109 #define GMX0_TX_CORRUPT 0x4d8 110 #define GMX0_RX_PRT_INFO 0x4e8 111 #define GMX0_TX_LFSR 0x4f8 112 #define GMX0_TX_INT_REG 0x500 113 #define GMX0_TX_INT_EN 0x508 114 #define GMX0_NXA_ADR 0x510 115 #define GMX0_BAD_REG 0x518 116 #define GMX0_STAT_BP 0x520 117 #define GMX0_TX_CLK_MSK0 0x780 118 #define GMX0_TX_CLK_MSK1 0x788 119 #define GMX0_RX_TX_STATUS 0x7e8 120 #define GMX0_INF_MODE 0x7f8 121 122 /* -------------------------------------------------------------------------- */ 123 124 /* GMX Interrupt Registers */ 125 126 #define RXN_INT_REG_XXX_63_19 UINT64_C(0xfffffffffff80000) 127 #define RXN_INT_REG_PHY_DUPX UINT64_C(0x0000000000040000) 128 #define RXN_INT_REG_PHY_SPD UINT64_C(0x0000000000020000) 129 #define RXN_INT_REG_PHY_LINK UINT64_C(0x0000000000010000) 130 #define RXN_INT_REG_IFGERR UINT64_C(0x0000000000008000) 131 #define RXN_INT_REG_COLDET UINT64_C(0x0000000000004000) 132 #define RXN_INT_REG_FALERR UINT64_C(0x0000000000002000) 133 #define RXN_INT_REG_RSVERR UINT64_C(0x0000000000001000) 134 #define RXN_INT_REG_PCTERR UINT64_C(0x0000000000000800) 135 #define RXN_INT_REG_OVRERR UINT64_C(0x0000000000000400) 136 #define RXN_INT_REG_NIBERR UINT64_C(0x0000000000000200) 137 #define RXN_INT_REG_SKPERR UINT64_C(0x0000000000000100) 138 #define RXN_INT_REG_RCVERR UINT64_C(0x0000000000000080) 139 #define RXN_INT_REG_LENERR UINT64_C(0x0000000000000040) 140 #define RXN_INT_REG_ALNERR UINT64_C(0x0000000000000020) 141 #define RXN_INT_REG_FCSERR UINT64_C(0x0000000000000010) 142 #define RXN_INT_REG_JABBER UINT64_C(0x0000000000000008) 143 #define RXN_INT_REG_MAXERR UINT64_C(0x0000000000000004) 144 #define RXN_INT_REG_CAREXT UINT64_C(0x0000000000000002) 145 #define RXN_INT_REG_MINERR UINT64_C(0x0000000000000001) 146 147 /* GMX Interrupt-Enable Registers */ 148 149 #define RXN_INT_EN_XXX_63_19 UINT64_C(0xfffffffffff80000) 150 #define RXN_INT_EN_PHY_DUPX UINT64_C(0x0000000000040000) 151 #define RXN_INT_EN_PHY_SPD UINT64_C(0x0000000000020000) 152 #define RXN_INT_EN_PHY_LINK UINT64_C(0x0000000000010000) 153 #define RXN_INT_EN_IFGERR UINT64_C(0x0000000000008000) 154 #define RXN_INT_EN_COLDET UINT64_C(0x0000000000004000) 155 #define RXN_INT_EN_FALERR UINT64_C(0x0000000000002000) 156 #define RXN_INT_EN_RSVERR UINT64_C(0x0000000000001000) 157 #define RXN_INT_EN_PCTERR UINT64_C(0x0000000000000800) 158 #define RXN_INT_EN_OVRERR UINT64_C(0x0000000000000400) 159 #define RXN_INT_EN_NIBERR UINT64_C(0x0000000000000200) 160 #define RXN_INT_EN_SKPERR UINT64_C(0x0000000000000100) 161 #define RXN_INT_EN_RCVERR UINT64_C(0x0000000000000080) 162 #define RXN_INT_EN_LENERR UINT64_C(0x0000000000000040) 163 #define RXN_INT_EN_ALNERR UINT64_C(0x0000000000000020) 164 #define RXN_INT_EN_FCSERR UINT64_C(0x0000000000000010) 165 #define RXN_INT_EN_JABBER UINT64_C(0x0000000000000008) 166 #define RXN_INT_EN_MAXERR UINT64_C(0x0000000000000004) 167 #define RXN_INT_EN_CAREXT UINT64_C(0x0000000000000002) 168 #define RXN_INT_EN_MINERR UINT64_C(0x0000000000000001) 169 170 /* GMX Port Configuration Registers */ 171 172 #define PRTN_CFG_XXX_63_9 UINT64_C(0xfffffffffffffe00) 173 #define PRTN_CFG_SPEED_MSB UINT64_C(0x0000000000000100) 174 #define PRTN_CFG_XXX_7_4 UINT64_C(0x00000000000000f0) 175 #define PRTN_CFG_SLOTTIME UINT64_C(0x0000000000000008) 176 #define PRTN_CFG_DUPLEX UINT64_C(0x0000000000000004) 177 #define PRTN_CFG_SPEED UINT64_C(0x0000000000000002) 178 #define PRTN_CFG_EN UINT64_C(0x0000000000000001) 179 180 /* Frame Control Registers */ 181 182 #define RXN_FRM_CTL_XXX_63_11 UINT64_C(0xfffffffffffff800) 183 #define RXN_FRM_CTL_NULL_DIS UINT64_C(0x0000000000000400) 184 #define RXN_FRM_CTL_PRE_ALIGN UINT64_C(0x0000000000000200) 185 #define RXN_FRM_CTL_PAD_LEN UINT64_C(0x0000000000000100) 186 #define RXN_FRM_CTL_VLAN_LEN UINT64_C(0x0000000000000080) 187 #define RXN_FRM_CTL_PRE_FREE UINT64_C(0x0000000000000040) 188 #define RXN_FRM_CTL_CTL_SMAC UINT64_C(0x0000000000000020) 189 #define RXN_FRM_CTL_CTL_MCST UINT64_C(0x0000000000000010) 190 #define RXN_FRM_CTL_CTL_BCK UINT64_C(0x0000000000000008) 191 #define RXN_FRM_CTL_CTL_DRP UINT64_C(0x0000000000000004) 192 #define RXN_FRM_CTL_PRE_STRP UINT64_C(0x0000000000000002) 193 #define RXN_FRM_CTL_PRE_CHK UINT64_C(0x0000000000000001) 194 195 /* Frame Check Registers */ 196 197 #define RXN_FRM_CKK_XXX_63_10 UINT64_C(0xfffffffffffffc00) 198 #define RXN_FRM_CHK_NIBERR UINT64_C(0x0000000000000200) 199 #define RXN_FRM_CHK_SKPERR UINT64_C(0x0000000000000100) 200 #define RXN_FRM_CHK_RCVERR UINT64_C(0x0000000000000080) 201 #define RXN_FRM_CHK_LENERR UINT64_C(0x0000000000000040) 202 #define RXN_FRM_CHK_ALNERR UINT64_C(0x0000000000000020) 203 #define RXN_FRM_CHK_FCSERR UINT64_C(0x0000000000000010) 204 #define RXN_FRM_CHK_JABBER UINT64_C(0x0000000000000008) 205 #define RXN_FRM_CHK_MAXERR UINT64_C(0x0000000000000004) 206 #define RXN_FRM_CHK_CAREXT UINT64_C(0x0000000000000002) 207 #define RXN_FRM_CHK_MINERR UINT64_C(0x0000000000000001) 208 209 /* Frame Minimum-Length Registers */ 210 211 #define RXN_RRM_MIN_XXX_63_16 UINT64_C(0xffffffffffff0000) 212 #define RXN_RRM_MIN_LEN UINT64_C(0x000000000000ffff) 213 214 /* Frame Maximun-Length Registers */ 215 216 #define RXN_RRM_MAX_XXX_63_16 UINT64_C(0xffffffffffff0000) 217 #define RXN_RRM_MAX_LEN UINT64_C(0x000000000000ffff) 218 219 /* GMX Maximun Packet-Size Registers */ 220 221 #define RXN_JABBER_XXX_63_16 UINT64_C(0xffffffffffff0000) 222 #define RXN_JABBER_CNT UINT64_C(0x000000000000ffff) 223 224 /* GMX Packet Decision Registers */ 225 226 #define RXN_DECISION_XXX_63_5 UINT64_C(0xffffffffffffffe0) 227 #define RXN_DECISION_CNT UINT64_C(0x000000000000001f) 228 229 /* GMX User-Defined Data Skip Registers */ 230 231 #define RXN_UDD_SKP_XXX_63_9 UINT64_C(0xfffffffffffffe00) 232 #define RXN_UDD_SKP_FCSSEL UINT64_C(0x0000000000000100) 233 #define RXN_UDD_SKP_XXX_7 UINT64_C(0x0000000000000080) 234 #define RXN_UDD_SKP_LEN UINT64_C(0x000000000000007f) 235 236 /* GMX RX Statistics Control Registers */ 237 238 #define RXN_STATS_CTL_XXX_63_1 UINT64_C(0xfffffffffffffffe) 239 #define RXN_STATS_CTL_RD_CLR UINT64_C(0x0000000000000001) 240 241 /* GMX Minimum Interface-Gap Cycles Registers */ 242 243 #define RXN_IFG_XXX_63_4 UINT64_C(0xfffffffffffffff0) 244 #define RXN_IFG_IFG UINT64_C(0x000000000000000f) 245 246 /* InBand Link Status Registers */ 247 248 #define RXN_RX_INBND_XXX_63_4 UINT64_C(0xfffffffffffffff0) 249 #define RXN_RX_INBND_DUPLEX UINT64_C(0x0000000000000008) 250 #define RXN_RX_INBND_DUPLEX_HALF 0 251 #define RXN_RX_INBND_DUPLEX_FULL 1 252 #define RXN_RX_INBND_SPEED UINT64_C(0x0000000000000006) 253 #define RXN_RX_INBND_SPEED_2_5 0 254 #define RXN_RX_INBND_SPEED_25 1 255 #define RXN_RX_INBND_SPEED_125 2 256 #define RXN_RX_INBND_SPEED_XXX_3 3 257 #define RXN_RX_INBND_STATUS UINT64_C(0x0000000000000001) 258 259 /* GMX RX Good Packets Registers */ 260 261 #define RXN_STATS_PKTS_XXX_63_32 UINT64_C(0xffffffff00000000) 262 #define RXN_STATS_PKTS_CNT UINT64_C(0x00000000ffffffff) 263 264 /* GMX RX Good Packets Octet Registers */ 265 266 #define RXN_STATS_OCTS_XXX_63_48 UINT64_C(0xffff000000000000) 267 #define RXN_STATS_OCTS_CNT UINT64_C(0x0000ffffffffffff) 268 269 /* GMX RX Pause Packets Registers */ 270 271 #define RXN_STATS_PKTS_CTL_XXX_63_32 UINT64_C(0xffffffff00000000) 272 #define RXN_STATS_PKTS_CTL_CNT UINT64_C(0x00000000ffffffff) 273 274 /* GMX RX Pause Packets Octet Registers */ 275 276 #define RXN_STATS_OCTS_CTL_XXX_63_48 UINT64_C(0xffff000000000000) 277 #define RXN_STATS_OCTS_CTL_CNT UINT64_C(0x0000ffffffffffff) 278 279 /* GMX RX DMAC Packets Registers */ 280 281 #define RXN_STATS_PKTS_DMAC_XXX_63_32 UINT64_C(0xffffffff00000000) 282 #define RXN_STATS_PKTS_DMAC_CNT UINT64_C(0x00000000ffffffff) 283 284 /* GMX RX DMAC Packets Octet Registers */ 285 286 #define RXN_STATS_OCTS_DMAC_XXX_63_48 UINT64_C(0xffff000000000000) 287 #define RXN_STATS_OCTS_DMAC_CNT UINT64_C(0x0000ffffffffffff) 288 289 /* GMX RX Overflow Packets Registers */ 290 291 #define RXN_STATS_PKTS_DRP_XXX_63_48 UINT64_C(0xffffffff00000000) 292 #define RXN_STATS_PKTS_DRP_CNT UINT64_C(0x00000000ffffffff) 293 294 /* GMX RX Overflow Packets Octet Registers */ 295 296 #define RXN_STATS_OCTS_DRP_XXX_63_48 UINT64_C(0xffff000000000000) 297 #define RXN_STATS_OCTS_DRP_CNT UINT64_C(0x0000ffffffffffff) 298 299 /* GMX RX Bad Packets Registers */ 300 301 #define RXN_STATS_PKTS_BAD_XXX_63_48 UINT64_C(0xffffffff00000000) 302 #define RXN_STATS_PKTS_BAD_CNT UINT64_C(0x00000000ffffffff) 303 304 /* Address-Filtering Control Registers */ 305 306 #define RXN_ADR_CTL_XXX_63_4 UINT64_C(0xfffffffffffffff0) 307 #define RXN_ADR_CTL_CAM_MODE UINT64_C(0x0000000000000008) 308 #define RXN_ADR_CTL_CAM_MODE_REJECT 0 309 #define RXN_ADR_CTL_CAM_MODE_ACCEPT 1 310 #define RXN_ADR_CTL_MCST UINT64_C(0x0000000000000006) 311 #define RXN_ADR_CTL_MCST_AFCAM 0 312 #define RXN_ADR_CTL_MCST_REJECT 1 313 #define RXN_ADR_CTL_MCST_ACCEPT 2 314 #define RXN_ADR_CTL_MCST_XXX_3 3 315 #define RXN_ADR_CTL_BCST UINT64_C(0x0000000000000001) 316 317 /* Address-Filtering Control Enable Registers */ 318 319 #define RXN_ADR_CAM_EN_XXX_63_8 UINT64_C(0xffffffffffffff00) 320 #define RXN_ADR_CAM_EN_EN UINT64_C(0x00000000000000ff) 321 322 /* Address-Filtering CAM Control Registers */ 323 #define RXN_ADR_CAMN_ADR UINT64_C(0xffffffffffffffff) 324 325 /* GMX TX Clock Generation Registers */ 326 327 #define TXN_CLK_XXX_63_6 UINT64_C(0xffffffffffffffc0) 328 #define TXN_CLK_CLK_CNT UINT64_C(0x000000000000003f) 329 330 /* TX Threshold Registers */ 331 332 #define TXN_THRESH_XXX_63_6 UINT64_C(0xffffffffffffffc0) 333 #define TXN_THRESH_CNT UINT64_C(0x000000000000003f) 334 335 /* TX Append Control Registers */ 336 337 #define TXN_APPEND_XXX_63_4 UINT64_C(0xfffffffffffffff0) 338 #define TXN_APPEND_FORCE_FCS UINT64_C(0x0000000000000008) 339 #define TXN_APPEND_FCS UINT64_C(0x0000000000000004) 340 #define TXN_APPEND_PAD UINT64_C(0x0000000000000002) 341 #define TXN_APPEND_PREAMBLE UINT64_C(0x0000000000000001) 342 343 /* TX Slottime Counter Registers */ 344 345 #define TXN_SLOT_XXX_63_10 UINT64_C(0xfffffffffffffc00) 346 #define TXN_SLOT_SLOT UINT64_C(0x00000000000003ff) 347 348 /* TX Burst-Counter Registers */ 349 350 #define TXN_BURST_XXX_63_16 UINT64_C(0xffffffffffff0000) 351 #define TXN_BURST_BURST UINT64_C(0x000000000000ffff) 352 353 /* RGMII SMAC Registers */ 354 355 #define SMACN_XXX_63_48 UINT64_C(0xffff000000000000) 356 #define SMACN_SMAC UINT64_C(0x0000ffffffffffff) 357 358 /* TX Pause Packet Pause-Time Registers */ 359 360 #define TXN_PAUSE_PKT_TIME_XXX_63_16 UINT64_C(0xffffffffffff0000) 361 #define TXN_PAUSE_PKT_TIME_TIME UINT64_C(0x000000000000ffff) 362 363 /* RGMII TX Minimum-Size-Packet Registers */ 364 365 #define TXN_MIN_PKT_XXX_63_8 UINT64_C(0xffffffffffffff00) 366 #define TXN_MIN_PKT_MIN_SIZE UINT64_C(0x00000000000000ff) 367 368 /* TX Pause-Packet Transmission-Interval Registers */ 369 370 #define TXN_PAUSE_PKT_INTERVAL_XXX_63_16 UINT64_C(0xffffffffffff0000) 371 #define TXN_PAUSE_PKT_INTERVAL_INTERVAL UINT64_C(0x000000000000ffff) 372 373 /* TX Software-Pause Registers */ 374 375 #define TXN_SOFT_PAUSE_XXX_63_16 UINT64_C(0xffffffffffff0000) 376 #define TXN_SOFT_PAUSE_TIME UINT64_C(0x000000000000ffff) 377 378 /* TX Time-to-Backpressure Registers */ 379 380 #define TXN_PAUSE_TOGO_XXX_63_16 UINT64_C(0xffffffffffff0000) 381 #define TXN_PAUSE_TOGO_TIME UINT64_C(0x000000000000ffff) 382 383 /* TX Pause-Zero-Enable Registers */ 384 385 #define TXN_PAUSE_ZERO_XXX_63_1 UINT64_C(0xfffffffffffffffe) 386 #define TXN_PAUSE_ZERO_SEND UINT64_C(0x0000000000000001) 387 388 /* GMX TX Statistics Control Registers */ 389 390 #define TXN_STATS_CTL_XXX_63_1 UINT64_C(0xfffffffffffffffe) 391 #define TXN_STATS_CTL_RD_CLR UINT64_C(0x0000000000000001) 392 393 /* GMX TX Transmit Control Registers */ 394 395 #define TXN_CTL_XXX_63_2 UINT64_C(0xfffffffffffffffc) 396 #define TXN_CTL_XSDEF_EN UINT64_C(0x0000000000000002) 397 #define TXN_CTL_XSCOL_EN UINT64_C(0x0000000000000001) 398 399 /* Transmit Statistics Registers 0 */ 400 401 #define TXN_STAT0_XSDEF UINT64_C(0xffffffff00000000) 402 #define TXN_STAT0_XSCOL UINT64_C(0x00000000ffffffff) 403 404 /* Transmit Statistics Registers 1 */ 405 406 #define TXN_STAT1_SCOL UINT64_C(0xffffffff00000000) 407 #define TXN_STAT1_MSCOL UINT64_C(0x00000000ffffffff) 408 409 /* Transmit Statistics Registers 2 */ 410 411 #define TXN_STAT2_XXX_63_48 UINT64_C(0xffff000000000000) 412 #define TXN_STAT2_OCTS UINT64_C(0x0000ffffffffffff) 413 414 /* Transmit Statistics Registers 3 */ 415 416 #define TXN_STAT3_XXX_63_48 UINT64_C(0xffffffff00000000) 417 #define TXN_STAT3_PKTS UINT64_C(0x00000000ffffffff) 418 419 /* Transmit Statistics Registers 4 */ 420 421 #define TXN_STAT4_HIST1 UINT64_C(0xffffffff00000000) 422 #define TXN_STAT4_HIST0 UINT64_C(0x00000000ffffffff) 423 424 /* Transmit Statistics Registers 5 */ 425 426 #define TXN_STAT5_HIST3 UINT64_C(0xffffffff00000000) 427 #define TXN_STAT5_HIST2 UINT64_C(0x00000000ffffffff) 428 429 /* Transmit Statistics Registers 6 */ 430 431 #define TXN_STAT6_HIST5 UINT64_C(0xffffffff00000000) 432 #define TXN_STAT6_HIST4 UINT64_C(0x00000000ffffffff) 433 434 /* Transmit Statistics Registers 7 */ 435 436 #define TXN_STAT7_HIST7 UINT64_C(0xffffffff00000000) 437 #define TXN_STAT7_HIST6 UINT64_C(0x00000000ffffffff) 438 439 /* Transmit Statistics Registers 8 */ 440 441 #define TXN_STAT8_MCST UINT64_C(0xffffffff00000000) 442 #define TXN_STAT8_BCST UINT64_C(0x00000000ffffffff) 443 444 /* Transmit Statistics Register 9 */ 445 446 #define TXN_STAT9_UNDFLW UINT64_C(0xffffffff00000000) 447 #define TXN_STAT9_CTL UINT64_C(0x00000000ffffffff) 448 449 /* BMX BIST Results Register */ 450 451 #define BIST_XXX_63_10 UINT64_C(0xfffffffffffffc00) 452 #define BIST_STATUS UINT64_C(0x00000000000003ff) 453 454 /* RX Ports Register */ 455 456 #define RX_PRTS_XXX_63_3 UINT64_C(0xfffffffffffffff8) 457 #define RX_PRTS_PRTS UINT64_C(0x0000000000000007) 458 459 /* RX FIFO Packet-Drop Registers */ 460 461 #define RX_BP_DROPN_XXX_63_6 UINT64_C(0xffffffffffffffc0) 462 #define RX_BP_DROPN_MARK UINT64_C(0x000000000000003f) 463 464 /* RX Backpressure On Registers */ 465 466 #define RX_BP_ONN_XXX_63_9 UINT64_C(0xfffffffffffffe00) 467 #define RX_BP_ONN_MARK UINT64_C(0x00000000000001ff) 468 469 /* RX Backpressure Off Registers */ 470 471 #define RX_BP_OFFN_XXX_63_6 UINT64_C(0xffffffffffffffc0) 472 #define RX_BP_OFFN_MARK UINT64_C(0x000000000000003f) 473 474 /* TX Ports Register */ 475 476 #define TX_PRTS_XXX_63_5 UINT64_C(0xffffffffffffffe0) 477 #define TX_PRTS_PRTS UINT64_C(0x000000000000001f) 478 479 /* TX Interframe Gap Register */ 480 481 #define TX_IFG_XXX_63_8 UINT64_C(0xffffffffffffff00) 482 #define TX_IFG_IFG2 UINT64_C(0x00000000000000f0) 483 #define TX_IFG_IFG1 UINT64_C(0x000000000000000f) 484 485 /* TX Jam Pattern Register */ 486 487 #define TX_JAM_XXX_63_8 UINT64_C(0xffffffffffffff00) 488 #define TX_JAM_JAM UINT64_C(0x00000000000000ff) 489 490 /* TX Collision Attempts Before Dropping Frame Register */ 491 492 #define TX_COL_ATTEMPT_XXX_63_5 UINT64_C(0xffffffffffffffe0) 493 #define TX_COL_ATTEMPT_LIMIT UINT64_C(0x000000000000001f) 494 495 /* TX Pause-Packet DMAC-Field Register */ 496 497 #define TX_PAUSE_PKT_DMAC_XXX_63_48 UINT64_C(0xffff000000000000) 498 #define TX_PAUSE_PKT_DMAC_DMAC UINT64_C(0x0000ffffffffffff) 499 500 /* TX Pause Packet Type Field Register */ 501 502 #define TX_PAUSE_PKT_TYPE_XXX_63_16 UINT64_C(0xffffffffffff0000) 503 #define TX_PAUSE_PKT_TYPE_TYPE UINT64_C(0x000000000000ffff) 504 505 /* TX Override Backpressure Register */ 506 507 #define TX_OVR_BP_XXX_63_12 UINT64_C(0xfffffffffffff000) 508 #define TX_OVR_BP_XXX_11 UINT64_C(0x0000000000000800) 509 #define TX_OVR_BP_EN UINT64_C(0x0000000000000700) 510 #define TX_OVR_BP_XXX_7 UINT64_C(0x0000000000000080) 511 #define TX_OVR_BP_BP UINT64_C(0x0000000000000070) 512 #define TX_OVR_BP_XXX_3 UINT64_C(0x0000000000000008) 513 #define TX_OVR_BP_IGN_FULL UINT64_C(0x0000000000000007) 514 515 /* TX Override Backpressure Register */ 516 517 #define TX_OVR_BP_XXX_63_12 UINT64_C(0xfffffffffffff000) 518 #define TX_OVR_BP_XXX_11 UINT64_C(0x0000000000000800) 519 #define TX_OVR_BP_EN UINT64_C(0x0000000000000700) 520 #define TX_OVR_BP_XXX_7 UINT64_C(0x0000000000000080) 521 #define TX_OVR_BP_BP UINT64_C(0x0000000000000070) 522 #define TX_OVR_BP_XXX_3 UINT64_C(0x0000000000000008) 523 #define TX_OVR_BP_IGN_FULL UINT64_C(0x0000000000000007) 524 525 /* TX Backpressure Status Register */ 526 527 #define TX_BP_SR_XXX_63_3 UINT64_C(0xfffffffffffffff8) 528 #define TX_BP_SR_BP UINT64_C(0x0000000000000007) 529 530 /* TX Corrupt Packets Register */ 531 532 #define TX_CORRUPT_XXX_63_3 UINT64_C(0xfffffffffffffff8) 533 #define TX_CORRUPT_CORRUPT UINT64_C(0x0000000000000007) 534 535 /* RX Port State Information Register */ 536 537 #define RX_PRT_INFO_XXX_63_19 UINT64_C(0xfffffffffff80000) 538 #define RX_PRT_INFO_DROP UINT64_C(0x0000000000070000) 539 #define RX_PRT_INFO_XXX_15_3 UINT64_C(0x000000000000fff8) 540 #define RX_PRT_INFO_COMMIT UINT64_C(0x0000000000000007) 541 542 /* TX LFSR Register */ 543 544 #define TX_LFSR_XXX_63_16 UINT64_C(0xffffffffffff0000) 545 #define TX_LFSR_LFSR UINT64_C(0x000000000000ffff) 546 547 /* TX Interrupt Register */ 548 549 #define TX_INT_REG_XXX_63_20 UINT64_C(0xfffffffffff00000) 550 #define TX_INT_REG_XXX_19 UINT64_C(0x0000000000080000) 551 #define TX_INT_REG_LATE_COL UINT64_C(0x0000000000070000) 552 #define TX_INT_REG_XXX_15 UINT64_C(0x0000000000008000) 553 #define TX_INT_REG_XSDEF UINT64_C(0x0000000000007000) 554 #define TX_INT_REG_XXX_11 UINT64_C(0x0000000000000800) 555 #define TX_INT_REG_XSCOL UINT64_C(0x0000000000000700) 556 #define TX_INT_REG_XXX_7_5 UINT64_C(0x00000000000000e0) 557 #define TX_INT_REG_UNDFLW UINT64_C(0x000000000000001c) 558 #define TX_INT_REG_XXX_1 UINT64_C(0x0000000000000002) 559 #define TX_INT_REG_PKO_NXA UINT64_C(0x0000000000000001) 560 561 /* TX Interrupt Register */ 562 563 #define TX_INT_EN_XXX_63_20 UINT64_C(0xfffffffffff00000) 564 #define TX_INT_EN_XXX_19 UINT64_C(0x0000000000080000) 565 #define TX_INT_EN_LATE_COL UINT64_C(0x0000000000070000) 566 #define TX_INT_EN_XXX_15 UINT64_C(0x0000000000008000) 567 #define TX_INT_EN_XSDEF UINT64_C(0x0000000000007000) 568 #define TX_INT_EN_XXX_11 UINT64_C(0x0000000000000800) 569 #define TX_INT_EN_XSCOL UINT64_C(0x0000000000000700) 570 #define TX_INT_EN_XXX_7_5 UINT64_C(0x00000000000000e0) 571 #define TX_INT_EN_UNDFLW UINT64_C(0x000000000000001c) 572 #define TX_INT_EN_XXX_1 UINT64_C(0x0000000000000002) 573 #define TX_INT_EN_PKO_NXA UINT64_C(0x0000000000000001) 574 575 /* Address-out-of-Range Error Register */ 576 577 #define NXA_ADR_XXX_63_6 UINT64_C(0xffffffffffffffc0) 578 #define NXA_ADR_PRT UINT64_C(0x000000000000003f) 579 580 /* GMX Miscellaneous Error Register */ 581 582 #define BAD_REG_XXX_63_31 UINT64_C(0xffffffff80000000) 583 #define BAD_REG_INB_NXA UINT64_C(0x0000000078000000) 584 #define BAD_REG_STATOVR UINT64_C(0x0000000004000000) 585 #define BAD_REG_XXX_25 UINT64_C(0x0000000002000000) 586 #define BAD_REG_LOSTSTAT UINT64_C(0x0000000001c00000) 587 #define BAD_REG_XXX_21_18 UINT64_C(0x00000000003c0000) 588 #define BAD_REG_XXX_17_5 UINT64_C(0x000000000003ffe0) 589 #define BAD_REG_OUT_OVR UINT64_C(0x000000000000001c) 590 #define BAD_REG_XXX_1_0 UINT64_C(0x0000000000000003) 591 592 /* GMX Backpressure Statistics Register */ 593 594 #define STAT_BP_XXX_63_17 UINT64_C(0xfffffffffffe0000) 595 #define STAT_BP_BP UINT64_C(0x0000000000010000) 596 #define STAT_BP_CNT UINT64_C(0x000000000000ffff) 597 598 /* Mode Change Mask Registers */ 599 600 #define TX_CLK_MSKN_XXX_63_1 UINT64_C(0xfffffffffffffffe) 601 #define TX_CLK_MSKN_MSK UINT64_C(0x0000000000000001) 602 603 /* GMX RX/TX Status Register */ 604 605 #define RX_TX_STATUS_XXX_63_7 UINT64_C(0xffffffffffffff80) 606 #define RX_TX_STATUS_TX UINT64_C(0x0000000000000070) 607 #define RX_TX_STATUS_XXX_3 UINT64_C(0x0000000000000008) 608 #define RX_TX_STATUS_RX UINT64_C(0x0000000000000007) 609 610 /* Interface Mode Register */ 611 612 #define INF_MODE_XXX_63_3 UINT64_C(0xfffffffffffffff8) 613 #define INF_MODE_P0MII UINT64_C(0x0000000000000004) 614 #define INF_MODE_EN UINT64_C(0x0000000000000002) 615 #define INF_MODE_TYPE UINT64_C(0x0000000000000001) 616 /* Interface mode, applicable on CN68xx and CN7xxx (?) */ 617 #define INF_MODE_MODE UINT64_C(0x0000000000000070) 618 #define INF_MODE_MODE_SGMII UINT64_C(0x0000000000000020) 619 #define INF_MODE_MODE_XAUI UINT64_C(0x0000000000000030) 620 621 #define MIO_QLM_CFG(x) (UINT64_C(0x0001180000001590) + (x)*8) 622 623 #define MIO_QLM_CFG_CFG UINT64_C(0x000000000000000f) 624 625 /* -------------------------------------------------------------------------- */ 626 627 /* for bus_space(9) */ 628 629 #define GMX_PORT_NUNITS (5 * 16) 630 #define GMX_PORT_NUM(g, i) ((g) * 16 + (i)) 631 #define GMX_PORT_IFACE(port) ((port) / 16) 632 #define GMX_PORT_INDEX(port) ((port) % 16) 633 634 #define GMX_BLOCK_SIZE 0x8000000 635 #define GMX_CN68XX_BLOCK_SIZE 0x100000 /* different on CN68XX only */ 636 637 #define GMX0_BASE_PORT0 UINT64_C(0x0001180008000000) 638 #define GMX_PORT_SIZE 0x800 639 #define GMX_IF_SIZE(n) (GMX_PORT_SIZE * (n)) 640 #define GMX_BASE_PORT(n, m) /* address of GMX(n) * PORT(m) */ \ 641 (GMX0_BASE_PORT0 + (n) * GMX_BLOCK_SIZE + GMX_IF_SIZE(m)) 642 #define GMX_CN68XX_BASE_PORT(n, m) /* address of GMX(n) * PORT(m) */ \ 643 (GMX0_BASE_PORT0 + (n) * GMX_CN68XX_BLOCK_SIZE + GMX_IF_SIZE(m)) 644 645 /* -------------------------------------------------------------------------- */ 646 647 /* Low-level SGMII link control */ 648 649 #define PCS_BASE(g, i) (UINT64_C(0x00011800b0001000) + 0x8000000 * (g) + 0x400 * (i)) 650 #define PCS_SIZE 0x98 651 652 #define PCS_MR_CONTROL 0x00 653 #define PCS_MR_STATUS 0x08 654 #define PCS_LINK_TIMER_COUNT 0x40 655 #define PCS_MISC_CTL 0x78 656 657 #define PCS_MR_CONTROL_RES_16_63 UINT64_C(0xffffffffffff0000) 658 #define PCS_MR_CONTROL_RESET UINT64_C(0x0000000000008000) 659 #define PCS_MR_CONTROL_LOOPBCK1 UINT64_C(0x0000000000004000) 660 #define PCS_MR_CONTROL_SPDLSB UINT64_C(0x0000000000002000) 661 #define PCS_MR_CONTROL_AN_EN UINT64_C(0x0000000000001000) 662 #define PCS_MR_CONTROL_PWR_DN UINT64_C(0x0000000000000800) 663 #define PCS_MR_CONTROL_RES_10_10 UINT64_C(0x0000000000000400) 664 #define PCS_MR_CONTROL_RST_AN UINT64_C(0x0000000000000200) 665 #define PCS_MR_CONTROL_DUPLEX UINT64_C(0x0000000000000100) 666 #define PCS_MR_CONTROL_COLTST UINT64_C(0x0000000000000080) 667 #define PCS_MR_CONTROL_SPDMSB UINT64_C(0x0000000000000040) 668 #define PCS_MR_CONTROL_UNI UINT64_C(0x0000000000000020) 669 #define PCS_MR_CONTROL_RES_0_4 UINT64_C(0x000000000000001f) 670 671 #define PCS_MR_STATUS_RES_16_63 UINT64_C(0xffffffffffff0000) 672 #define PCS_MR_STATUS_HUN_T4 UINT64_C(0x0000000000008000) 673 #define PCS_MR_STATUS_HUN_XFD UINT64_C(0x0000000000004000) 674 #define PCS_MR_STATUS_HUN_XHD UINT64_C(0x0000000000002000) 675 #define PCS_MR_STATUS_TEN_FD UINT64_C(0x0000000000001000) 676 #define PCS_MR_STATUS_TEN_HD UINT64_C(0x0000000000000800) 677 #define PCS_MR_STATUS_HUN_T2FD UINT64_C(0x0000000000000400) 678 #define PCS_MR_STATUS_HUN_T2HD UINT64_C(0x0000000000000200) 679 #define PCS_MR_STATUS_EXT_ST UINT64_C(0x0000000000000100) 680 #define PCS_MR_STATUS_RES_7_7 UINT64_C(0x0000000000000080) 681 #define PCS_MR_STATUS_PRB_SUP UINT64_C(0x0000000000000040) 682 #define PCS_MR_STATUS_AN_CPT UINT64_C(0x0000000000000020) 683 #define PCS_MR_STATUS_RM_FLT UINT64_C(0x0000000000000010) 684 #define PCS_MR_STATUS_AN_ABIL UINT64_C(0x0000000000000008) 685 #define PCS_MR_STATUS_LNK_ST UINT64_C(0x0000000000000004) 686 #define PCS_MR_STATUS_RES_1_1 UINT64_C(0x0000000000000002) 687 #define PCS_MR_STATUS_EXTND UINT64_C(0x0000000000000001) 688 689 #define PCS_LINK_TIMER_COUNT_MASK UINT64_C(0x000000000000ffff) 690 691 #define PCS_MISC_CTL_SGMII UINT64_C(0x0000000000001000) 692 #define PCS_MISC_CTL_GMXENO UINT64_C(0x0000000000000800) 693 #define PCS_MISC_CTL_LOOPBCK2 UINT64_C(0x0000000000000400) 694 #define PCS_MISC_CTL_MAC_PHY UINT64_C(0x0000000000000200) 695 #define PCS_MISC_CTL_MODE UINT64_C(0x0000000000000100) 696 #define PCS_MISC_CTL_AN_OVRD UINT64_C(0x0000000000000080) 697 #define PCS_MISC_CTL_SAMP_PT UINT64_C(0x000000000000007f) 698 699 #endif /* _OCTEON_GMXREG_H_ */ 700