/*	$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)
