199440Sbenno/*-
299440Sbenno * Copyright (c) 2001 The NetBSD Foundation, Inc.
399440Sbenno * All rights reserved.
499440Sbenno *
599440Sbenno * This code is derived from software contributed to The NetBSD Foundation
699440Sbenno * by Jason R. Thorpe.
799440Sbenno *
899440Sbenno * Redistribution and use in source and binary forms, with or without
999440Sbenno * modification, are permitted provided that the following conditions
1099440Sbenno * are met:
1199440Sbenno * 1. Redistributions of source code must retain the above copyright
1299440Sbenno *    notice, this list of conditions and the following disclaimer.
1399440Sbenno * 2. Redistributions in binary form must reproduce the above copyright
1499440Sbenno *    notice, this list of conditions and the following disclaimer in the
1599440Sbenno *    documentation and/or other materials provided with the distribution.
1699440Sbenno *
1799440Sbenno * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
1899440Sbenno * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
1999440Sbenno * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
2099440Sbenno * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
2199440Sbenno * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
2299440Sbenno * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
2399440Sbenno * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
2499440Sbenno * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
2599440Sbenno * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
2699440Sbenno * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
2799440Sbenno * POSSIBILITY OF SUCH DAMAGE.
2899440Sbenno *
2999440Sbenno *	from NetBSD: bmtphyreg.h,v 1.1 2001/06/02 21:42:10 thorpej Exp
3099440Sbenno *
3199440Sbenno * $FreeBSD$
3299440Sbenno */
3399440Sbenno
3499440Sbenno#ifndef _DEV_MII_BMTPHYREG_H_
3599440Sbenno#define	_DEV_MII_BMTPHYREG_H_
3699440Sbenno
3799440Sbenno/*
3899440Sbenno * BCM5201/BCM5202 registers.
3999440Sbenno */
4099440Sbenno
4199440Sbenno#define	MII_BMTPHY_AUX_CTL	0x10	/* auxiliary control */
4299440Sbenno#define	AUX_CTL_TXDIS		0x2000	/* transmitter disable */
4399440Sbenno#define	AUX_CTL_4B5B_BYPASS	0x0400	/* bypass 4b5b encoder */
4499440Sbenno#define	AUX_CTL_SCR_BYPASS	0x0200	/* bypass scrambler */
4599440Sbenno#define	AUX_CTL_NRZI_BYPASS	0x0100	/* bypass NRZI encoder */
4699440Sbenno#define	AUX_CTL_RXALIGN_BYPASS	0x0080	/* bypass rx symbol alignment */
4799440Sbenno#define	AUX_CTL_BASEWANDER_DIS	0x0040	/* disable baseline wander correction */
4899440Sbenno#define	AUX_CTL_FEF_EN		0x0020	/* far-end fault enable */
4999440Sbenno
5099440Sbenno
5199440Sbenno#define	MII_BMTPHY_AUX_STS	0x11	/* auxiliary status */
5299440Sbenno#define	AUX_STS_FX_MODE		0x0400	/* 100base-FX mode (strap pin) */
5399440Sbenno#define	AUX_STS_LOCKED		0x0200	/* descrambler locked */
5499440Sbenno#define	AUX_STS_100BASE_LINK	0x0100	/* 1 = 100base link */
5599440Sbenno#define	AUX_STS_REMFAULT	0x0080	/* remote fault */
5699440Sbenno#define	AUX_STS_DISCON_STATE	0x0040	/* disconnect state */
5799440Sbenno#define	AUX_STS_FCARDET		0x0020	/* false carrier detected */
5899440Sbenno#define	AUX_STS_BAD_ESD		0x0010	/* bad ESD detected */
5999440Sbenno#define	AUX_STS_RXERROR		0x0008	/* Rx error detected */
6099440Sbenno#define	AUX_STS_TXERROR		0x0004	/* Tx error detected */
6199440Sbenno#define	AUX_STS_LOCKERROR	0x0002	/* lock error detected */
6299440Sbenno#define	AUX_STS_MLT3ERROR	0x0001	/* MLT3 code error detected */
6399440Sbenno
6499440Sbenno
6599440Sbenno#define	MII_BMTPHY_RXERROR_CTR	0x12	/* 100base-X Rx error counter */
6699440Sbenno#define	RXERROR_CTR_MASK	0x00ff
6799440Sbenno
6899440Sbenno
6999440Sbenno#define	MII_BMTPHY_FCS_CTR	0x13	/* 100base-X false carrier counter */
7099440Sbenno#define	FCS_CTR_MASK		0x00ff
7199440Sbenno
7299440Sbenno
7399440Sbenno#define	MII_BMTPHY_DIS_CTR	0x14	/* 100base-X disconnect counter */
7499440Sbenno#define	DIS_CTR_MASK		0x00ff
7599440Sbenno
7699440Sbenno
7799440Sbenno#define	MII_BMTPHY_PTEST	0x17	/* PTEST */
7899440Sbenno
7999440Sbenno
8099440Sbenno#define	MII_BMTPHY_AUX_CSR	0x18	/* auxiliary control/status */
8199440Sbenno#define	AUX_CSR_JABBER_DIS	0x8000	/* jabber disable */
8299440Sbenno#define	AUX_CSR_FLINK		0x4000	/* force 10baseT link pass */
8399440Sbenno#define	AUX_CSR_HSQ		0x0080	/* SQ high */
8499440Sbenno#define	AUX_CSR_LSQ		0x0040	/* SQ low */
8599440Sbenno#define	AUX_CSR_ER1		0x0020	/* edge rate 1 */
8699440Sbenno#define	AUX_CSR_ER0		0x0010	/* edge rate 0 */
8799440Sbenno#define	AUX_CSR_ANEG		0x0008	/* auto-negotiation activated */
8899440Sbenno#define	AUX_CSR_F100		0x0004	/* force 100base */
8999440Sbenno#define	AUX_CSR_SPEED		0x0002	/* 1 = 100, 0 = 10 */
9099440Sbenno#define	AUX_CSR_FDX		0x0001	/* full-duplex */
9199440Sbenno
9299440Sbenno
9399440Sbenno#define	MII_BMTPHY_AUX_SS	0x19	/* auxiliary status summary */
9499440Sbenno#define	AUX_SS_ACOMP		0x8000	/* auto-negotiation complete */
9599440Sbenno#define	AUX_SS_ACOMP_ACK	0x4000	/* auto-negotiation compl. ack */
9699440Sbenno#define	AUX_SS_AACK_DET		0x2000	/* auto-neg. ack detected */
9799440Sbenno#define	AUX_SS_ANLPAD		0x1000	/* auto-neg. link part. ability det */
9899440Sbenno#define	AUX_SS_ANEG_PAUSE	0x0800	/* pause operation bit */
9999440Sbenno#define	AUX_SS_HCD		0x0700	/* highest common denominator */
10099440Sbenno#define	AUX_SS_HCD_NONE		0x0000	/*    none */
10199440Sbenno#define	AUX_SS_HCD_10T		0x0100	/*    10baseT */
10299440Sbenno#define	AUX_SS_HCD_10T_FDX	0x0200	/*    10baseT-FDX */
10399440Sbenno#define	AUX_SS_HCD_100TX	0x0300	/*    100baseTX-FDX */
10499440Sbenno#define	AUX_SS_HCD_100T4	0x0400	/*    100baseT4 */
10599440Sbenno#define	AUX_SS_HCD_100TX_FDX	0x0500	/*    100baseTX-FDX */
10699440Sbenno#define	AUX_SS_PDF		0x0080	/* parallel detection fault */
10799440Sbenno#define	AUX_SS_LPRF		0x0040	/* link partner remote fault */
10899440Sbenno#define	AUX_SS_LPPR		0x0020	/* link partner page received */
10999440Sbenno#define	AUX_SS_LPANA		0x0010	/* link partner auto-neg able */
11099440Sbenno#define	AUX_SS_SPEED		0x0008	/* 1 = 100, 0 = 10 */
11199440Sbenno#define	AUX_SS_LINK		0x0004	/* link pass */
11299440Sbenno#define	AUX_SS_ANEN		0x0002	/* auto-neg. enabled */
11399440Sbenno#define	AUX_SS_JABBER		0x0001	/* jabber detected */
11499440Sbenno
11599440Sbenno
11699440Sbenno#define	MII_BMTPHY_INTR		0x1a	/* interrupt register */
11799440Sbenno#define	INTR_FDX_LED		0x8000	/* full-duplex led enable */
11899440Sbenno#define	INTR_INTR_EN		0x4000	/* interrupt enable */
11999440Sbenno#define	INTR_FDX_MASK		0x0800	/* full-dupled intr mask */
12099440Sbenno#define	INTR_SPD_MASK		0x0400	/* speed intr mask */
12199440Sbenno#define	INTR_LINK_MASK		0x0200	/* link intr mask */
12299440Sbenno#define	INTR_INTR_MASK		0x0100	/* master interrupt mask */
12399440Sbenno#define	INTR_FDX_CHANGE		0x0008	/* full-duplex change */
12499440Sbenno#define	INTR_SPD_CHANGE		0x0004	/* speed change */
12599440Sbenno#define	INTR_LINK_CHANGE	0x0002	/* link change */
12699440Sbenno#define	INTR_INTR_STATUS	0x0001	/* interrupt status */
12799440Sbenno
12899440Sbenno
12999440Sbenno#define	MII_BMTPHY_AUX2		0x1b	/* auliliary mode 2 */
13099440Sbenno#define	AUX2_BLOCK_RXDV		0x0200	/* block RXDV mode enabled */
13199440Sbenno#define	AUX2_ANPDQ		0x0100	/* auto-neg parallel detection Q mode */
13299440Sbenno#define	AUX2_TRAFFIC_LED	0x0040	/* traffic meter led enable */
13399440Sbenno#define	AUX2_FXMTRCV_LED	0x0020	/* force Tx and Rx LEDs */
13499440Sbenno#define	AUX2_HS_TOKEN		0x0010	/* high-speed token ring mode */
13599440Sbenno#define	AUX2_AUTO_LP		0x0008	/* auto low-power mode */
13699440Sbenno#define	AUX2_TWOLINK_LED	0x0004	/* two link LEDs */
13799440Sbenno#define	AUX2_SQE_DIS		0x0002	/* disable SQE pulse */
13899440Sbenno
13999440Sbenno
14099440Sbenno#define	MII_BMTPHY_AUXERR	0x1c	/* auxiliary error */
14199440Sbenno#define	AUXERR_MANCHESTER	0x0400	/* Manchester code error */
14299440Sbenno#define	AUXERR_EOF		0x0200	/* EOF detection error */
14399440Sbenno#define	AUXERR_POLARITY		0x0100	/* polarity inversion */
14499440Sbenno#define	AUXERR_ANEG		0x0008	/* autonegotiation enabled */
14599440Sbenno#define	AUXERR_F100		0x0004	/* force 100base */
14699440Sbenno#define	AUXERR_SPEED		0x0002	/* 1 = 100, 0 = 10 */
14799440Sbenno#define	AUXERR_FDX		0x0001	/* full-duplex */
14899440Sbenno
14999440Sbenno
15099440Sbenno#define	MII_BMTPHY_AUXMODE	0x1d	/* auxiliary mode */
15199440Sbenno#define	AUXMODE_ACT_LED_DIS	0x0010	/* activity LED disable */
15299440Sbenno#define	AUXMODE_LINK_LED_DIS	0x0008	/* link LED disable */
15399440Sbenno#define	AUXMODE_BLOCK_TXEN	0x0002	/* enable block TXEN */
15499440Sbenno
15599440Sbenno
15699440Sbenno#define	MII_BMTPHY_AUXMPHY	0x1e	/* auxiliary multiple phy register */
15799440Sbenno#define	AUXMPHY_HCD_TX_FDX	0x8000	/* res. is 100baseTX-FDX */
15899440Sbenno#define	AUXMPHY_HCD_T4		0x4000	/* res. is 100baseT4 */
15999440Sbenno#define	AUXMPHY_HCD_TX		0x2000	/* res. is 100baseTX */
16099440Sbenno#define	AUXMPHY_HCD_10T_FDX	0x1000	/* res. is 10baseT-FDX */
16199440Sbenno#define	AUXMPHY_HCD_10T		0x0800	/* res. is 10baseT */
16299440Sbenno#define	AUXMPHY_RES_ANEG	0x0100	/* restart auto-negotiation */
16399440Sbenno#define	AUXMPHY_ANEG_COMP	0x0080	/* auto-negotiation complete */
16499440Sbenno#define	AUXMPHY_ACK_COMP	0x0040	/* acknowledge complete */
16599440Sbenno#define	AUXMPHY_ACK_DET		0x0020	/* acknowledge detected */
16699440Sbenno#define	AUXMPHY_ABILITY_DET	0x0010	/* waiting for LP ability */
16799440Sbenno#define	AUXMPHY_SUPER_ISO	0x0008	/* super-isolate mode */
16899440Sbenno#define	AUXMPHY_10T_SERIAL	0x0002	/* 10baseT serial mode */
16999440Sbenno
17099440Sbenno
17199440Sbenno#define	MII_BMTPHY_TEST		0x1d	/* Broadcom test register */
17299440Sbenno
17399440Sbenno
17499440Sbenno#endif /* _DEV_MII_BMTPHYREG_H_ */
175