xref: /illumos-gate/usr/src/uts/common/io/usbgem/usbgem_mii.h (revision 6716431ba7de213d5c318e58dc24c8a36da9b068)
1*6716431bSRobert Mustacchi /*
2*6716431bSRobert Mustacchi  *  gem_mii.h: mii header for gem
3*6716431bSRobert Mustacchi  *
4*6716431bSRobert Mustacchi  * Copyright (c) 2002-2007 Masayuki Murayama.  All rights reserved.
5*6716431bSRobert Mustacchi  *
6*6716431bSRobert Mustacchi  * Redistribution and use in source and binary forms, with or without
7*6716431bSRobert Mustacchi  * modification, are permitted provided that the following conditions are met:
8*6716431bSRobert Mustacchi  *
9*6716431bSRobert Mustacchi  * 1. Redistributions of source code must retain the above copyright notice,
10*6716431bSRobert Mustacchi  *    this list of conditions and the following disclaimer.
11*6716431bSRobert Mustacchi  *
12*6716431bSRobert Mustacchi  * 2. Redistributions in binary form must reproduce the above copyright notice,
13*6716431bSRobert Mustacchi  *    this list of conditions and the following disclaimer in the documentation
14*6716431bSRobert Mustacchi  *    and/or other materials provided with the distribution.
15*6716431bSRobert Mustacchi  *
16*6716431bSRobert Mustacchi  * 3. Neither the name of the author nor the names of its contributors may be
17*6716431bSRobert Mustacchi  *    used to endorse or promote products derived from this software without
18*6716431bSRobert Mustacchi  *    specific prior written permission.
19*6716431bSRobert Mustacchi  *
20*6716431bSRobert Mustacchi  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21*6716431bSRobert Mustacchi  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22*6716431bSRobert Mustacchi  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23*6716431bSRobert Mustacchi  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
24*6716431bSRobert Mustacchi  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
25*6716431bSRobert Mustacchi  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
26*6716431bSRobert Mustacchi  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
27*6716431bSRobert Mustacchi  * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
28*6716431bSRobert Mustacchi  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29*6716431bSRobert Mustacchi  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
30*6716431bSRobert Mustacchi  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
31*6716431bSRobert Mustacchi  * DAMAGE.
32*6716431bSRobert Mustacchi  */
33*6716431bSRobert Mustacchi 
34*6716431bSRobert Mustacchi /*
35*6716431bSRobert Mustacchi  * gem_mii.h : MII registers
36*6716431bSRobert Mustacchi  */
37*6716431bSRobert Mustacchi #ifndef _GEM_MII_H_
38*6716431bSRobert Mustacchi #define	_GEM_MII_H_
39*6716431bSRobert Mustacchi 
40*6716431bSRobert Mustacchi #ifdef GEM_CONFIG_GLDv3
41*6716431bSRobert Mustacchi #include <sys/miiregs.h>
42*6716431bSRobert Mustacchi #else
43*6716431bSRobert Mustacchi #define	MII_CONTROL 		0
44*6716431bSRobert Mustacchi #define	MII_STATUS 		1
45*6716431bSRobert Mustacchi #define	MII_PHYIDH		2
46*6716431bSRobert Mustacchi #define	MII_PHYIDL		3
47*6716431bSRobert Mustacchi #define	MII_AN_ADVERT		4
48*6716431bSRobert Mustacchi #define	MII_AN_LPABLE		5
49*6716431bSRobert Mustacchi #define	MII_AN_EXPANSION	6
50*6716431bSRobert Mustacchi #define	MII_AN_NXTPGXMIT	7
51*6716431bSRobert Mustacchi #endif /* GEM_CONFIG_GLDv3 */
52*6716431bSRobert Mustacchi 
53*6716431bSRobert Mustacchi #define	MII_AN_LPANXT		8
54*6716431bSRobert Mustacchi #define	MII_MS_CONTROL		9
55*6716431bSRobert Mustacchi #define	MII_MS_STATUS		10
56*6716431bSRobert Mustacchi #define	MII_XSTATUS		15
57*6716431bSRobert Mustacchi 
58*6716431bSRobert Mustacchi /* for 1000BaseT support */
59*6716431bSRobert Mustacchi #define	MII_1000TC		MII_MS_CONTROL
60*6716431bSRobert Mustacchi #define	MII_1000TS		MII_MS_STATUS
61*6716431bSRobert Mustacchi #ifndef GEM_CONFIG_GLDv3
62*6716431bSRobert Mustacchi #define	MII_CONTROL_RESET	0x8000
63*6716431bSRobert Mustacchi #define	MII_CONTROL_LOOPBACK	0x4000
64*6716431bSRobert Mustacchi #define	MII_CONTROL_100MB	0x2000
65*6716431bSRobert Mustacchi #define	MII_CONTROL_ANE		0x1000
66*6716431bSRobert Mustacchi #define	MII_CONTROL_PWRDN	0x0800
67*6716431bSRobert Mustacchi #define	MII_CONTROL_ISOLATE	0x0400
68*6716431bSRobert Mustacchi #define	MII_CONTROL_RSAN	0x0200
69*6716431bSRobert Mustacchi #define	MII_CONTROL_FDUPLEX	0x0100
70*6716431bSRobert Mustacchi #define	MII_CONTROL_COLTST	0x0080
71*6716431bSRobert Mustacchi #endif /* !GEM_CONFIG_GLDv3 */
72*6716431bSRobert Mustacchi #define	MII_CONTROL_SPEED	0x2040
73*6716431bSRobert Mustacchi 
74*6716431bSRobert Mustacchi #define	MII_CONTROL_10MB	0x0000
75*6716431bSRobert Mustacchi #define	MII_CONTROL_1000MB	0x0040
76*6716431bSRobert Mustacchi 
77*6716431bSRobert Mustacchi #define	MII_CONTROL_BITS	\
78*6716431bSRobert Mustacchi 	"\020"	\
79*6716431bSRobert Mustacchi 	"\020RESET"	\
80*6716431bSRobert Mustacchi 	"\017LOOPBACK"	\
81*6716431bSRobert Mustacchi 	"\016100MB"	\
82*6716431bSRobert Mustacchi 	"\015ANE"	\
83*6716431bSRobert Mustacchi 	"\014PWRDN"	\
84*6716431bSRobert Mustacchi 	"\013ISOLATE"	\
85*6716431bSRobert Mustacchi 	"\012RSAN"	\
86*6716431bSRobert Mustacchi 	"\011FDUPLEX"	\
87*6716431bSRobert Mustacchi 	"\010COLTST"	\
88*6716431bSRobert Mustacchi 	"\0071000M"
89*6716431bSRobert Mustacchi #ifndef GEM_CONFIG_GLDv3
90*6716431bSRobert Mustacchi #define	MII_STATUS_100_BASE_T4		0x8000
91*6716431bSRobert Mustacchi #define	MII_STATUS_100_BASEX_FD		0x4000
92*6716431bSRobert Mustacchi #define	MII_STATUS_100_BASEX		0x2000
93*6716431bSRobert Mustacchi #define	MII_STATUS_10_FD		0x1000
94*6716431bSRobert Mustacchi #define	MII_STATUS_10			0x0800
95*6716431bSRobert Mustacchi #define	MII_STATUS_MFPRMBLSUPR		0x0040
96*6716431bSRobert Mustacchi #define	MII_STATUS_ANDONE		0x0020
97*6716431bSRobert Mustacchi #define	MII_STATUS_REMFAULT		0x0010
98*6716431bSRobert Mustacchi #define	MII_STATUS_CANAUTONEG		0x0008
99*6716431bSRobert Mustacchi #define	MII_STATUS_LINKUP		0x0004
100*6716431bSRobert Mustacchi #define	MII_STATUS_JABBERING		0x0002
101*6716431bSRobert Mustacchi #define	MII_STATUS_EXTENDED		0x0001
102*6716431bSRobert Mustacchi #endif /* !GEM_CONFIG_GLDv3 */
103*6716431bSRobert Mustacchi #define	MII_STATUS_XSTATUS		0x0100
104*6716431bSRobert Mustacchi #define	MII_STATUS_100_BASE_T2_FD	0x0400
105*6716431bSRobert Mustacchi #define	MII_STATUS_100_BASE_T2		0x0200
106*6716431bSRobert Mustacchi 
107*6716431bSRobert Mustacchi #define	MII_STATUS_ABILITY_TECH	\
108*6716431bSRobert Mustacchi 	(MII_STATUS_100_BASE_T4	|	\
109*6716431bSRobert Mustacchi 	MII_STATUS_100_BASEX_FD |	\
110*6716431bSRobert Mustacchi 	MII_STATUS_100_BASEX |	\
111*6716431bSRobert Mustacchi 	MII_STATUS_10 |	\
112*6716431bSRobert Mustacchi 	MII_STATUS_10_FD)
113*6716431bSRobert Mustacchi 
114*6716431bSRobert Mustacchi 
115*6716431bSRobert Mustacchi #define	MII_STATUS_BITS	\
116*6716431bSRobert Mustacchi 	"\020"	\
117*6716431bSRobert Mustacchi 	"\020100_BASE_T4"	\
118*6716431bSRobert Mustacchi 	"\017100_BASEX_FD"	\
119*6716431bSRobert Mustacchi 	"\016100_BASEX"	\
120*6716431bSRobert Mustacchi 	"\01510_BASE_FD"	\
121*6716431bSRobert Mustacchi 	"\01410_BASE"	\
122*6716431bSRobert Mustacchi 	"\013100_BASE_T2_FD"	\
123*6716431bSRobert Mustacchi 	"\012100_BASE_T2"	\
124*6716431bSRobert Mustacchi 	"\011XSTATUS"	\
125*6716431bSRobert Mustacchi 	"\007MFPRMBLSUPR"	\
126*6716431bSRobert Mustacchi 	"\006ANDONE"	\
127*6716431bSRobert Mustacchi 	"\005REMFAULT"	\
128*6716431bSRobert Mustacchi 	"\004CANAUTONEG"	\
129*6716431bSRobert Mustacchi 	"\003LINKUP"	\
130*6716431bSRobert Mustacchi 	"\002JABBERING"	\
131*6716431bSRobert Mustacchi 	"\001EXTENDED"
132*6716431bSRobert Mustacchi #ifndef GEM_CONFIG_GLDv3
133*6716431bSRobert Mustacchi #define	MII_AN_ADVERT_NP		0x8000
134*6716431bSRobert Mustacchi #define	MII_AN_ADVERT_REMFAULT		0x2000
135*6716431bSRobert Mustacchi #define	MII_AN_ADVERT_SELECTOR		0x001f
136*6716431bSRobert Mustacchi #endif /* !GEM_CONFIG_GLDv3 */
137*6716431bSRobert Mustacchi 
138*6716431bSRobert Mustacchi #define	MII_ABILITY_ASM_DIR		0x0800	/* for annex 28B */
139*6716431bSRobert Mustacchi #ifndef	MII_ABILITY_PAUSE
140*6716431bSRobert Mustacchi #define	MII_ABILITY_PAUSE		0x0400	/* for IEEE 802.3x */
141*6716431bSRobert Mustacchi #endif
142*6716431bSRobert Mustacchi #ifndef GEM_CONFIG_GLDv3
143*6716431bSRobert Mustacchi #define	MII_ABILITY_100BASE_T4		0x0200
144*6716431bSRobert Mustacchi #define	MII_ABILITY_100BASE_TX_FD	0x0100
145*6716431bSRobert Mustacchi #define	MII_ABILITY_100BASE_TX		0x0080
146*6716431bSRobert Mustacchi #define	MII_ABILITY_10BASE_T_FD		0x0040
147*6716431bSRobert Mustacchi #define	MII_ABILITY_10BASE_T		0x0020
148*6716431bSRobert Mustacchi #endif /* !GEM_CONFIG_GLDv3 */
149*6716431bSRobert Mustacchi 
150*6716431bSRobert Mustacchi #define	MII_AN_LPABLE_NP	0x8000
151*6716431bSRobert Mustacchi 
152*6716431bSRobert Mustacchi #define	MII_ABILITY_TECH	\
153*6716431bSRobert Mustacchi 	(MII_ABILITY_100BASE_T4	|	\
154*6716431bSRobert Mustacchi 	MII_ABILITY_100BASE_TX_FD |	\
155*6716431bSRobert Mustacchi 	MII_ABILITY_100BASE_TX |	\
156*6716431bSRobert Mustacchi 	MII_ABILITY_10BASE_T |	\
157*6716431bSRobert Mustacchi 	MII_ABILITY_10BASE_T_FD)
158*6716431bSRobert Mustacchi 
159*6716431bSRobert Mustacchi #define	MII_ABILITY_ALL	\
160*6716431bSRobert Mustacchi 	(MII_AN_ADVERT_REMFAULT |	\
161*6716431bSRobert Mustacchi 	MII_ABILITY_ASM_DIR |	\
162*6716431bSRobert Mustacchi 	MII_ABILITY_PAUSE |	\
163*6716431bSRobert Mustacchi 	MII_ABILITY_TECH)
164*6716431bSRobert Mustacchi 
165*6716431bSRobert Mustacchi 
166*6716431bSRobert Mustacchi #define	MII_ABILITY_BITS	\
167*6716431bSRobert Mustacchi 	"\020"	\
168*6716431bSRobert Mustacchi 	"\016REMFAULT"	\
169*6716431bSRobert Mustacchi 	"\014ASM_DIR"	\
170*6716431bSRobert Mustacchi 	"\013PAUSE"	\
171*6716431bSRobert Mustacchi 	"\012100BASE_T4"	\
172*6716431bSRobert Mustacchi 	"\011100BASE_TX_FD"	\
173*6716431bSRobert Mustacchi 	"\010100BASE_TX"	\
174*6716431bSRobert Mustacchi 	"\00710BASE_T_FD"	\
175*6716431bSRobert Mustacchi 	"\00610BASE_T"
176*6716431bSRobert Mustacchi #ifndef GEM_CONFIG_GLDv3
177*6716431bSRobert Mustacchi #define	MII_AN_EXP_PARFAULT	0x0010
178*6716431bSRobert Mustacchi #define	MII_AN_EXP_LPCANNXTP	0x0008
179*6716431bSRobert Mustacchi #define	MII_AN_EXP_CANNXTPP	0x0004
180*6716431bSRobert Mustacchi #define	MII_AN_EXP_PAGERCVD 	0x0002
181*6716431bSRobert Mustacchi #define	MII_AN_EXP_LPCANAN 	0x0001
182*6716431bSRobert Mustacchi #endif /* !GEM_CONFIG_GLDv3 */
183*6716431bSRobert Mustacchi 
184*6716431bSRobert Mustacchi #define	MII_AN_EXP_BITS	\
185*6716431bSRobert Mustacchi 	"\020"	\
186*6716431bSRobert Mustacchi 	"\005PARFAULT"	\
187*6716431bSRobert Mustacchi 	"\004LPCANNXTP"	\
188*6716431bSRobert Mustacchi 	"\003CANNXTPP"	\
189*6716431bSRobert Mustacchi 	"\002PAGERCVD"	\
190*6716431bSRobert Mustacchi 	"\001LPCANAN"
191*6716431bSRobert Mustacchi 
192*6716431bSRobert Mustacchi #define	MII_1000TC_TESTMODE	0xe000
193*6716431bSRobert Mustacchi #define	MII_1000TC_CFG_EN	0x1000
194*6716431bSRobert Mustacchi #define	MII_1000TC_CFG_VAL	0x0800
195*6716431bSRobert Mustacchi #define	MII_1000TC_PORTTYPE	0x0400
196*6716431bSRobert Mustacchi #define	MII_1000TC_ADV_FULL	0x0200
197*6716431bSRobert Mustacchi #define	MII_1000TC_ADV_HALF	0x0100
198*6716431bSRobert Mustacchi 
199*6716431bSRobert Mustacchi #define	MII_1000TC_BITS	\
200*6716431bSRobert Mustacchi 	"\020"	\
201*6716431bSRobert Mustacchi 	"\015CFG_EN"	\
202*6716431bSRobert Mustacchi 	"\014CFG_VAL"	\
203*6716431bSRobert Mustacchi 	"\013PORTTYPE"	\
204*6716431bSRobert Mustacchi 	"\012FULL"	\
205*6716431bSRobert Mustacchi 	"\011HALF"
206*6716431bSRobert Mustacchi 
207*6716431bSRobert Mustacchi #define	MII_1000TS_CFG_FAULT	0x8000
208*6716431bSRobert Mustacchi #define	MII_1000TS_CFG_MASTER	0x4000
209*6716431bSRobert Mustacchi #define	MII_1000TS_LOCALRXOK	0x2000
210*6716431bSRobert Mustacchi #define	MII_1000TS_REMOTERXOK	0x1000
211*6716431bSRobert Mustacchi #define	MII_1000TS_LP_FULL	0x0800
212*6716431bSRobert Mustacchi #define	MII_1000TS_LP_HALF	0x0400
213*6716431bSRobert Mustacchi 
214*6716431bSRobert Mustacchi #define	MII_1000TS_BITS	\
215*6716431bSRobert Mustacchi 	"\020"	\
216*6716431bSRobert Mustacchi 	"\020CFG_FAULT"	\
217*6716431bSRobert Mustacchi 	"\017CFG_MASTER"	\
218*6716431bSRobert Mustacchi 	"\014CFG_LOCALRXOK"	\
219*6716431bSRobert Mustacchi 	"\013CFG_REMOTERXOK"	\
220*6716431bSRobert Mustacchi 	"\012LP_FULL"	\
221*6716431bSRobert Mustacchi 	"\011LP_HALF"
222*6716431bSRobert Mustacchi 
223*6716431bSRobert Mustacchi #define	MII_XSTATUS_1000BASEX_FD	0x8000
224*6716431bSRobert Mustacchi #define	MII_XSTATUS_1000BASEX		0x4000
225*6716431bSRobert Mustacchi #define	MII_XSTATUS_1000BASET_FD	0x2000
226*6716431bSRobert Mustacchi #define	MII_XSTATUS_1000BASET		0x1000
227*6716431bSRobert Mustacchi 
228*6716431bSRobert Mustacchi #define	MII_XSTATUS_BITS	\
229*6716431bSRobert Mustacchi 	"\020"	\
230*6716431bSRobert Mustacchi 	"\0201000BASEX_FD"	\
231*6716431bSRobert Mustacchi 	"\0171000BASEX"		\
232*6716431bSRobert Mustacchi 	"\0161000BASET_FD"	\
233*6716431bSRobert Mustacchi 	"\0151000BASET"
234*6716431bSRobert Mustacchi 
235*6716431bSRobert Mustacchi #define	MII_READ_CMD(p, r)	\
236*6716431bSRobert Mustacchi 	((6<<(18+5+5)) | ((p)<<(18+5)) | ((r)<<18))
237*6716431bSRobert Mustacchi 
238*6716431bSRobert Mustacchi #define	MII_WRITE_CMD(p, r, v)	\
239*6716431bSRobert Mustacchi 	((5<<(18+5+5)) | ((p)<<(18+5)) | ((r)<<18) | (2 << 16) | (v))
240*6716431bSRobert Mustacchi 
241*6716431bSRobert Mustacchi #endif /* _GEM_MII_H_ */
242