1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright(c) 2015-2020 Beijing WangXun Technology Co., Ltd. 3 * Copyright(c) 2010-2017 Intel Corporation 4 */ 5 6 #ifndef _TXGBE_REGS_H_ 7 #define _TXGBE_REGS_H_ 8 9 #define TXGBE_PVMBX_QSIZE (16) /* 16*4B */ 10 #define TXGBE_PVMBX_BSIZE (TXGBE_PVMBX_QSIZE * 4) 11 12 #define TXGBE_REMOVED(a) (0) 13 14 #define TXGBE_REG_DUMMY 0xFFFFFF 15 16 #define MS8(shift, mask) (((u8)(mask)) << (shift)) 17 #define LS8(val, shift, mask) (((u8)(val) & (u8)(mask)) << (shift)) 18 #define RS8(reg, shift, mask) (((u8)(reg) >> (shift)) & (u8)(mask)) 19 20 #define MS16(shift, mask) (((u16)(mask)) << (shift)) 21 #define LS16(val, shift, mask) (((u16)(val) & (u16)(mask)) << (shift)) 22 #define RS16(reg, shift, mask) (((u16)(reg) >> (shift)) & (u16)(mask)) 23 24 #define MS32(shift, mask) (((u32)(mask)) << (shift)) 25 #define LS32(val, shift, mask) (((u32)(val) & (u32)(mask)) << (shift)) 26 #define RS32(reg, shift, mask) (((u32)(reg) >> (shift)) & (u32)(mask)) 27 28 #define MS64(shift, mask) (((u64)(mask)) << (shift)) 29 #define LS64(val, shift, mask) (((u64)(val) & (u64)(mask)) << (shift)) 30 #define RS64(reg, shift, mask) (((u64)(reg) >> (shift)) & (u64)(mask)) 31 32 #define MS(shift, mask) MS32(shift, mask) 33 #define LS(val, shift, mask) LS32(val, shift, mask) 34 #define RS(reg, shift, mask) RS32(reg, shift, mask) 35 36 #define ROUND_UP(x, y) (((x) + (y) - 1) / (y) * (y)) 37 #define ROUND_DOWN(x, y) ((x) / (y) * (y)) 38 #define ROUND_OVER(x, maxbits, unitbits) \ 39 ((x) >= 1 << (maxbits) ? 0 : (x) >> (unitbits)) 40 41 /* autoc bits definition */ 42 #define TXGBE_AUTOC TXGBE_REG_DUMMY 43 #define TXGBE_AUTOC_FLU MS64(0, 0x1) 44 #define TXGBE_AUTOC_10G_PMA_PMD_MASK MS64(7, 0x3) /* parallel */ 45 #define TXGBE_AUTOC_10G_XAUI LS64(0, 7, 0x3) 46 #define TXGBE_AUTOC_10G_KX4 LS64(1, 7, 0x3) 47 #define TXGBE_AUTOC_10G_CX4 LS64(2, 7, 0x3) 48 #define TXGBE_AUTOC_10G_KR LS64(3, 7, 0x3) /* fixme */ 49 #define TXGBE_AUTOC_1G_PMA_PMD_MASK MS64(9, 0x7) 50 #define TXGBE_AUTOC_1G_BX LS64(0, 9, 0x7) 51 #define TXGBE_AUTOC_1G_KX LS64(1, 9, 0x7) 52 #define TXGBE_AUTOC_1G_SFI LS64(0, 9, 0x7) 53 #define TXGBE_AUTOC_1G_KX_BX LS64(1, 9, 0x7) 54 #define TXGBE_AUTOC_AN_RESTART MS64(12, 0x1) 55 #define TXGBE_AUTOC_LMS_MASK MS64(13, 0x7) 56 #define TXGBE_AUTOC_LMS_10G LS64(3, 13, 0x7) 57 #define TXGBE_AUTOC_LMS_KX4_KX_KR LS64(4, 13, 0x7) 58 #define TXGBE_AUTOC_LMS_SGMII_1G_100M LS64(5, 13, 0x7) 59 #define TXGBE_AUTOC_LMS_KX4_KX_KR_1G_AN LS64(6, 13, 0x7) 60 #define TXGBE_AUTOC_LMS_KX4_KX_KR_SGMII LS64(7, 13, 0x7) 61 #define TXGBE_AUTOC_LMS_1G_LINK_NO_AN LS64(0, 13, 0x7) 62 #define TXGBE_AUTOC_LMS_10G_LINK_NO_AN LS64(1, 13, 0x7) 63 #define TXGBE_AUTOC_LMS_1G_AN LS64(2, 13, 0x7) 64 #define TXGBE_AUTOC_LMS_KX4_AN LS64(4, 13, 0x7) 65 #define TXGBE_AUTOC_LMS_KX4_AN_1G_AN LS64(6, 13, 0x7) 66 #define TXGBE_AUTOC_LMS_ATTACH_TYPE LS64(7, 13, 0x7) 67 #define TXGBE_AUTOC_LMS_AN MS64(15, 0x7) 68 69 #define TXGBE_AUTOC_KR_SUPP MS64(16, 0x1) 70 #define TXGBE_AUTOC_FECR MS64(17, 0x1) 71 #define TXGBE_AUTOC_FECA MS64(18, 0x1) 72 #define TXGBE_AUTOC_AN_RX_ALIGN MS64(18, 0x1F) /* fixme */ 73 #define TXGBE_AUTOC_AN_RX_DRIFT MS64(23, 0x3) 74 #define TXGBE_AUTOC_AN_RX_LOOSE MS64(24, 0x3) 75 #define TXGBE_AUTOC_PD_TMR MS64(25, 0x3) 76 #define TXGBE_AUTOC_RF MS64(27, 0x1) 77 #define TXGBE_AUTOC_ASM_PAUSE MS64(29, 0x1) 78 #define TXGBE_AUTOC_SYM_PAUSE MS64(28, 0x1) 79 #define TXGBE_AUTOC_PAUSE MS64(28, 0x3) 80 #define TXGBE_AUTOC_KX_SUPP MS64(30, 0x1) 81 #define TXGBE_AUTOC_KX4_SUPP MS64(31, 0x1) 82 83 #define TXGBE_AUTOC_10GS_PMA_PMD_MASK MS64(48, 0x3) /* serial */ 84 #define TXGBE_AUTOC_10GS_KR LS64(0, 48, 0x3) 85 #define TXGBE_AUTOC_10GS_XFI LS64(1, 48, 0x3) 86 #define TXGBE_AUTOC_10GS_SFI LS64(2, 48, 0x3) 87 #define TXGBE_AUTOC_LINK_DIA_MASK MS64(60, 0x7) 88 #define TXGBE_AUTOC_LINK_DIA_D3_MASK LS64(5, 60, 0x7) 89 90 #define TXGBE_AUTOC_SPEED_MASK MS64(32, 0xFFFF) 91 #define TXGBD_AUTOC_SPEED(r) RS64(r, 32, 0xFFFF) 92 #define TXGBE_AUTOC_SPEED(v) LS64(v, 32, 0xFFFF) 93 #define TXGBE_LINK_SPEED_UNKNOWN 0 94 #define TXGBE_LINK_SPEED_10M_FULL 0x0002 95 #define TXGBE_LINK_SPEED_100M_FULL 0x0008 96 #define TXGBE_LINK_SPEED_1GB_FULL 0x0020 97 #define TXGBE_LINK_SPEED_2_5GB_FULL 0x0400 98 #define TXGBE_LINK_SPEED_5GB_FULL 0x0800 99 #define TXGBE_LINK_SPEED_10GB_FULL 0x0080 100 #define TXGBE_LINK_SPEED_40GB_FULL 0x0100 101 #define TXGBE_AUTOC_AUTONEG MS64(63, 0x1) 102 103 104 105 /* Hardware Datapath: 106 * RX: / Queue <- Filter \ 107 * Host | TC <=> SEC <=> MAC <=> PHY 108 * TX: \ Queue -> Filter / 109 * 110 * Packet Filter: 111 * RX: RSS < FDIR < Filter < Encrypt 112 * 113 * Macro Argument Naming: 114 * rp = ring pair [0,127] 115 * tc = traffic class [0,7] 116 * up = user priority [0,7] 117 * pi = pool index [0,63] 118 * r = register 119 * v = value 120 * s = shift 121 * m = mask 122 * i,j,k = array index 123 * H,L = high/low bits 124 * HI,LO = high/low state 125 */ 126 127 #define TXGBE_ETHPHYIF TXGBE_REG_DUMMY 128 #define TXGBE_ETHPHYIF_MDIO_ACT MS(1, 0x1) 129 #define TXGBE_ETHPHYIF_MDIO_MODE MS(2, 0x1) 130 #define TXGBE_ETHPHYIF_MDIO_BASE(r) RS(r, 3, 0x1F) 131 #define TXGBE_ETHPHYIF_MDIO_SHARED MS(13, 0x1) 132 #define TXGBE_ETHPHYIF_SPEED_10M MS(17, 0x1) 133 #define TXGBE_ETHPHYIF_SPEED_100M MS(18, 0x1) 134 #define TXGBE_ETHPHYIF_SPEED_1G MS(19, 0x1) 135 #define TXGBE_ETHPHYIF_SPEED_2_5G MS(20, 0x1) 136 #define TXGBE_ETHPHYIF_SPEED_10G MS(21, 0x1) 137 #define TXGBE_ETHPHYIF_SGMII_ENABLE MS(25, 0x1) 138 #define TXGBE_ETHPHYIF_INT_PHY_MODE MS(24, 0x1) 139 #define TXGBE_ETHPHYIF_IO_XPCS MS(30, 0x1) 140 #define TXGBE_ETHPHYIF_IO_EPHY MS(31, 0x1) 141 142 /****************************************************************************** 143 * Chip Registers 144 ******************************************************************************/ 145 /** 146 * Chip Status 147 **/ 148 #define TXGBE_PWR 0x010000 149 #define TXGBE_PWR_LAN(r) RS(r, 30, 0x3) 150 #define TXGBE_PWR_LAN_0 (1) 151 #define TXGBE_PWR_LAN_1 (2) 152 #define TXGBE_PWR_LAN_A (3) 153 #define TXGBE_CTL 0x010004 154 #define TXGBE_LOCKPF 0x010008 155 #define TXGBE_RST 0x01000C 156 #define TXGBE_RST_SW MS(0, 0x1) 157 #define TXGBE_RST_LAN(i) MS(((i) + 1), 0x1) 158 #define TXGBE_RST_FW MS(3, 0x1) 159 #define TXGBE_RST_ETH(i) MS(((i) + 29), 0x1) 160 #define TXGBE_RST_GLB MS(31, 0x1) 161 #define TXGBE_RST_DEFAULT (TXGBE_RST_SW | \ 162 TXGBE_RST_LAN(0) | \ 163 TXGBE_RST_LAN(1)) 164 165 #define TXGBE_STAT 0x010028 166 #define TXGBE_STAT_MNGINIT MS(0, 0x1) 167 #define TXGBE_STAT_MNGVETO MS(8, 0x1) 168 #define TXGBE_STAT_ECCLAN0 MS(16, 0x1) 169 #define TXGBE_STAT_ECCLAN1 MS(17, 0x1) 170 #define TXGBE_STAT_ECCMNG MS(18, 0x1) 171 #define TXGBE_STAT_ECCPCIE MS(19, 0x1) 172 #define TXGBE_STAT_ECCPCIW MS(20, 0x1) 173 #define TXGBE_RSTSTAT 0x010030 174 #define TXGBE_RSTSTAT_PROG MS(20, 0x1) 175 #define TXGBE_RSTSTAT_PREP MS(19, 0x1) 176 #define TXGBE_RSTSTAT_TYPE_MASK MS(16, 0x7) 177 #define TXGBE_RSTSTAT_TYPE(r) RS(r, 16, 0x7) 178 #define TXGBE_RSTSTAT_TYPE_PE LS(0, 16, 0x7) 179 #define TXGBE_RSTSTAT_TYPE_PWR LS(1, 16, 0x7) 180 #define TXGBE_RSTSTAT_TYPE_HOT LS(2, 16, 0x7) 181 #define TXGBE_RSTSTAT_TYPE_SW LS(3, 16, 0x7) 182 #define TXGBE_RSTSTAT_TYPE_FW LS(4, 16, 0x7) 183 #define TXGBE_RSTSTAT_TMRINIT_MASK MS(8, 0xFF) 184 #define TXGBE_RSTSTAT_TMRINIT(v) LS(v, 8, 0xFF) 185 #define TXGBE_RSTSTAT_TMRCNT_MASK MS(0, 0xFF) 186 #define TXGBE_RSTSTAT_TMRCNT(v) LS(v, 0, 0xFF) 187 #define TXGBE_PWRTMR 0x010034 188 189 /** 190 * SPI(Flash) 191 **/ 192 #define TXGBE_SPICMD 0x010104 193 #define TXGBE_SPICMD_ADDR(v) LS(v, 0, 0xFFFFFF) 194 #define TXGBE_SPICMD_CLK(v) LS(v, 25, 0x7) 195 #define TXGBE_SPICMD_CMD(v) LS(v, 28, 0x7) 196 #define TXGBE_SPIDAT 0x010108 197 #define TXGBE_SPIDAT_BYPASS MS(31, 0x1) 198 #define TXGBE_SPIDAT_STATUS(v) LS(v, 16, 0xFF) 199 #define TXGBE_SPIDAT_OPDONE MS(0, 0x1) 200 #define TXGBE_SPISTATUS 0x01010C 201 #define TXGBE_SPISTATUS_OPDONE MS(0, 0x1) 202 #define TXGBE_SPISTATUS_BYPASS MS(31, 0x1) 203 #define TXGBE_SPIUSRCMD 0x010110 204 #define TXGBE_SPICFG0 0x010114 205 #define TXGBE_SPICFG1 0x010118 206 #define TXGBE_FLASH 0x010120 207 #define TXGBE_FLASH_PERSTD MS(0, 0x1) 208 #define TXGBE_FLASH_PWRRSTD MS(1, 0x1) 209 #define TXGBE_FLASH_SWRSTD MS(7, 0x1) 210 #define TXGBE_FLASH_LANRSTD(i) MS(((i) + 9), 0x1) 211 #define TXGBE_SRAM 0x010124 212 #define TXGBE_SRAM_SZ(v) LS(v, 28, 0x7) 213 #define TXGBE_SRAMCTLECC 0x010130 214 #define TXGBE_SRAMINJECC 0x010134 215 #define TXGBE_SRAMECC 0x010138 216 217 /** 218 * Thermel Sensor 219 **/ 220 #define TXGBE_TSCTL 0x010300 221 #define TXGBE_TSCTL_MODE MS(31, 0x1) 222 #define TXGBE_TSREVAL 0x010304 223 #define TXGBE_TSREVAL_EA MS(0, 0x1) 224 #define TXGBE_TSDAT 0x010308 225 #define TXGBE_TSDAT_TMP(r) ((r) & 0x3FF) 226 #define TXGBE_TSDAT_VLD MS(16, 0x1) 227 #define TXGBE_TSALMWTRHI 0x01030C 228 #define TXGBE_TSALMWTRHI_VAL(v) (((v) & 0x3FF)) 229 #define TXGBE_TSALMWTRLO 0x010310 230 #define TXGBE_TSALMWTRLO_VAL(v) (((v) & 0x3FF)) 231 #define TXGBE_TSINTWTR 0x010314 232 #define TXGBE_TSINTWTR_HI MS(0, 0x1) 233 #define TXGBE_TSINTWTR_LO MS(1, 0x1) 234 #define TXGBE_TSALM 0x010318 235 #define TXGBE_TSALM_LO MS(0, 0x1) 236 #define TXGBE_TSALM_HI MS(1, 0x1) 237 238 /** 239 * Management 240 **/ 241 #define TXGBE_MNGTC 0x01CD10 242 #define TXGBE_MNGFWSYNC 0x01E000 243 #define TXGBE_MNGFWSYNC_REQ MS(0, 0x1) 244 #define TXGBE_MNGSWSYNC 0x01E004 245 #define TXGBE_MNGSWSYNC_REQ MS(0, 0x1) 246 #define TXGBE_SWSEM 0x01002C 247 #define TXGBE_SWSEM_PF MS(0, 0x1) 248 #define TXGBE_MNGSEM 0x01E008 249 #define TXGBE_MNGSEM_SW(v) LS(v, 0, 0xFFFF) 250 #define TXGBE_MNGSEM_SWPHY MS(0, 0x1) 251 #define TXGBE_MNGSEM_SWMBX MS(2, 0x1) 252 #define TXGBE_MNGSEM_SWFLASH MS(3, 0x1) 253 #define TXGBE_MNGSEM_FW(v) LS(v, 16, 0xFFFF) 254 #define TXGBE_MNGSEM_FWPHY MS(16, 0x1) 255 #define TXGBE_MNGSEM_FWMBX MS(18, 0x1) 256 #define TXGBE_MNGSEM_FWFLASH MS(19, 0x1) 257 #define TXGBE_MNGMBXCTL 0x01E044 258 #define TXGBE_MNGMBXCTL_SWRDY MS(0, 0x1) 259 #define TXGBE_MNGMBXCTL_SWACK MS(1, 0x1) 260 #define TXGBE_MNGMBXCTL_FWRDY MS(2, 0x1) 261 #define TXGBE_MNGMBXCTL_FWACK MS(3, 0x1) 262 #define TXGBE_MNGMBX 0x01E100 263 264 /****************************************************************************** 265 * Port Registers 266 ******************************************************************************/ 267 /* Port Control */ 268 #define TXGBE_PORTCTL 0x014400 269 #define TXGBE_PORTCTL_VLANEXT MS(0, 0x1) 270 #define TXGBE_PORTCTL_ETAG MS(1, 0x1) 271 #define TXGBE_PORTCTL_QINQ MS(2, 0x1) 272 #define TXGBE_PORTCTL_DRVLOAD MS(3, 0x1) 273 #define TXGBE_PORTCTL_UPLNK MS(4, 0x1) 274 #define TXGBE_PORTCTL_DCB MS(10, 0x1) 275 #define TXGBE_PORTCTL_NUMTC_MASK MS(11, 0x1) 276 #define TXGBE_PORTCTL_NUMTC_4 LS(0, 11, 0x1) 277 #define TXGBE_PORTCTL_NUMTC_8 LS(1, 11, 0x1) 278 #define TXGBE_PORTCTL_NUMVT_MASK MS(12, 0x3) 279 #define TXGBE_PORTCTL_NUMVT_16 LS(1, 12, 0x3) 280 #define TXGBE_PORTCTL_NUMVT_32 LS(2, 12, 0x3) 281 #define TXGBE_PORTCTL_NUMVT_64 LS(3, 12, 0x3) 282 #define TXGBE_PORTCTL_RSTDONE MS(14, 0x1) 283 #define TXGBE_PORTCTL_TEREDODIA MS(27, 0x1) 284 #define TXGBE_PORTCTL_GENEVEDIA MS(28, 0x1) 285 #define TXGBE_PORTCTL_VXLANGPEDIA MS(30, 0x1) 286 #define TXGBE_PORTCTL_VXLANDIA MS(31, 0x1) 287 288 #define TXGBE_PORT 0x014404 289 #define TXGBE_PORT_LINKUP MS(0, 0x1) 290 #define TXGBE_PORT_LINK10G MS(1, 0x1) 291 #define TXGBE_PORT_LINK1000M MS(2, 0x1) 292 #define TXGBE_PORT_LINK100M MS(3, 0x1) 293 #define TXGBE_PORT_LANID(r) RS(r, 8, 0x1) 294 #define TXGBE_EXTAG 0x014408 295 #define TXGBE_EXTAG_ETAG_MASK MS(0, 0xFFFF) 296 #define TXGBE_EXTAG_ETAG(v) LS(v, 0, 0xFFFF) 297 #define TXGBE_EXTAG_VLAN_MASK MS(16, 0xFFFF) 298 #define TXGBE_EXTAG_VLAN(v) LS(v, 16, 0xFFFF) 299 #define TXGBE_VXLANPORT 0x014410 300 #define TXGBE_VXLANPORTGPE 0x014414 301 #define TXGBE_GENEVEPORT 0x014418 302 #define TXGBE_TEREDOPORT 0x01441C 303 #define TXGBE_LEDCTL 0x014424 304 #define TXGBE_LEDCTL_SEL_MASK MS(0, 0xFFFF) 305 #define TXGBE_LEDCTL_ORD_MASK MS(16, 0xFFFF) 306 #define TXGBE_LEDCTL_ORD_SHIFT 16 307 #define TXGBE_LEDCTL_UP MS(0, 0x1) 308 #define TXGBE_LEDCTL_10G MS(1, 0x1) 309 #define TXGBE_LEDCTL_1G MS(2, 0x1) 310 #define TXGBE_LEDCTL_100M MS(3, 0x1) 311 #define TXGBE_LEDCTL_ACTIVE MS(4, 0x1) 312 #define TXGBE_TAGTPID(i) (0x014430 + (i) * 4) /* 0-3 */ 313 #define TXGBE_TAGTPID_LSB_MASK MS(0, 0xFFFF) 314 #define TXGBE_TAGTPID_LSB(v) LS(v, 0, 0xFFFF) 315 #define TXGBE_TAGTPID_MSB_MASK MS(16, 0xFFFF) 316 #define TXGBE_TAGTPID_MSB(v) LS(v, 16, 0xFFFF) 317 318 /** 319 * GPIO Control 320 * P0: link speed change 321 * P1: 322 * P2: 323 * P3: optical laser disable 324 * P4: 325 * P5: link speed selection 326 * P6: 327 * P7: external phy event 328 **/ 329 #define TXGBE_SDP 0x014800 330 #define TXGBE_SDP_0 MS(0, 0x1) 331 #define TXGBE_SDP_1 MS(1, 0x1) 332 #define TXGBE_SDP_2 MS(2, 0x1) 333 #define TXGBE_SDP_3 MS(3, 0x1) 334 #define TXGBE_SDP_4 MS(4, 0x1) 335 #define TXGBE_SDP_5 MS(5, 0x1) 336 #define TXGBE_SDP_6 MS(6, 0x1) 337 #define TXGBE_SDP_7 MS(7, 0x1) 338 #define TXGBE_SDPDIR 0x014804 339 #define TXGBE_SDPCTL 0x014808 340 #define TXGBE_SDPINTEA 0x014830 341 #define TXGBE_SDPINTMSK 0x014834 342 #define TXGBE_SDPINTTYP 0x014838 343 #define TXGBE_SDPINTPOL 0x01483C 344 #define TXGBE_SDPINT 0x014840 345 #define TXGBE_SDPINTDB 0x014848 346 #define TXGBE_SDPINTEND 0x01484C 347 #define TXGBE_SDPDAT 0x014850 348 #define TXGBE_SDPLVLSYN 0x014854 349 350 /** 351 * MDIO(PHY) 352 **/ 353 #define TXGBE_MDIOSCA 0x011200 354 #define TXGBE_MDIOSCA_REG(v) LS(v, 0, 0xFFFF) 355 #define TXGBE_MDIOSCA_PORT(v) LS(v, 16, 0x1F) 356 #define TXGBE_MDIOSCA_DEV(v) LS(v, 21, 0x1F) 357 #define TXGBE_MDIOSCD 0x011204 358 #define TXGBD_MDIOSCD_DAT(r) RS(r, 0, 0xFFFF) 359 #define TXGBE_MDIOSCD_DAT(v) LS(v, 0, 0xFFFF) 360 #define TXGBE_MDIOSCD_CMD_PREAD LS(1, 16, 0x3) 361 #define TXGBE_MDIOSCD_CMD_WRITE LS(2, 16, 0x3) 362 #define TXGBE_MDIOSCD_CMD_READ LS(3, 16, 0x3) 363 #define TXGBE_MDIOSCD_SADDR MS(18, 0x1) 364 #define TXGBE_MDIOSCD_CLOCK(v) LS(v, 19, 0x7) 365 #define TXGBE_MDIOSCD_BUSY MS(22, 0x1) 366 367 /** 368 * I2C (SFP) 369 **/ 370 #define TXGBE_I2CCTL 0x014900 371 #define TXGBE_I2CCTL_MAEA MS(0, 0x1) 372 #define TXGBE_I2CCTL_SPEED(v) LS(v, 1, 0x3) 373 #define TXGBE_I2CCTL_RESTART MS(5, 0x1) 374 #define TXGBE_I2CCTL_SLDA MS(6, 0x1) 375 #define TXGBE_I2CTGT 0x014904 376 #define TXGBE_I2CTGT_ADDR(v) LS(v, 0, 0x3FF) 377 #define TXGBE_I2CCMD 0x014910 378 #define TXGBE_I2CCMD_READ (MS(9, 0x1) | 0x100) 379 #define TXGBE_I2CCMD_WRITE (MS(9, 0x1)) 380 #define TXGBE_I2CSCLHITM 0x014914 381 #define TXGBE_I2CSCLLOTM 0x014918 382 #define TXGBE_I2CINT 0x014934 383 #define TXGBE_I2CINT_RXFULL MS(2, 0x1) 384 #define TXGBE_I2CINT_TXEMPTY MS(4, 0x1) 385 #define TXGBE_I2CINTMSK 0x014930 386 #define TXGBE_I2CRXFIFO 0x014938 387 #define TXGBE_I2CTXFIFO 0x01493C 388 #define TXGBE_I2CEA 0x01496C 389 #define TXGBE_I2CST 0x014970 390 #define TXGBE_I2CST_ACT MS(5, 0x1) 391 #define TXGBE_I2CSCLTM 0x0149AC 392 #define TXGBE_I2CSDATM 0x0149B0 393 394 /** 395 * TPH 396 **/ 397 #define TXGBE_TPHCFG 0x014F00 398 399 /****************************************************************************** 400 * Pool Registers 401 ******************************************************************************/ 402 #define TXGBE_POOLETHCTL(pl) (0x015600 + (pl) * 4) 403 #define TXGBE_POOLETHCTL_LBDIA MS(0, 0x1) 404 #define TXGBE_POOLETHCTL_LLBDIA MS(1, 0x1) 405 #define TXGBE_POOLETHCTL_LLB MS(2, 0x1) 406 #define TXGBE_POOLETHCTL_UCP MS(4, 0x1) 407 #define TXGBE_POOLETHCTL_ETP MS(5, 0x1) 408 #define TXGBE_POOLETHCTL_VLA MS(6, 0x1) 409 #define TXGBE_POOLETHCTL_VLP MS(7, 0x1) 410 #define TXGBE_POOLETHCTL_UTA MS(8, 0x1) 411 #define TXGBE_POOLETHCTL_MCHA MS(9, 0x1) 412 #define TXGBE_POOLETHCTL_UCHA MS(10, 0x1) 413 #define TXGBE_POOLETHCTL_BCA MS(11, 0x1) 414 #define TXGBE_POOLETHCTL_MCP MS(12, 0x1) 415 416 /* DMA Control */ 417 #define TXGBE_POOLRXENA(i) (0x012004 + (i) * 4) /* 0-1 */ 418 #define TXGBE_POOLRXDNA(i) (0x012060 + (i) * 4) /* 0-1 */ 419 #define TXGBE_POOLTXENA(i) (0x018004 + (i) * 4) /* 0-1 */ 420 #define TXGBE_POOLTXDSA(i) (0x0180A0 + (i) * 4) /* 0-1 */ 421 #define TXGBE_POOLTXLBET(i) (0x018050 + (i) * 4) /* 0-1 */ 422 #define TXGBE_POOLTXASET(i) (0x018058 + (i) * 4) /* 0-1 */ 423 #define TXGBE_POOLTXASMAC(i) (0x018060 + (i) * 4) /* 0-1 */ 424 #define TXGBE_POOLTXASVLAN(i) (0x018070 + (i) * 4) /* 0-1 */ 425 #define TXGBE_POOLDROPSWBK(i) (0x0151C8 + (i) * 4) /* 0-1 */ 426 427 #define TXGBE_POOLTAG(pl) (0x018100 + (pl) * 4) 428 #define TXGBE_POOLTAG_VTAG(v) LS(v, 0, 0xFFFF) 429 #define TXGBE_POOLTAG_VTAG_MASK MS(0, 0xFFFF) 430 #define TXGBD_POOLTAG_VTAG_UP(r) RS(r, 13, 0x7) 431 #define TXGBE_POOLTAG_TPIDSEL(v) LS(v, 24, 0x7) 432 #define TXGBE_POOLTAG_ETAG_MASK MS(27, 0x3) 433 #define TXGBE_POOLTAG_ETAG LS(2, 27, 0x3) 434 #define TXGBE_POOLTAG_ACT_MASK MS(30, 0x3) 435 #define TXGBE_POOLTAG_ACT_ALWAYS LS(1, 30, 0x3) 436 #define TXGBE_POOLTAG_ACT_NEVER LS(2, 30, 0x3) 437 #define TXGBE_POOLTXARB 0x018204 438 #define TXGBE_POOLTXARB_WRR MS(1, 0x1) 439 #define TXGBE_POOLETAG(pl) (0x018700 + (pl) * 4) 440 441 /* RSS Hash */ 442 #define TXGBE_POOLRSS(pl) (0x019300 + (pl) * 4) 443 #define TXGBE_POOLRSS_L4HDR MS(1, 0x1) 444 #define TXGBE_POOLRSS_L3HDR MS(2, 0x1) 445 #define TXGBE_POOLRSS_L2HDR MS(3, 0x1) 446 #define TXGBE_POOLRSS_L2TUN MS(4, 0x1) 447 #define TXGBE_POOLRSS_TUNHDR MS(5, 0x1) 448 #define TXGBE_POOLRSSKEY(pl, i) (0x01A000 + (pl) * 0x40 + (i) * 4) 449 #define TXGBE_POOLRSSMAP(pl, i) (0x01B000 + (pl) * 0x40 + (i) * 4) 450 451 /****************************************************************************** 452 * Packet Buffer 453 ******************************************************************************/ 454 /* Flow Control */ 455 #define TXGBE_FCXOFFTM(i) (0x019200 + (i) * 4) /* 0-3 */ 456 #define TXGBE_FCWTRLO(tc) (0x019220 + (tc) * 4) 457 #define TXGBE_FCWTRLO_TH(v) LS(v, 10, 0x1FF) /* KB */ 458 #define TXGBE_FCWTRLO_XON MS(31, 0x1) 459 #define TXGBE_FCWTRHI(tc) (0x019260 + (tc) * 4) 460 #define TXGBE_FCWTRHI_TH(v) LS(v, 10, 0x1FF) /* KB */ 461 #define TXGBE_FCWTRHI_XOFF MS(31, 0x1) 462 #define TXGBE_RXFCRFSH 0x0192A0 463 #define TXGBE_RXFCFSH_TIME(v) LS(v, 0, 0xFFFF) 464 #define TXGBE_FCSTAT 0x01CE00 465 #define TXGBE_FCSTAT_DLNK(tc) MS((tc), 0x1) 466 #define TXGBE_FCSTAT_ULNK(tc) MS((tc) + 8, 0x1) 467 468 #define TXGBE_RXFCCFG 0x011090 469 #define TXGBE_RXFCCFG_FC MS(0, 0x1) 470 #define TXGBE_RXFCCFG_PFC MS(8, 0x1) 471 #define TXGBE_TXFCCFG 0x0192A4 472 #define TXGBE_TXFCCFG_FC MS(3, 0x1) 473 #define TXGBE_TXFCCFG_PFC MS(4, 0x1) 474 475 /* Data Buffer */ 476 #define TXGBE_PBRXCTL 0x019000 477 #define TXGBE_PBRXCTL_ST MS(0, 0x1) 478 #define TXGBE_PBRXCTL_ENA MS(31, 0x1) 479 #define TXGBE_PBRXUP2TC 0x019008 480 #define TXGBE_PBTXUP2TC 0x01C800 481 #define TXGBE_DCBUP2TC_MAP(tc, v) LS(v, 3 * (tc), 0x7) 482 #define TXGBE_DCBUP2TC_DEC(tc, r) RS(r, 3 * (tc), 0x7) 483 #define TXGBE_PBRXSIZE(tc) (0x019020 + (tc) * 4) 484 #define TXGBE_PBRXSIZE_KB(v) LS(v, 10, 0x3FF) 485 486 #define TXGBE_PBRXOFTMR 0x019094 487 #define TXGBE_PBRXDBGCMD 0x019090 488 #define TXGBE_PBRXDBGDAT(tc) (0x0190A0 + (tc) * 4) 489 #define TXGBE_PBTXDMATH(tc) (0x018020 + (tc) * 4) 490 #define TXGBE_PBTXSIZE(tc) (0x01CC00 + (tc) * 4) 491 492 /* LLI */ 493 #define TXGBE_PBRXLLI 0x19080 494 #define TXGBE_PBRXLLI_SZLT(v) LS(v, 0, 0xFFF) 495 #define TXGBE_PBRXLLI_UPLT(v) LS(v, 16, 0x7) 496 #define TXGBE_PBRXLLI_UPEA MS(19, 0x1) 497 #define TXGBE_PBRXLLI_CNM MS(20, 0x1) 498 499 /* Port Arbiter(QoS) */ 500 #define TXGBE_PARBTXCTL 0x01CD00 501 #define TXGBE_PARBTXCTL_SP MS(5, 0x1) 502 #define TXGBE_PARBTXCTL_DA MS(6, 0x1) 503 #define TXGBE_PARBTXCTL_RECYC MS(8, 0x1) 504 #define TXGBE_PARBTXCFG(tc) (0x01CD20 + (tc) * 4) 505 #define TXGBE_PARBTXCFG_CRQ(v) LS(v, 0, 0x1FF) 506 #define TXGBE_PARBTXCFG_BWG(v) LS(v, 9, 0x7) 507 #define TXGBE_PARBTXCFG_MCL(v) LS(v, 12, 0xFFF) 508 #define TXGBE_PARBTXCFG_GSP MS(30, 0x1) 509 #define TXGBE_PARBTXCFG_LSP MS(31, 0x1) 510 511 /****************************************************************************** 512 * Queue Registers 513 ******************************************************************************/ 514 /* Queue Control */ 515 #define TXGBE_QPRXDROP(i) (0x012080 + (i) * 4) /* 0-3 */ 516 #define TXGBE_QPRXSTRPVLAN(i) (0x012090 + (i) * 4) /* 0-3 */ 517 #define TXGBE_QPTXLLI(i) (0x018040 + (i) * 4) /* 0-3 */ 518 519 /* Queue Arbiter(QoS) */ 520 #define TXGBE_QARBRXCTL 0x012000 521 #define TXGBE_QARBRXCTL_RC MS(1, 0x1) 522 #define TXGBE_QARBRXCTL_WSP MS(2, 0x1) 523 #define TXGBE_QARBRXCTL_DA MS(6, 0x1) 524 #define TXGBE_QARBRXCFG(tc) (0x012040 + (tc) * 4) 525 #define TXGBE_QARBRXCFG_CRQ(v) LS(v, 0, 0x1FF) 526 #define TXGBE_QARBRXCFG_BWG(v) LS(v, 9, 0x7) 527 #define TXGBE_QARBRXCFG_MCL(v) LS(v, 12, 0xFFF) 528 #define TXGBE_QARBRXCFG_GSP MS(30, 0x1) 529 #define TXGBE_QARBRXCFG_LSP MS(31, 0x1) 530 #define TXGBE_QARBRXTC 0x0194F8 531 #define TXGBE_QARBRXTC_RR MS(0, 0x1) 532 533 #define TXGBE_QARBTXCTL 0x018200 534 #define TXGBE_QARBTXCTL_WSP MS(1, 0x1) 535 #define TXGBE_QARBTXCTL_RECYC MS(4, 0x1) 536 #define TXGBE_QARBTXCTL_DA MS(6, 0x1) 537 #define TXGBE_QARBTXCFG(tc) (0x018220 + (tc) * 4) 538 #define TXGBE_QARBTXCFG_CRQ(v) LS(v, 0, 0x1FF) 539 #define TXGBE_QARBTXCFG_BWG(v) LS(v, 9, 0x7) 540 #define TXGBE_QARBTXCFG_MCL(v) LS(v, 12, 0xFFF) 541 #define TXGBE_QARBTXCFG_GSP MS(30, 0x1) 542 #define TXGBE_QARBTXCFG_LSP MS(31, 0x1) 543 #define TXGBE_QARBTXMMW 0x018208 544 #define TXGBE_QARBTXMMW_DEF (4) 545 #define TXGBE_QARBTXMMW_JF (20) 546 #define TXGBE_QARBTXRATEI 0x01820C 547 #define TXGBE_QARBTXRATE 0x018404 548 #define TXGBE_QARBTXRATE_MIN(v) LS(v, 0, 0x3FFF) 549 #define TXGBE_QARBTXRATE_MAX(v) LS(v, 16, 0x3FFF) 550 #define TXGBE_QARBTXCRED(rp) (0x018500 + (rp) * 4) 551 552 /* QCN */ 553 #define TXGBE_QCNADJ 0x018210 554 #define TXGBE_QCNRP 0x018400 555 #define TXGBE_QCNRPRATE 0x018404 556 #define TXGBE_QCNRPADJ 0x018408 557 #define TXGBE_QCNRPRLD 0x01840C 558 559 /* Misc Control */ 560 #define TXGBE_RSECCTL 0x01200C 561 #define TXGBE_RSECCTL_TSRSC MS(0, 0x1) 562 #define TXGBE_DMATXCTRL 0x018000 563 #define TXGBE_DMATXCTRL_ENA MS(0, 0x1) 564 #define TXGBE_DMATXCTRL_TPID_MASK MS(16, 0xFFFF) 565 #define TXGBE_DMATXCTRL_TPID(v) LS(v, 16, 0xFFFF) 566 567 /****************************************************************************** 568 * Packet Filter (L2-7) 569 ******************************************************************************/ 570 /** 571 * Receive Scaling 572 **/ 573 #define TXGBE_RSSTBL(i) (0x019400 + (i) * 4) /* 32 */ 574 #define TXGBE_RSSKEY(i) (0x019480 + (i) * 4) /* 10 */ 575 #define TXGBE_RSSPBHASH 0x0194F0 576 #define TXGBE_RSSPBHASH_BITS(tc, v) LS(v, 3 * (tc), 0x7) 577 #define TXGBE_RACTL 0x0194F4 578 #define TXGBE_RACTL_RSSMKEY MS(0, 0x1) 579 #define TXGBE_RACTL_RSSENA MS(2, 0x1) 580 #define TXGBE_RACTL_RSSMASK MS(16, 0xFFFF) 581 #define TXGBE_RACTL_RSSIPV4TCP MS(16, 0x1) 582 #define TXGBE_RACTL_RSSIPV4 MS(17, 0x1) 583 #define TXGBE_RACTL_RSSIPV6 MS(20, 0x1) 584 #define TXGBE_RACTL_RSSIPV6TCP MS(21, 0x1) 585 #define TXGBE_RACTL_RSSIPV4UDP MS(22, 0x1) 586 #define TXGBE_RACTL_RSSIPV6UDP MS(23, 0x1) 587 588 /** 589 * Flow Director 590 **/ 591 #define PERFECT_BUCKET_64KB_HASH_MASK 0x07FF /* 11 bits */ 592 #define PERFECT_BUCKET_128KB_HASH_MASK 0x0FFF /* 12 bits */ 593 #define PERFECT_BUCKET_256KB_HASH_MASK 0x1FFF /* 13 bits */ 594 #define SIG_BUCKET_64KB_HASH_MASK 0x1FFF /* 13 bits */ 595 #define SIG_BUCKET_128KB_HASH_MASK 0x3FFF /* 14 bits */ 596 #define SIG_BUCKET_256KB_HASH_MASK 0x7FFF /* 15 bits */ 597 598 #define TXGBE_FDIRCTL 0x019500 599 #define TXGBE_FDIRCTL_BUF_MASK MS(0, 0x3) 600 #define TXGBE_FDIRCTL_BUF_64K LS(1, 0, 0x3) 601 #define TXGBE_FDIRCTL_BUF_128K LS(2, 0, 0x3) 602 #define TXGBE_FDIRCTL_BUF_256K LS(3, 0, 0x3) 603 #define TXGBD_FDIRCTL_BUF_BYTE(r) (1 << (15 + RS(r, 0, 0x3))) 604 #define TXGBE_FDIRCTL_INITDONE MS(3, 0x1) 605 #define TXGBE_FDIRCTL_PERFECT MS(4, 0x1) 606 #define TXGBE_FDIRCTL_REPORT_MASK MS(5, 0x7) 607 #define TXGBE_FDIRCTL_REPORT_MATCH LS(1, 5, 0x7) 608 #define TXGBE_FDIRCTL_REPORT_ALWAYS LS(5, 5, 0x7) 609 #define TXGBE_FDIRCTL_DROPQP_MASK MS(8, 0x7F) 610 #define TXGBE_FDIRCTL_DROPQP(v) LS(v, 8, 0x7F) 611 #define TXGBE_FDIRCTL_HASHBITS_MASK LS(20, 0xF) 612 #define TXGBE_FDIRCTL_HASHBITS(v) LS(v, 20, 0xF) 613 #define TXGBE_FDIRCTL_MAXLEN(v) LS(v, 24, 0xF) 614 #define TXGBE_FDIRCTL_FULLTHR(v) LS(v, 28, 0xF) 615 #define TXGBE_FDIRFLEXCFG(i) (0x019580 + (i) * 4) /* 0-15 */ 616 #define TXGBD_FDIRFLEXCFG_ALL(r, i) RS(0, (i) << 3, 0xFF) 617 #define TXGBE_FDIRFLEXCFG_ALL(v, i) LS(v, (i) << 3, 0xFF) 618 #define TXGBE_FDIRFLEXCFG_BASE_MAC LS(0, 0, 0x3) 619 #define TXGBE_FDIRFLEXCFG_BASE_L2 LS(1, 0, 0x3) 620 #define TXGBE_FDIRFLEXCFG_BASE_L3 LS(2, 0, 0x3) 621 #define TXGBE_FDIRFLEXCFG_BASE_PAY LS(3, 0, 0x3) 622 #define TXGBE_FDIRFLEXCFG_DIA MS(2, 0x1) 623 #define TXGBE_FDIRFLEXCFG_OFST_MASK MS(3, 0x1F) 624 #define TXGBD_FDIRFLEXCFG_OFST(r) RS(r, 3, 0x1F) 625 #define TXGBE_FDIRFLEXCFG_OFST(v) LS(v, 3, 0x1F) 626 #define TXGBE_FDIRBKTHKEY 0x019568 627 #define TXGBE_FDIRSIGHKEY 0x01956C 628 629 /* Common Mask */ 630 #define TXGBE_FDIRDIP4MSK 0x01953C 631 #define TXGBE_FDIRSIP4MSK 0x019540 632 #define TXGBE_FDIRIP6MSK 0x019574 633 #define TXGBE_FDIRIP6MSK_SRC(v) LS(v, 0, 0xFFFF) 634 #define TXGBE_FDIRIP6MSK_DST(v) LS(v, 16, 0xFFFF) 635 #define TXGBE_FDIRTCPMSK 0x019544 636 #define TXGBE_FDIRTCPMSK_SRC(v) LS(v, 0, 0xFFFF) 637 #define TXGBE_FDIRTCPMSK_DST(v) LS(v, 16, 0xFFFF) 638 #define TXGBE_FDIRUDPMSK 0x019548 639 #define TXGBE_FDIRUDPMSK_SRC(v) LS(v, 0, 0xFFFF) 640 #define TXGBE_FDIRUDPMSK_DST(v) LS(v, 16, 0xFFFF) 641 #define TXGBE_FDIRSCTPMSK 0x019560 642 #define TXGBE_FDIRSCTPMSK_SRC(v) LS(v, 0, 0xFFFF) 643 #define TXGBE_FDIRSCTPMSK_DST(v) LS(v, 16, 0xFFFF) 644 #define TXGBE_FDIRMSK 0x019570 645 #define TXGBE_FDIRMSK_POOL MS(2, 0x1) 646 #define TXGBE_FDIRMSK_L4P MS(3, 0x1) 647 #define TXGBE_FDIRMSK_L3P MS(4, 0x1) 648 #define TXGBE_FDIRMSK_TUNTYPE MS(5, 0x1) 649 #define TXGBE_FDIRMSK_TUNIP MS(6, 0x1) 650 #define TXGBE_FDIRMSK_TUNPKT MS(7, 0x1) 651 652 /* Programming Interface */ 653 #define TXGBE_FDIRPIPORT 0x019520 654 #define TXGBE_FDIRPIPORT_SRC(v) LS(v, 0, 0xFFFF) 655 #define TXGBE_FDIRPIPORT_DST(v) LS(v, 16, 0xFFFF) 656 #define TXGBE_FDIRPISIP6(i) (0x01950C + (i) * 4) /* [0,2] */ 657 #define TXGBE_FDIRPISIP4 0x019518 658 #define TXGBE_FDIRPIDIP4 0x01951C 659 #define TXGBE_FDIRPIFLEX 0x019524 660 #define TXGBE_FDIRPIFLEX_PTYPE(v) LS(v, 0, 0xFF) 661 #define TXGBE_FDIRPIFLEX_FLEX(v) LS(v, 16, 0xFFFF) 662 #define TXGBE_FDIRPIHASH 0x019528 663 #define TXGBE_FDIRPIHASH_BKT(v) LS(v, 0, 0x7FFF) 664 #define TXGBE_FDIRPIHASH_VLD MS(15, 0x1) 665 #define TXGBE_FDIRPIHASH_SIG(v) LS(v, 16, 0x7FFF) 666 #define TXGBE_FDIRPIHASH_IDX(v) LS(v, 16, 0xFFFF) 667 #define TXGBE_FDIRPICMD 0x01952C 668 #define TXGBE_FDIRPICMD_OP_MASK MS(0, 0x3) 669 #define TXGBE_FDIRPICMD_OP_ADD LS(1, 0, 0x3) 670 #define TXGBE_FDIRPICMD_OP_REM LS(2, 0, 0x3) 671 #define TXGBE_FDIRPICMD_OP_QRY LS(3, 0, 0x3) 672 #define TXGBE_FDIRPICMD_VLD MS(2, 0x1) 673 #define TXGBE_FDIRPICMD_UPD MS(3, 0x1) 674 #define TXGBE_FDIRPICMD_DIP6 MS(4, 0x1) 675 #define TXGBE_FDIRPICMD_FT(v) LS(v, 5, 0x3) 676 #define TXGBE_FDIRPICMD_FT_MASK MS(5, 0x3) 677 #define TXGBE_FDIRPICMD_FT_UDP LS(1, 5, 0x3) 678 #define TXGBE_FDIRPICMD_FT_TCP LS(2, 5, 0x3) 679 #define TXGBE_FDIRPICMD_FT_SCTP LS(3, 5, 0x3) 680 #define TXGBE_FDIRPICMD_IP6 MS(7, 0x1) 681 #define TXGBE_FDIRPICMD_CLR MS(8, 0x1) 682 #define TXGBE_FDIRPICMD_DROP MS(9, 0x1) 683 #define TXGBE_FDIRPICMD_LLI MS(10, 0x1) 684 #define TXGBE_FDIRPICMD_LAST MS(11, 0x1) 685 #define TXGBE_FDIRPICMD_COLLI MS(12, 0x1) 686 #define TXGBE_FDIRPICMD_QPENA MS(15, 0x1) 687 #define TXGBE_FDIRPICMD_QP(v) LS(v, 16, 0x7F) 688 #define TXGBE_FDIRPICMD_POOL(v) LS(v, 24, 0x3F) 689 690 /** 691 * 5-tuple Filter 692 **/ 693 #define TXGBE_5TFSADDR(i) (0x019600 + (i) * 4) /* 0-127 */ 694 #define TXGBE_5TFDADDR(i) (0x019800 + (i) * 4) /* 0-127 */ 695 #define TXGBE_5TFPORT(i) (0x019A00 + (i) * 4) /* 0-127 */ 696 #define TXGBE_5TFPORT_SRC(v) LS(v, 0, 0xFFFF) 697 #define TXGBE_5TFPORT_DST(v) LS(v, 16, 0xFFFF) 698 #define TXGBE_5TFCTL0(i) (0x019C00 + (i) * 4) /* 0-127 */ 699 #define TXGBE_5TFCTL0_PROTO(v) LS(v, 0, 0x3) 700 enum txgbe_5tuple_protocol { 701 TXGBE_5TF_PROT_TCP = 0, 702 TXGBE_5TF_PROT_UDP, 703 TXGBE_5TF_PROT_SCTP, 704 TXGBE_5TF_PROT_NONE, 705 }; 706 #define TXGBE_5TFCTL0_PRI(v) LS(v, 2, 0x7) 707 #define TXGBE_5TFCTL0_POOL(v) LS(v, 8, 0x3F) 708 #define TXGBE_5TFCTL0_MASK MS(25, 0x3F) 709 #define TXGBE_5TFCTL0_MSADDR MS(25, 0x1) 710 #define TXGBE_5TFCTL0_MDADDR MS(26, 0x1) 711 #define TXGBE_5TFCTL0_MSPORT MS(27, 0x1) 712 #define TXGBE_5TFCTL0_MDPORT MS(28, 0x1) 713 #define TXGBE_5TFCTL0_MPROTO MS(29, 0x1) 714 #define TXGBE_5TFCTL0_MPOOL MS(30, 0x1) 715 #define TXGBE_5TFCTL0_ENA MS(31, 0x1) 716 #define TXGBE_5TFCTL1(i) (0x019E00 + (i) * 4) /* 0-127 */ 717 #define TXGBE_5TFCTL1_CHKSZ MS(12, 0x1) 718 #define TXGBE_5TFCTL1_LLI MS(20, 0x1) 719 #define TXGBE_5TFCTL1_QP(v) LS(v, 21, 0x7F) 720 721 /** 722 * Storm Control 723 **/ 724 #define TXGBE_STRMCTL 0x015004 725 #define TXGBE_STRMCTL_MCPNSH MS(0, 0x1) 726 #define TXGBE_STRMCTL_MCDROP MS(1, 0x1) 727 #define TXGBE_STRMCTL_BCPNSH MS(2, 0x1) 728 #define TXGBE_STRMCTL_BCDROP MS(3, 0x1) 729 #define TXGBE_STRMCTL_DFTPOOL MS(4, 0x1) 730 #define TXGBE_STRMCTL_ITVL(v) LS(v, 8, 0x3FF) 731 #define TXGBE_STRMTH 0x015008 732 #define TXGBE_STRMTH_MC(v) LS(v, 0, 0xFFFF) 733 #define TXGBE_STRMTH_BC(v) LS(v, 16, 0xFFFF) 734 735 /****************************************************************************** 736 * Ether Flow 737 ******************************************************************************/ 738 #define TXGBE_PSRCTL 0x015000 739 #define TXGBE_PSRCTL_TPE MS(4, 0x1) 740 #define TXGBE_PSRCTL_ADHF12_MASK MS(5, 0x3) 741 #define TXGBE_PSRCTL_ADHF12(v) LS(v, 5, 0x3) 742 #define TXGBE_PSRCTL_UCHFENA MS(7, 0x1) 743 #define TXGBE_PSRCTL_MCHFENA MS(7, 0x1) 744 #define TXGBE_PSRCTL_MCP MS(8, 0x1) 745 #define TXGBE_PSRCTL_UCP MS(9, 0x1) 746 #define TXGBE_PSRCTL_BCA MS(10, 0x1) 747 #define TXGBE_PSRCTL_L4CSUM MS(12, 0x1) 748 #define TXGBE_PSRCTL_PCSD MS(13, 0x1) 749 #define TXGBE_PSRCTL_RSCPUSH MS(15, 0x1) 750 #define TXGBE_PSRCTL_RSCDIA MS(16, 0x1) 751 #define TXGBE_PSRCTL_RSCACK MS(17, 0x1) 752 #define TXGBE_PSRCTL_LBENA MS(18, 0x1) 753 #define TXGBE_FRMSZ 0x015020 754 #define TXGBE_FRMSZ_MAX_MASK MS(0, 0xFFFF) 755 #define TXGBE_FRMSZ_MAX(v) LS((v) + 4, 0, 0xFFFF) 756 #define TXGBE_VLANCTL 0x015088 757 #define TXGBE_VLANCTL_TPID_MASK MS(0, 0xFFFF) 758 #define TXGBE_VLANCTL_TPID(v) LS(v, 0, 0xFFFF) 759 #define TXGBE_VLANCTL_CFI MS(28, 0x1) 760 #define TXGBE_VLANCTL_CFIENA MS(29, 0x1) 761 #define TXGBE_VLANCTL_VFE MS(30, 0x1) 762 #define TXGBE_POOLCTL 0x0151B0 763 #define TXGBE_POOLCTL_DEFDSA MS(29, 0x1) 764 #define TXGBE_POOLCTL_RPLEN MS(30, 0x1) 765 #define TXGBE_POOLCTL_MODE_MASK MS(16, 0x3) 766 #define TXGBE_PSRPOOL_MODE_MAC LS(0, 16, 0x3) 767 #define TXGBE_PSRPOOL_MODE_ETAG LS(1, 16, 0x3) 768 #define TXGBE_POOLCTL_DEFPL(v) LS(v, 7, 0x3F) 769 #define TXGBE_POOLCTL_DEFPL_MASK MS(7, 0x3F) 770 771 #define TXGBE_ETFLT(i) (0x015128 + (i) * 4) /* 0-7 */ 772 #define TXGBE_ETFLT_ETID(v) LS(v, 0, 0xFFFF) 773 #define TXGBE_ETFLT_ETID_MASK MS(0, 0xFFFF) 774 #define TXGBE_ETFLT_POOL(v) LS(v, 20, 0x3FF) 775 #define TXGBE_ETFLT_POOLENA MS(26, 0x1) 776 #define TXGBE_ETFLT_FCOE MS(27, 0x1) 777 #define TXGBE_ETFLT_TXAS MS(29, 0x1) 778 #define TXGBE_ETFLT_1588 MS(30, 0x1) 779 #define TXGBE_ETFLT_ENA MS(31, 0x1) 780 #define TXGBE_ETCLS(i) (0x019100 + (i) * 4) /* 0-7 */ 781 #define TXGBE_ETCLS_QPID(v) LS(v, 16, 0x7F) 782 #define TXGBD_ETCLS_QPID(r) RS(r, 16, 0x7F) 783 #define TXGBE_ETCLS_LLI MS(29, 0x1) 784 #define TXGBE_ETCLS_QENA MS(31, 0x1) 785 #define TXGBE_SYNCLS 0x019130 786 #define TXGBE_SYNCLS_ENA MS(0, 0x1) 787 #define TXGBE_SYNCLS_QPID(v) LS(v, 1, 0x7F) 788 #define TXGBD_SYNCLS_QPID(r) RS(r, 1, 0x7F) 789 #define TXGBE_SYNCLS_QPID_MASK MS(1, 0x7F) 790 #define TXGBE_SYNCLS_HIPRIO MS(31, 0x1) 791 792 /* MAC & VLAN & NVE */ 793 #define TXGBE_PSRVLANIDX 0x016230 /* 0-63 */ 794 #define TXGBE_PSRVLAN 0x016220 795 #define TXGBE_PSRVLAN_VID(v) LS(v, 0, 0xFFF) 796 #define TXGBE_PSRVLAN_EA MS(31, 0x1) 797 #define TXGBE_PSRVLANPLM(i) (0x016224 + (i) * 4) /* 0-1 */ 798 799 #define TXGBE_PSRNVEI 0x016260 /* 256 */ 800 #define TXGBE_PSRNVEADDR(i) (0x016240 + (i) * 4) /* 0-3 */ 801 #define TXGBE_PSRNVE 0x016250 802 #define TXGBE_PSRNVE_KEY(v) LS(v, 0, 0xFFFFFF) 803 #define TXGBE_PSRNVE_TYPE(v) LS(v, 24, 0x3) 804 #define TXGBE_PSRNVECTL 0x016254 805 #define TXGBE_PSRNVECTL_MKEY MS(0, 0x1) 806 #define TXGBE_PSRNVECTL_MADDR MS(1, 0x1) 807 #define TXGBE_PSRNVECTL_SEL(v) LS(v, 8, 0x3) 808 #define TXGBE_PSRNVECTL_SEL_ODIP (0) 809 #define TXGBE_PSRNVECTL_SEL_IDMAC (1) 810 #define TXGBE_PSRNVECTL_SEL_IDIP (2) 811 #define TXGBE_PSRNVECTL_EA MS(31, 0x1) 812 #define TXGBE_PSRNVEPM(i) (0x016258 + (i) * 4) /* 0-1 */ 813 814 /** 815 * FCoE 816 **/ 817 #define TXGBE_FCCTL 0x015100 818 #define TXGBE_FCCTL_LLI MS(0, 0x1) 819 #define TXGBE_FCCTL_SAVBAD MS(1, 0x1) 820 #define TXGBE_FCCTL_FRSTRDH MS(2, 0x1) 821 #define TXGBE_FCCTL_LSEQH MS(3, 0x1) 822 #define TXGBE_FCCTL_ALLH MS(4, 0x1) 823 #define TXGBE_FCCTL_FSEQH MS(5, 0x1) 824 #define TXGBE_FCCTL_ICRC MS(6, 0x1) 825 #define TXGBE_FCCTL_CRCBO MS(7, 0x1) 826 #define TXGBE_FCCTL_VER(v) LS(v, 8, 0xF) 827 #define TXGBE_FCRSSCTL 0x019140 828 #define TXGBE_FCRSSCTL_EA MS(0, 0x1) 829 #define TXGBE_FCRSSTBL(i) (0x019160 + (i) * 4) /* 0-7 */ 830 #define TXGBE_FCRSSTBL_QUE(v) LS(v, 0, 0x7F) 831 832 #define TXGBE_FCRXEOF 0x015158 833 #define TXGBE_FCRXSOF 0x0151F8 834 #define TXGBE_FCTXEOF 0x018384 835 #define TXGBE_FCTXSOF 0x018380 836 #define TXGBE_FCRXFCDESC(i) (0x012410 + (i) * 4) /* 0-1 */ 837 #define TXGBE_FCRXFCBUF 0x012418 838 #define TXGBE_FCRXFCDDP 0x012420 839 #define TXGBE_FCRXCTXINVL(i) (0x0190C0 + (i) * 4) /* 0-15 */ 840 841 /* Programming Interface */ 842 #define TXGBE_FCCTXT 0x015110 843 #define TXGBE_FCCTXT_ID(v) (((v) & 0x1FF)) /* 512 */ 844 #define TXGBE_FCCTXT_REVA LS(0x1, 13, 0x1) 845 #define TXGBE_FCCTXT_WREA LS(0x1, 14, 0x1) 846 #define TXGBE_FCCTXT_RDEA LS(0x1, 15, 0x1) 847 #define TXGBE_FCCTXTCTL 0x015108 848 #define TXGBE_FCCTXTCTL_EA MS(0, 0x1) 849 #define TXGBE_FCCTXTCTL_FIRST MS(1, 0x1) 850 #define TXGBE_FCCTXTCTL_WR MS(2, 0x1) 851 #define TXGBE_FCCTXTCTL_SEQID(v) LS(v, 8, 0xFF) 852 #define TXGBE_FCCTXTCTL_SEQNR(v) LS(v, 16, 0xFFFF) 853 #define TXGBE_FCCTXTPARM 0x0151D8 854 855 /** 856 * Mirror Rules 857 **/ 858 #define TXGBE_MIRRCTL(i) (0x015B00 + (i) * 4) 859 #define TXGBE_MIRRCTL_POOL MS(0, 0x1) 860 #define TXGBE_MIRRCTL_UPLINK MS(1, 0x1) 861 #define TXGBE_MIRRCTL_DNLINK MS(2, 0x1) 862 #define TXGBE_MIRRCTL_VLAN MS(3, 0x1) 863 #define TXGBE_MIRRCTL_DESTP(v) LS(v, 8, 0x3F) 864 #define TXGBE_MIRRVLANL(i) (0x015B10 + (i) * 8) 865 #define TXGBE_MIRRVLANH(i) (0x015B14 + (i) * 8) 866 #define TXGBE_MIRRPOOLL(i) (0x015B30 + (i) * 8) 867 #define TXGBE_MIRRPOOLH(i) (0x015B34 + (i) * 8) 868 869 /** 870 * Time Stamp 871 **/ 872 #define TXGBE_TSRXCTL 0x015188 873 #define TXGBE_TSRXCTL_VLD MS(0, 0x1) 874 #define TXGBE_TSRXCTL_TYPE(v) LS(v, 1, 0x7) 875 #define TXGBE_TSRXCTL_TYPE_V2L2 (0) 876 #define TXGBE_TSRXCTL_TYPE_V1L4 (1) 877 #define TXGBE_TSRXCTL_TYPE_V2L24 (2) 878 #define TXGBE_TSRXCTL_TYPE_V2EVENT (5) 879 #define TXGBE_TSRXCTL_ENA MS(4, 0x1) 880 #define TXGBE_TSRXSTMPL 0x0151E8 881 #define TXGBE_TSRXSTMPH 0x0151A4 882 #define TXGBE_TSTXCTL 0x01D400 883 #define TXGBE_TSTXCTL_VLD MS(0, 0x1) 884 #define TXGBE_TSTXCTL_ENA MS(4, 0x1) 885 #define TXGBE_TSTXSTMPL 0x01D404 886 #define TXGBE_TSTXSTMPH 0x01D408 887 #define TXGBE_TSTIMEL 0x01D40C 888 #define TXGBE_TSTIMEH 0x01D410 889 #define TXGBE_TSTIMEINC 0x01D414 890 #define TXGBE_TSTIMEINC_IV(v) LS(v, 0, 0xFFFFFF) 891 #define TXGBE_TSTIMEINC_IP(v) LS(v, 24, 0xFF) 892 #define TXGBE_TSTIMEINC_VP(v, p) \ 893 (((v) & MS(0, 0xFFFFFF)) | TXGBE_TSTIMEINC_IP(p)) 894 895 /** 896 * Wake on Lan 897 **/ 898 #define TXGBE_WOLCTL 0x015B80 899 #define TXGBE_WOLIPCTL 0x015B84 900 #define TXGBE_WOLIP4(i) (0x015BC0 + (i) * 4) /* 0-3 */ 901 #define TXGBE_WOLIP6(i) (0x015BE0 + (i) * 4) /* 0-3 */ 902 903 #define TXGBE_WOLFLEXCTL 0x015CFC 904 #define TXGBE_WOLFLEXI 0x015B8C 905 #define TXGBE_WOLFLEXDAT(i) (0x015C00 + (i) * 16) /* 0-15 */ 906 #define TXGBE_WOLFLEXMSK(i) (0x015C08 + (i) * 16) /* 0-15 */ 907 908 /****************************************************************************** 909 * Security Registers 910 ******************************************************************************/ 911 #define TXGBE_SECRXCTL 0x017000 912 #define TXGBE_SECRXCTL_ODSA MS(0, 0x1) 913 #define TXGBE_SECRXCTL_XDSA MS(1, 0x1) 914 #define TXGBE_SECRXCTL_CRCSTRIP MS(2, 0x1) 915 #define TXGBE_SECRXCTL_SAVEBAD MS(6, 0x1) 916 #define TXGBE_SECRXSTAT 0x017004 917 #define TXGBE_SECRXSTAT_RDY MS(0, 0x1) 918 #define TXGBE_SECRXSTAT_ECC MS(1, 0x1) 919 920 #define TXGBE_SECTXCTL 0x01D000 921 #define TXGBE_SECTXCTL_ODSA MS(0, 0x1) 922 #define TXGBE_SECTXCTL_XDSA MS(1, 0x1) 923 #define TXGBE_SECTXCTL_STFWD MS(2, 0x1) 924 #define TXGBE_SECTXCTL_MSKIV MS(3, 0x1) 925 #define TXGBE_SECTXSTAT 0x01D004 926 #define TXGBE_SECTXSTAT_RDY MS(0, 0x1) 927 #define TXGBE_SECTXSTAT_ECC MS(1, 0x1) 928 #define TXGBE_SECTXBUFAF 0x01D008 929 #define TXGBE_SECTXBUFAE 0x01D00C 930 #define TXGBE_SECTXIFG 0x01D020 931 #define TXGBE_SECTXIFG_MIN(v) LS(v, 0, 0xF) 932 #define TXGBE_SECTXIFG_MIN_MASK MS(0, 0xF) 933 934 935 /** 936 * LinkSec 937 **/ 938 #define TXGBE_LSECRXCAP 0x017200 939 #define TXGBE_LSECRXCTL 0x017204 940 /* disabled(0),check(1),strict(2),drop(3) */ 941 #define TXGBE_LSECRXCTL_MODE_MASK MS(2, 0x3) 942 #define TXGBE_LSECRXCTL_MODE_STRICT LS(2, 2, 0x3) 943 #define TXGBE_LSECRXCTL_POSTHDR MS(6, 0x1) 944 #define TXGBE_LSECRXCTL_REPLAY MS(7, 0x1) 945 #define TXGBE_LSECRXSCIL 0x017208 946 #define TXGBE_LSECRXSCIH 0x01720C 947 #define TXGBE_LSECRXSA(i) (0x017210 + (i) * 4) /* 0-1 */ 948 #define TXGBE_LSECRXPN(i) (0x017218 + (i) * 4) /* 0-1 */ 949 #define TXGBE_LSECRXKEY(n, i) (0x017220 + 0x10 * (n) + 4 * (i)) /*0-3*/ 950 #define TXGBE_LSECTXCAP 0x01D200 951 #define TXGBE_LSECTXCTL 0x01D204 952 /* disabled(0), auth(1), auth+encrypt(2) */ 953 #define TXGBE_LSECTXCTL_MODE_MASK MS(0, 0x3) 954 #define TXGBE_LSECTXCTL_MODE_AUTH LS(1, 0, 0x3) 955 #define TXGBE_LSECTXCTL_MODE_AENC LS(2, 0, 0x3) 956 #define TXGBE_LSECTXCTL_PNTRH_MASK MS(8, 0xFFFFFF) 957 #define TXGBE_LSECTXCTL_PNTRH(v) LS(v, 8, 0xFFFFFF) 958 #define TXGBE_LSECTXSCIL 0x01D208 959 #define TXGBE_LSECTXSCIH 0x01D20C 960 #define TXGBE_LSECTXSA 0x01D210 961 #define TXGBE_LSECTXPN0 0x01D214 962 #define TXGBE_LSECTXPN1 0x01D218 963 #define TXGBE_LSECTXKEY0(i) (0x01D21C + (i) * 4) /* 0-3 */ 964 #define TXGBE_LSECTXKEY1(i) (0x01D22C + (i) * 4) /* 0-3 */ 965 966 #define TXGBE_LSECRX_UTPKT 0x017240 967 #define TXGBE_LSECRX_DECOCT 0x017244 968 #define TXGBE_LSECRX_VLDOCT 0x017248 969 #define TXGBE_LSECRX_BTPKT 0x01724C 970 #define TXGBE_LSECRX_NOSCIPKT 0x017250 971 #define TXGBE_LSECRX_UNSCIPKT 0x017254 972 #define TXGBE_LSECRX_UNCHKPKT 0x017258 973 #define TXGBE_LSECRX_DLYPKT 0x01725C 974 #define TXGBE_LSECRX_LATEPKT 0x017260 975 #define TXGBE_LSECRX_OKPKT(i) (0x017264 + (i) * 4) /* 0-1 */ 976 #define TXGBE_LSECRX_BADPKT(i) (0x01726C + (i) * 4) /* 0-1 */ 977 #define TXGBE_LSECRX_INVPKT(i) (0x017274 + (i) * 4) /* 0-1 */ 978 #define TXGBE_LSECRX_BADSAPKT 0x01727C 979 #define TXGBE_LSECRX_INVSAPKT 0x017280 980 #define TXGBE_LSECTX_UTPKT 0x01D23C 981 #define TXGBE_LSECTX_ENCPKT 0x01D240 982 #define TXGBE_LSECTX_PROTPKT 0x01D244 983 #define TXGBE_LSECTX_ENCOCT 0x01D248 984 #define TXGBE_LSECTX_PROTOCT 0x01D24C 985 986 /** 987 * IpSec 988 **/ 989 #define TXGBE_ISECRXIDX 0x017100 990 #define TXGBE_ISECRXADDR(i) (0x017104 + (i) * 4) /*0-3*/ 991 #define TXGBE_ISECRXSPI 0x017114 992 #define TXGBE_ISECRXIPIDX 0x017118 993 #define TXGBE_ISECRXKEY(i) (0x01711C + (i) * 4) /*0-3*/ 994 #define TXGBE_ISECRXSALT 0x01712C 995 #define TXGBE_ISECRXMODE 0x017130 996 997 #define TXGBE_ISECTXIDX 0x01D100 998 #define TXGBE_ISECTXIDX_WT 0x80000000U 999 #define TXGBE_ISECTXIDX_RD 0x40000000U 1000 #define TXGBE_ISECTXIDX_SDIDX 0x0U 1001 #define TXGBE_ISECTXIDX_ENA 0x00000001U 1002 1003 #define TXGBE_ISECTXSALT 0x01D104 1004 #define TXGBE_ISECTXKEY(i) (0x01D108 + (i) * 4) /* 0-3 */ 1005 1006 /****************************************************************************** 1007 * MAC Registers 1008 ******************************************************************************/ 1009 #define TXGBE_MACRXCFG 0x011004 1010 #define TXGBE_MACRXCFG_ENA MS(0, 0x1) 1011 #define TXGBE_MACRXCFG_JUMBO MS(8, 0x1) 1012 #define TXGBE_MACRXCFG_LB MS(10, 0x1) 1013 #define TXGBE_MACCNTCTL 0x011800 1014 #define TXGBE_MACCNTCTL_RC MS(2, 0x1) 1015 1016 #define TXGBE_MACRXFLT 0x011008 1017 #define TXGBE_MACRXFLT_PROMISC MS(0, 0x1) 1018 #define TXGBE_MACRXFLT_CTL_MASK MS(6, 0x3) 1019 #define TXGBE_MACRXFLT_CTL_DROP LS(0, 6, 0x3) 1020 #define TXGBE_MACRXFLT_CTL_NOPS LS(1, 6, 0x3) 1021 #define TXGBE_MACRXFLT_CTL_NOFT LS(2, 6, 0x3) 1022 #define TXGBE_MACRXFLT_CTL_PASS LS(3, 6, 0x3) 1023 #define TXGBE_MACRXFLT_RXALL MS(31, 0x1) 1024 1025 /****************************************************************************** 1026 * Statistic Registers 1027 ******************************************************************************/ 1028 /* Ring Counter */ 1029 #define TXGBE_QPRXPKT(rp) (0x001014 + 0x40 * (rp)) 1030 #define TXGBE_QPRXOCTL(rp) (0x001018 + 0x40 * (rp)) 1031 #define TXGBE_QPRXOCTH(rp) (0x00101C + 0x40 * (rp)) 1032 #define TXGBE_QPTXPKT(rp) (0x003014 + 0x40 * (rp)) 1033 #define TXGBE_QPTXOCTL(rp) (0x003018 + 0x40 * (rp)) 1034 #define TXGBE_QPTXOCTH(rp) (0x00301C + 0x40 * (rp)) 1035 #define TXGBE_QPRXMPKT(rp) (0x001020 + 0x40 * (rp)) 1036 1037 /* Host DMA Counter */ 1038 #define TXGBE_DMATXDROP 0x018300 1039 #define TXGBE_DMATXSECDROP 0x018304 1040 #define TXGBE_DMATXPKT 0x018308 1041 #define TXGBE_DMATXOCTL 0x01830C 1042 #define TXGBE_DMATXOCTH 0x018310 1043 #define TXGBE_DMATXMNG 0x018314 1044 #define TXGBE_DMARXDROP 0x012500 1045 #define TXGBE_DMARXPKT 0x012504 1046 #define TXGBE_DMARXOCTL 0x012508 1047 #define TXGBE_DMARXOCTH 0x01250C 1048 #define TXGBE_DMARXMNG 0x012510 1049 1050 /* Packet Buffer Counter */ 1051 #define TXGBE_PBRXMISS(tc) (0x019040 + (tc) * 4) 1052 #define TXGBE_PBRXPKT 0x019060 1053 #define TXGBE_PBRXREP 0x019064 1054 #define TXGBE_PBRXDROP 0x019068 1055 #define TXGBE_PBRXLNKXOFF 0x011988 1056 #define TXGBE_PBRXLNKXON 0x011E0C 1057 #define TXGBE_PBRXUPXON(up) (0x011E30 + (up) * 4) 1058 #define TXGBE_PBRXUPXOFF(up) (0x011E10 + (up) * 4) 1059 1060 #define TXGBE_PBTXLNKXOFF 0x019218 1061 #define TXGBE_PBTXLNKXON 0x01921C 1062 #define TXGBE_PBTXUPXON(up) (0x0192E0 + (up) * 4) 1063 #define TXGBE_PBTXUPXOFF(up) (0x0192C0 + (up) * 4) 1064 #define TXGBE_PBTXUPOFF(up) (0x019280 + (up) * 4) 1065 1066 #define TXGBE_PBLPBK 0x01CF08 1067 1068 /* Ether Flow Counter */ 1069 #define TXGBE_LANPKTDROP 0x0151C0 1070 #define TXGBE_MNGPKTDROP 0x0151C4 1071 1072 /* MAC Counter */ 1073 #define TXGBE_MACRXERRCRCL 0x011928 1074 #define TXGBE_MACRXERRCRCH 0x01192C 1075 #define TXGBE_MACRXERRLENL 0x011978 1076 #define TXGBE_MACRXERRLENH 0x01197C 1077 #define TXGBE_MACRX1TO64L 0x011940 1078 #define TXGBE_MACRX1TO64H 0x011944 1079 #define TXGBE_MACRX65TO127L 0x011948 1080 #define TXGBE_MACRX65TO127H 0x01194C 1081 #define TXGBE_MACRX128TO255L 0x011950 1082 #define TXGBE_MACRX128TO255H 0x011954 1083 #define TXGBE_MACRX256TO511L 0x011958 1084 #define TXGBE_MACRX256TO511H 0x01195C 1085 #define TXGBE_MACRX512TO1023L 0x011960 1086 #define TXGBE_MACRX512TO1023H 0x011964 1087 #define TXGBE_MACRX1024TOMAXL 0x011968 1088 #define TXGBE_MACRX1024TOMAXH 0x01196C 1089 #define TXGBE_MACTX1TO64L 0x011834 1090 #define TXGBE_MACTX1TO64H 0x011838 1091 #define TXGBE_MACTX65TO127L 0x01183C 1092 #define TXGBE_MACTX65TO127H 0x011840 1093 #define TXGBE_MACTX128TO255L 0x011844 1094 #define TXGBE_MACTX128TO255H 0x011848 1095 #define TXGBE_MACTX256TO511L 0x01184C 1096 #define TXGBE_MACTX256TO511H 0x011850 1097 #define TXGBE_MACTX512TO1023L 0x011854 1098 #define TXGBE_MACTX512TO1023H 0x011858 1099 #define TXGBE_MACTX1024TOMAXL 0x01185C 1100 #define TXGBE_MACTX1024TOMAXH 0x011860 1101 1102 #define TXGBE_MACRXUNDERSIZE 0x011938 1103 #define TXGBE_MACRXOVERSIZE 0x01193C 1104 #define TXGBE_MACRXJABBER 0x011934 1105 1106 #define TXGBE_MACRXPKTL 0x011900 1107 #define TXGBE_MACRXPKTH 0x011904 1108 #define TXGBE_MACTXPKTL 0x01181C 1109 #define TXGBE_MACTXPKTH 0x011820 1110 #define TXGBE_MACRXGBOCTL 0x011908 1111 #define TXGBE_MACRXGBOCTH 0x01190C 1112 #define TXGBE_MACTXGBOCTL 0x011814 1113 #define TXGBE_MACTXGBOCTH 0x011818 1114 1115 #define TXGBE_MACRXOCTL 0x011918 1116 #define TXGBE_MACRXOCTH 0x01191C 1117 #define TXGBE_MACRXMPKTL 0x011920 1118 #define TXGBE_MACRXMPKTH 0x011924 1119 #define TXGBE_MACTXOCTL 0x011824 1120 #define TXGBE_MACTXOCTH 0x011828 1121 #define TXGBE_MACTXMPKTL 0x01182C 1122 #define TXGBE_MACTXMPKTH 0x011830 1123 1124 /* Management Counter */ 1125 #define TXGBE_MNGOUT 0x01CF00 1126 #define TXGBE_MNGIN 0x01CF04 1127 1128 /* MAC SEC Counter */ 1129 #define TXGBE_LSECRXUNTAG 0x017240 1130 #define TXGBE_LSECRXDECOCT 0x017244 1131 #define TXGBE_LSECRXVLDOCT 0x017248 1132 #define TXGBE_LSECRXBADTAG 0x01724C 1133 #define TXGBE_LSECRXNOSCI 0x017250 1134 #define TXGBE_LSECRXUKSCI 0x017254 1135 #define TXGBE_LSECRXUNCHK 0x017258 1136 #define TXGBE_LSECRXDLY 0x01725C 1137 #define TXGBE_LSECRXLATE 0x017260 1138 #define TXGBE_LSECRXGOOD 0x017264 1139 #define TXGBE_LSECRXBAD 0x01726C 1140 #define TXGBE_LSECRXUK 0x017274 1141 #define TXGBE_LSECRXBADSA 0x01727C 1142 #define TXGBE_LSECRXUKSA 0x017280 1143 #define TXGBE_LSECTXUNTAG 0x01D23C 1144 #define TXGBE_LSECTXENC 0x01D240 1145 #define TXGBE_LSECTXPTT 0x01D244 1146 #define TXGBE_LSECTXENCOCT 0x01D248 1147 #define TXGBE_LSECTXPTTOCT 0x01D24C 1148 1149 /* IP SEC Counter */ 1150 1151 /* FDIR Counter */ 1152 #define TXGBE_FDIRFREE 0x019538 1153 #define TXGBE_FDIRFREE_FLT(r) RS(r, 0, 0xFFFF) 1154 #define TXGBE_FDIRLEN 0x01954C 1155 #define TXGBE_FDIRLEN_BKTLEN(r) RS(r, 0, 0x3F) 1156 #define TXGBE_FDIRLEN_MAXLEN(r) RS(r, 8, 0x3F) 1157 #define TXGBE_FDIRUSED 0x019550 1158 #define TXGBE_FDIRUSED_ADD(r) RS(r, 0, 0xFFFF) 1159 #define TXGBE_FDIRUSED_REM(r) RS(r, 16, 0xFFFF) 1160 #define TXGBE_FDIRFAIL 0x019554 1161 #define TXGBE_FDIRFAIL_ADD(r) RS(r, 0, 0xFF) 1162 #define TXGBE_FDIRFAIL_REM(r) RS(r, 8, 0xFF) 1163 #define TXGBE_FDIRMATCH 0x019558 1164 #define TXGBE_FDIRMISS 0x01955C 1165 1166 /* FCOE Counter */ 1167 #define TXGBE_FCOECRC 0x015160 1168 #define TXGBE_FCOERPDC 0x012514 1169 #define TXGBE_FCOELAST 0x012518 1170 #define TXGBE_FCOEPRC 0x015164 1171 #define TXGBE_FCOEDWRC 0x015168 1172 #define TXGBE_FCOEPTC 0x018318 1173 #define TXGBE_FCOEDWTC 0x01831C 1174 1175 /* Management Counter */ 1176 #define TXGBE_MNGOS2BMC 0x01E094 1177 #define TXGBE_MNGBMC2OS 0x01E090 1178 1179 /****************************************************************************** 1180 * PF(Physical Function) Registers 1181 ******************************************************************************/ 1182 /* Interrupt */ 1183 #define TXGBE_ICRMISC 0x000100 1184 #define TXGBE_ICRMISC_MASK MS(8, 0xFFFFFF) 1185 #define TXGBE_ICRMISC_LNKDN MS(8, 0x1) /* eth link down */ 1186 #define TXGBE_ICRMISC_RST MS(10, 0x1) /* device reset event */ 1187 #define TXGBE_ICRMISC_TS MS(11, 0x1) /* time sync */ 1188 #define TXGBE_ICRMISC_STALL MS(12, 0x1) /* trans or recv path is stalled */ 1189 #define TXGBE_ICRMISC_LNKSEC MS(13, 0x1) /* Tx LinkSec require key exchange */ 1190 #define TXGBE_ICRMISC_ERRBUF MS(14, 0x1) /* Packet Buffer Overrun */ 1191 #define TXGBE_ICRMISC_FDIR MS(15, 0x1) /* FDir Exception */ 1192 #define TXGBE_ICRMISC_I2C MS(16, 0x1) /* I2C interrupt */ 1193 #define TXGBE_ICRMISC_ERRMAC MS(17, 0x1) /* err reported by MAC */ 1194 #define TXGBE_ICRMISC_LNKUP MS(18, 0x1) /* link up */ 1195 #define TXGBE_ICRMISC_ANDONE MS(19, 0x1) /* link auto-nego done */ 1196 #define TXGBE_ICRMISC_ERRIG MS(20, 0x1) /* integrity error */ 1197 #define TXGBE_ICRMISC_SPI MS(21, 0x1) /* SPI interface */ 1198 #define TXGBE_ICRMISC_VFMBX MS(22, 0x1) /* VF-PF message box */ 1199 #define TXGBE_ICRMISC_GPIO MS(26, 0x1) /* GPIO interrupt */ 1200 #define TXGBE_ICRMISC_ERRPCI MS(27, 0x1) /* pcie request error */ 1201 #define TXGBE_ICRMISC_HEAT MS(28, 0x1) /* overheat detection */ 1202 #define TXGBE_ICRMISC_PROBE MS(29, 0x1) /* probe match */ 1203 #define TXGBE_ICRMISC_MNGMBX MS(30, 0x1) /* mng mailbox */ 1204 #define TXGBE_ICRMISC_TIMER MS(31, 0x1) /* tcp timer */ 1205 #define TXGBE_ICRMISC_DEFAULT ( \ 1206 TXGBE_ICRMISC_LNKDN | \ 1207 TXGBE_ICRMISC_RST | \ 1208 TXGBE_ICRMISC_ERRMAC | \ 1209 TXGBE_ICRMISC_LNKUP | \ 1210 TXGBE_ICRMISC_ANDONE | \ 1211 TXGBE_ICRMISC_ERRIG | \ 1212 TXGBE_ICRMISC_VFMBX | \ 1213 TXGBE_ICRMISC_MNGMBX | \ 1214 TXGBE_ICRMISC_STALL | \ 1215 TXGBE_ICRMISC_TIMER) 1216 #define TXGBE_ICRMISC_LSC ( \ 1217 TXGBE_ICRMISC_LNKDN | \ 1218 TXGBE_ICRMISC_LNKUP) 1219 #define TXGBE_ICSMISC 0x000104 1220 #define TXGBE_IENMISC 0x000108 1221 #define TXGBE_IVARMISC 0x0004FC 1222 #define TXGBE_IVARMISC_VEC(v) LS(v, 0, 0x7) 1223 #define TXGBE_IVARMISC_VLD MS(7, 0x1) 1224 #define TXGBE_PX_INTA 0x000110 1225 #define TXGBE_ICR(i) (0x000120 + (i) * 4) /* 0-1 */ 1226 #define TXGBE_ICR_MASK MS(0, 0xFFFFFFFF) 1227 #define TXGBE_ICS(i) (0x000130 + (i) * 4) /* 0-1 */ 1228 #define TXGBE_ICS_MASK TXGBE_ICR_MASK 1229 #define TXGBE_IMS(i) (0x000140 + (i) * 4) /* 0-1 */ 1230 #define TXGBE_IMS_MASK TXGBE_ICR_MASK 1231 #define TXGBE_IMC(i) (0x000150 + (i) * 4) /* 0-1 */ 1232 #define TXGBE_IMC_MASK TXGBE_ICR_MASK 1233 #define TXGBE_IVAR(i) (0x000500 + (i) * 4) /* 0-3 */ 1234 #define TXGBE_IVAR_VEC(v) LS(v, 0, 0x7) 1235 #define TXGBE_IVAR_VLD MS(7, 0x1) 1236 #define TXGBE_TCPTMR 0x000170 1237 #define TXGBE_ITRSEL 0x000180 1238 1239 /* P2V Mailbox */ 1240 #define TXGBE_MBMEM(i) (0x005000 + 0x40 * (i)) /* 0-63 */ 1241 #define TXGBE_MBCTL(i) (0x000600 + 4 * (i)) /* 0-63 */ 1242 #define TXGBE_MBCTL_STS MS(0, 0x1) /* Initiate message send to VF */ 1243 #define TXGBE_MBCTL_ACK MS(1, 0x1) /* Ack message recv'd from VF */ 1244 #define TXGBE_MBCTL_VFU MS(2, 0x1) /* VF owns the mailbox buffer */ 1245 #define TXGBE_MBCTL_PFU MS(3, 0x1) /* PF owns the mailbox buffer */ 1246 #define TXGBE_MBCTL_RVFU MS(4, 0x1) /* Reset VFU - used when VF stuck */ 1247 #define TXGBE_MBVFICR(i) (0x000480 + 4 * (i)) /* 0-3 */ 1248 #define TXGBE_MBVFICR_INDEX(vf) ((vf) >> 4) 1249 #define TXGBE_MBVFICR_VFREQ_MASK (0x0000FFFF) /* bits for VF messages */ 1250 #define TXGBE_MBVFICR_VFREQ_VF1 (0x00000001) /* bit for VF 1 message */ 1251 #define TXGBE_MBVFICR_VFACK_MASK (0xFFFF0000) /* bits for VF acks */ 1252 #define TXGBE_MBVFICR_VFACK_VF1 (0x00010000) /* bit for VF 1 ack */ 1253 #define TXGBE_FLRVFP(i) (0x000490 + 4 * (i)) /* 0-1 */ 1254 #define TXGBE_FLRVFE(i) (0x0004A0 + 4 * (i)) /* 0-1 */ 1255 #define TXGBE_FLRVFEC(i) (0x0004A8 + 4 * (i)) /* 0-1 */ 1256 1257 /****************************************************************************** 1258 * VF(Virtual Function) Registers 1259 ******************************************************************************/ 1260 #define TXGBE_VFPBWRAP 0x000000 1261 #define TXGBE_VFPBWRAP_WRAP(r, tc) ((0x7 << 4 * (tc) & (r)) >> 4 * (tc)) 1262 #define TXGBE_VFPBWRAP_EMPT(r, tc) ((0x8 << 4 * (tc) & (r)) >> 4 * (tc)) 1263 #define TXGBE_VFSTATUS 0x000004 1264 #define TXGBE_VFSTATUS_UP MS(0, 0x1) 1265 #define TXGBE_VFSTATUS_BW_MASK MS(1, 0x7) 1266 #define TXGBE_VFSTATUS_BW_10G LS(0x1, 1, 0x7) 1267 #define TXGBE_VFSTATUS_BW_1G LS(0x2, 1, 0x7) 1268 #define TXGBE_VFSTATUS_BW_100M LS(0x4, 1, 0x7) 1269 #define TXGBE_VFSTATUS_BUSY MS(4, 0x1) 1270 #define TXGBE_VFSTATUS_LANID MS(8, 0x1) 1271 #define TXGBE_VFRST 0x000008 1272 #define TXGBE_VFRST_SET MS(0, 0x1) 1273 #define TXGBE_VFPLCFG 0x000078 1274 #define TXGBE_VFPLCFG_RSV MS(0, 0x1) 1275 #define TXGBE_VFPLCFG_PSR(v) LS(v, 1, 0x1F) 1276 #define TXGBE_VFPLCFG_PSRL4HDR (0x1) 1277 #define TXGBE_VFPLCFG_PSRL3HDR (0x2) 1278 #define TXGBE_VFPLCFG_PSRL2HDR (0x4) 1279 #define TXGBE_VFPLCFG_PSRTUNHDR (0x8) 1280 #define TXGBE_VFPLCFG_PSRTUNMAC (0x10) 1281 #define TXGBE_VFPLCFG_RSSMASK MS(16, 0xFF) 1282 #define TXGBE_VFPLCFG_RSSIPV4TCP MS(16, 0x1) 1283 #define TXGBE_VFPLCFG_RSSIPV4 MS(17, 0x1) 1284 #define TXGBE_VFPLCFG_RSSIPV6 MS(20, 0x1) 1285 #define TXGBE_VFPLCFG_RSSIPV6TCP MS(21, 0x1) 1286 #define TXGBE_VFPLCFG_RSSIPV4UDP MS(22, 0x1) 1287 #define TXGBE_VFPLCFG_RSSIPV6UDP MS(23, 0x1) 1288 #define TXGBE_VFPLCFG_RSSENA MS(24, 0x1) 1289 #define TXGBE_VFPLCFG_RSSHASH(v) LS(v, 29, 0x7) 1290 #define TXGBE_VFRSSKEY(i) (0x000080 + (i) * 4) /* 0-9 */ 1291 #define TXGBE_VFRSSTBL(i) (0x0000C0 + (i) * 4) /* 0-15 */ 1292 #define TXGBE_VFICR 0x000100 1293 #define TXGBE_VFICR_MASK LS(7, 0, 0x7) 1294 #define TXGBE_VFICR_MBX MS(0, 0x1) 1295 #define TXGBE_VFICR_DONE1 MS(1, 0x1) 1296 #define TXGBE_VFICR_DONE2 MS(2, 0x1) 1297 #define TXGBE_VFICS 0x000104 1298 #define TXGBE_VFICS_MASK TXGBE_VFICR_MASK 1299 #define TXGBE_VFIMS 0x000108 1300 #define TXGBE_VFIMS_MASK TXGBE_VFICR_MASK 1301 #define TXGBE_VFIMC 0x00010C 1302 #define TXGBE_VFIMC_MASK TXGBE_VFICR_MASK 1303 #define TXGBE_VFGPIE 0x000118 1304 #define TXGBE_VFIVAR(i) (0x000240 + 4 * (i)) /* 0-3 */ 1305 #define TXGBE_VFIVARMISC 0x000260 1306 #define TXGBE_VFIVAR_ALLOC(v) LS(v, 0, 0x3) 1307 #define TXGBE_VFIVAR_VLD MS(7, 0x1) 1308 1309 #define TXGBE_VFMBCTL 0x000600 1310 #define TXGBE_VFMBCTL_REQ MS(0, 0x1) /* Request for PF Ready bit */ 1311 #define TXGBE_VFMBCTL_ACK MS(1, 0x1) /* Ack PF message received */ 1312 #define TXGBE_VFMBCTL_VFU MS(2, 0x1) /* VF owns the mailbox buffer */ 1313 #define TXGBE_VFMBCTL_PFU MS(3, 0x1) /* PF owns the mailbox buffer */ 1314 #define TXGBE_VFMBCTL_PFSTS MS(4, 0x1) /* PF wrote a message in the MB */ 1315 #define TXGBE_VFMBCTL_PFACK MS(5, 0x1) /* PF ack the previous VF msg */ 1316 #define TXGBE_VFMBCTL_RSTI MS(6, 0x1) /* PF has reset indication */ 1317 #define TXGBE_VFMBCTL_RSTD MS(7, 0x1) /* PF has indicated reset done */ 1318 #define TXGBE_VFMBCTL_R2C_BITS (TXGBE_VFMBCTL_RSTD | \ 1319 TXGBE_VFMBCTL_PFSTS | \ 1320 TXGBE_VFMBCTL_PFACK) 1321 #define TXGBE_VFMBX 0x000C00 /* 0-15 */ 1322 #define TXGBE_VFTPHCTL(i) (0x000D00 + 4 * (i)) /* 0-7 */ 1323 1324 /****************************************************************************** 1325 * PF&VF TxRx Interface 1326 ******************************************************************************/ 1327 #define RNGLEN(v) ROUND_OVER(v, 13, 7) 1328 #define HDRLEN(v) ROUND_OVER(v, 10, 6) 1329 #define PKTLEN(v) ROUND_OVER(v, 14, 10) 1330 #define INTTHR(v) ROUND_OVER(v, 4, 0) 1331 1332 #define TXGBE_RING_DESC_ALIGN 128 1333 #define TXGBE_RING_DESC_MIN 128 1334 #define TXGBE_RING_DESC_MAX 8192 1335 #define TXGBE_RXD_ALIGN TXGBE_RING_DESC_ALIGN 1336 #define TXGBE_TXD_ALIGN TXGBE_RING_DESC_ALIGN 1337 1338 /* receive ring */ 1339 #define TXGBE_RXBAL(rp) (0x001000 + 0x40 * (rp)) 1340 #define TXGBE_RXBAH(rp) (0x001004 + 0x40 * (rp)) 1341 #define TXGBE_RXRP(rp) (0x00100C + 0x40 * (rp)) 1342 #define TXGBE_RXWP(rp) (0x001008 + 0x40 * (rp)) 1343 #define TXGBE_RXCFG(rp) (0x001010 + 0x40 * (rp)) 1344 #define TXGBE_RXCFG_ENA MS(0, 0x1) 1345 #define TXGBE_RXCFG_RNGLEN(v) LS(RNGLEN(v), 1, 0x3F) 1346 #define TXGBE_RXCFG_PKTLEN(v) LS(PKTLEN(v), 8, 0xF) 1347 #define TXGBE_RXCFG_PKTLEN_MASK MS(8, 0xF) 1348 #define TXGBE_RXCFG_HDRLEN(v) LS(HDRLEN(v), 12, 0xF) 1349 #define TXGBE_RXCFG_HDRLEN_MASK MS(12, 0xF) 1350 #define TXGBE_RXCFG_WTHRESH(v) LS(v, 16, 0x7) 1351 #define TXGBE_RXCFG_ETAG MS(22, 0x1) 1352 #define TXGBE_RXCFG_RSCMAX_MASK MS(23, 0x3) 1353 #define TXGBE_RXCFG_RSCMAX_1 LS(0, 23, 0x3) 1354 #define TXGBE_RXCFG_RSCMAX_4 LS(1, 23, 0x3) 1355 #define TXGBE_RXCFG_RSCMAX_8 LS(2, 23, 0x3) 1356 #define TXGBE_RXCFG_RSCMAX_16 LS(3, 23, 0x3) 1357 #define TXGBE_RXCFG_STALL MS(25, 0x1) 1358 #define TXGBE_RXCFG_SPLIT MS(26, 0x1) 1359 #define TXGBE_RXCFG_RSCMODE MS(27, 0x1) 1360 #define TXGBE_RXCFG_CNTAG MS(28, 0x1) 1361 #define TXGBE_RXCFG_RSCENA MS(29, 0x1) 1362 #define TXGBE_RXCFG_DROP MS(30, 0x1) 1363 #define TXGBE_RXCFG_VLAN MS(31, 0x1) 1364 1365 /* transmit ring */ 1366 #define TXGBE_TXBAL(rp) (0x003000 + 0x40 * (rp)) 1367 #define TXGBE_TXBAH(rp) (0x003004 + 0x40 * (rp)) 1368 #define TXGBE_TXWP(rp) (0x003008 + 0x40 * (rp)) 1369 #define TXGBE_TXRP(rp) (0x00300C + 0x40 * (rp)) 1370 #define TXGBE_TXCFG(rp) (0x003010 + 0x40 * (rp)) 1371 #define TXGBE_TXCFG_ENA MS(0, 0x1) 1372 #define TXGBE_TXCFG_BUFLEN_MASK MS(1, 0x3F) 1373 #define TXGBE_TXCFG_BUFLEN(v) LS(RNGLEN(v), 1, 0x3F) 1374 #define TXGBE_TXCFG_HTHRESH_MASK MS(8, 0xF) 1375 #define TXGBE_TXCFG_HTHRESH(v) LS(v, 8, 0xF) 1376 #define TXGBE_TXCFG_WTHRESH_MASK MS(16, 0x7F) 1377 #define TXGBE_TXCFG_WTHRESH(v) LS(v, 16, 0x7F) 1378 #define TXGBE_TXCFG_FLUSH MS(26, 0x1) 1379 1380 /* interrupt registers */ 1381 #define TXGBE_ITRI 0x000180 1382 #define TXGBE_ITR(i) (0x000200 + 4 * (i)) 1383 #define TXGBE_ITR_IVAL_MASK MS(2, 0x3FE) 1384 #define TXGBE_ITR_IVAL(v) LS(v, 2, 0x3FE) 1385 #define TXGBE_ITR_IVAL_1G(us) TXGBE_ITR_IVAL((us) / 2) 1386 #define TXGBE_ITR_IVAL_10G(us) TXGBE_ITR_IVAL((us) / 20) 1387 #define TXGBE_ITR_LLIEA MS(15, 0x1) 1388 #define TXGBE_ITR_LLICREDIT(v) LS(v, 16, 0x1F) 1389 #define TXGBE_ITR_CNT(v) LS(v, 21, 0x7F) 1390 #define TXGBE_ITR_WRDSA MS(31, 0x1) 1391 #define TXGBE_GPIE 0x000118 1392 #define TXGBE_GPIE_MSIX MS(0, 0x1) 1393 #define TXGBE_GPIE_LLIEA MS(1, 0x1) 1394 #define TXGBE_GPIE_LLIVAL(v) LS(v, 4, 0xF) 1395 #define TXGBE_GPIE_RSCDLY(v) LS(v, 8, 0x7) 1396 1397 /****************************************************************************** 1398 * Debug Registers 1399 ******************************************************************************/ 1400 /** 1401 * Probe 1402 **/ 1403 #define TXGBE_PROB 0x010010 1404 #define TXGBE_IODRV 0x010024 1405 1406 #define TXGBE_PRBCTL 0x010200 1407 #define TXGBE_PRBSTA 0x010204 1408 #define TXGBE_PRBDAT 0x010220 1409 #define TXGBE_PRBPTN 0x010224 1410 #define TXGBE_PRBCNT 0x010228 1411 #define TXGBE_PRBMSK 0x01022C 1412 1413 #define TXGBE_PRBPCI 0x01F010 1414 #define TXGBE_PRBRDMA 0x012010 1415 #define TXGBE_PRBTDMA 0x018010 1416 #define TXGBE_PRBPSR 0x015010 1417 #define TXGBE_PRBRDB 0x019010 1418 #define TXGBE_PRBTDB 0x01C010 1419 #define TXGBE_PRBRSEC 0x017010 1420 #define TXGBE_PRBTSEC 0x01D010 1421 #define TXGBE_PRBMNG 0x01E010 1422 #define TXGBE_PRBRMAC 0x011014 1423 #define TXGBE_PRBTMAC 0x011010 1424 #define TXGBE_PRBREMAC 0x011E04 1425 #define TXGBE_PRBTEMAC 0x011E00 1426 1427 /** 1428 * ECC 1429 **/ 1430 #define TXGBE_ECCRXDMACTL 0x012014 1431 #define TXGBE_ECCRXDMAINJ 0x012018 1432 #define TXGBE_ECCRXDMA 0x01201C 1433 #define TXGBE_ECCTXDMACTL 0x018014 1434 #define TXGBE_ECCTXDMAINJ 0x018018 1435 #define TXGBE_ECCTXDMA 0x01801C 1436 1437 #define TXGBE_ECCRXPBCTL 0x019014 1438 #define TXGBE_ECCRXPBINJ 0x019018 1439 #define TXGBE_ECCRXPB 0x01901C 1440 #define TXGBE_ECCTXPBCTL 0x01C014 1441 #define TXGBE_ECCTXPBINJ 0x01C018 1442 #define TXGBE_ECCTXPB 0x01C01C 1443 1444 #define TXGBE_ECCRXETHCTL 0x015014 1445 #define TXGBE_ECCRXETHINJ 0x015018 1446 #define TXGBE_ECCRXETH 0x01401C 1447 1448 #define TXGBE_ECCRXSECCTL 0x017014 1449 #define TXGBE_ECCRXSECINJ 0x017018 1450 #define TXGBE_ECCRXSEC 0x01701C 1451 #define TXGBE_ECCTXSECCTL 0x01D014 1452 #define TXGBE_ECCTXSECINJ 0x01D018 1453 #define TXGBE_ECCTXSEC 0x01D01C 1454 1455 /** 1456 * Inspection 1457 **/ 1458 #define TXGBE_PBLBSTAT 0x01906C 1459 #define TXGBE_PBLBSTAT_FREE(r) RS(r, 0, 0x3FF) 1460 #define TXGBE_PBLBSTAT_FULL MS(11, 0x1) 1461 #define TXGBE_PBRXSTAT 0x019004 1462 #define TXGBE_PBRXSTAT_WRAP(tc, r) ((7u << 4 * (tc) & (r)) >> 4 * (tc)) 1463 #define TXGBE_PBRXSTAT_EMPT(tc, r) ((8u << 4 * (tc) & (r)) >> 4 * (tc)) 1464 #define TXGBE_PBRXSTAT2(tc) (0x019180 + (tc) * 4) 1465 #define TXGBE_PBRXSTAT2_USED(r) RS(r, 0, 0xFFFF) 1466 #define TXGBE_PBRXWRPTR(tc) (0x019180 + (tc) * 4) 1467 #define TXGBE_PBRXWRPTR_HEAD(r) RS(r, 0, 0xFFFF) 1468 #define TXGBE_PBRXWRPTR_TAIL(r) RS(r, 16, 0xFFFF) 1469 #define TXGBE_PBRXRDPTR(tc) (0x0191A0 + (tc) * 4) 1470 #define TXGBE_PBRXRDPTR_HEAD(r) RS(r, 0, 0xFFFF) 1471 #define TXGBE_PBRXRDPTR_TAIL(r) RS(r, 16, 0xFFFF) 1472 #define TXGBE_PBRXDATA(tc) (0x0191C0 + (tc) * 4) 1473 #define TXGBE_PBRXDATA_RDPTR(r) RS(r, 0, 0xFFFF) 1474 #define TXGBE_PBRXDATA_WRPTR(r) RS(r, 16, 0xFFFF) 1475 #define TXGBE_PBTXSTAT 0x01C004 1476 #define TXGBE_PBTXSTAT_EMPT(tc, r) ((1 << (tc) & (r)) >> (tc)) 1477 1478 #define TXGBE_RXPBPFCDMACL 0x019210 1479 #define TXGBE_RXPBPFCDMACH 0x019214 1480 1481 #define TXGBE_PSRLANPKTCNT 0x0151B8 1482 #define TXGBE_PSRMNGPKTCNT 0x0151BC 1483 1484 #define TXGBE_P2VMBX_SIZE (16) /* 16*4B */ 1485 #define TXGBE_P2MMBX_SIZE (64) /* 64*4B */ 1486 1487 /**************** Global Registers ****************************/ 1488 /* chip control Registers */ 1489 #define TXGBE_PWR 0x010000 1490 #define TXGBE_PWR_LANID(r) RS(r, 30, 0x3) 1491 #define TXGBE_PWR_LANID_SWAP LS(2, 30, 0x3) 1492 1493 /* Sensors for PVT(Process Voltage Temperature) */ 1494 #define TXGBE_TSCTRL 0x010300 1495 #define TXGBE_TSCTRL_EVALMD MS(31, 0x1) 1496 #define TXGBE_TSEN 0x010304 1497 #define TXGBE_TSEN_ENA MS(0, 0x1) 1498 #define TXGBE_TSSTAT 0x010308 1499 #define TXGBE_TSSTAT_VLD MS(16, 0x1) 1500 #define TXGBE_TSSTAT_DATA(r) RS(r, 0, 0x3FF) 1501 1502 #define TXGBE_TSATHRE 0x01030C 1503 #define TXGBE_TSDTHRE 0x010310 1504 #define TXGBE_TSINTR 0x010314 1505 #define TXGBE_TSINTR_AEN MS(0, 0x1) 1506 #define TXGBE_TSINTR_DEN MS(1, 0x1) 1507 #define TXGBE_TS_ALARM_ST 0x10318 1508 #define TXGBE_TS_ALARM_ST_DALARM 0x00000002U 1509 #define TXGBE_TS_ALARM_ST_ALARM 0x00000001U 1510 1511 /* FMGR Registers */ 1512 #define TXGBE_ILDRSTAT 0x010120 1513 #define TXGBE_ILDRSTAT_PCIRST MS(0, 0x1) 1514 #define TXGBE_ILDRSTAT_PWRRST MS(1, 0x1) 1515 #define TXGBE_ILDRSTAT_SWRST MS(7, 0x1) 1516 #define TXGBE_ILDRSTAT_SWRST_LAN0 MS(9, 0x1) 1517 #define TXGBE_ILDRSTAT_SWRST_LAN1 MS(10, 0x1) 1518 1519 #define TXGBE_SPISTAT 0x01010C 1520 #define TXGBE_SPISTAT_OPDONE MS(0, 0x1) 1521 #define TXGBE_SPISTAT_BPFLASH MS(31, 0x1) 1522 1523 /************************* Port Registers ************************************/ 1524 /* I2C registers */ 1525 #define TXGBE_I2CCON 0x014900 /* I2C Control */ 1526 #define TXGBE_I2CCON_SDIA ((1 << 6)) 1527 #define TXGBE_I2CCON_RESTART ((1 << 5)) 1528 #define TXGBE_I2CCON_M10BITADDR ((1 << 4)) 1529 #define TXGBE_I2CCON_S10BITADDR ((1 << 3)) 1530 #define TXGBE_I2CCON_SPEED(v) (((v) & 0x3) << 1) 1531 #define TXGBE_I2CCON_MENA ((1 << 0)) 1532 #define TXGBE_I2CTAR 0x014904 /* I2C Target Address */ 1533 #define TXGBE_I2CDATA 0x014910 /* I2C Rx/Tx Data Buf and Cmd */ 1534 #define TXGBE_I2CDATA_STOP ((1 << 9)) 1535 #define TXGBE_I2CDATA_READ ((1 << 8) | TXGBE_I2CDATA_STOP) 1536 #define TXGBE_I2CDATA_WRITE ((0 << 8) | TXGBE_I2CDATA_STOP) 1537 #define TXGBE_I2CSSSCLHCNT 0x014914 1538 #define TXGBE_I2CSSSCLLCNT 0x014918 1539 #define TXGBE_I2CICR 0x014934 /* I2C Raw Interrupt Status */ 1540 #define TXGBE_I2CICR_RXFULL ((0x1) << 2) 1541 #define TXGBE_I2CICR_TXEMPTY ((0x1) << 4) 1542 #define TXGBE_I2CICM 0x014930 /* I2C Interrupt Mask */ 1543 #define TXGBE_I2CRXTL 0x014938 /* I2C Receive FIFO Threshold */ 1544 #define TXGBE_I2CTXTL 0x01493C /* I2C TX FIFO Threshold */ 1545 #define TXGBE_I2CENA 0x01496C /* I2C Enable */ 1546 #define TXGBE_I2CSTAT 0x014970 /* I2C Status register */ 1547 #define TXGBE_I2CSTAT_MST ((1U << 5)) 1548 #define TXGBE_I2CSCLTMOUT 0x0149AC 1549 #define TXGBE_I2CSDATMOUT 0x0149B0 /*I2C SDA Stuck at Low Timeout*/ 1550 1551 /* port cfg Registers */ 1552 #define TXGBE_PORTSTAT 0x014404 1553 #define TXGBE_PORTSTAT_UP MS(0, 0x1) 1554 #define TXGBE_PORTSTAT_BW_MASK MS(1, 0x7) 1555 #define TXGBE_PORTSTAT_BW_10G MS(1, 0x1) 1556 #define TXGBE_PORTSTAT_BW_1G MS(2, 0x1) 1557 #define TXGBE_PORTSTAT_BW_100M MS(3, 0x1) 1558 #define TXGBE_PORTSTAT_ID(r) RS(r, 8, 0x1) 1559 1560 #define TXGBE_VXLAN 0x014410 1561 #define TXGBE_VXLAN_GPE 0x014414 1562 #define TXGBE_GENEVE 0x014418 1563 #define TXGBE_TEREDO 0x01441C 1564 #define TXGBE_TCPTIME 0x014420 1565 1566 /* GPIO Registers */ 1567 #define TXGBE_GPIODATA 0x014800 1568 #define TXGBE_GPIOBIT_0 MS(0, 0x1) /* O:tx fault */ 1569 #define TXGBE_GPIOBIT_1 MS(1, 0x1) /* O:tx disabled */ 1570 #define TXGBE_GPIOBIT_2 MS(2, 0x1) /* I:sfp module absent */ 1571 #define TXGBE_GPIOBIT_3 MS(3, 0x1) /* I:rx signal lost */ 1572 #define TXGBE_GPIOBIT_4 MS(4, 0x1) /* O:rate select, 1G(0) 10G(1) */ 1573 #define TXGBE_GPIOBIT_5 MS(5, 0x1) /* O:rate select, 1G(0) 10G(1) */ 1574 #define TXGBE_GPIOBIT_6 MS(6, 0x1) /* I:ext phy interrupt */ 1575 #define TXGBE_GPIOBIT_7 MS(7, 0x1) /* I:fan speed alarm */ 1576 #define TXGBE_GPIODIR 0x014804 1577 #define TXGBE_GPIOCTL 0x014808 1578 #define TXGBE_GPIOINTEN 0x014830 1579 #define TXGBE_GPIOINTMASK 0x014834 1580 #define TXGBE_GPIOINTTYPE 0x014838 1581 #define TXGBE_GPIOINTSTAT 0x014840 1582 #define TXGBE_GPIOEOI 0x01484C 1583 1584 1585 #define TXGBE_ARBPOOLIDX 0x01820C 1586 #define TXGBE_ARBTXRATE 0x018404 1587 #define TXGBE_ARBTXRATE_MIN(v) LS(v, 0, 0x3FFF) 1588 #define TXGBE_ARBTXRATE_MAX(v) LS(v, 16, 0x3FFF) 1589 1590 /* qos */ 1591 #define TXGBE_ARBTXCTL 0x018200 1592 #define TXGBE_ARBTXCTL_RRM MS(1, 0x1) 1593 #define TXGBE_ARBTXCTL_WSP MS(2, 0x1) 1594 #define TXGBE_ARBTXCTL_DIA MS(6, 0x1) 1595 #define TXGBE_ARBTXMMW 0x018208 1596 1597 /**************************** Receive DMA registers **************************/ 1598 /* receive control */ 1599 #define TXGBE_ARBRXCTL 0x012000 1600 #define TXGBE_ARBRXCTL_RRM MS(1, 0x1) 1601 #define TXGBE_ARBRXCTL_WSP MS(2, 0x1) 1602 #define TXGBE_ARBRXCTL_DIA MS(6, 0x1) 1603 1604 #define TXGBE_RPUP2TC 0x019008 1605 #define TXGBE_RPUP2TC_UP_SHIFT 3 1606 #define TXGBE_RPUP2TC_UP_MASK 0x7 1607 1608 /* mac switcher */ 1609 #define TXGBE_ETHADDRL 0x016200 1610 #define TXGBE_ETHADDRL_AD0(v) LS(v, 0, 0xFF) 1611 #define TXGBE_ETHADDRL_AD1(v) LS(v, 8, 0xFF) 1612 #define TXGBE_ETHADDRL_AD2(v) LS(v, 16, 0xFF) 1613 #define TXGBE_ETHADDRL_AD3(v) LS(v, 24, 0xFF) 1614 #define TXGBE_ETHADDRL_ETAG(r) RS(r, 0, 0x3FFF) 1615 #define TXGBE_ETHADDRH 0x016204 1616 #define TXGBE_ETHADDRH_AD4(v) LS(v, 0, 0xFF) 1617 #define TXGBE_ETHADDRH_AD5(v) LS(v, 8, 0xFF) 1618 #define TXGBE_ETHADDRH_AD_MASK MS(0, 0xFFFF) 1619 #define TXGBE_ETHADDRH_ETAG MS(30, 0x1) 1620 #define TXGBE_ETHADDRH_VLD MS(31, 0x1) 1621 #define TXGBE_ETHADDRASSL 0x016208 1622 #define TXGBE_ETHADDRASSH 0x01620C 1623 #define TXGBE_ETHADDRIDX 0x016210 1624 1625 /* Outmost Barrier Filters */ 1626 #define TXGBE_MCADDRTBL(i) (0x015200 + (i) * 4) /* 0-127 */ 1627 #define TXGBE_UCADDRTBL(i) (0x015400 + (i) * 4) /* 0-127 */ 1628 #define TXGBE_VLANTBL(i) (0x016000 + (i) * 4) /* 0-127 */ 1629 1630 #define TXGBE_MNGFLEXSEL 0x1582C 1631 #define TXGBE_MNGFLEXDWL(i) (0x15A00 + ((i) * 16)) 1632 #define TXGBE_MNGFLEXDWH(i) (0x15A04 + ((i) * 16)) 1633 #define TXGBE_MNGFLEXMSK(i) (0x15A08 + ((i) * 16)) 1634 1635 #define TXGBE_LANFLEXSEL 0x15B8C 1636 #define TXGBE_LANFLEXDWL(i) (0x15C00 + ((i) * 16)) 1637 #define TXGBE_LANFLEXDWH(i) (0x15C04 + ((i) * 16)) 1638 #define TXGBE_LANFLEXMSK(i) (0x15C08 + ((i) * 16)) 1639 #define TXGBE_LANFLEXCTL 0x15CFC 1640 1641 /* ipsec */ 1642 #define TXGBE_IPSRXIDX 0x017100 1643 #define TXGBE_IPSRXIDX_ENA MS(0, 0x1) 1644 #define TXGBE_IPSRXIDX_TB_MASK MS(1, 0x3) 1645 #define TXGBE_IPSRXIDX_TB_IP LS(1, 1, 0x3) 1646 #define TXGBE_IPSRXIDX_TB_SPI LS(2, 1, 0x3) 1647 #define TXGBE_IPSRXIDX_TB_KEY LS(3, 1, 0x3) 1648 #define TXGBE_IPSRXIDX_TBIDX(v) LS(v, 3, 0x3FF) 1649 #define TXGBE_IPSRXIDX_READ MS(30, 0x1) 1650 #define TXGBE_IPSRXIDX_WRITE MS(31, 0x1) 1651 #define TXGBE_IPSRXADDR(i) (0x017104 + (i) * 4) 1652 1653 #define TXGBE_IPSRXSPI 0x017114 1654 #define TXGBE_IPSRXADDRIDX 0x017118 1655 #define TXGBE_IPSRXKEY(i) (0x01711C + (i) * 4) 1656 #define TXGBE_IPSRXSALT 0x01712C 1657 #define TXGBE_IPSRXMODE 0x017130 1658 #define TXGBE_IPSRXMODE_IPV6 0x00000010 1659 #define TXGBE_IPSRXMODE_DEC 0x00000008 1660 #define TXGBE_IPSRXMODE_ESP 0x00000004 1661 #define TXGBE_IPSRXMODE_AH 0x00000002 1662 #define TXGBE_IPSRXMODE_VLD 0x00000001 1663 #define TXGBE_IPSTXIDX 0x01D100 1664 #define TXGBE_IPSTXIDX_ENA MS(0, 0x1) 1665 #define TXGBE_IPSTXIDX_SAIDX(v) LS(v, 3, 0x3FF) 1666 #define TXGBE_IPSTXIDX_READ MS(30, 0x1) 1667 #define TXGBE_IPSTXIDX_WRITE MS(31, 0x1) 1668 #define TXGBE_IPSTXSALT 0x01D104 1669 #define TXGBE_IPSTXKEY(i) (0x01D108 + (i) * 4) 1670 1671 #define TXGBE_MACTXCFG 0x011000 1672 #define TXGBE_MACTXCFG_TXE MS(0, 0x1) 1673 #define TXGBE_MACTXCFG_SPEED_MASK MS(29, 0x3) 1674 #define TXGBE_MACTXCFG_SPEED(v) LS(v, 29, 0x3) 1675 #define TXGBE_MACTXCFG_SPEED_10G LS(0, 29, 0x3) 1676 #define TXGBE_MACTXCFG_SPEED_1G LS(3, 29, 0x3) 1677 1678 #define TXGBE_ISBADDRL 0x000160 1679 #define TXGBE_ISBADDRH 0x000164 1680 1681 #define NVM_OROM_OFFSET 0x17 1682 #define NVM_OROM_BLK_LOW 0x83 1683 #define NVM_OROM_BLK_HI 0x84 1684 #define NVM_OROM_PATCH_MASK 0xFF 1685 #define NVM_OROM_SHIFT 8 1686 #define NVM_VER_MASK 0x00FF /* version mask */ 1687 #define NVM_VER_SHIFT 8 /* version bit shift */ 1688 #define NVM_OEM_PROD_VER_PTR 0x1B /* OEM Product version block pointer */ 1689 #define NVM_OEM_PROD_VER_CAP_OFF 0x1 /* OEM Product version format offset */ 1690 #define NVM_OEM_PROD_VER_OFF_L 0x2 /* OEM Product version offset low */ 1691 #define NVM_OEM_PROD_VER_OFF_H 0x3 /* OEM Product version offset high */ 1692 #define NVM_OEM_PROD_VER_CAP_MASK 0xF /* OEM Product version cap mask */ 1693 #define NVM_OEM_PROD_VER_MOD_LEN 0x3 /* OEM Product version module length */ 1694 #define NVM_ETK_OFF_LOW 0x2D /* version low order word */ 1695 #define NVM_ETK_OFF_HI 0x2E /* version high order word */ 1696 #define NVM_ETK_SHIFT 16 /* high version word shift */ 1697 #define NVM_VER_INVALID 0xFFFF 1698 #define NVM_ETK_VALID 0x8000 1699 #define NVM_INVALID_PTR 0xFFFF 1700 #define NVM_VER_SIZE 32 /* version sting size */ 1701 1702 #define TXGBE_REG_RSSTBL TXGBE_RSSTBL(0) 1703 #define TXGBE_REG_RSSKEY TXGBE_RSSKEY(0) 1704 1705 static inline u32 1706 txgbe_map_reg(struct txgbe_hw *hw, u32 reg) 1707 { 1708 switch (reg) { 1709 case TXGBE_REG_RSSTBL: 1710 if (hw->mac.type == txgbe_mac_raptor_vf) 1711 reg = TXGBE_VFRSSTBL(0); 1712 break; 1713 case TXGBE_REG_RSSKEY: 1714 if (hw->mac.type == txgbe_mac_raptor_vf) 1715 reg = TXGBE_VFRSSKEY(0); 1716 break; 1717 default: 1718 /* you should never reach here */ 1719 reg = TXGBE_REG_DUMMY; 1720 break; 1721 } 1722 1723 return reg; 1724 } 1725 1726 /* 1727 * read non-rc counters 1728 */ 1729 #define TXGBE_UPDCNT32(reg, last, cur) \ 1730 do { \ 1731 uint32_t latest = rd32(hw, reg); \ 1732 if (hw->offset_loaded || hw->rx_loaded) \ 1733 last = 0; \ 1734 cur += (latest - last) & UINT_MAX; \ 1735 last = latest; \ 1736 } while (0) 1737 1738 #define TXGBE_UPDCNT36(regl, last, cur) \ 1739 do { \ 1740 uint64_t new_lsb = rd32(hw, regl); \ 1741 uint64_t new_msb = rd32(hw, regl + 4); \ 1742 uint64_t latest = ((new_msb << 32) | new_lsb); \ 1743 if (hw->offset_loaded || hw->rx_loaded) \ 1744 last = 0; \ 1745 cur += (0x1000000000LL + latest - last) & 0xFFFFFFFFFLL; \ 1746 last = latest; \ 1747 } while (0) 1748 1749 /** 1750 * register operations 1751 **/ 1752 #define TXGBE_REG_READ32(addr) rte_read32(addr) 1753 #define TXGBE_REG_READ32_RELAXED(addr) rte_read32_relaxed(addr) 1754 #define TXGBE_REG_WRITE32(addr, val) rte_write32(val, addr) 1755 #define TXGBE_REG_WRITE32_RELAXED(addr, val) rte_write32_relaxed(val, addr) 1756 1757 #define TXGBE_DEAD_READ_REG 0xdeadbeefU 1758 #define TXGBE_FAILED_READ_REG 0xffffffffU 1759 #define TXGBE_REG_ADDR(hw, reg) \ 1760 ((volatile u32 *)((char *)(hw)->hw_addr + (reg))) 1761 1762 static inline u32 1763 txgbe_get32(volatile u32 *addr) 1764 { 1765 u32 val = TXGBE_REG_READ32(addr); 1766 return rte_le_to_cpu_32(val); 1767 } 1768 1769 static inline void 1770 txgbe_set32(volatile u32 *addr, u32 val) 1771 { 1772 val = rte_cpu_to_le_32(val); 1773 TXGBE_REG_WRITE32(addr, val); 1774 } 1775 1776 static inline u32 1777 txgbe_get32_masked(volatile u32 *addr, u32 mask) 1778 { 1779 u32 val = txgbe_get32(addr); 1780 val &= mask; 1781 return val; 1782 } 1783 1784 static inline void 1785 txgbe_set32_masked(volatile u32 *addr, u32 mask, u32 field) 1786 { 1787 u32 val = txgbe_get32(addr); 1788 val = ((val & ~mask) | (field & mask)); 1789 txgbe_set32(addr, val); 1790 } 1791 1792 static inline u32 1793 txgbe_get32_relaxed(volatile u32 *addr) 1794 { 1795 u32 val = TXGBE_REG_READ32_RELAXED(addr); 1796 return rte_le_to_cpu_32(val); 1797 } 1798 1799 static inline void 1800 txgbe_set32_relaxed(volatile u32 *addr, u32 val) 1801 { 1802 val = rte_cpu_to_le_32(val); 1803 TXGBE_REG_WRITE32_RELAXED(addr, val); 1804 } 1805 1806 static inline u32 1807 rd32(struct txgbe_hw *hw, u32 reg) 1808 { 1809 if (reg == TXGBE_REG_DUMMY) 1810 return 0; 1811 return txgbe_get32(TXGBE_REG_ADDR(hw, reg)); 1812 } 1813 1814 static inline void 1815 wr32(struct txgbe_hw *hw, u32 reg, u32 val) 1816 { 1817 if (reg == TXGBE_REG_DUMMY) 1818 return; 1819 txgbe_set32(TXGBE_REG_ADDR(hw, reg), val); 1820 } 1821 1822 static inline u32 1823 rd32m(struct txgbe_hw *hw, u32 reg, u32 mask) 1824 { 1825 u32 val = rd32(hw, reg); 1826 val &= mask; 1827 return val; 1828 } 1829 1830 static inline void 1831 wr32m(struct txgbe_hw *hw, u32 reg, u32 mask, u32 field) 1832 { 1833 u32 val = rd32(hw, reg); 1834 val = ((val & ~mask) | (field & mask)); 1835 wr32(hw, reg, val); 1836 } 1837 1838 static inline u64 1839 rd64(struct txgbe_hw *hw, u32 reg) 1840 { 1841 u64 lsb = rd32(hw, reg); 1842 u64 msb = rd32(hw, reg + 4); 1843 return (lsb | msb << 32); 1844 } 1845 1846 static inline void 1847 wr64(struct txgbe_hw *hw, u32 reg, u64 val) 1848 { 1849 wr32(hw, reg, (u32)val); 1850 wr32(hw, reg + 4, (u32)(val >> 32)); 1851 } 1852 1853 /* poll register */ 1854 static inline u32 1855 po32m(struct txgbe_hw *hw, u32 reg, u32 mask, u32 expect, u32 *actual, 1856 u32 loop, u32 slice) 1857 { 1858 bool usec = true; 1859 u32 value = 0, all = 0; 1860 1861 if (slice > 1000 * MAX_UDELAY_MS) { 1862 usec = false; 1863 slice = (slice + 500) / 1000; 1864 } 1865 1866 do { 1867 all |= rd32(hw, reg); 1868 value |= mask & all; 1869 if (value == expect) 1870 break; 1871 1872 usec ? usec_delay(slice) : msec_delay(slice); 1873 } while (--loop > 0); 1874 1875 if (actual) 1876 *actual = all; 1877 1878 return loop; 1879 } 1880 1881 /* flush all write operations */ 1882 #define txgbe_flush(hw) rd32(hw, 0x00100C) 1883 1884 #define rd32a(hw, reg, idx) ( \ 1885 rd32((hw), (reg) + ((idx) << 2))) 1886 #define wr32a(hw, reg, idx, val) \ 1887 wr32((hw), (reg) + ((idx) << 2), (val)) 1888 1889 #define rd32at(hw, reg, idx) \ 1890 rd32a(hw, txgbe_map_reg(hw, reg), idx) 1891 #define wr32at(hw, reg, idx, val) \ 1892 wr32a(hw, txgbe_map_reg(hw, reg), idx, val) 1893 1894 #define rd32w(hw, reg, mask, slice) do { \ 1895 rd32((hw), reg); \ 1896 po32m((hw), reg, mask, mask, NULL, 5, slice); \ 1897 } while (0) 1898 1899 #define wr32w(hw, reg, val, mask, slice) do { \ 1900 wr32((hw), reg, val); \ 1901 po32m((hw), reg, mask, mask, NULL, 5, slice); \ 1902 } while (0) 1903 1904 #define TXGBE_XPCS_IDAADDR 0x13000 1905 #define TXGBE_XPCS_IDADATA 0x13004 1906 #define TXGBE_EPHY_IDAADDR 0x13008 1907 #define TXGBE_EPHY_IDADATA 0x1300C 1908 static inline u32 1909 rd32_epcs(struct txgbe_hw *hw, u32 addr) 1910 { 1911 u32 data; 1912 wr32(hw, TXGBE_XPCS_IDAADDR, addr); 1913 data = rd32(hw, TXGBE_XPCS_IDADATA); 1914 return data; 1915 } 1916 1917 static inline void 1918 wr32_epcs(struct txgbe_hw *hw, u32 addr, u32 data) 1919 { 1920 wr32(hw, TXGBE_XPCS_IDAADDR, addr); 1921 wr32(hw, TXGBE_XPCS_IDADATA, data); 1922 } 1923 1924 static inline u32 1925 rd32_ephy(struct txgbe_hw *hw, u32 addr) 1926 { 1927 u32 data; 1928 wr32(hw, TXGBE_EPHY_IDAADDR, addr); 1929 data = rd32(hw, TXGBE_EPHY_IDADATA); 1930 return data; 1931 } 1932 1933 static inline void 1934 wr32_ephy(struct txgbe_hw *hw, u32 addr, u32 data) 1935 { 1936 wr32(hw, TXGBE_EPHY_IDAADDR, addr); 1937 wr32(hw, TXGBE_EPHY_IDADATA, data); 1938 } 1939 1940 #endif /* _TXGBE_REGS_H_ */ 1941