1*9540SJoost.Mulders@Sun.COM /* 2*9540SJoost.Mulders@Sun.COM * CDDL HEADER START 3*9540SJoost.Mulders@Sun.COM * 4*9540SJoost.Mulders@Sun.COM * The contents of this file are subject to the terms of the 5*9540SJoost.Mulders@Sun.COM * Common Development and Distribution License (the "License"). 6*9540SJoost.Mulders@Sun.COM * You may not use this file except in compliance with the License. 7*9540SJoost.Mulders@Sun.COM * 8*9540SJoost.Mulders@Sun.COM * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*9540SJoost.Mulders@Sun.COM * or http://www.opensolaris.org/os/licensing. 10*9540SJoost.Mulders@Sun.COM * See the License for the specific language governing permissions 11*9540SJoost.Mulders@Sun.COM * and limitations under the License. 12*9540SJoost.Mulders@Sun.COM * 13*9540SJoost.Mulders@Sun.COM * When distributing Covered Code, include this CDDL HEADER in each 14*9540SJoost.Mulders@Sun.COM * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*9540SJoost.Mulders@Sun.COM * If applicable, add the following below this CDDL HEADER, with the 16*9540SJoost.Mulders@Sun.COM * fields enclosed by brackets "[]" replaced with your own identifying 17*9540SJoost.Mulders@Sun.COM * information: Portions Copyright [yyyy] [name of copyright owner] 18*9540SJoost.Mulders@Sun.COM * 19*9540SJoost.Mulders@Sun.COM * CDDL HEADER END 20*9540SJoost.Mulders@Sun.COM */ 21*9540SJoost.Mulders@Sun.COM 22*9540SJoost.Mulders@Sun.COM /* 23*9540SJoost.Mulders@Sun.COM * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 24*9540SJoost.Mulders@Sun.COM * Use is subject to license terms. 25*9540SJoost.Mulders@Sun.COM */ 26*9540SJoost.Mulders@Sun.COM 27*9540SJoost.Mulders@Sun.COM /* 28*9540SJoost.Mulders@Sun.COM * Register definitions for the VIA Rhine ethernet adapters 29*9540SJoost.Mulders@Sun.COM */ 30*9540SJoost.Mulders@Sun.COM #ifndef _VRREG_H 31*9540SJoost.Mulders@Sun.COM #define _VRREG_H 32*9540SJoost.Mulders@Sun.COM 33*9540SJoost.Mulders@Sun.COM #ifdef __cplusplus 34*9540SJoost.Mulders@Sun.COM extern "C" { 35*9540SJoost.Mulders@Sun.COM #endif 36*9540SJoost.Mulders@Sun.COM 37*9540SJoost.Mulders@Sun.COM /* 38*9540SJoost.Mulders@Sun.COM * MAC address 39*9540SJoost.Mulders@Sun.COM */ 40*9540SJoost.Mulders@Sun.COM #define VR_ETHERADDR 0x00 41*9540SJoost.Mulders@Sun.COM 42*9540SJoost.Mulders@Sun.COM /* 43*9540SJoost.Mulders@Sun.COM * Receive Configuration 44*9540SJoost.Mulders@Sun.COM * The thresholds denote the level in the FIFO before transmission 45*9540SJoost.Mulders@Sun.COM * to host memory starts. 46*9540SJoost.Mulders@Sun.COM */ 47*9540SJoost.Mulders@Sun.COM #define VR_RXCFG 0x06 48*9540SJoost.Mulders@Sun.COM #define VR_RXCFG_ACCEPTERROR (1 << 0) 49*9540SJoost.Mulders@Sun.COM #define VR_RXCFG_ACCEPTRUNT (1 << 1) 50*9540SJoost.Mulders@Sun.COM #define VR_RXCFG_ACCEPTMULTI (1 << 2) 51*9540SJoost.Mulders@Sun.COM #define VR_RXCFG_ACCEPTBROAD (1 << 3) 52*9540SJoost.Mulders@Sun.COM #define VR_RXCFG_PROMISC (1 << 4) 53*9540SJoost.Mulders@Sun.COM #define VR_RXCFG_FIFO_THRESHOLD_0 (1 << 5) 54*9540SJoost.Mulders@Sun.COM #define VR_RXCFG_FIFO_THRESHOLD_1 (1 << 6) 55*9540SJoost.Mulders@Sun.COM #define VR_RXCFG_FIFO_THRESHOLD_2 (1 << 7) 56*9540SJoost.Mulders@Sun.COM #define VR_RXCFG_FIFO_THRESHOLD_BITS (VR_RXCFG_FIFO_THRESHOLD_0 | \ 57*9540SJoost.Mulders@Sun.COM VR_RXCFG_FIFO_THRESHOLD_1 | \ 58*9540SJoost.Mulders@Sun.COM VR_RXCFG_FIFO_THRESHOLD_2) 59*9540SJoost.Mulders@Sun.COM #define VR_RXCFG_FIFO_THRESHOLD_64 (0) 60*9540SJoost.Mulders@Sun.COM #define VR_RXCFG_FIFO_THRESHOLD_32 (VR_RXCFG_FIFO_THRESHOLD_0) 61*9540SJoost.Mulders@Sun.COM #define VR_RXCFG_FIFO_THRESHOLD_128 (VR_RXCFG_FIFO_THRESHOLD_1) 62*9540SJoost.Mulders@Sun.COM #define VR_RXCFG_FIFO_THRESHOLD_256 (VR_RXCFG_FIFO_THRESHOLD_0 | \ 63*9540SJoost.Mulders@Sun.COM VR_RXCFG_FIFO_THRESHOLD_1) 64*9540SJoost.Mulders@Sun.COM #define VR_RXCFG_FIFO_THRESHOLD_512 (VR_RXCFG_FIFO_THRESHOLD_2) 65*9540SJoost.Mulders@Sun.COM #define VR_RXCFG_FIFO_THRESHOLD_768 (VR_RXCFG_FIFO_THRESHOLD_0 | \ 66*9540SJoost.Mulders@Sun.COM VR_RXCFG_FIFO_THRESHOLD_2) 67*9540SJoost.Mulders@Sun.COM #define VR_RXCFG_FIFO_THRESHOLD_1024 (VR_RXCFG_FIFO_THRESHOLD_2 | \ 68*9540SJoost.Mulders@Sun.COM VR_RXCFG_FIFO_THRESHOLD_1) 69*9540SJoost.Mulders@Sun.COM #define VR_RXCFG_FIFO_THRESHOLD_STFW (VR_RXCFG_FIFO_THRESHOLD_BITS) 70*9540SJoost.Mulders@Sun.COM 71*9540SJoost.Mulders@Sun.COM /* 72*9540SJoost.Mulders@Sun.COM * Transmit Configuration 73*9540SJoost.Mulders@Sun.COM * The transmission starts when the data in the FIFO reaches the threshold. 74*9540SJoost.Mulders@Sun.COM * Store and Forward means that a transmission starts when a complete frame 75*9540SJoost.Mulders@Sun.COM * is in the FIFO. 76*9540SJoost.Mulders@Sun.COM */ 77*9540SJoost.Mulders@Sun.COM #define VR_TXCFG 0x07 78*9540SJoost.Mulders@Sun.COM #define VR_TXCFG_8021PQ_EN (1 << 0) /* VT6105M */ 79*9540SJoost.Mulders@Sun.COM #define VR_TXCFG_LOOPBACK_0 (1 << 1) 80*9540SJoost.Mulders@Sun.COM #define VR_TXCFG_LOOPBACK_1 (2 << 2) 81*9540SJoost.Mulders@Sun.COM #define VR_TXCFG_BACKOFF_NATIONAL (1 << 3) /* < VT6105M */ 82*9540SJoost.Mulders@Sun.COM #define VR_TXCFG_FIFO_THRESHOLD_0 (1 << 5) 83*9540SJoost.Mulders@Sun.COM #define VR_TXCFG_FIFO_THRESHOLD_1 (1 << 6) 84*9540SJoost.Mulders@Sun.COM #define VR_TXCFG_FIFO_THRESHOLD_2 (1 << 7) 85*9540SJoost.Mulders@Sun.COM #define VR_TXCFG_FIFO_THRESHOLD_BITS (VR_TXCFG_FIFO_THRESHOLD_0 | \ 86*9540SJoost.Mulders@Sun.COM VR_TXCFG_FIFO_THRESHOLD_1 | \ 87*9540SJoost.Mulders@Sun.COM VR_TXCFG_FIFO_THRESHOLD_2) 88*9540SJoost.Mulders@Sun.COM #define VR_TXCFG_FIFO_THRESHOLD_128 (0) 89*9540SJoost.Mulders@Sun.COM #define VR_TXCFG_FIFO_THRESHOLD_256 (VR_TXCFG_FIFO_THRESHOLD_0) 90*9540SJoost.Mulders@Sun.COM #define VR_TXCFG_FIFO_THRESHOLD_512 (VR_TXCFG_FIFO_THRESHOLD_1) 91*9540SJoost.Mulders@Sun.COM #define VR_TXCFG_FIFO_THRESHOLD_1024 (VR_TXCFG_FIFO_THRESHOLD_0 | \ 92*9540SJoost.Mulders@Sun.COM VR_TXCFG_FIFO_THRESHOLD_1) 93*9540SJoost.Mulders@Sun.COM #define VR_TXCFG_FIFO_THRESHOLD_STFW (VR_TXCFG_FIFO_THRESHOLD_BITS) 94*9540SJoost.Mulders@Sun.COM 95*9540SJoost.Mulders@Sun.COM /* 96*9540SJoost.Mulders@Sun.COM * Chip control 97*9540SJoost.Mulders@Sun.COM */ 98*9540SJoost.Mulders@Sun.COM #define VR_CTRL0 0x08 99*9540SJoost.Mulders@Sun.COM #define VR_CTRL0_RESERVED (1 << 0) 100*9540SJoost.Mulders@Sun.COM #define VR_CTRL0_DMA_ENABLE (1 << 1) 101*9540SJoost.Mulders@Sun.COM #define VR_CTRL0_DMA_STOP (1 << 2) 102*9540SJoost.Mulders@Sun.COM #define VR_CTRL0_RX_DMA_ENABLE (1 << 3) 103*9540SJoost.Mulders@Sun.COM #define VR_CTRL0_TX_DMA_ENABLE (1 << 4) 104*9540SJoost.Mulders@Sun.COM #define VR_CTRL0_TXPOLL (1 << 5) /* < 6105M */ 105*9540SJoost.Mulders@Sun.COM #define VR_CTRL0_RXPOLL (1 << 6) /* < 6105M */ 106*9540SJoost.Mulders@Sun.COM 107*9540SJoost.Mulders@Sun.COM #define VR_CTRL0_DMA_GO (VR_CTRL0_DMA_ENABLE | \ 108*9540SJoost.Mulders@Sun.COM VR_CTRL0_RX_DMA_ENABLE | \ 109*9540SJoost.Mulders@Sun.COM VR_CTRL0_TX_DMA_ENABLE | \ 110*9540SJoost.Mulders@Sun.COM VR_CTRL0_TXPOLL) 111*9540SJoost.Mulders@Sun.COM #define VR_CTRL1 0x09 112*9540SJoost.Mulders@Sun.COM #define VR_CTRL1_RESERVED (1 << 0) 113*9540SJoost.Mulders@Sun.COM #define VR_CTRL1_UNICAST_EN (1 << 1) 114*9540SJoost.Mulders@Sun.COM #define VR_CTRL1_MACFULLDUPLEX (1 << 2) 115*9540SJoost.Mulders@Sun.COM #define VR_CTRL1_NOAUTOPOLL (1 << 3) 116*9540SJoost.Mulders@Sun.COM #define VR_CTRL1_RESERVED2 (1 << 4) 117*9540SJoost.Mulders@Sun.COM #define VR_CTRL1_TXPOLL (1 << 5) /* VT6105M */ 118*9540SJoost.Mulders@Sun.COM #define VR_CTRL1_RXPOLL (1 << 6) /* VT6105M */ 119*9540SJoost.Mulders@Sun.COM #define VR_CTRL1_RESET (1 << 7) 120*9540SJoost.Mulders@Sun.COM 121*9540SJoost.Mulders@Sun.COM #define VR_T_XQNWAKE 0x0a /* VT6105M */ 122*9540SJoost.Mulders@Sun.COM 123*9540SJoost.Mulders@Sun.COM /* 124*9540SJoost.Mulders@Sun.COM * Interrupt Status 125*9540SJoost.Mulders@Sun.COM * This register reflects NIC status 126*9540SJoost.Mulders@Sun.COM * The host reads it to determine the cause of the interrupt 127*9540SJoost.Mulders@Sun.COM * This register must be cleared after power-up 128*9540SJoost.Mulders@Sun.COM */ 129*9540SJoost.Mulders@Sun.COM #define VR_ISR0 0x0C 130*9540SJoost.Mulders@Sun.COM #define VR_ISR0_RX_DONE (1 << 0) 131*9540SJoost.Mulders@Sun.COM #define VR_ISR0_TX_DONE (1 << 1) 132*9540SJoost.Mulders@Sun.COM #define VR_ISR0_RX_ERR (1 << 2) 133*9540SJoost.Mulders@Sun.COM #define VR_ISR0_TX_ERR (1 << 3) 134*9540SJoost.Mulders@Sun.COM #define VR_ISR0_TX_BUF_UFLOW (1 << 4) 135*9540SJoost.Mulders@Sun.COM #define VR_ISR0_RX_LINKERR (1 << 5) 136*9540SJoost.Mulders@Sun.COM #define VR_ISR0_BUSERR (1 << 6) 137*9540SJoost.Mulders@Sun.COM #define VR_ISR0_STATSMAX (1 << 7) 138*9540SJoost.Mulders@Sun.COM #define VR_ISR0_RX_EARLY (1 << 8) 139*9540SJoost.Mulders@Sun.COM #define VR_ISR0_TX_FIFO_UFLOW (1 << 9) 140*9540SJoost.Mulders@Sun.COM #define VR_ISR0_RX_FIFO_OFLOW (1 << 10) 141*9540SJoost.Mulders@Sun.COM #define VR_ISR0_RX_DROPPED (1 << 11) 142*9540SJoost.Mulders@Sun.COM #define VR_ISR0_RX_NOBUF (1 << 12) 143*9540SJoost.Mulders@Sun.COM #define VR_ISR0_TX_ABORT (1 << 13) 144*9540SJoost.Mulders@Sun.COM #define VR_ISR0_LINKSTATUS (1 << 14) 145*9540SJoost.Mulders@Sun.COM #define VR_ISR0_GENERAL (1 << 15) 146*9540SJoost.Mulders@Sun.COM 147*9540SJoost.Mulders@Sun.COM /* 148*9540SJoost.Mulders@Sun.COM * Interrupt Configuration 149*9540SJoost.Mulders@Sun.COM * All bits in this register correspond to the bits in the Interrupt Status 150*9540SJoost.Mulders@Sun.COM * register Setting individual bits will enable the corresponding interrupt 151*9540SJoost.Mulders@Sun.COM * This register defaults to all zeros on power up 152*9540SJoost.Mulders@Sun.COM */ 153*9540SJoost.Mulders@Sun.COM #define VR_ICR0 0x0E 154*9540SJoost.Mulders@Sun.COM #define VR_ICR0_RX_DONE VR_ISR0_RX_DONE 155*9540SJoost.Mulders@Sun.COM #define VR_ICR0_TX_DONE VR_ISR0_TX_DONE 156*9540SJoost.Mulders@Sun.COM #define VR_ICR0_RX_ERR VR_ISR0_RX_ERR 157*9540SJoost.Mulders@Sun.COM #define VR_ICR0_TX_ERR VR_ISR0_TX_ERR 158*9540SJoost.Mulders@Sun.COM #define VR_ICR0_TX_BUF_UFLOW VR_ISR0_TX_BUF_UFLOW 159*9540SJoost.Mulders@Sun.COM #define VR_ICR0_RX_LINKERR VR_ISR0_RX_LINKERR 160*9540SJoost.Mulders@Sun.COM #define VR_ICR0_BUSERR VR_ISR0_BUSERR 161*9540SJoost.Mulders@Sun.COM #define VR_ICR0_STATSMAX VR_ISR0_STATSMAX 162*9540SJoost.Mulders@Sun.COM #define VR_ICR0_RX_EARLY VR_ISR0_RX_EARLY 163*9540SJoost.Mulders@Sun.COM #define VR_ICR0_TX_FIFO_UFLOW VR_ISR0_TX_FIFO_UFLOW 164*9540SJoost.Mulders@Sun.COM #define VR_ICR0_RX_FIFO_OFLOW VR_ISR0_RX_FIFO_OFLOW 165*9540SJoost.Mulders@Sun.COM #define VR_ICR0_RX_DROPPED VR_ISR0_RX_DROPPED 166*9540SJoost.Mulders@Sun.COM #define VR_ICR0_RX_NOBUF VR_ISR0_RX_NOBUF 167*9540SJoost.Mulders@Sun.COM #define VR_ICR0_TX_ABORT VR_ISR0_TX_ABORT 168*9540SJoost.Mulders@Sun.COM #define VR_ICR0_LINKSTATUS VR_ISR0_LINKSTATUS 169*9540SJoost.Mulders@Sun.COM #define VR_ICR0_GENERAL VR_ISR0_GENERAL 170*9540SJoost.Mulders@Sun.COM 171*9540SJoost.Mulders@Sun.COM /* 172*9540SJoost.Mulders@Sun.COM * Mulicast address registers (MAR), 8 bytes 173*9540SJoost.Mulders@Sun.COM */ 174*9540SJoost.Mulders@Sun.COM #define VR_MAR0 0x10 /* - 0x13 */ 175*9540SJoost.Mulders@Sun.COM #define VR_MAR1 0x14 /* - 0x17 */ 176*9540SJoost.Mulders@Sun.COM 177*9540SJoost.Mulders@Sun.COM /* 178*9540SJoost.Mulders@Sun.COM * VT6105M has a multicast/vlan filter and the hash bits are also used as 179*9540SJoost.Mulders@Sun.COM * CAM data port 180*9540SJoost.Mulders@Sun.COM */ 181*9540SJoost.Mulders@Sun.COM #define VR_MCAM0 0x10 /* VT6105M */ 182*9540SJoost.Mulders@Sun.COM #define VR_MCAM1 0x11 183*9540SJoost.Mulders@Sun.COM #define VR_MCAM2 0x12 184*9540SJoost.Mulders@Sun.COM #define VR_MCAM3 0x13 185*9540SJoost.Mulders@Sun.COM #define VR_MCAM4 0x14 186*9540SJoost.Mulders@Sun.COM #define VR_MCAM5 0x15 187*9540SJoost.Mulders@Sun.COM #define VR_VCAM0 0x16 188*9540SJoost.Mulders@Sun.COM #define VR_VCAM1 0x17 189*9540SJoost.Mulders@Sun.COM 190*9540SJoost.Mulders@Sun.COM /* 191*9540SJoost.Mulders@Sun.COM * Start addresses of receive and transmit ring 192*9540SJoost.Mulders@Sun.COM */ 193*9540SJoost.Mulders@Sun.COM #define VR_RXADDR 0x18 /* - 0x1B */ 194*9540SJoost.Mulders@Sun.COM #define VR_TXADDR 0x1C /* - 0x1F */ 195*9540SJoost.Mulders@Sun.COM 196*9540SJoost.Mulders@Sun.COM /* 197*9540SJoost.Mulders@Sun.COM * VT6105M has 8 TX queues 198*9540SJoost.Mulders@Sun.COM */ 199*9540SJoost.Mulders@Sun.COM #define VR_TX7_ADDR 0x1C 200*9540SJoost.Mulders@Sun.COM #define VR_TX6_ADDR 0x20 201*9540SJoost.Mulders@Sun.COM #define VR_TX5_ADDR 0x24 202*9540SJoost.Mulders@Sun.COM #define VR_TX4_ADDR 0x28 203*9540SJoost.Mulders@Sun.COM #define VR_TX3_ADDR 0x2C 204*9540SJoost.Mulders@Sun.COM #define VR_TX2_ADDR 0x30 205*9540SJoost.Mulders@Sun.COM #define VR_TX1_ADDR 0x34 206*9540SJoost.Mulders@Sun.COM #define VR_TX0_ADDR 0x38 207*9540SJoost.Mulders@Sun.COM 208*9540SJoost.Mulders@Sun.COM /* 209*9540SJoost.Mulders@Sun.COM * Current and receive- and transmit descriptors. 210*9540SJoost.Mulders@Sun.COM * These are listed in the VT6102 manual but not in the VT6105. 211*9540SJoost.Mulders@Sun.COM */ 212*9540SJoost.Mulders@Sun.COM #define VR_RXCUR_DES0 0x20 /* - 0x23 */ 213*9540SJoost.Mulders@Sun.COM #define VR_RXCUR_DES1 0x24 /* - 0x27 */ 214*9540SJoost.Mulders@Sun.COM #define VR_RXCUR_DES2 0x28 /* - 0x2B */ 215*9540SJoost.Mulders@Sun.COM #define VR_RXCUR_DES3 0x2C /* - 0x2F */ 216*9540SJoost.Mulders@Sun.COM 217*9540SJoost.Mulders@Sun.COM /* VIA secrets here */ 218*9540SJoost.Mulders@Sun.COM 219*9540SJoost.Mulders@Sun.COM #define VR_INTRLINE 0x3c 220*9540SJoost.Mulders@Sun.COM #define VR_INTRPIN 0x3d 221*9540SJoost.Mulders@Sun.COM 222*9540SJoost.Mulders@Sun.COM /* VIA secrets here */ 223*9540SJoost.Mulders@Sun.COM 224*9540SJoost.Mulders@Sun.COM #define VR_TXCUR_DES0 0x40 /* - 0x43 */ 225*9540SJoost.Mulders@Sun.COM #define VR_TXCUR_DES1 0x44 /* - 0x47 */ 226*9540SJoost.Mulders@Sun.COM #define VR_TXCUR_DES2 0x48 /* - 0x4B */ 227*9540SJoost.Mulders@Sun.COM #define VR_TXCUR_DES3 0x4C /* - 0x4F */ 228*9540SJoost.Mulders@Sun.COM 229*9540SJoost.Mulders@Sun.COM #define VR_MODE0 0x50 230*9540SJoost.Mulders@Sun.COM #define VR_MODE0_QPKTDS 0x80 231*9540SJoost.Mulders@Sun.COM 232*9540SJoost.Mulders@Sun.COM #define VR_MODE1 0x51 233*9540SJoost.Mulders@Sun.COM #define VR_FIFOTST 0x51 234*9540SJoost.Mulders@Sun.COM 235*9540SJoost.Mulders@Sun.COM /* 236*9540SJoost.Mulders@Sun.COM * These are not in the datasheet but used in the 'fet' driver 237*9540SJoost.Mulders@Sun.COM */ 238*9540SJoost.Mulders@Sun.COM #define VR_MODE2 0x52 239*9540SJoost.Mulders@Sun.COM #define VR_MODE2_PCEROPT 0x80 /* VT6102 only */ 240*9540SJoost.Mulders@Sun.COM #define VR_MODE2_DISABT 0x40 241*9540SJoost.Mulders@Sun.COM #define VR_MODE2_MRDPL 0x08 /* VT6107A1 and above */ 242*9540SJoost.Mulders@Sun.COM #define VR_MODE2_MODE10T 0x02 243*9540SJoost.Mulders@Sun.COM 244*9540SJoost.Mulders@Sun.COM #define VR_MODE3 0x53 245*9540SJoost.Mulders@Sun.COM #define VR_MODE3_XONOPT 0x80 246*9540SJoost.Mulders@Sun.COM #define VR_MODE3_TPACEN 0x40 247*9540SJoost.Mulders@Sun.COM #define VR_MODE3_BACKOPT 0x20 248*9540SJoost.Mulders@Sun.COM #define VR_MODE3_DLTSEL 0x10 249*9540SJoost.Mulders@Sun.COM #define VR_MODE3_MIIDMY 0x08 250*9540SJoost.Mulders@Sun.COM #define VR_MODE3_MIION 0x04 251*9540SJoost.Mulders@Sun.COM 252*9540SJoost.Mulders@Sun.COM #define VR_PCI_DELAY_TIMER 0x54 253*9540SJoost.Mulders@Sun.COM #define VR_FIFOCMD 0x56 254*9540SJoost.Mulders@Sun.COM #define VR_FIFOSTA 0x57 255*9540SJoost.Mulders@Sun.COM 256*9540SJoost.Mulders@Sun.COM /* VIA secrets here */ 257*9540SJoost.Mulders@Sun.COM 258*9540SJoost.Mulders@Sun.COM /* 259*9540SJoost.Mulders@Sun.COM * MII Configuration 260*9540SJoost.Mulders@Sun.COM */ 261*9540SJoost.Mulders@Sun.COM #define VR_MIIPHYADDR 0x6C 262*9540SJoost.Mulders@Sun.COM #define VR_MIIPHYADDR_ADDR0 (1 << 0) 263*9540SJoost.Mulders@Sun.COM #define VR_MIIPHYADDR_ADDR1 (1 << 1) 264*9540SJoost.Mulders@Sun.COM #define VR_MIIPHYADDR_ADDR2 (1 << 2) 265*9540SJoost.Mulders@Sun.COM #define VR_MIIPHYADDR_ADDR3 (1 << 3) 266*9540SJoost.Mulders@Sun.COM #define VR_MIIPHYADDR_ADDR4 (1 << 4) 267*9540SJoost.Mulders@Sun.COM #define VR_MIIPHYADDR_ADDRBITS (VR_MIIPHYADDR_ADDR0 | \ 268*9540SJoost.Mulders@Sun.COM VR_MIIPHYADDR_ADDR1 | \ 269*9540SJoost.Mulders@Sun.COM VR_MIIPHYADDR_ADDR2 | \ 270*9540SJoost.Mulders@Sun.COM VR_MIIPHYADDR_ADDR3 | \ 271*9540SJoost.Mulders@Sun.COM VR_MIIPHYADDR_ADDR4) 272*9540SJoost.Mulders@Sun.COM #define VR_MIIPHYADDR_MD_CLOCK_FAST (1 << 5) 273*9540SJoost.Mulders@Sun.COM #define VR_MIIPHYADDR_POLLBITS ((1 << 7) | (1 << 6)) 274*9540SJoost.Mulders@Sun.COM #define VR_MIIPHYADDR_POLL1024 ((0 << 7) | (0 << 6)) 275*9540SJoost.Mulders@Sun.COM #define VR_MIIPHYADDR_POLL512 ((0 << 7) | (1 << 6)) 276*9540SJoost.Mulders@Sun.COM #define VR_MIIPHYADDR_POLL128 ((1 << 7) | (0 << 6)) 277*9540SJoost.Mulders@Sun.COM #define VR_MIIPHYADDR_POLL64 ((1 << 7) | (1 << 6)) 278*9540SJoost.Mulders@Sun.COM 279*9540SJoost.Mulders@Sun.COM /* 280*9540SJoost.Mulders@Sun.COM * MII status 281*9540SJoost.Mulders@Sun.COM */ 282*9540SJoost.Mulders@Sun.COM #define VR_MIISR 0x6D 283*9540SJoost.Mulders@Sun.COM #define VR_MIISR_SPEED (1 << 0) /* VT6102 and VT6105 */ 284*9540SJoost.Mulders@Sun.COM #define VR_MIISR_LINKFAIL (1 << 1) /* VT6102 and VT6105 */ 285*9540SJoost.Mulders@Sun.COM #define VR_MIISR_DUPLEX (1 << 2) /* VT6105 only */ 286*9540SJoost.Mulders@Sun.COM #define VR_MIISR_PHYERR (1 << 3) /* VT6102 and VT6105 */ 287*9540SJoost.Mulders@Sun.COM #define VR_MIISR_PHYOPT (1 << 4) /* VT6102 only */ 288*9540SJoost.Mulders@Sun.COM #define VR_MIISR_NWAYLINKOK (1 << 4) /* VT6105 only */ 289*9540SJoost.Mulders@Sun.COM #define VR_MIISR_NWAYPAUSE (1 << 5) /* VT6105M */ 290*9540SJoost.Mulders@Sun.COM #define VR_MIISR_NWAYASMPAUSE (1 << 6) /* VT6105M */ 291*9540SJoost.Mulders@Sun.COM #define VR_MIISR_PHYRST (1 << 7) 292*9540SJoost.Mulders@Sun.COM 293*9540SJoost.Mulders@Sun.COM /* 294*9540SJoost.Mulders@Sun.COM * Bus control 295*9540SJoost.Mulders@Sun.COM */ 296*9540SJoost.Mulders@Sun.COM #define VR_BCR0 0x6E /* receive */ 297*9540SJoost.Mulders@Sun.COM #define VR_BCR0_DMA0 (1 << 0) 298*9540SJoost.Mulders@Sun.COM #define VR_BCR0_DMA1 (1 << 1) 299*9540SJoost.Mulders@Sun.COM #define VR_BCR0_DMA2 (1 << 2) 300*9540SJoost.Mulders@Sun.COM #define VR_BCR0_DMABITS (VR_BCR0_DMA0|VR_BCR0_DMA1 | \ 301*9540SJoost.Mulders@Sun.COM VR_BCR0_DMA2) 302*9540SJoost.Mulders@Sun.COM #define VR_BCR0_DMA32 (0) 303*9540SJoost.Mulders@Sun.COM #define VR_BCR0_DMA64 (VR_BCR0_DMA0) 304*9540SJoost.Mulders@Sun.COM #define VR_BCR0_DMA128 (VR_BCR0_DMA1) 305*9540SJoost.Mulders@Sun.COM #define VR_BCR0_DMA256 (VR_BCR0_DMA0|VR_BCR0_DMA1) 306*9540SJoost.Mulders@Sun.COM #define VR_BCR0_DMA512 (VR_BCR0_DMA2) 307*9540SJoost.Mulders@Sun.COM #define VR_BCR0_DMA1024 (VR_BCR0_DMA0|VR_BCR0_DMA2) 308*9540SJoost.Mulders@Sun.COM #define VR_BCR0_DMASTFW (VR_BCR0_DMABITS) 309*9540SJoost.Mulders@Sun.COM #define VR_BCR0_RX_FIFO_THRESHOLD_0 (1 << 3) 310*9540SJoost.Mulders@Sun.COM #define VR_BCR0_RX_FIFO_THRESHOLD_1 (1 << 4) 311*9540SJoost.Mulders@Sun.COM #define VR_BCR0_RX_FIFO_THRESHOLD_2 (1 << 5) 312*9540SJoost.Mulders@Sun.COM #define VR_BCR0_RX_FIFO_THRESHOLD_BITS (VR_BCR0_RX_FIFO_THRESHOLD_0 | \ 313*9540SJoost.Mulders@Sun.COM VR_BCR0_RX_FIFO_THRESHOLD_1 | \ 314*9540SJoost.Mulders@Sun.COM VR_BCR0_RX_FIFO_THRESHOLD_2) 315*9540SJoost.Mulders@Sun.COM #define VR_BCR0_RX_FIFO_THRESHOLD_64 (0) 316*9540SJoost.Mulders@Sun.COM #define VR_BCR0_RX_FIFO_THRESHOLD_32 (VR_BCR0_RX_FIFO_THRESHOLD_0) 317*9540SJoost.Mulders@Sun.COM #define VR_BCR0_RX_FIFO_THRESHOLD_128 (VR_BCR0_RX_FIFO_THRESHOLD_1) 318*9540SJoost.Mulders@Sun.COM #define VR_BCR0_RX_FIFO_THRESHOLD_256 (VR_BCR0_RX_FIFO_THRESHOLD_0 | \ 319*9540SJoost.Mulders@Sun.COM VR_BCR0_RX_FIFO_THRESHOLD_1) 320*9540SJoost.Mulders@Sun.COM #define VR_BCR0_RX_FIFO_THRESHOLD_512 (VR_BCR0_RX_FIFO_THRESHOLD_2) 321*9540SJoost.Mulders@Sun.COM #define VR_BCR0_RX_FIFO_THRESHOLD_768 (VR_BCR0_RX_FIFO_THRESHOLD_0 | \ 322*9540SJoost.Mulders@Sun.COM VR_BCR0_RX_FIFO_THRESHOLD_2) 323*9540SJoost.Mulders@Sun.COM #define VR_BCR0_RX_FIFO_THRESHOLD_1024 (VR_BCR0_RX_FIFO_THRESHOLD_1 | \ 324*9540SJoost.Mulders@Sun.COM VR_BCR0_RX_FIFO_THRESHOLD_2) 325*9540SJoost.Mulders@Sun.COM #define VR_BCR0_RX_FIFO_THRESHOLD_STFW (VR_BCR0_RX_FIFO_THRESHOLD_BITS) 326*9540SJoost.Mulders@Sun.COM #define VR_BCR0_LEDCR (1 << 6) 327*9540SJoost.Mulders@Sun.COM #define VR_BCR0_MSEL (1 << 7) 328*9540SJoost.Mulders@Sun.COM 329*9540SJoost.Mulders@Sun.COM #define VR_BCR1 0x6F /* transmit */ 330*9540SJoost.Mulders@Sun.COM #define VR_BCR1_POLLT_0 (1 << 0) 331*9540SJoost.Mulders@Sun.COM #define VR_BCR1_POLLT_1 (1 << 1) 332*9540SJoost.Mulders@Sun.COM #define VR_BCR1_POLLT_2 (1 << 2) 333*9540SJoost.Mulders@Sun.COM #define VR_BCR1_TX_FIFO_THRESHOLD_0 (1 << 3) 334*9540SJoost.Mulders@Sun.COM #define VR_BCR1_TX_FIFO_THRESHOLD_1 (1 << 4) 335*9540SJoost.Mulders@Sun.COM #define VR_BCR1_TX_FIFO_THRESHOLD_2 (1 << 5) 336*9540SJoost.Mulders@Sun.COM #define VR_BCR1_TX_FIFO_THRESHOLD_BITS (VR_BCR1_TX_FIFO_THRESHOLD_0 | \ 337*9540SJoost.Mulders@Sun.COM VR_BCR1_TX_FIFO_THRESHOLD_1 | \ 338*9540SJoost.Mulders@Sun.COM VR_BCR1_TX_FIFO_THRESHOLD_2) 339*9540SJoost.Mulders@Sun.COM #define VR_BCR1_TX_FIFO_THRESHOLD_128 (0) 340*9540SJoost.Mulders@Sun.COM #define VR_BCR1_TX_FIFO_THRESHOLD_256 (VR_BCR1_TX_FIFO_THRESHOLD_0) 341*9540SJoost.Mulders@Sun.COM #define VR_BCR1_TX_FIFO_THRESHOLD_512 (VR_BCR1_TX_FIFO_THRESHOLD_1) 342*9540SJoost.Mulders@Sun.COM #define VR_BCR1_TX_FIFO_THRESHOLD_1024 (VR_BCR1_TX_FIFO_THRESHOLD_0 | \ 343*9540SJoost.Mulders@Sun.COM VR_BCR1_FIFO_THRESHOLD_1) 344*9540SJoost.Mulders@Sun.COM #define VR_BCR1_TX_FIFO_THRESHOLD_STFW (VR_BCR1_FIFO_THRESHOLD_BITS) 345*9540SJoost.Mulders@Sun.COM #define VR_BCR1_TXQPRIO (1 << 6) /* VT6105M */ 346*9540SJoost.Mulders@Sun.COM #define VR_BCR1_VLANFILTER (1 << 7) /* VT6105M */ 347*9540SJoost.Mulders@Sun.COM 348*9540SJoost.Mulders@Sun.COM /* 349*9540SJoost.Mulders@Sun.COM * MII Configuration 350*9540SJoost.Mulders@Sun.COM */ 351*9540SJoost.Mulders@Sun.COM #define VR_MIICMD 0x70 352*9540SJoost.Mulders@Sun.COM #define VR_MIICMD_MD_CLOCK (1 << 0) 353*9540SJoost.Mulders@Sun.COM #define VR_MIICMD_MD_CLOCK_READ (1 << 1) 354*9540SJoost.Mulders@Sun.COM #define VR_MIICMD_MD_CLOCK_WRITE (1 << 2) 355*9540SJoost.Mulders@Sun.COM #define VR_MIICMD_MD_OUT (1 << 3) 356*9540SJoost.Mulders@Sun.COM #define VR_MIICMD_MD_MODE_AUTO (1 << 4) 357*9540SJoost.Mulders@Sun.COM #define VR_MIICMD_MD_WRITE (1 << 5) 358*9540SJoost.Mulders@Sun.COM #define VR_MIICMD_MD_READ (1 << 6) 359*9540SJoost.Mulders@Sun.COM #define VR_MIICMD_MD_AUTO (1 << 7) 360*9540SJoost.Mulders@Sun.COM 361*9540SJoost.Mulders@Sun.COM #define VR_MIIADDR 0x71 362*9540SJoost.Mulders@Sun.COM #define VR_MIIADDR_MAD0 (1 << 0) 363*9540SJoost.Mulders@Sun.COM #define VR_MIIADDR_MAD1 (1 << 1) 364*9540SJoost.Mulders@Sun.COM #define VR_MIIADDR_MAD2 (1 << 2) 365*9540SJoost.Mulders@Sun.COM #define VR_MIIADDR_MAD3 (1 << 3) 366*9540SJoost.Mulders@Sun.COM #define VR_MIIADDR_MAD4 (1 << 4) 367*9540SJoost.Mulders@Sun.COM #define VR_MIIADDR_BITS (VR_MIIADDR_MAD0 | \ 368*9540SJoost.Mulders@Sun.COM VR_MIIADDR_MAD1 | \ 369*9540SJoost.Mulders@Sun.COM VR_MIIADDR_MAD2 | \ 370*9540SJoost.Mulders@Sun.COM VR_MIIADDR_MAD3 | \ 371*9540SJoost.Mulders@Sun.COM VR_MIIADDR_MAD4) 372*9540SJoost.Mulders@Sun.COM #define VR_MIIADDR_MDONE (1 << 5) 373*9540SJoost.Mulders@Sun.COM #define VR_MIIADDR_MAUTO (1 << 6) 374*9540SJoost.Mulders@Sun.COM #define VR_MIIADDR_MIDLE (1 << 7) 375*9540SJoost.Mulders@Sun.COM 376*9540SJoost.Mulders@Sun.COM #define VR_MIIDATA 0x72 377*9540SJoost.Mulders@Sun.COM #define VR_MIIDATA_1 0x72 378*9540SJoost.Mulders@Sun.COM #define VR_MIIDATA_2 0x73 379*9540SJoost.Mulders@Sun.COM 380*9540SJoost.Mulders@Sun.COM /* 381*9540SJoost.Mulders@Sun.COM * EEPROM Config / Status 382*9540SJoost.Mulders@Sun.COM */ 383*9540SJoost.Mulders@Sun.COM #define VR_PROMCTL 0x74 384*9540SJoost.Mulders@Sun.COM #define VR_PROMCTL_DATAOUT (1 << 0) 385*9540SJoost.Mulders@Sun.COM #define VR_PROMCTL_DATAIN (1 << 1) 386*9540SJoost.Mulders@Sun.COM #define VR_PROMCTL_CLOCK (1 << 2) 387*9540SJoost.Mulders@Sun.COM #define VR_PROMCTL_CHIPSELECT (1 << 3) 388*9540SJoost.Mulders@Sun.COM #define VR_PROMCTL_DIRPROG (1 << 4) 389*9540SJoost.Mulders@Sun.COM #define VR_PROMCTL_RELOAD (1 << 5) 390*9540SJoost.Mulders@Sun.COM #define VR_PROMCTL_PROGRAM (1 << 6) 391*9540SJoost.Mulders@Sun.COM #define VR_PROMCTL_PRGSTATUS (1 << 7) 392*9540SJoost.Mulders@Sun.COM 393*9540SJoost.Mulders@Sun.COM /* 394*9540SJoost.Mulders@Sun.COM * Chip Configuration A 395*9540SJoost.Mulders@Sun.COM */ 396*9540SJoost.Mulders@Sun.COM #define VR_CFGA 0x78 397*9540SJoost.Mulders@Sun.COM #define VR_CFGA_PRE_ACPI_WAKEUP (1 << 0) /* VT6105M */ 398*9540SJoost.Mulders@Sun.COM #define VR_CFGA_WAKEUP_PANIC (1 << 1) /* VT6105M */ 399*9540SJoost.Mulders@Sun.COM #define VR_CFGA_VLANTAG_INCRC (1 << 5) /* VT6105M */ 400*9540SJoost.Mulders@Sun.COM #define VR_CFGA_MIIOPT (1 << 6) 401*9540SJoost.Mulders@Sun.COM #define VR_CFGA_EELOAD (1 << 7) 402*9540SJoost.Mulders@Sun.COM 403*9540SJoost.Mulders@Sun.COM /* 404*9540SJoost.Mulders@Sun.COM * Chip Configuration B 405*9540SJoost.Mulders@Sun.COM */ 406*9540SJoost.Mulders@Sun.COM #define VR_CFGB 0x79 407*9540SJoost.Mulders@Sun.COM #define VR_CFGB_LATENCYTIMER (1 << 0) 408*9540SJoost.Mulders@Sun.COM #define VR_CFGB_WWAIT (1 << 1) 409*9540SJoost.Mulders@Sun.COM #define VR_CFGB_RWAIT (1 << 2) 410*9540SJoost.Mulders@Sun.COM #define VR_CFGB_RXARBIT (1 << 3) 411*9540SJoost.Mulders@Sun.COM #define VR_CFGB_TXARBIT (1 << 4) 412*9540SJoost.Mulders@Sun.COM #define VR_CFGB_MRLDIS (1 << 5) 413*9540SJoost.Mulders@Sun.COM #define VR_CFGB_PERRDIS (1 << 6) 414*9540SJoost.Mulders@Sun.COM #define VR_CFGB_QPKTDIS (1 << 7) 415*9540SJoost.Mulders@Sun.COM 416*9540SJoost.Mulders@Sun.COM /* 417*9540SJoost.Mulders@Sun.COM * Chip Configuration C 418*9540SJoost.Mulders@Sun.COM */ 419*9540SJoost.Mulders@Sun.COM #define VR_CFGC 0x7A 420*9540SJoost.Mulders@Sun.COM #define VR_CFGC_BPS0 (1 << 0) 421*9540SJoost.Mulders@Sun.COM #define VR_CFGC_BPS1 (1 << 1) 422*9540SJoost.Mulders@Sun.COM #define VR_CFGC_BPS2 (1 << 2) 423*9540SJoost.Mulders@Sun.COM #define VR_CFGC_BTSEL (1 << 3) 424*9540SJoost.Mulders@Sun.COM #define VR_CFGC_DLYEN (1 << 5) 425*9540SJoost.Mulders@Sun.COM #define VR_CFGC_BROPT (1 << 6) 426*9540SJoost.Mulders@Sun.COM #define VR_CFGC_MED3 (1 << 7) /* VT6102 */ 427*9540SJoost.Mulders@Sun.COM 428*9540SJoost.Mulders@Sun.COM /* 429*9540SJoost.Mulders@Sun.COM * Chip Configuration D 430*9540SJoost.Mulders@Sun.COM */ 431*9540SJoost.Mulders@Sun.COM #define VR_CFGD 0x7B 432*9540SJoost.Mulders@Sun.COM #define VR_CFGD_BAKOPT (1 << 0) 433*9540SJoost.Mulders@Sun.COM #define VR_CFGD_MBA (1 << 1) 434*9540SJoost.Mulders@Sun.COM #define VR_CFGD_CAP (1 << 2) 435*9540SJoost.Mulders@Sun.COM #define VR_CFGD_CRADOM (1 << 3) 436*9540SJoost.Mulders@Sun.COM #define VR_CFGD_PMCDIG (1 << 4) 437*9540SJoost.Mulders@Sun.COM #define VR_CFGD_MRLEN (1 << 5) 438*9540SJoost.Mulders@Sun.COM #define VR_CFGD_TAG_ON_SNAP (1 << 5) /* VT6105M */ 439*9540SJoost.Mulders@Sun.COM #define VR_CFGD_DIAG (1 << 6) 440*9540SJoost.Mulders@Sun.COM #define VR_CFGD_MMIOEN (1 << 7) 441*9540SJoost.Mulders@Sun.COM 442*9540SJoost.Mulders@Sun.COM /* 443*9540SJoost.Mulders@Sun.COM * Tally counters 444*9540SJoost.Mulders@Sun.COM */ 445*9540SJoost.Mulders@Sun.COM #define VR_TALLY_MPA 0x7c /* 16 bits */ 446*9540SJoost.Mulders@Sun.COM #define VR_TALLY_CRC 0x7e /* 16 bits */ 447*9540SJoost.Mulders@Sun.COM 448*9540SJoost.Mulders@Sun.COM /* 449*9540SJoost.Mulders@Sun.COM * Misceleneous register 0 450*9540SJoost.Mulders@Sun.COM */ 451*9540SJoost.Mulders@Sun.COM #define VR_MISC0 0x80 452*9540SJoost.Mulders@Sun.COM #define VR_MISC0_TIMER0_EN (1 << 0) 453*9540SJoost.Mulders@Sun.COM #define VR_MISC0_TIMER0_SUSP (1 << 1) 454*9540SJoost.Mulders@Sun.COM #define VR_MISC0_HDXFEN (1 << 2) 455*9540SJoost.Mulders@Sun.COM #define VR_MISC0_FDXRFEN (1 << 3) 456*9540SJoost.Mulders@Sun.COM #define VR_MISC0_FDXTFEN (1 << 4) 457*9540SJoost.Mulders@Sun.COM #define VR_MISC0_TIMER0_USEC_EN (1 << 5) 458*9540SJoost.Mulders@Sun.COM 459*9540SJoost.Mulders@Sun.COM /* 460*9540SJoost.Mulders@Sun.COM * Misceleneous register 1 461*9540SJoost.Mulders@Sun.COM */ 462*9540SJoost.Mulders@Sun.COM #define VR_MISC1 0x81 463*9540SJoost.Mulders@Sun.COM #define VR_MISC1_TIMER1_EN (1 << 0) 464*9540SJoost.Mulders@Sun.COM #define VR_MISC1_VAXJMP (1 << 5) 465*9540SJoost.Mulders@Sun.COM #define VR_MISC1_RESET (1 << 6) 466*9540SJoost.Mulders@Sun.COM 467*9540SJoost.Mulders@Sun.COM /* 468*9540SJoost.Mulders@Sun.COM * Power management 469*9540SJoost.Mulders@Sun.COM */ 470*9540SJoost.Mulders@Sun.COM #define VR_PWR 0x83 471*9540SJoost.Mulders@Sun.COM #define VR_PWR_DS0 (1 << 0) 472*9540SJoost.Mulders@Sun.COM #define VR_PWR_DS1 (1 << 1) 473*9540SJoost.Mulders@Sun.COM #define VR_PWR_WOLEN (1 << 2) 474*9540SJoost.Mulders@Sun.COM #define VR_PWR_WOLSR (1 << 3) 475*9540SJoost.Mulders@Sun.COM #define VR_PWR_LGWOL (1 << 7) 476*9540SJoost.Mulders@Sun.COM 477*9540SJoost.Mulders@Sun.COM /* 478*9540SJoost.Mulders@Sun.COM * Second interrupt register status 479*9540SJoost.Mulders@Sun.COM */ 480*9540SJoost.Mulders@Sun.COM #define VR_ISR1 0x84 481*9540SJoost.Mulders@Sun.COM #define VR_ISR1_TIMER0 (1 << 0) 482*9540SJoost.Mulders@Sun.COM #define VR_ISR1_TIMER1 (1 << 1) 483*9540SJoost.Mulders@Sun.COM #define VR_ISR1_PHYEVENT (1 << 2) 484*9540SJoost.Mulders@Sun.COM #define VR_ISR1_TDERR (1 << 3) 485*9540SJoost.Mulders@Sun.COM #define VR_ISR1_SSRCI (1 << 4) 486*9540SJoost.Mulders@Sun.COM #define VR_ISR1_UINTR_SET (1 << 5) 487*9540SJoost.Mulders@Sun.COM #define VR_ISR1_UINTR_CLR (1 << 6) 488*9540SJoost.Mulders@Sun.COM #define VR_ISR1_PWEI (1 << 7) 489*9540SJoost.Mulders@Sun.COM 490*9540SJoost.Mulders@Sun.COM /* 491*9540SJoost.Mulders@Sun.COM * Second interrupt register configuration 492*9540SJoost.Mulders@Sun.COM */ 493*9540SJoost.Mulders@Sun.COM #define VR_ICR1 0x86 494*9540SJoost.Mulders@Sun.COM #define VR_ICR1_TIMER0 VR_ISR1_TIMER0 495*9540SJoost.Mulders@Sun.COM #define VR_ICR1_TIMER1 VR_ISR1_TIMER1 496*9540SJoost.Mulders@Sun.COM #define VR_ICR1_PHYEVENT VR_ISR1_PHYEVENT 497*9540SJoost.Mulders@Sun.COM #define VR_ICR1_TDERR VR_ISR1_TDERR 498*9540SJoost.Mulders@Sun.COM #define VR_ICR1_SSRCI VR_ISR1_SSRCI 499*9540SJoost.Mulders@Sun.COM #define VR_ICR1_UINTR_SET VR_ISR1_UINTR_SET 500*9540SJoost.Mulders@Sun.COM #define VR_ICR1_UINTR_CLR VR_ISR1_UINTR_CLR 501*9540SJoost.Mulders@Sun.COM #define VR_ICR1_PWEI VR_ISR1_PWEI 502*9540SJoost.Mulders@Sun.COM 503*9540SJoost.Mulders@Sun.COM /* 504*9540SJoost.Mulders@Sun.COM * Content Addressable Memory (CAM) stuff for the VT6105M 505*9540SJoost.Mulders@Sun.COM */ 506*9540SJoost.Mulders@Sun.COM #define VR_CAM_MASK 0x88 507*9540SJoost.Mulders@Sun.COM 508*9540SJoost.Mulders@Sun.COM #define VR_CAM_CTRL 0x92 509*9540SJoost.Mulders@Sun.COM #define VR_CAM_CTRL_RD (1 << 3) 510*9540SJoost.Mulders@Sun.COM #define VR_CAM_CTRL_WR (1 << 2) 511*9540SJoost.Mulders@Sun.COM #define VR_CAM_CTRL_SELECT_VLAN (1 << 1) 512*9540SJoost.Mulders@Sun.COM #define VR_CAM_CTRL_ENABLE (1 << 0) 513*9540SJoost.Mulders@Sun.COM #define VR_CAM_CTRL_WRITE (VR_CAM_CTRL_ENABLE | VR_CAM_CTRL_WR) 514*9540SJoost.Mulders@Sun.COM #define VR_CAM_CTRL_READ (VR_CAM_CTRL_ENABLE | VR_CAM_CTRL_RD) 515*9540SJoost.Mulders@Sun.COM #define VR_CAM_CTRL_RW (VR_CAM_CTRL_ENABLE | \ 516*9540SJoost.Mulders@Sun.COM VR_CAM_CTRL_RD | VR_CAM_CTRL_WR) 517*9540SJoost.Mulders@Sun.COM #define VR_CAM_CTRL_DONE (0) 518*9540SJoost.Mulders@Sun.COM 519*9540SJoost.Mulders@Sun.COM #define VR_CAM_ADDR 0x93 520*9540SJoost.Mulders@Sun.COM 521*9540SJoost.Mulders@Sun.COM /* 522*9540SJoost.Mulders@Sun.COM * MIB Control register 523*9540SJoost.Mulders@Sun.COM */ 524*9540SJoost.Mulders@Sun.COM #define VR_MIB_CTRL 0x94 525*9540SJoost.Mulders@Sun.COM #define VR_MIB_CTRL_ENABLE (1 << 4) 526*9540SJoost.Mulders@Sun.COM #define VR_MIB_CTRL_HDUPLEX (1 << 5) 527*9540SJoost.Mulders@Sun.COM #define VR_MIB_CTRL_INCR (1 << 6) 528*9540SJoost.Mulders@Sun.COM #define VR_MIB_CTRL_RTN (1 << 7) 529*9540SJoost.Mulders@Sun.COM 530*9540SJoost.Mulders@Sun.COM /* 531*9540SJoost.Mulders@Sun.COM * MIB port 532*9540SJoost.Mulders@Sun.COM */ 533*9540SJoost.Mulders@Sun.COM #define VR_MIB_PORT 0x96 534*9540SJoost.Mulders@Sun.COM 535*9540SJoost.Mulders@Sun.COM /* 536*9540SJoost.Mulders@Sun.COM * MIB data 537*9540SJoost.Mulders@Sun.COM */ 538*9540SJoost.Mulders@Sun.COM #define VR_MIB_DATA 0x97 539*9540SJoost.Mulders@Sun.COM 540*9540SJoost.Mulders@Sun.COM 541*9540SJoost.Mulders@Sun.COM /* 542*9540SJoost.Mulders@Sun.COM * Power configuration 543*9540SJoost.Mulders@Sun.COM */ 544*9540SJoost.Mulders@Sun.COM #define VR_PWRCFG 0xA1 /* VT6105LOM */ 545*9540SJoost.Mulders@Sun.COM #define VR_PWRCFG_WOLEN (1 << 0) 546*9540SJoost.Mulders@Sun.COM #define VR_PWRCFG_WOLSR (1 << 1) 547*9540SJoost.Mulders@Sun.COM #define VR_PWRCFG_PHYPOWERDOWN (7 << 1) 548*9540SJoost.Mulders@Sun.COM 549*9540SJoost.Mulders@Sun.COM /* 550*9540SJoost.Mulders@Sun.COM * Flow control, VT6105 and above 551*9540SJoost.Mulders@Sun.COM */ 552*9540SJoost.Mulders@Sun.COM #define VR_FCR0 0x98 553*9540SJoost.Mulders@Sun.COM #define VR_FCR0_RXBUFCOUNT VR_FCR0 554*9540SJoost.Mulders@Sun.COM 555*9540SJoost.Mulders@Sun.COM #define VR_FCR1 0x99 556*9540SJoost.Mulders@Sun.COM #define VR_FCR1_HD_EN (1 << 0) 557*9540SJoost.Mulders@Sun.COM #define VR_FCR1_FD_RX_EN (1 << 1) 558*9540SJoost.Mulders@Sun.COM #define VR_FCR1_FD_TX_EN (1 << 2) 559*9540SJoost.Mulders@Sun.COM #define VR_FCR1_XONXOFF_EN (1 << 3) 560*9540SJoost.Mulders@Sun.COM 561*9540SJoost.Mulders@Sun.COM #define VR_FCR1_PAUSEOFFBITS ((1 << 5) | (1 << 4)) 562*9540SJoost.Mulders@Sun.COM #define VR_FCR1_PAUSEOFF_24 ((0 << 5) | (0 << 4)) 563*9540SJoost.Mulders@Sun.COM #define VR_FCR1_PAUSEOFF_32 ((0 << 5) | (1 << 4)) 564*9540SJoost.Mulders@Sun.COM #define VR_FCR1_PAUSEOFF_48 ((1 << 5) | (0 << 4)) 565*9540SJoost.Mulders@Sun.COM #define VR_FCR1_PAUSEOFF_64 ((1 << 5) | (1 << 4)) 566*9540SJoost.Mulders@Sun.COM 567*9540SJoost.Mulders@Sun.COM #define VR_FCR1_PAUSEONBITS ((1 << 7) | (1 << 6)) 568*9540SJoost.Mulders@Sun.COM #define VR_FCR1_PAUSEON_04 ((0 << 7) | (0 << 6)) 569*9540SJoost.Mulders@Sun.COM #define VR_FCR1_PAUSEON_08 ((0 << 7) | (1 << 6)) 570*9540SJoost.Mulders@Sun.COM #define VR_FCR1_PAUSEON_16 ((1 << 7) | (0 << 6)) 571*9540SJoost.Mulders@Sun.COM #define VR_FCR1_PAUSEON_24 ((1 << 7) | (1 << 6)) 572*9540SJoost.Mulders@Sun.COM 573*9540SJoost.Mulders@Sun.COM #define VR_FCR2 0x9a 574*9540SJoost.Mulders@Sun.COM #define VR_FCR2_PAUSE (VR_FCR2) 575*9540SJoost.Mulders@Sun.COM 576*9540SJoost.Mulders@Sun.COM #define VR_TIMER0 0x9c 577*9540SJoost.Mulders@Sun.COM #define VR_TIMER0_TIMEOUT VR_TIMER0 /* 16 bits */ 578*9540SJoost.Mulders@Sun.COM 579*9540SJoost.Mulders@Sun.COM #define VR_TIMER1 0x9e 580*9540SJoost.Mulders@Sun.COM #define VR_TIMER1_TIMEOUT VR_TIMER1 /* 16 bits */ 581*9540SJoost.Mulders@Sun.COM 582*9540SJoost.Mulders@Sun.COM #define VR_CRC_PATTERN0 0xb0 /* 32 bits, VT6105M */ 583*9540SJoost.Mulders@Sun.COM #define VR_CRC_PATTERN1 0xb4 /* 32 bits, VT6105M */ 584*9540SJoost.Mulders@Sun.COM #define VR_CRC_PATTERN2 0xb8 /* 32 bits, VT6105M */ 585*9540SJoost.Mulders@Sun.COM #define VR_CRC_PATTERN3 0xbC /* 32 bits, VT6105M */ 586*9540SJoost.Mulders@Sun.COM 587*9540SJoost.Mulders@Sun.COM /* 588*9540SJoost.Mulders@Sun.COM * Receive desctriptor 589*9540SJoost.Mulders@Sun.COM */ 590*9540SJoost.Mulders@Sun.COM #define VR_RDES0_RXERR (1 << 0) 591*9540SJoost.Mulders@Sun.COM #define VR_RDES0_CRCERR (1 << 1) 592*9540SJoost.Mulders@Sun.COM #define VR_RDES0_FAE (1 << 2) 593*9540SJoost.Mulders@Sun.COM #define VR_RDES0_FOV (1 << 3) 594*9540SJoost.Mulders@Sun.COM #define VR_RDES0_LONG (1 << 4) 595*9540SJoost.Mulders@Sun.COM #define VR_RDES0_RUNT (1 << 5) 596*9540SJoost.Mulders@Sun.COM #define VR_RDES0_SERR (1 << 6) 597*9540SJoost.Mulders@Sun.COM #define VR_RDES0_BUFF (1 << 7) 598*9540SJoost.Mulders@Sun.COM 599*9540SJoost.Mulders@Sun.COM #define VR_RDES0_EDP (1 << 8) 600*9540SJoost.Mulders@Sun.COM #define VR_RDES0_STP (1 << 9) 601*9540SJoost.Mulders@Sun.COM #define VR_RDES0_CHN (1 << 10) 602*9540SJoost.Mulders@Sun.COM #define VR_RDES0_PHY (1 << 11) 603*9540SJoost.Mulders@Sun.COM #define VR_RDES0_BAR (1 << 12) 604*9540SJoost.Mulders@Sun.COM #define VR_RDES0_MAR (1 << 13) 605*9540SJoost.Mulders@Sun.COM #define VR_RDES0_VIDHIT (1 << 14) /* VT6105M or reserved */ 606*9540SJoost.Mulders@Sun.COM #define VR_RDES0_RXOK (1 << 15) 607*9540SJoost.Mulders@Sun.COM 608*9540SJoost.Mulders@Sun.COM #define VR_RDES0_ABN ((1 << 27) | (1 << 28) | (1 << 29) | (1 << 30)) 609*9540SJoost.Mulders@Sun.COM #define VR_RDES0_OWN (1U << 31) 610*9540SJoost.Mulders@Sun.COM 611*9540SJoost.Mulders@Sun.COM /* 612*9540SJoost.Mulders@Sun.COM * Transmit descriptor 613*9540SJoost.Mulders@Sun.COM */ 614*9540SJoost.Mulders@Sun.COM #define VR_TDES0_NCR ((1 << 0) | (1 << 1) | (1 << 2) | (1 << 3)) 615*9540SJoost.Mulders@Sun.COM #define VR_TDES0_COL (1 << 4) 616*9540SJoost.Mulders@Sun.COM #define VR_TDES0_CDH (1 << 7) 617*9540SJoost.Mulders@Sun.COM #define VR_TDES0_ABT (1 << 8) 618*9540SJoost.Mulders@Sun.COM #define VR_TDES0_OWC (1 << 9) 619*9540SJoost.Mulders@Sun.COM #define VR_TDES0_CRS (1 << 10) 620*9540SJoost.Mulders@Sun.COM #define VR_TDES0_UDF (1 << 11) 621*9540SJoost.Mulders@Sun.COM #define VR_TDES0_TERR (1 << 15) 622*9540SJoost.Mulders@Sun.COM /* VLAN stuff is for VT6105M only */ 623*9540SJoost.Mulders@Sun.COM #define VR_TDES0_VLANID ((1 << 27) | (1 << 26) | (1 << 25) | (1 << 24) \ 624*9540SJoost.Mulders@Sun.COM (1 << 23) | (1 << 22) | (1 << 21) | \ 625*9540SJoost.Mulders@Sun.COM (1 << 20) | (1 << 19) | (1 << 18) | \ 626*9540SJoost.Mulders@Sun.COM (1 << 17) | (1 << 16)) 627*9540SJoost.Mulders@Sun.COM #define VR_TDES0_VLANPRI ((1 << 30) | (1 << 29) | (1 << 28)) 628*9540SJoost.Mulders@Sun.COM #define VR_TDES0_OWN (1U << 31) 629*9540SJoost.Mulders@Sun.COM 630*9540SJoost.Mulders@Sun.COM #define VR_TDES1_LEN ((1 << 0) | (1 << 1) | (1 << 2) | (1 << 3) | \ 631*9540SJoost.Mulders@Sun.COM (1 << 4) | (1 << 5) | (1 << 6) | \ 632*9540SJoost.Mulders@Sun.COM (1 << 7) | (1 << 8) | (1 << 9) | (1 << 10)) 633*9540SJoost.Mulders@Sun.COM 634*9540SJoost.Mulders@Sun.COM #define VR_TDES1_CHN (1 << 15) 635*9540SJoost.Mulders@Sun.COM #define VR_TDES1_CRC (1 << 16) 636*9540SJoost.Mulders@Sun.COM #define VR_TDES1_STP (1 << 21) /* EDP/STP are flipped in DS6105! */ 637*9540SJoost.Mulders@Sun.COM #define VR_TDES1_EDP (1 << 22) 638*9540SJoost.Mulders@Sun.COM #define VR_TDES1_INTR (1 << 23) 639*9540SJoost.Mulders@Sun.COM 640*9540SJoost.Mulders@Sun.COM #define VR_TDES3_SUPPRESS_INTR (1 << 0) 641*9540SJoost.Mulders@Sun.COM 642*9540SJoost.Mulders@Sun.COM #endif /* _VRREG_H */ 643