if_xereg.h revision 47133
147133Sobrien/*- 247133Sobrien * Copyright (c) 1998, 1999 Scott Mitchell 347133Sobrien * All rights reserved. 447133Sobrien * 547133Sobrien * Redistribution and use in source and binary forms, with or without 647133Sobrien * modification, are permitted provided that the following conditions 747133Sobrien * are met: 847133Sobrien * 1. Redistributions of source code must retain the above copyright 947133Sobrien * notice, this list of conditions and the following disclaimer. 1047133Sobrien * 2. Redistributions in binary form must reproduce the above copyright 1147133Sobrien * notice, this list of conditions and the following disclaimer in the 1247133Sobrien * documentation and/or other materials provided with the distribution. 1347133Sobrien * 1447133Sobrien * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 1547133Sobrien * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1647133Sobrien * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 1747133Sobrien * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 1847133Sobrien * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 1947133Sobrien * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2047133Sobrien * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2147133Sobrien * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2247133Sobrien * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2347133Sobrien * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2447133Sobrien * SUCH DAMAGE. 2547133Sobrien * 2647133Sobrien * $Id: if_xereg.h,v 1.2 1999/01/24 22:15:30 root Exp $ 2747133Sobrien */ 2847133Sobrien 2947133Sobrien/* 3047133Sobrien * Register definitions for Xircom CreditCard Ethernet adapters. See if_xe.c 3147133Sobrien * for details of supported hardware. Adapted from Werner Koch's 'xirc2ps' 3247133Sobrien * driver for Linux. 3347133Sobrien */ 3447133Sobrien 3547133Sobrien#include "xe.h" 3647133Sobrien#if NXE > 0 3747133Sobrien 3847133Sobrien 3947133Sobrien/* 4047133Sobrien * Common registers 4147133Sobrien */ 4247133Sobrien#define XE_CR 0 /* Command register (write) */ 4347133Sobrien#define XE_ESR 0 /* Ethernet status register (read) */ 4447133Sobrien#define XE_PSR 1 /* Page select register */ 4547133Sobrien#define XE_EDP 4 /* Ethernet data port */ 4647133Sobrien#define XE_ISR 6 /* Interrupt status register */ 4747133Sobrien 4847133Sobrien/* 4947133Sobrien * Command register values 5047133Sobrien */ 5147133Sobrien#define XE_CR_TX_PACKET 0x01 5247133Sobrien#define XE_CR_SOFT_RESET 0x02 5347133Sobrien#define XE_CR_ENABLE_INTR 0x04 5447133Sobrien#define XE_CR_FORCE_INTR 0x08 5547133Sobrien#define XE_CR_CLEAR_FIFO 0x10 5647133Sobrien#define XE_CR_CLEAR_OVERRUN 0x20 5747133Sobrien#define XE_CR_RESTART_TX 0x40 5847133Sobrien 5947133Sobrien/* 6047133Sobrien * Status register values 6147133Sobrien */ 6247133Sobrien#define XE_ESR_FULL_PKT_RX 0x01 6347133Sobrien#define XE_ESR_PKT_REJECT 0x04 6447133Sobrien#define XE_ESR_TX_PENDING 0x08 6547133Sobrien#define XE_ESR_BAD_POLARITY 0x10 6647133Sobrien#define XE_ESR_MEDIA_SELECT 0x20 6747133Sobrien 6847133Sobrien/* 6947133Sobrien * Interrupt register values 7047133Sobrien */ 7147133Sobrien#define XE_ISR_TX_OVERFLOW 0x01 7247133Sobrien#define XE_ISR_TX_PACKET 0x02 7347133Sobrien#define XE_ISR_MAC_INTR 0x04 7447133Sobrien#define XE_ISR_TX_RES 0x08 7547133Sobrien#define XE_ISR_RX_PACKET 0x20 7647133Sobrien#define XE_ISR_RX_REJECT 0x40 7747133Sobrien#define XE_ISR_FORCE_INTR 0x80 7847133Sobrien 7947133Sobrien 8047133Sobrien/* 8147133Sobrien * Page 0 registers 8247133Sobrien */ 8347133Sobrien#define XE_TSO 8 /* Transmit space open */ 8447133Sobrien#define XE_TRS 10 /* Transmit reservation size */ 8547133Sobrien#define XE_DOR 12 /* Data offset register (write) */ 8647133Sobrien#define XE_RSR 12 /* Receive status register (read) */ 8747133Sobrien#define XE_PTR 13 /* Packets transmitted register (read) */ 8847133Sobrien#define XE_RBC 14 /* Received byte count (read) */ 8947133Sobrien 9047133Sobrien/* 9147133Sobrien * RSR values 9247133Sobrien */ 9347133Sobrien#define XE_RSR_PHYS_PKT 0x01 9447133Sobrien#define XE_RSR_BCAST_PKT 0x02 9547133Sobrien#define XE_RSR_LONG_PKT 0x04 9647133Sobrien#define XE_RSR_ALIGN_ERR 0x10 9747133Sobrien#define XE_RSR_CRC_ERR 0x20 9847133Sobrien#define XE_RSR_RX_OK 0x80 9947133Sobrien 10047133Sobrien 10147133Sobrien/* 10247133Sobrien * Page 1 registers 10347133Sobrien */ 10447133Sobrien#define XE_IMR0 12 /* Interrupt mask register, part 1 */ 10547133Sobrien#define XE_IMR1 13 /* Interrupt mask register, part 2 */ 10647133Sobrien#define XE_ECR 14 /* Ethernet configuration register */ 10747133Sobrien 10847133Sobrien/* 10947133Sobrien * ECR values 11047133Sobrien */ 11147133Sobrien#define XE_ECR_FULL_DUPLEX 0x04 11247133Sobrien#define XE_ECR_LONG_TPCABLE 0x08 11347133Sobrien#define XE_ECR_NO_POLCOL 0x10 11447133Sobrien#define XE_ECR_NO_LINKPULSE 0x20 11547133Sobrien#define XE_ECR_NO_AUTOTX 0x40 11647133Sobrien 11747133Sobrien 11847133Sobrien/* 11947133Sobrien * Page 2 registers 12047133Sobrien */ 12147133Sobrien#define XE_RBS 8 /* Receive buffer start */ 12247133Sobrien#define XE_LED 10 /* LED configuration register */ 12347133Sobrien#define XE_MSR 12 /* Mohawk specfic register (Mohawk = CE3) */ 12447133Sobrien#define XE_GPR2 13 /* General purpose register 2 */ 12547133Sobrien 12647133Sobrien 12747133Sobrien/* 12847133Sobrien * Page 4 registers 12947133Sobrien */ 13047133Sobrien#define XE_GPR0 8 /* General purpose register 0 */ 13147133Sobrien#define XE_GPR1 9 /* General purpose register 1 */ 13247133Sobrien#define XE_BOV 10 /* Bonding version register */ 13347133Sobrien#define XE_LMA 12 /* Local memory address */ 13447133Sobrien#define XE_LMD 14 /* Local memory data */ 13547133Sobrien 13647133Sobrien 13747133Sobrien/* 13847133Sobrien * Page 5 registers 13947133Sobrien */ 14047133Sobrien#define XE_RHS 10 /* Receive host start address */ 14147133Sobrien 14247133Sobrien 14347133Sobrien/* 14447133Sobrien * Page 0x40 registers 14547133Sobrien */ 14647133Sobrien#define XE_OCR 8 /* The Other command register */ 14747133Sobrien#define XE_RXS0 9 /* Receive status 0 */ 14847133Sobrien#define XE_TXS0 11 /* Transmit status 0 */ 14947133Sobrien#define XE_TXS1 12 /* Transmit status 1 */ 15047133Sobrien#define XE_RXM0 13 /* Receive mask register 0 */ 15147133Sobrien#define XE_TXM0 14 /* Transmit mask register 0 */ 15247133Sobrien#define XE_TXM1 15 /* Transmit mask register 1 */ 15347133Sobrien 15447133Sobrien/* 15547133Sobrien * OCR values 15647133Sobrien */ 15747133Sobrien#define XE_OCR_TX 0x01 15847133Sobrien#define XE_OCR_RX_ENABLE 0x04 15947133Sobrien#define XE_OCR_RX_DISABLE 0x08 16047133Sobrien#define XE_OCR_ABORT 0x10 16147133Sobrien#define XE_OCR_ONLINE 0x20 16247133Sobrien#define XE_OCR_ACK_INTR 0x40 16347133Sobrien#define XE_OCR_OFFLINE 0x80 16447133Sobrien 16547133Sobrien 16647133Sobrien/* 16747133Sobrien * Page 0x42 registers 16847133Sobrien */ 16947133Sobrien#define XE_SWC0 8 /* Software configuration register 0 */ 17047133Sobrien#define XE_SWC1 9 /* Software configuration register 1 */ 17147133Sobrien#define XE_BOC 10 /* Back-off configuration */ 17247133Sobrien 17347133Sobrien 17447133Sobrien/* 17547133Sobrien * Page 0x44 registers 17647133Sobrien */ 17747133Sobrien#define XE_TDR0 8 /* Time domain reflectometry register 0 */ 17847133Sobrien#define XE_TDR1 9 /* Time domain reflectometry register 1 */ 17947133Sobrien#define XE_RXC0 10 /* Receive byte count low */ 18047133Sobrien#define XE_RXC1 11 /* Receive byte count high */ 18147133Sobrien 18247133Sobrien 18347133Sobrien/* 18447133Sobrien * Page 0x45 registers 18547133Sobrien */ 18647133Sobrien#define XE_REV 15 /* Revision (read) */ 18747133Sobrien 18847133Sobrien 18947133Sobrien/* 19047133Sobrien * Page 0x50 registers 19147133Sobrien */ 19247133Sobrien#define XE_IAR 8 /* Individual address register */ 19347133Sobrien 19447133Sobrien 19547133Sobrien/* 19647133Sobrien * Pages 0x43, 0x46-0x4f and 0x51-0x5e apparently don't exist. 19747133Sobrien * The remainder of 0x0-0x8 and 0x40-0x5f exist, but I have no 19847133Sobrien * idea what's on most of them. 19947133Sobrien */ 20047133Sobrien 20147133Sobrien 20247133Sobrien/* 20347133Sobrien * MII/PHY defines adapted from the xl driver. These need cleaning up a 20447133Sobrien * little if we end up using them. 20547133Sobrien */ 20647133Sobrien#define XE_MII_CLK 0x01 20747133Sobrien#define XE_MII_DIR 0x08 20847133Sobrien#define XE_MII_WRD 0x02 20947133Sobrien#define XE_MII_RDD 0x20 21047133Sobrien#define XE_MII_STARTDELIM 0x01 21147133Sobrien#define XE_MII_READOP 0x02 21247133Sobrien#define XE_MII_WRITEOP 0x01 21347133Sobrien#define XE_MII_TURNAROUND 0x02 21447133Sobrien 21547133Sobrien#define XE_MII_SET(x) XE_OUTB(XE_GPR2, (XE_INB(XE_GPR2) | 0x04) | (x)) 21647133Sobrien#define XE_MII_CLR(x) XE_OUTB(XE_GPR2, (XE_INB(XE_GPR2) | 0x04) & ~(x)) 21747133Sobrien 21847133Sobrien#define XL_PHY_GENCTL 0x00 21947133Sobrien#define XL_PHY_GENSTS 0x01 22047133Sobrien#define XL_PHY_VENID 0x02 22147133Sobrien#define XL_PHY_DEVID 0x03 22247133Sobrien#define XL_PHY_ANAR 0x04 22347133Sobrien#define XL_PHY_LPAR 0x05 22447133Sobrien#define XL_PHY_ANER 0x06 22547133Sobrien 22647133Sobrien#define PHY_ANAR_NEXTPAGE 0x8000 22747133Sobrien#define PHY_ANAR_RSVD0 0x4000 22847133Sobrien#define PHY_ANAR_TLRFLT 0x2000 22947133Sobrien#define PHY_ANAR_RSVD1 0x1000 23047133Sobrien#define PHY_ANAR_RSVD2 0x0800 23147133Sobrien#define PHY_ANAR_RSVD3 0x0400 23247133Sobrien#define PHY_ANAR_100BT4 0x0200 23347133Sobrien#define PHY_ANAR_100BTXFULL 0x0100 23447133Sobrien#define PHY_ANAR_100BTXHALF 0x0080 23547133Sobrien#define PHY_ANAR_10BTFULL 0x0040 23647133Sobrien#define PHY_ANAR_10BTHALF 0x0020 23747133Sobrien#define PHY_ANAR_PROTO4 0x0010 23847133Sobrien#define PHY_ANAR_PROTO3 0x0008 23947133Sobrien#define PHY_ANAR_PROTO2 0x0004 24047133Sobrien#define PHY_ANAR_PROTO1 0x0002 24147133Sobrien#define PHY_ANAR_PROTO0 0x0001 24247133Sobrien 24347133Sobrien/* 24447133Sobrien * PHY BMCR Basic Mode Control Register 24547133Sobrien */ 24647133Sobrien#define PHY_BMCR 0x00 24747133Sobrien#define PHY_BMCR_RESET 0x8000 24847133Sobrien#define PHY_BMCR_LOOPBK 0x4000 24947133Sobrien#define PHY_BMCR_SPEEDSEL 0x2000 25047133Sobrien#define PHY_BMCR_AUTONEGENBL 0x1000 25147133Sobrien#define PHY_BMCR_RSVD0 0x0800 /* write as zero */ 25247133Sobrien#define PHY_BMCR_ISOLATE 0x0400 25347133Sobrien#define PHY_BMCR_AUTONEGRSTR 0x0200 25447133Sobrien#define PHY_BMCR_DUPLEX 0x0100 25547133Sobrien#define PHY_BMCR_COLLTEST 0x0080 25647133Sobrien#define PHY_BMCR_RSVD1 0x0040 /* write as zero, don't care */ 25747133Sobrien#define PHY_BMCR_RSVD2 0x0020 /* write as zero, don't care */ 25847133Sobrien#define PHY_BMCR_RSVD3 0x0010 /* write as zero, don't care */ 25947133Sobrien#define PHY_BMCR_RSVD4 0x0008 /* write as zero, don't care */ 26047133Sobrien#define PHY_BMCR_RSVD5 0x0004 /* write as zero, don't care */ 26147133Sobrien#define PHY_BMCR_RSVD6 0x0002 /* write as zero, don't care */ 26247133Sobrien#define PHY_BMCR_RSVD7 0x0001 /* write as zero, don't care */ 26347133Sobrien 26447133Sobrien/* 26547133Sobrien * PHY, BMSR Basic Mode Status Register 26647133Sobrien */ 26747133Sobrien#define PHY_BMSR 0x01 26847133Sobrien#define PHY_BMSR_100BT4 0x8000 26947133Sobrien#define PHY_BMSR_100BTXFULL 0x4000 27047133Sobrien#define PHY_BMSR_100BTXHALF 0x2000 27147133Sobrien#define PHY_BMSR_10BTFULL 0x1000 27247133Sobrien#define PHY_BMSR_10BTHALF 0x0800 27347133Sobrien#define PHY_BMSR_RSVD1 0x0400 /* write as zero, don't care */ 27447133Sobrien#define PHY_BMSR_RSVD2 0x0200 /* write as zero, don't care */ 27547133Sobrien#define PHY_BMSR_RSVD3 0x0100 /* write as zero, don't care */ 27647133Sobrien#define PHY_BMSR_RSVD4 0x0080 /* write as zero, don't care */ 27747133Sobrien#define PHY_BMSR_MFPRESUP 0x0040 27847133Sobrien#define PHY_BMSR_AUTONEGCOMP 0x0020 27947133Sobrien#define PHY_BMSR_REMFAULT 0x0010 28047133Sobrien#define PHY_BMSR_CANAUTONEG 0x0008 28147133Sobrien#define PHY_BMSR_LINKSTAT 0x0004 28247133Sobrien#define PHY_BMSR_JABBER 0x0002 28347133Sobrien#define PHY_BMSR_EXTENDED 0x0001 28447133Sobrien 28547133Sobrien 28647133Sobrien#endif /* NXE > 0 */ 287