186d7f5d3SJohn Marino /* 286d7f5d3SJohn Marino * Copyright (c) 1997, 1998, 1999, 2000 386d7f5d3SJohn Marino * Bill Paul <wpaul@ctr.columbia.edu>. All rights reserved. 486d7f5d3SJohn Marino * 586d7f5d3SJohn Marino * Redistribution and use in source and binary forms, with or without 686d7f5d3SJohn Marino * modification, are permitted provided that the following conditions 786d7f5d3SJohn Marino * are met: 886d7f5d3SJohn Marino * 1. Redistributions of source code must retain the above copyright 986d7f5d3SJohn Marino * notice, this list of conditions and the following disclaimer. 1086d7f5d3SJohn Marino * 2. Redistributions in binary form must reproduce the above copyright 1186d7f5d3SJohn Marino * notice, this list of conditions and the following disclaimer in the 1286d7f5d3SJohn Marino * documentation and/or other materials provided with the distribution. 1386d7f5d3SJohn Marino * 3. All advertising materials mentioning features or use of this software 1486d7f5d3SJohn Marino * must display the following acknowledgement: 1586d7f5d3SJohn Marino * This product includes software developed by Bill Paul. 1686d7f5d3SJohn Marino * 4. Neither the name of the author nor the names of any co-contributors 1786d7f5d3SJohn Marino * may be used to endorse or promote products derived from this software 1886d7f5d3SJohn Marino * without specific prior written permission. 1986d7f5d3SJohn Marino * 2086d7f5d3SJohn Marino * THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND 2186d7f5d3SJohn Marino * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2286d7f5d3SJohn Marino * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2386d7f5d3SJohn Marino * ARE DISCLAIMED. IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD 2486d7f5d3SJohn Marino * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 2586d7f5d3SJohn Marino * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 2686d7f5d3SJohn Marino * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 2786d7f5d3SJohn Marino * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 2886d7f5d3SJohn Marino * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 2986d7f5d3SJohn Marino * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 3086d7f5d3SJohn Marino * THE POSSIBILITY OF SUCH DAMAGE. 3186d7f5d3SJohn Marino * 3286d7f5d3SJohn Marino * $FreeBSD: src/sys/pci/xmaciireg.h,v 1.2.4.1 2000/04/27 14:48:07 wpaul Exp $ 3386d7f5d3SJohn Marino * $DragonFly: src/sys/dev/netif/sk/xmaciireg.h,v 1.3 2006/11/14 12:52:31 sephe Exp $ 3486d7f5d3SJohn Marino */ 3586d7f5d3SJohn Marino 3686d7f5d3SJohn Marino /* 3786d7f5d3SJohn Marino * Registers and data structures for the XaQti Corporation XMAC II 3886d7f5d3SJohn Marino * Gigabit Ethernet MAC. Datasheet is available from http://www.xaqti.com. 3986d7f5d3SJohn Marino * The XMAC can be programmed for 16-bit or 32-bit register access modes. 4086d7f5d3SJohn Marino * The SysKonnect gigabit ethernet adapters use 16-bit mode, so that's 4186d7f5d3SJohn Marino * how the registers are laid out here. 4286d7f5d3SJohn Marino */ 4386d7f5d3SJohn Marino 4486d7f5d3SJohn Marino #define XM_DEVICEID 0x00E0AE20 4586d7f5d3SJohn Marino #define XM_XAQTI_OUI 0x00E0AE 4686d7f5d3SJohn Marino 4786d7f5d3SJohn Marino #define XM_XMAC_REV(x) (((x) & 0x000000E0) >> 5) 4886d7f5d3SJohn Marino 4986d7f5d3SJohn Marino #define XM_XMAC_REV_B2 0x0 5086d7f5d3SJohn Marino #define XM_XMAC_REV_C1 0x1 5186d7f5d3SJohn Marino 5286d7f5d3SJohn Marino #define XM_MMUCMD 0x0000 5386d7f5d3SJohn Marino #define XM_POFF 0x0008 5486d7f5d3SJohn Marino #define XM_BURST 0x000C 5586d7f5d3SJohn Marino #define XM_VLAN_TAGLEV1 0x0010 5686d7f5d3SJohn Marino #define XM_VLAN_TAGLEV2 0x0014 5786d7f5d3SJohn Marino #define XM_TXCMD 0x0020 5886d7f5d3SJohn Marino #define XM_TX_RETRYLIMIT 0x0024 5986d7f5d3SJohn Marino #define XM_TX_SLOTTIME 0x0028 6086d7f5d3SJohn Marino #define XM_TX_IPG 0x003C 6186d7f5d3SJohn Marino #define XM_RXCMD 0x0030 6286d7f5d3SJohn Marino #define XM_PHY_ADDR 0x0034 6386d7f5d3SJohn Marino #define XM_PHY_DATA 0x0038 6486d7f5d3SJohn Marino #define XM_GPIO 0x0040 6586d7f5d3SJohn Marino #define XM_IMR 0x0044 6686d7f5d3SJohn Marino #define XM_ISR 0x0048 6786d7f5d3SJohn Marino #define XM_HWCFG 0x004C 6886d7f5d3SJohn Marino #define XM_TX_LOWAT 0x0060 6986d7f5d3SJohn Marino #define XM_TX_HIWAT 0x0062 7086d7f5d3SJohn Marino #define XM_TX_REQTHRESH_LO 0x0064 7186d7f5d3SJohn Marino #define XM_TX_REQTHRESH_HI 0x0066 7286d7f5d3SJohn Marino #define XM_TX_REQTHRESH XM_TX_REQTHRESH_LO 7386d7f5d3SJohn Marino #define XM_PAUSEDST0 0x0068 7486d7f5d3SJohn Marino #define XM_PAUSEDST1 0x006A 7586d7f5d3SJohn Marino #define XM_PAUSEDST2 0x006C 7686d7f5d3SJohn Marino #define XM_CTLPARM_LO 0x0070 7786d7f5d3SJohn Marino #define XM_CTLPARM_HI 0x0072 7886d7f5d3SJohn Marino #define XM_CTLPARM XM_CTLPARM_LO 7986d7f5d3SJohn Marino #define XM_OPCODE_PAUSE_TIMER 0x0074 8086d7f5d3SJohn Marino #define XM_TXSTAT_LIFO 0x0078 8186d7f5d3SJohn Marino 8286d7f5d3SJohn Marino /* 8386d7f5d3SJohn Marino * Perfect filter registers. The XMAC has a table of 16 perfect 8486d7f5d3SJohn Marino * filter entries, spaced 8 bytes apart. This is in addition to 8586d7f5d3SJohn Marino * the station address registers, which appear below. 8686d7f5d3SJohn Marino */ 8786d7f5d3SJohn Marino #define XM_RXFILT_BASE 0x0080 8886d7f5d3SJohn Marino #define XM_RXFILT_END 0x0107 8986d7f5d3SJohn Marino #define XM_RXFILT_MAX 16 9086d7f5d3SJohn Marino #define XM_RXFILT_ENTRY(ent) (XM_RXFILT_BASE + ((ent * 8))) 9186d7f5d3SJohn Marino 9286d7f5d3SJohn Marino /* Primary station address. */ 9386d7f5d3SJohn Marino #define XM_PAR0 0x0108 9486d7f5d3SJohn Marino #define XM_PAR1 0x010A 9586d7f5d3SJohn Marino #define XM_PAR2 0x010C 9686d7f5d3SJohn Marino 9786d7f5d3SJohn Marino /* 64-bit multicast hash table registers */ 9886d7f5d3SJohn Marino #define XM_MAR0 0x0110 9986d7f5d3SJohn Marino #define XM_MAR1 0x0112 10086d7f5d3SJohn Marino #define XM_MAR2 0x0114 10186d7f5d3SJohn Marino #define XM_MAR3 0x0116 10286d7f5d3SJohn Marino #define XM_RX_LOWAT 0x0118 10386d7f5d3SJohn Marino #define XM_RX_HIWAT 0x011A 10486d7f5d3SJohn Marino #define XM_RX_REQTHRESH_LO 0x011C 10586d7f5d3SJohn Marino #define XM_RX_REQTHRESH_HI 0x011E 10686d7f5d3SJohn Marino #define XM_RX_REQTHRESH XM_RX_REQTHRESH_LO 10786d7f5d3SJohn Marino #define XM_DEVID_LO 0x0120 10886d7f5d3SJohn Marino #define XM_DEVID_HI 0x0122 10986d7f5d3SJohn Marino #define XM_DEVID XM_DEVID_LO 11086d7f5d3SJohn Marino #define XM_MODE_LO 0x0124 11186d7f5d3SJohn Marino #define XM_MODE_HI 0x0126 11286d7f5d3SJohn Marino #define XM_MODE XM_MODE_LO 11386d7f5d3SJohn Marino #define XM_LASTSRC0 0x0128 11486d7f5d3SJohn Marino #define XM_LASTSRC1 0x012A 11586d7f5d3SJohn Marino #define XM_LASTSRC2 0x012C 11686d7f5d3SJohn Marino #define XM_TSTAMP_READ 0x0130 11786d7f5d3SJohn Marino #define XM_TSTAMP_LOAD 0x0134 11886d7f5d3SJohn Marino #define XM_STATS_CMD 0x0200 11986d7f5d3SJohn Marino #define XM_RXCNT_EVENT_LO 0x0204 12086d7f5d3SJohn Marino #define XM_RXCNT_EVENT_HI 0x0206 12186d7f5d3SJohn Marino #define XM_RXCNT_EVENT XM_RXCNT_EVENT_LO 12286d7f5d3SJohn Marino #define XM_TXCNT_EVENT_LO 0x0208 12386d7f5d3SJohn Marino #define XM_TXCNT_EVENT_HI 0x020A 12486d7f5d3SJohn Marino #define XM_TXCNT_EVENT XM_TXCNT_EVENT_LO 12586d7f5d3SJohn Marino #define XM_RXCNT_EVMASK_LO 0x020C 12686d7f5d3SJohn Marino #define XM_RXCNT_EVMASK_HI 0x020E 12786d7f5d3SJohn Marino #define XM_RXCNT_EVMASK XM_RXCNT_EVMASK_LO 12886d7f5d3SJohn Marino #define XM_TXCNT_EVMASK_LO 0x0210 12986d7f5d3SJohn Marino #define XM_TXCNT_EVMASK_HI 0x0212 13086d7f5d3SJohn Marino #define XM_TXCNT_EVMASK XM_TXCNT_EVMASK_LO 13186d7f5d3SJohn Marino 13286d7f5d3SJohn Marino /* Statistics command register */ 13386d7f5d3SJohn Marino #define XM_STATCMD_CLR_TX 0x0001 13486d7f5d3SJohn Marino #define XM_STATCMD_CLR_RX 0x0002 13586d7f5d3SJohn Marino #define XM_STATCMD_COPY_TX 0x0004 13686d7f5d3SJohn Marino #define XM_STATCMD_COPY_RX 0x0008 13786d7f5d3SJohn Marino #define XM_STATCMD_SNAP_TX 0x0010 13886d7f5d3SJohn Marino #define XM_STATCMD_SNAP_RX 0x0020 13986d7f5d3SJohn Marino 14086d7f5d3SJohn Marino /* TX statistics registers */ 14186d7f5d3SJohn Marino #define XM_TXSTATS_PKTSOK 0x280 14286d7f5d3SJohn Marino #define XM_TXSTATS_BYTESOK_HI 0x284 14386d7f5d3SJohn Marino #define XM_TXSTATS_BYTESOK_LO 0x288 14486d7f5d3SJohn Marino #define XM_TXSTATS_BCASTSOK 0x28C 14586d7f5d3SJohn Marino #define XM_TXSTATS_MCASTSOK 0x290 14686d7f5d3SJohn Marino #define XM_TXSTATS_UCASTSOK 0x294 14786d7f5d3SJohn Marino #define XM_TXSTATS_GIANTS 0x298 14886d7f5d3SJohn Marino #define XM_TXSTATS_BURSTCNT 0x29C 14986d7f5d3SJohn Marino #define XM_TXSTATS_PAUSEPKTS 0x2A0 15086d7f5d3SJohn Marino #define XM_TXSTATS_MACCTLPKTS 0x2A4 15186d7f5d3SJohn Marino #define XM_TXSTATS_SINGLECOLS 0x2A8 15286d7f5d3SJohn Marino #define XM_TXSTATS_MULTICOLS 0x2AC 15386d7f5d3SJohn Marino #define XM_TXSTATS_EXCESSCOLS 0x2B0 15486d7f5d3SJohn Marino #define XM_TXSTATS_LATECOLS 0x2B4 15586d7f5d3SJohn Marino #define XM_TXSTATS_DEFER 0x2B8 15686d7f5d3SJohn Marino #define XM_TXSTATS_EXCESSDEFER 0x2BC 15786d7f5d3SJohn Marino #define XM_TXSTATS_UNDERRUN 0x2C0 15886d7f5d3SJohn Marino #define XM_TXSTATS_CARRIERSENSE 0x2C4 15986d7f5d3SJohn Marino #define XM_TXSTATS_UTILIZATION 0x2C8 16086d7f5d3SJohn Marino #define XM_TXSTATS_64 0x2D0 16186d7f5d3SJohn Marino #define XM_TXSTATS_65_127 0x2D4 16286d7f5d3SJohn Marino #define XM_TXSTATS_128_255 0x2D8 16386d7f5d3SJohn Marino #define XM_TXSTATS_256_511 0x2DC 16486d7f5d3SJohn Marino #define XM_TXSTATS_512_1023 0x2E0 16586d7f5d3SJohn Marino #define XM_TXSTATS_1024_MAX 0x2E4 16686d7f5d3SJohn Marino 16786d7f5d3SJohn Marino /* RX statistics registers */ 16886d7f5d3SJohn Marino #define XM_RXSTATS_PKTSOK 0x300 16986d7f5d3SJohn Marino #define XM_RXSTATS_BYTESOK_HI 0x304 17086d7f5d3SJohn Marino #define XM_RXSTATS_BYTESOK_LO 0x308 17186d7f5d3SJohn Marino #define XM_RXSTATS_BCASTSOK 0x30C 17286d7f5d3SJohn Marino #define XM_RXSTATS_MCASTSOK 0x310 17386d7f5d3SJohn Marino #define XM_RXSTATS_UCASTSOK 0x314 17486d7f5d3SJohn Marino #define XM_RXSTATS_PAUSEPKTS 0x318 17586d7f5d3SJohn Marino #define XM_RXSTATS_MACCTLPKTS 0x31C 17686d7f5d3SJohn Marino #define XM_RXSTATS_BADPAUSEPKTS 0x320 17786d7f5d3SJohn Marino #define XM_RXSTATS_BADMACCTLPKTS 0x324 17886d7f5d3SJohn Marino #define XM_RXSTATS_BURSTCNT 0x328 17986d7f5d3SJohn Marino #define XM_RXSTATS_MISSEDPKTS 0x32C 18086d7f5d3SJohn Marino #define XM_RXSTATS_FRAMEERRS 0x330 18186d7f5d3SJohn Marino #define XM_RXSTATS_OVERRUN 0x334 18286d7f5d3SJohn Marino #define XM_RXSTATS_JABBER 0x338 18386d7f5d3SJohn Marino #define XM_RXSTATS_CARRLOSS 0x33C 18486d7f5d3SJohn Marino #define XM_RXSTATS_INRNGLENERR 0x340 18586d7f5d3SJohn Marino #define XM_RXSTATS_SYMERR 0x344 18686d7f5d3SJohn Marino #define XM_RXSTATS_SHORTEVENT 0x348 18786d7f5d3SJohn Marino #define XM_RXSTATS_RUNTS 0x34C 18886d7f5d3SJohn Marino #define XM_RXSTATS_GIANTS 0x350 18986d7f5d3SJohn Marino #define XM_RXSTATS_CRCERRS 0x354 19086d7f5d3SJohn Marino #define XM_RXSTATS_CEXTERRS 0x35C 19186d7f5d3SJohn Marino #define XM_RXSTATS_UTILIZATION 0x360 19286d7f5d3SJohn Marino #define XM_RXSTATS_64 0x368 19386d7f5d3SJohn Marino #define XM_RXSTATS_65_127 0x36C 19486d7f5d3SJohn Marino #define XM_RXSTATS_128_255 0x370 19586d7f5d3SJohn Marino #define XM_RXSTATS_256_511 0x374 19686d7f5d3SJohn Marino #define XM_RXSTATS_512_1023 0x378 19786d7f5d3SJohn Marino #define XM_RXSTATS_1024_MAX 0x37C 19886d7f5d3SJohn Marino 19986d7f5d3SJohn Marino #define XM_MMUCMD_TX_ENB 0x0001 20086d7f5d3SJohn Marino #define XM_MMUCMD_RX_ENB 0x0002 20186d7f5d3SJohn Marino #define XM_MMUCMD_GMIILOOP 0x0004 20286d7f5d3SJohn Marino #define XM_MMUCMD_RATECTL 0x0008 20386d7f5d3SJohn Marino #define XM_MMUCMD_GMIIFDX 0x0010 20486d7f5d3SJohn Marino #define XM_MMUCMD_NO_MGMT_PRMB 0x0020 20586d7f5d3SJohn Marino #define XM_MMUCMD_SIMCOL 0x0040 20686d7f5d3SJohn Marino #define XM_MMUCMD_FORCETX 0x0080 20786d7f5d3SJohn Marino #define XM_MMUCMD_LOOPENB 0x0200 20886d7f5d3SJohn Marino #define XM_MMUCMD_IGNPAUSE 0x0400 20986d7f5d3SJohn Marino #define XM_MMUCMD_PHYBUSY 0x0800 21086d7f5d3SJohn Marino #define XM_MMUCMD_PHYDATARDY 0x1000 21186d7f5d3SJohn Marino 21286d7f5d3SJohn Marino #define XM_TXCMD_AUTOPAD 0x0001 21386d7f5d3SJohn Marino #define XM_TXCMD_NOCRC 0x0002 21486d7f5d3SJohn Marino #define XM_TXCMD_NOPREAMBLE 0x0004 21586d7f5d3SJohn Marino #define XM_TXCMD_NOGIGAMODE 0x0008 21686d7f5d3SJohn Marino #define XM_TXCMD_SAMPLELINE 0x0010 21786d7f5d3SJohn Marino #define XM_TXCMD_ENCBYPASS 0x0020 21886d7f5d3SJohn Marino #define XM_TXCMD_XMITBK2BK 0x0040 21986d7f5d3SJohn Marino #define XM_TXCMD_FAIRSHARE 0x0080 22086d7f5d3SJohn Marino 22186d7f5d3SJohn Marino #define XM_RXCMD_DISABLE_CEXT 0x0001 22286d7f5d3SJohn Marino #define XM_RXCMD_STRIPPAD 0x0002 22386d7f5d3SJohn Marino #define XM_RXCMD_SAMPLELINE 0x0004 22486d7f5d3SJohn Marino #define XM_RXCMD_SELFRX 0x0008 22586d7f5d3SJohn Marino #define XM_RXCMD_STRIPFCS 0x0010 22686d7f5d3SJohn Marino #define XM_RXCMD_TRANSPARENT 0x0020 22786d7f5d3SJohn Marino #define XM_RXCMD_IPGCAPTURE 0x0040 22886d7f5d3SJohn Marino #define XM_RXCMD_BIGPKTOK 0x0080 22986d7f5d3SJohn Marino #define XM_RXCMD_LENERROK 0x0100 23086d7f5d3SJohn Marino 23186d7f5d3SJohn Marino #define XM_GPIO_GP0_SET 0x0001 23286d7f5d3SJohn Marino #define XM_GPIO_RESETSTATS 0x0004 23386d7f5d3SJohn Marino #define XM_GPIO_RESETMAC 0x0008 23486d7f5d3SJohn Marino #define XM_GPIO_FORCEINT 0x0020 23586d7f5d3SJohn Marino #define XM_GPIO_ANEGINPROG 0x0040 23686d7f5d3SJohn Marino 23786d7f5d3SJohn Marino #define XM_IMR_RX_EOF 0x0001 23886d7f5d3SJohn Marino #define XM_IMR_TX_EOF 0x0002 23986d7f5d3SJohn Marino #define XM_IMR_TX_UNDERRUN 0x0004 24086d7f5d3SJohn Marino #define XM_IMR_RX_OVERRUN 0x0008 24186d7f5d3SJohn Marino #define XM_IMR_TX_STATS_OFLOW 0x0010 24286d7f5d3SJohn Marino #define XM_IMR_RX_STATS_OFLOW 0x0020 24386d7f5d3SJohn Marino #define XM_IMR_TSTAMP_OFLOW 0x0040 24486d7f5d3SJohn Marino #define XM_IMR_AUTONEG_DONE 0x0080 24586d7f5d3SJohn Marino #define XM_IMR_NEXTPAGE_RDY 0x0100 24686d7f5d3SJohn Marino #define XM_IMR_PAGE_RECEIVED 0x0200 24786d7f5d3SJohn Marino #define XM_IMR_LP_REQCFG 0x0400 24886d7f5d3SJohn Marino #define XM_IMR_GP0_SET 0x0800 24986d7f5d3SJohn Marino #define XM_IMR_FORCEINTR 0x1000 25086d7f5d3SJohn Marino #define XM_IMR_TX_ABORT 0x2000 25186d7f5d3SJohn Marino #define XM_IMR_LINKEVENT 0x4000 25286d7f5d3SJohn Marino 25386d7f5d3SJohn Marino #define XM_INTRS \ 25486d7f5d3SJohn Marino (~(XM_IMR_GP0_SET|XM_IMR_AUTONEG_DONE|XM_IMR_TX_UNDERRUN)) 25586d7f5d3SJohn Marino 25686d7f5d3SJohn Marino #define XM_ISR_RX_EOF 0x0001 25786d7f5d3SJohn Marino #define XM_ISR_TX_EOF 0x0002 25886d7f5d3SJohn Marino #define XM_ISR_TX_UNDERRUN 0x0004 25986d7f5d3SJohn Marino #define XM_ISR_RX_OVERRUN 0x0008 26086d7f5d3SJohn Marino #define XM_ISR_TX_STATS_OFLOW 0x0010 26186d7f5d3SJohn Marino #define XM_ISR_RX_STATS_OFLOW 0x0020 26286d7f5d3SJohn Marino #define XM_ISR_TSTAMP_OFLOW 0x0040 26386d7f5d3SJohn Marino #define XM_ISR_AUTONEG_DONE 0x0080 26486d7f5d3SJohn Marino #define XM_ISR_NEXTPAGE_RDY 0x0100 26586d7f5d3SJohn Marino #define XM_ISR_PAGE_RECEIVED 0x0200 26686d7f5d3SJohn Marino #define XM_ISR_LP_REQCFG 0x0400 26786d7f5d3SJohn Marino #define XM_ISR_GP0_SET 0x0800 26886d7f5d3SJohn Marino #define XM_ISR_FORCEINTR 0x1000 26986d7f5d3SJohn Marino #define XM_ISR_TX_ABORT 0x2000 27086d7f5d3SJohn Marino #define XM_ISR_LINKEVENT 0x4000 27186d7f5d3SJohn Marino 27286d7f5d3SJohn Marino #define XM_HWCFG_GENEOP 0x0008 27386d7f5d3SJohn Marino #define XM_HWCFG_SIGSTATCKH 0x0004 27486d7f5d3SJohn Marino #define XM_HWCFG_GMIIMODE 0x0001 27586d7f5d3SJohn Marino 27686d7f5d3SJohn Marino #define XM_MODE_FLUSH_RXFIFO 0x00000001 27786d7f5d3SJohn Marino #define XM_MODE_FLUSH_TXFIFO 0x00000002 27886d7f5d3SJohn Marino #define XM_MODE_BIGENDIAN 0x00000004 27986d7f5d3SJohn Marino #define XM_MODE_RX_PROMISC 0x00000008 28086d7f5d3SJohn Marino #define XM_MODE_RX_NOBROAD 0x00000010 28186d7f5d3SJohn Marino #define XM_MODE_RX_NOMULTI 0x00000020 28286d7f5d3SJohn Marino #define XM_MODE_RX_NOUNI 0x00000040 28386d7f5d3SJohn Marino #define XM_MODE_RX_BADFRAMES 0x00000080 28486d7f5d3SJohn Marino #define XM_MODE_RX_CRCERRS 0x00000100 28586d7f5d3SJohn Marino #define XM_MODE_RX_GIANTS 0x00000200 28686d7f5d3SJohn Marino #define XM_MODE_RX_INRANGELEN 0x00000400 28786d7f5d3SJohn Marino #define XM_MODE_RX_RUNTS 0x00000800 28886d7f5d3SJohn Marino #define XM_MODE_RX_MACCTL 0x00001000 28986d7f5d3SJohn Marino #define XM_MODE_RX_USE_PERFECT 0x00002000 29086d7f5d3SJohn Marino #define XM_MODE_RX_USE_STATION 0x00004000 29186d7f5d3SJohn Marino #define XM_MODE_RX_USE_HASH 0x00008000 29286d7f5d3SJohn Marino #define XM_MODE_RX_ADDRPAIR 0x00010000 29386d7f5d3SJohn Marino #define XM_MODE_PAUSEONHI 0x00020000 29486d7f5d3SJohn Marino #define XM_MODE_PAUSEONLO 0x00040000 29586d7f5d3SJohn Marino #define XM_MODE_TIMESTAMP 0x00080000 29686d7f5d3SJohn Marino #define XM_MODE_SENDPAUSE 0x00100000 29786d7f5d3SJohn Marino #define XM_MODE_SENDCONTINUOUS 0x00200000 29886d7f5d3SJohn Marino #define XM_MODE_LE_STATUSWORD 0x00400000 29986d7f5d3SJohn Marino #define XM_MODE_AUTOFIFOPAUSE 0x00800000 30086d7f5d3SJohn Marino #define XM_MODE_EXPAUSEGEN 0x02000000 30186d7f5d3SJohn Marino #define XM_MODE_RX_INVERSE 0x04000000 30286d7f5d3SJohn Marino 30386d7f5d3SJohn Marino #define XM_RXSTAT_MACCTL 0x00000001 30486d7f5d3SJohn Marino #define XM_RXSTAT_ERRFRAME 0x00000002 30586d7f5d3SJohn Marino #define XM_RXSTAT_CRCERR 0x00000004 30686d7f5d3SJohn Marino #define XM_RXSTAT_GIANT 0x00000008 30786d7f5d3SJohn Marino #define XM_RXSTAT_RUNT 0x00000010 30886d7f5d3SJohn Marino #define XM_RXSTAT_FRAMEERR 0x00000020 30986d7f5d3SJohn Marino #define XM_RXSTAT_INRANGEERR 0x00000040 31086d7f5d3SJohn Marino #define XM_RXSTAT_CARRIERERR 0x00000080 31186d7f5d3SJohn Marino #define XM_RXSTAT_COLLERR 0x00000100 31286d7f5d3SJohn Marino #define XM_RXSTAT_802_3 0x00000200 31386d7f5d3SJohn Marino #define XM_RXSTAT_CARREXTERR 0x00000400 31486d7f5d3SJohn Marino #define XM_RXSTAT_BURSTMODE 0x00000800 31586d7f5d3SJohn Marino #define XM_RXSTAT_UNICAST 0x00002000 31686d7f5d3SJohn Marino #define XM_RXSTAT_MULTICAST 0x00004000 31786d7f5d3SJohn Marino #define XM_RXSTAT_BROADCAST 0x00008000 31886d7f5d3SJohn Marino #define XM_RXSTAT_VLAN_LEV1 0x00010000 31986d7f5d3SJohn Marino #define XM_RXSTAT_VLAN_LEV2 0x00020000 32086d7f5d3SJohn Marino #define XM_RXSTAT_LEN 0xFFFC0000 32186d7f5d3SJohn Marino #define XM_RXSTAT_LENSHIFT 18 32286d7f5d3SJohn Marino 32386d7f5d3SJohn Marino #define XM_RXSTAT_BYTES(x) ((x) >> XM_RXSTAT_LENSHIFT) 32486d7f5d3SJohn Marino 32586d7f5d3SJohn Marino /* 32686d7f5d3SJohn Marino * XMAC PHY registers, indirectly accessed through 32786d7f5d3SJohn Marino * XM_PHY_ADDR and XM_PHY_REG. 32886d7f5d3SJohn Marino */ 32986d7f5d3SJohn Marino 33086d7f5d3SJohn Marino #define XM_PHY_BMCR 0x0000 /* control */ 33186d7f5d3SJohn Marino #define XM_PHY_BMSR 0x0001 /* status */ 33286d7f5d3SJohn Marino #define XM_PHY_VENID 0x0002 /* vendor id */ 33386d7f5d3SJohn Marino #define XM_PHY_DEVID 0x0003 /* device id */ 33486d7f5d3SJohn Marino #define XM_PHY_ANAR 0x0004 /* autoneg advertisenemt */ 33586d7f5d3SJohn Marino #define XM_PHY_LPAR 0x0005 /* link partner ability */ 33686d7f5d3SJohn Marino #define XM_PHY_ANEXP 0x0006 /* autoneg expansion */ 33786d7f5d3SJohn Marino #define XM_PHY_NEXTP 0x0007 /* nextpage */ 33886d7f5d3SJohn Marino #define XM_PHY_LPNEXTP 0x0008 /* link partner's nextpage */ 33986d7f5d3SJohn Marino #define XM_PHY_EXTSTS 0x000F /* extented status */ 34086d7f5d3SJohn Marino #define XM_PHY_RESAB 0x0010 /* resolved ability */ 34186d7f5d3SJohn Marino 34286d7f5d3SJohn Marino #define XM_BMCR_DUPLEX 0x0100 34386d7f5d3SJohn Marino #define XM_BMCR_RENEGOTIATE 0x0200 34486d7f5d3SJohn Marino #define XM_BMCR_AUTONEGENBL 0x1000 34586d7f5d3SJohn Marino #define XM_BMCR_LOOPBACK 0x4000 34686d7f5d3SJohn Marino #define XM_BMCR_RESET 0x8000 34786d7f5d3SJohn Marino 34886d7f5d3SJohn Marino #define XM_BMSR_EXTCAP 0x0001 34986d7f5d3SJohn Marino #define XM_BMSR_LINKSTAT 0x0004 35086d7f5d3SJohn Marino #define XM_BMSR_AUTONEGABLE 0x0008 35186d7f5d3SJohn Marino #define XM_BMSR_REMFAULT 0x0010 35286d7f5d3SJohn Marino #define XM_BMSR_AUTONEGDONE 0x0020 35386d7f5d3SJohn Marino #define XM_BMSR_EXTSTAT 0x0100 35486d7f5d3SJohn Marino 35586d7f5d3SJohn Marino #define XM_VENID_XAQTI 0xD14C 35686d7f5d3SJohn Marino #define XM_DEVID_XMAC 0x0002 35786d7f5d3SJohn Marino 35886d7f5d3SJohn Marino #define XM_ANAR_FULLDUPLEX 0x0020 35986d7f5d3SJohn Marino #define XM_ANAR_HALFDUPLEX 0x0040 36086d7f5d3SJohn Marino #define XM_ANAR_PAUSEBITS 0x0180 36186d7f5d3SJohn Marino #define XM_ANAR_REMFAULTBITS 0x1800 36286d7f5d3SJohn Marino #define XM_ANAR_ACK 0x4000 36386d7f5d3SJohn Marino #define XM_ANAR_NEXTPAGE 0x8000 36486d7f5d3SJohn Marino 36586d7f5d3SJohn Marino #define XM_LPAR_FULLDUPLEX 0x0020 36686d7f5d3SJohn Marino #define XM_LPAR_HALFDUPLEX 0x0040 36786d7f5d3SJohn Marino #define XM_LPAR_PAUSEBITS 0x0180 36886d7f5d3SJohn Marino #define XM_LPAR_REMFAULTBITS 0x1800 36986d7f5d3SJohn Marino #define XM_LPAR_ACK 0x4000 37086d7f5d3SJohn Marino #define XM_LPAR_NEXTPAGE 0x8000 37186d7f5d3SJohn Marino 37286d7f5d3SJohn Marino #define XM_PAUSE_NOPAUSE 0x0000 37386d7f5d3SJohn Marino #define XM_PAUSE_SYMPAUSE 0x0080 37486d7f5d3SJohn Marino #define XM_PAUSE_ASYMPAUSE 0x0100 37586d7f5d3SJohn Marino #define XM_PAUSE_BOTH 0x0180 37686d7f5d3SJohn Marino 37786d7f5d3SJohn Marino #define XM_REMFAULT_LINKOK 0x0000 37886d7f5d3SJohn Marino #define XM_REMFAULT_LINKFAIL 0x0800 37986d7f5d3SJohn Marino #define XM_REMFAULT_OFFLINE 0x1000 38086d7f5d3SJohn Marino #define XM_REMFAULT_ANEGERR 0x1800 38186d7f5d3SJohn Marino 38286d7f5d3SJohn Marino #define XM_ANEXP_GOTPAGE 0x0002 38386d7f5d3SJohn Marino #define XM_ANEXP_NEXTPAGE_SELF 0x0004 38486d7f5d3SJohn Marino #define XM_ANEXP_NEXTPAGE_LP 0x0008 38586d7f5d3SJohn Marino 38686d7f5d3SJohn Marino #define XM_NEXTP_MESSAGE 0x07FF 38786d7f5d3SJohn Marino #define XM_NEXTP_TOGGLE 0x0800 38886d7f5d3SJohn Marino #define XM_NEXTP_ACK2 0x1000 38986d7f5d3SJohn Marino #define XM_NEXTP_MPAGE 0x2000 39086d7f5d3SJohn Marino #define XM_NEXTP_ACK1 0x4000 39186d7f5d3SJohn Marino #define XM_NEXTP_NPAGE 0x8000 39286d7f5d3SJohn Marino 39386d7f5d3SJohn Marino #define XM_LPNEXTP_MESSAGE 0x07FF 39486d7f5d3SJohn Marino #define XM_LPNEXTP_TOGGLE 0x0800 39586d7f5d3SJohn Marino #define XM_LPNEXTP_ACK2 0x1000 39686d7f5d3SJohn Marino #define XM_LPNEXTP_MPAGE 0x2000 39786d7f5d3SJohn Marino #define XM_LPNEXTP_ACK1 0x4000 39886d7f5d3SJohn Marino #define XM_LPNEXTP_NPAGE 0x8000 39986d7f5d3SJohn Marino 40086d7f5d3SJohn Marino #define XM_EXTSTS_HALFDUPLEX 0x4000 40186d7f5d3SJohn Marino #define XM_EXTSTS_FULLDUPLEX 0x8000 40286d7f5d3SJohn Marino 40386d7f5d3SJohn Marino #define XM_RESAB_PAUSEMISMATCH 0x0008 40486d7f5d3SJohn Marino #define XM_RESAB_ABLMISMATCH 0x0010 40586d7f5d3SJohn Marino #define XM_RESAB_FDMODESEL 0x0020 40686d7f5d3SJohn Marino #define XM_RESAB_HDMODESEL 0x0040 40786d7f5d3SJohn Marino #define XM_RESAB_PAUSEBITS 0x0180 408