summaryrefslogtreecommitdiff
path: root/sys/dev/mii/nsgphyreg.h
blob: 7063b03c9c25bd7e8dd87fcf18fa14ebf22c70c1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
/*	$OpenBSD: nsgphyreg.h,v 1.2 2001/06/17 22:06:05 pvalchev Exp $	*/
/*
 * Copyright (c) 2001 Wind River Systems
 * Copyright (c) 2001
 *	Bill Paul <wpaul@bsdi.com>.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. All advertising materials mentioning features or use of this software
 *    must display the following acknowledgement:
 *	This product includes software developed by Bill Paul.
 * 4. Neither the name of the author nor the names of any co-contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
 * THE POSSIBILITY OF SUCH DAMAGE.
 *
 * $FreeBSD$
 */

#ifndef _DEV_MII_NSGPHYREG_H_
#define	_DEV_MII_NSGPHYREG_H_

/*
 * NatSemi DP83891 registers
 */

#define NSGPHY_MII_BMCR		0x00
#define NSGPHY_BMCR_RESET	0x8000
#define NSGPHY_BMCR_LOOP	0x4000
#define NSGPHY_BMCR_SPD0	0x2000	/* speed select, lower bit */
#define NSGPHY_BMCR_AUTOEN	0x1000	/* Autoneg enabled */
#define NSGPHY_BMCR_PDOWN	0x0800	/* Power down */
#define NSGPHY_BMCR_ISO		0x0400	/* Isolate */
#define NSGPHY_BMCR_STARTNEG	0x0200	/* Restart autoneg */
#define NSGPHY_BMCR_FDX		0x0100	/* Duplex mode */
#define NSGPHY_BMCR_CTEST	0x0080	/* Collision test enable */
#define NSGPHY_BMCR_SPD1	0x0040	/* Speed select, upper bit */

#define NSGPHY_S1000		NSGPHY_BMCR_SPD1	/* 1000mbps */
#define NSGPHY_S100		NSGPHY_BMCR_SPD0	/* 100mpbs */
#define NSGPHY_S10		0			/* 10mbps */

#define NSGPHY_MII_BMSR		0x01
#define NSGPHY_BMSR_100BT4	0x8000	/* 100baseT4 support */
#define NSGPHY_BMSR_100FDX	0x4000	/* 100baseTX full duplex */
#define NSGPHY_BMSR_100HDX	0x2000	/* 100baseTX half duplex */
#define NSGPHY_BMSR_10FDX	0x1000	/* 10baseT full duplex */
#define NSGPHY_BMSR_10HDX	0x0800	/* 10baseT half duplex */
#define NSGPHY_BMSR_100T2FDX	0x0400	/* 100baseT2 full duplex */
#define NSGPHY_BMSR_100T2HDX	0x0200	/* 100baseT2 full duplex */
#define NSGPHY_BMSR_EXTSTS	0x0100	/* 1000baseT Extended status present */
#define NSGPHY_BMSR_PRESUB	0x0040	/* Preamble surpression */
#define NSGPHY_BMSR_ACOMP	0x0020	/* Autoneg complete */
#define NSGPHY_BMSR_RFAULT	0x0010	/* Remote fault condition occured */
#define NSGPHY_BMSR_ANEG	0x0008	/* Autoneg capable */
#define NSGPHY_BMSR_LINK	0x0004	/* Link status */
#define NSGPHY_BMSR_JABBER	0x0002	/* Jabber detected */
#define NSGPHY_BMSR_EXT		0x0001	/* Extended capability */

#define NSGPHY_MII_ANAR		0x04
#define NSGPHY_ANAR_NP		0x8000	/* Next page */
#define NSGPHY_ANAR_RF		0x2000	/* Remote fault */
#define NSGPHY_ANAR_ASP		0x0800	/* Asymmetric Pause */
#define NSGPHY_ANAR_PC		0x0400	/* Pause capable */
#define NSGPHY_ANAR_100T4	0x0200	/* 100baseT4 support */
#define NSGPHY_ANAR_100FDX	0x0100	/* 100baseTX full duplex support */
#define NSGPHY_ANAR_100HDX	0x0080	/* 100baseTX half duplex support */
#define NSGPHY_ANAR_10FDX	0x0040	/* 10baseT full duplex support */
#define NSGPHY_ANAR_10HDX	0x0020	/* 10baseT half duplex support */
#define NSGPHY_ANAR_SEL		0x001F	/* selector field, 00001=Ethernet */

#define NSGPHY_MII_ANLPAR	0x05
#define NSGPHY_ANLPAR_NP	0x8000	/* Next page */
#define NSGPHY_ANLPAR_RF	0x2000	/* Remote fault */
#define NSGPHY_ANLPAR_ASP	0x0800	/* Asymmetric Pause */
#define NSGPHY_ANLPAR_PC	0x0400	/* Pause capable */
#define NSGPHY_ANLPAR_100T4	0x0200	/* 100baseT4 support */
#define NSGPHY_ANLPAR_100FDX	0x0100	/* 100baseTX full duplex support */
#define NSGPHY_ANLPAR_100HDX	0x0080	/* 100baseTX half duplex support */
#define NSGPHY_ANLPAR_10FDX	0x0040	/* 10baseT full duplex support */
#define NSGPHY_ANLPAR_10HDX	0x0020	/* 10baseT half duplex support */
#define NSGPHY_ANLPAR_SEL	0x001F	/* selector field, 00001=Ethernet */

#define NSGPHY_SEL_TYPE		0x0001	/* ethernet */

#define NSGPHY_MII_ANER		0x06
#define NSGPHY_ANER_PDF		0x0010	/* Parallel detection fault */
#define NSGPHY_ANER_LPNP	0x0008	/* Link partner can next page */
#define NSGPHY_ANER_NP		0x0004	/* Local PHY can next page */
#define NSGPHY_ANER_RX		0x0002	/* Next page received */
#define NSGPHY_ANER_LPAN	0x0001 	/* Link partner autoneg capable */

#define NSGPHY_MII_NEXTP	0x07	/* Next page */
#define NSGPHY_NEXTP_NP		0x8000	/* Next page indication */
#define NSGPHY_NEXTP_MP		0x2000	/* Message page */
#define NSGPHY_NEXTP_ACK2	0x1000	/* Acknowledge 2 */
#define NSGPHY_NEXTP_TOGGLE	0x0800	/* Toggle */
#define NSGPHY_NEXTP_CODE	0x07FF	/* Code field */

#define NSGPHY_MII_NEXTP_LP	0x08	/* Next page of link partner */
#define NSGPHY_NEXTPLP_NP	0x8000	/* Next page indication */
#define NSGPHY_NEXTPLP_MP	0x2000	/* Message page */
#define NSGPHY_NEXTPLP_ACK2	0x1000	/* Acknowledge 2 */
#define NSGPHY_NEXTPLP_TOGGLE	0x0800	/* Toggle */
#define NSGPHY_NEXTPLP_CODE	0x07FF	/* Code field */

#define NSGPHY_MII_1000CTL	0x09	/* 1000baseT control */
#define NSGPHY_1000CTL_TST	0xE000	/* test modes */
#define NSGPHY_1000CTL_MSE	0x1000	/* Master/Slave config enable */
#define NSGPHY_1000CTL_MSC	0x0800	/* Master/Slave setting */
#define NSGPHY_1000CTL_RD	0x0400	/* Port type: Repeater/DTE */
#define NSGPHY_1000CTL_AFD	0x0200	/* Advertise full duplex */
#define NSGPHY_1000CTL_AHD	0x0100	/* Advertise half duplex */

#define NSGPHY_MII_1000STS	0x0A	/* 1000baseT status */
#define NSGPHY_1000STS_MSF	0x8000	/* Master/slave fault */
#define NSGPHY_1000STS_MSR	0x4000	/* Master/slave result */
#define NSGPHY_1000STS_LRS	0x2000	/* Local receiver status */
#define NSGPHY_1000STS_RRS	0x1000	/* Remote receiver status */
#define NSGPHY_1000STS_LPFD	0x0800	/* Link partner can FD */
#define NSGPHY_1000STS_LPHD	0x0400	/* Link partner can HD */
#define NSGPHY_1000STS_ASM_DIR	0x0200	/* Asymmetric pause capable */
#define NSGPHY_1000STS_IEC	0x00FF	/* Idle error count */

#define NSGPHY_MII_EXTSTS	0x0F	/* Extended status */
#define NSGPHY_EXTSTS_X_FD_CAP	0x8000	/* 1000base-X FD capable */
#define NSGPHY_EXTSTS_X_HD_CAP	0x4000	/* 1000base-X HD capable */
#define NSGPHY_EXTSTS_T_FD_CAP	0x2000	/* 1000base-T FD capable */
#define NSGPHY_EXTSTS_T_HD_CAP	0x1000	/* 1000base-T HD capable */

#define NSGPHY_MII_STRAPOPT	0x10	/* Strap options */
#define NSGPHY_STRAPOPT_PHYADDR	0xF800	/* PHY address */
#define NSGPHY_STRAPOPT_COMPAT	0x0400	/* Broadcom compat mode */
#define NSGPHY_STRAPOPT_MMSE	0x0200	/* Manual master/slave enable */
#define NSGPHY_STRAPOPT_ANEG	0x0100	/* Autoneg enable */
#define NSGPHY_STRAPOPT_MMSV	0x0080	/* Manual master/slave setting */
#define NSGPHY_STRAPOPT_1000HDX	0x0010	/* Advertise 1000 half-duplex */
#define NSGPHY_STRAPOPT_1000FDX	0x0008	/* Advertise 1000 full-duplex */
#define NSGPHY_STRAPOPT_100_ADV	0x0004	/* Advertise 100 full/half-duplex */
#define NSGPHY_STRAPOPT_SPDSEL	0x0003	/* speed selection */

#define NSGPHY_MII_PHYSUP	0x11	/* PHY support/current status */
#define NSGPHY_PHYSUP_SPDSTS	0x0018	/* speed status */
#define NSGPHY_PHYSUP_LNKSTS	0x0004	/* link status */
#define NSGPHY_PHYSUP_DUPSTS	0x0002	/* duplex status 1 == full */
#define NSGPHY_PHYSUP_10BT	0x0001	/* 10baseT resolved */

#define NSGPHY_SPDSTS_1000	0x0010
#define NSGPHY_SPDSTS_100	0x0008
#define NSGPHY_SPDSTS_10	0x0000

#endif /* _DEV_NSGPHY_MIIREG_H_ */