/*      $NetBSD: if_bmreg.h,v 1.2 2000/01/25 14:38:50 tsubai Exp $      */

/*
* Copyright 1991-1998 by Open Software Foundation, Inc.
*              All Rights Reserved
*
* Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby granted,
* provided that the above copyright notice appears in all copies and
* that both the copyright notice and this permission notice appear in
* supporting documentation.
*
* OSF DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL OSF BE LIABLE FOR ANY SPECIAL, INDIRECT, OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
* LOSS OF USE, DATA OR PROFITS, WHETHER IN ACTION OF CONTRACT,
* NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/

/* -------------------------------------------------------------------- */
/* Heathrow (F)eature (C)ontrol (R)egister Addresses                    */
/* -------------------------------------------------------------------- */
#define EnetEnable      0x60000000      /* enable Enet Xcvr/Controller */
#define ResetEnetCell   0x80000000      /* reset Enet cell */

/* -------------------------------------------------------------------- */
/*      BigMac Register Numbers & Bit Assignments                       */
/* -------------------------------------------------------------------- */
#define XIFC            0x0000
#define  TxOutputEnable         0x0001
#define  MIILoopbackBits        0x0006
#define  MIIBufferEnable        0x0008
#define  SQETestEnable          0x0010
#define LinkStatus      0x0100
#define TXFIFOCSR       0x0100
#define  TxFIFOEnable           0x0001
#define  TxFIFO128              0x0000
#define TXTH            0x0110
#define RXFIFOCSR       0x0120
#define  RxFIFOEnable           TxFIFOEnable
#define  RxFIFO128              TxFIFO128
#define MEMADD          0x0130
#define MEMDATAHI       0x0140
#define MEMDATALO       0x0150
#define XCVRIF          0x0160
#define  COLActiveLow           0x0002
#define  SerialMode             0x0004
#define  ClkBit                 0x0008
#define CHIPID          0x0170
#define MIFCSR          0x0180
#define  MIFDC                  0x0001  /* MII clock */
#define  MIFDO                  0x0002  /* MII data out */
#define  MIFDIR                 0x0004  /* MII direction (1: write) */
#define  MIFDI                  0x0008  /* MII data in */
#define SROMCSR         0x0190
#define TXPNTR          0x01A0
#define RXPNTR          0x01B0
#define STATUS          0x0200
#define INTDISABLE      0x0210
#define  IntFrameReceived       0x0001
#define  IntRxFrameCntExp       0x0002
#define  IntRxAlignCntExp       0x0004
#define  IntRxCRCCntExp         0x0008
#define  IntRxLenCntExp         0x0010
#define  IntRxOverFlow          0x0020
#define  IntRxCodeViolation     0x0040
#define  IntSQETestError        0x0080
#define  IntFrameSent           0x0100
#define  IntTxUnderrun          0x0200
#define  IntTxMaxSizeError      0x0400
#define  IntTxNormalCollExp     0x0800
#define  IntTxExcessCollExp     0x1000
#define  IntTxLateCollExp       0x2000
#define  IntTxNetworkCollExp    0x4000
#define  IntTxDeferTimerExp     0x8000
#define  NormalIntEvents        ~(IntFrameSent)
#define  NoEventsMask           0xFFFF

#define TxNeverGiveUp   0x0400
#define TXRST           0x0420
#define  TxResetBit             0x0001
#define TXCFG           0x0430
#define  TxMACEnable            0x0001
#define  TxThreshold            0x0004
#define  TxFullDuplex           0x0200
#define IPG1            0x0440
#define IPG2            0x0450
#define ALIMIT          0x0460
#define SLOT            0x0470
#define PALEN           0x0480
#define PAPAT           0x0490
#define TXSFD           0x04A0
#define JAM             0x04B0
#define TXMAX           0x04C0
#define TXMIN           0x04D0
#define PAREG           0x04E0
#define DCNT            0x04F0
#define NCCNT           0x0500
#define NTCNT           0x0510
#define EXCNT           0x0520
#define LTCNT           0x0530
#define RSEED           0x0540
#define TXSM            0x0550
#define RXRST           0x0620
#define  RxResetValue           0x0000
#define RXCFG           0x0630
#define  RxMACEnable            0x0001
#define  ReservedValue          0x0004
#define  RxPromiscEnable        0x0040
#define  RxCRCEnable            0x0100
#define  RxRejectOwnPackets     0x0200
#define  RxHashFilterEnable     0x0800
#define  RxAddrFilterEnable     0x1000
#define RXMAX           0x0640
#define RXMIN           0x0650
#define MADD2           0x0660
#define MADD1           0x0670
#define MADD0           0x0680
#define FRCNT           0x0690
#define LECNT           0x06A0
#define AECNT           0x06B0
#define FECNT           0x06C0
#define RXSM            0x06D0
#define RXCV            0x06E0
#define HASH3           0x0700
#define HASH2           0x0710
#define HASH1           0x0720
#define HASH0           0x0730
#define AFR2            0x0740
#define AFR1            0x0750
#define AFR0            0x0760
#define AFCR            0x0770
#define  EnableAllCompares      0x0fff

/* -------------------------------------------------------------------- */
/*      Misc. Bit definitions for BMac Status word                      */
/* -------------------------------------------------------------------- */
#define RxAbortBit      0x8000  /* status bit in BMac status for rx packets */
#define RxLengthMask    0x3FFF  /* bits that determine length of rx packets */

#define NETWORK_BUFSIZE         (ETHERMAXPACKET + ETHERCRC + 2)