xref: /netbsd-src/sys/dev/mii/mdio.h (revision 6a493d6bc668897c91594964a732d38505b70cbb)
1 /*-
2  * Copyright (c) 2013 The NetBSD Foundation, Inc.
3  * All rights reserved.
4  *
5  * This code is derived from software contributed to The NetBSD Foundation
6  * by Masanobu SAITOH.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  * 1. Redistributions of source code must retain the above copyright
12  *    notice, this list of conditions and the following disclaimer.
13  * 2. Redistributions in binary form must reproduce the above copyright
14  *    notice, this list of conditions and the following disclaimer in the
15  *    documentation and/or other materials provided with the distribution.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
18  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
19  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
21  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27  * POSSIBILITY OF SUCH DAMAGE.
28  */
29 
30 #ifndef _DEV_MII_MDIO_H_
31 #define	_DEV_MII_MDIO_H_
32 
33 /*
34  * IEEE 802.3 Clause 45 definitions.
35  * From:
36  *	IEEE 802.3 2009
37  *	IEEE 802.3at
38  *	IEEE 802.3av
39  *	IEEE 802.3az
40  */
41 
42 /*
43  * MDIO Manageable Device addresses.
44  * Table 45-1
45  */
46 #define	MDIO_MMD_PMAPMD		1
47 #define	MDIO_MMD_WIS		2
48 #define	MDIO_MMD_PCS		3
49 #define	MDIO_MMD_PHYXS		4
50 #define	MDIO_MMD_DTEXS		5
51 #define	MDIO_MMD_TC		6
52 #define	MDIO_MMD_AN		7
53 #define	MDIO_MMD_CL22EXT	29
54 #define	MDIO_MMD_VNDSP1		30
55 #define	MDIO_MMD_VNDSP2		31
56 
57 /*
58  * MDIO PMA/PMD registers.
59  * Table 45-3
60  */
61 #define MDIO_PMAPMD_CTRL1		0   /* PMA/PMD control 1 */
62 #define MDIO_PMAPMD_STAT1		1   /* PMA/PMD status 1 */
63 #define MDIO_PMAPMD_DEVID1		2   /* PMA/PMD device identifier 1 */
64 #define MDIO_PMAPMD_DEVID2		3   /* PMA/PMD device identifier 2 */
65 #define MDIO_PMAPMD_SPEED		4   /* PMA/PMD speed ability */
66 #define MDIO_PMAPMD_DEVS1		5   /* PMA/PMD devices in package 1 */
67 #define MDIO_PMAPMD_DEVS2		6   /* PMA/PMD devices in package 2 */
68 #define MDIO_PMAPMD_CTRL2		7   /* PMA/PMD control 2 */
69 #define MDIO_PMAPMD_10GSTAT2		8   /* 10G PMA/PMD status 2 */
70 #define MDIO_PMAPMD_10GTXDIS		9   /* 10G PMA/PMD transmit disable */
71 #define MDIO_PMAPMD_RXSIGDTCT		10  /* 10G PMD receive signal detect */
72 #define MDIO_PMAPMD_EXTABLTY		11  /* 10G PMA/PMD ext. ability reg */
73 #define MDIO_PMAPMD_P2MPABLTY		12  /* P2MP ability register(802.3av)*/
74 	/* Value 13 is reserved */
75 #define MDIO_PMAPMD_PKGID1		14  /* PMA/PMD package identifier 1 */
76 #define MDIO_PMAPMD_PKGID2		15  /* PMA/PMD package identifier 2 */
77 	/* Values 16 to 29 are reserved */
78 #define MDIO_PMAPMD_10P2BCTRL		30  /* 10P/2B PMA/PMD control */
79 #define MDIO_PMAPMD_10P2BSTAT		31  /* 10P/2B PMA/PMD status */
80 #define MDIO_PMAPMD_10P2BLPCTRL		32  /* 10P/2B link partner PMA/D ctrl*/
81 #define MDIO_PMAPMD_10P2BLPSTAT		33  /* 10P/2B link partner PMA/D stat*/
82 	/* Values 34 to 35 are reserved */
83 #define MDIO_PMAPMD_10P2BLLOSCNT	36  /* 10P/2B link loss counter */
84 #define MDIO_PMAPMD_10P2BRXSNMGN	37  /* 10P/2B RX SNR margin */
85 #define MDIO_PMAPMD_10P2BLPRXSNMG	38  /* 10P/2B link partner RX SNR mgn*/
86 #define MDIO_PMAPMD_10P2BLINEATTN	39  /* 10P/2B line attenuation */
87 #define MDIO_PMAPMD_10P2BLPLINEATTN	40  /* 10P/2B link partner line atten*/
88 #define MDIO_PMAPMD_10P2BLQTHRES	41  /* 10P/2B line quality thresholds*/
89 #define MDIO_PMAPMD_10P2BLPLQLTHRES	42  /* 10P/2B link partner LQ thresh.*/
90 #define MDIO_PMAPMD_10PFECCOERRS	43  /* 10P FEC correctable errors cnt*/
91 #define MDIO_PMAPMD_10PFECUNCOERRS	44  /* 10P FEC uncorrectable err cnt*/
92 #define MDIO_PMAPMD_10PLPFECCOERRS	45  /* 10P LP FEC correctable err cnt*/
93 #define MDIO_PMAPMD_10PLPFECUNCOERRS	46  /* 10P LP FEC uncorrectable errcn*/
94 #define MDIO_PMAPMD_10PELECLENGTH	47  /* 10P electrical length */
95 #define MDIO_PMAPMD_10PLPELECLENGTH	48  /* 10P LP electrical length */
96 #define MDIO_PMAPMD_10PGENCONFIG	49  /* 10P PMA/PMD general config. */
97 #define MDIO_PMAPMD_10PPSDCONFIG	50  /* 10P PSD configuration */
98 #define MDIO_PMAPMD_10PDSDRCONF1	51  /* 10P downstream data rate cnf1 */
99 #define MDIO_PMAPMD_10PDSDRCONF2	52  /* 10P downstream data rate cnf2 */
100 #define MDIO_PMAPMD_10PDSRSCONF		53  /* 10P downstream ReedSolomon cnf*/
101 #define MDIO_PMAPMD_10PUSDR1		54  /* 10P upstream data rate cnf1 */
102 #define MDIO_PMAPMD_10PUSDR2		55  /* 10P upstream data rate cnf2 */
103 #define MDIO_PMAPMD_10PUSRSCONF		56  /* 10P upnstream ReedSolomon cnf */
104 #define MDIO_PMAPMD_10PTONEGROUP1	57  /* 10P tone group 1 */
105 #define MDIO_PMAPMD_10PTONEGROUP2	58  /* 10P tone group 2 */
106 #define MDIO_PMAPMD_10PTONEPARAM1	59  /* 10P tone parameter 1 */
107 #define MDIO_PMAPMD_10PTONEPARAM2	60  /* 10P tone parameter 2 */
108 #define MDIO_PMAPMD_10PTONEPARAM3	61  /* 10P tone parameter 3 */
109 #define MDIO_PMAPMD_10PTONEPARAM4	62  /* 10P tone parameter 4 */
110 #define MDIO_PMAPMD_10PTONEPARAM5	63  /* 10P tone parameter 5 */
111 #define MDIO_PMAPMD_10PTONECTLACTN	64  /* 10P tone control action */
112 #define MDIO_PMAPMD_10PTONESTAT1	65  /* 10P tone status 1 */
113 #define MDIO_PMAPMD_10PTONESTAT2	66  /* 10P tone status 2 */
114 #define MDIO_PMAPMD_10PTONESTAT3	67  /* 10P tone status 3 */
115 #define MDIO_PMAPMD_10POUTINDICAT	68  /* 10P outgoing indicator bits */
116 #define MDIO_PMAPMD_10PININDICAT	69  /* 10P incoming indicator bits */
117 #define MDIO_PMAPMD_10PCYCLICEXTCNF	70  /* 10P cyclic extension config. */
118 #define MDIO_PMAPMD_10PATTAINDSDR	71  /* 10P attainable downstream DR */
119 	/* Values 72 to 79 are reserved */
120 #define MDIO_PMAPMD_2BGENPARAM		80  /* 2B general parameter */
121 #define MDIO_PMAPMD_2BPMDPARAM1		81  /* 2B PMD parameter 1 */
122 #define MDIO_PMAPMD_2BPMDPARAM2		82  /* 2B PMD parameter 2 */
123 #define MDIO_PMAPMD_2BPMDPARAM3		83  /* 2B PMD parameter 3 */
124 #define MDIO_PMAPMD_2BPMDPARAM4		84  /* 2B PMD parameter 4 */
125 #define MDIO_PMAPMD_2BPMDPARAM5		85  /* 2B PMD parameter 5 */
126 #define MDIO_PMAPMD_2BPMDPARAM6		86  /* 2B PMD parameter 6 */
127 #define MDIO_PMAPMD_2BPMDPARAM7		87  /* 2B PMD parameter 7 */
128 #define MDIO_PMAPMD_2BPMDPARAM8		88  /* 2B PMD parameter 8 */
129 #define MDIO_PMAPMD_2BCODEVIOERRCNT	89  /* 2B code violation errors cnt. */
130 #define MDIO_PMAPMD_2BLPCODEVIOERR	90  /* 2B LP code violation errors */
131 #define MDIO_PMAPMD_2BERRSECCNT		91  /* 2B errored seconds counter */
132 #define MDIO_PMAPMD_2BLPERRSEC		92  /* 2B LP errored seconds */
133 #define MDIO_PMAPMD_2BSEVERRSECCNT	93  /* 2B severely errored seconds cn*/
134 #define MDIO_PMAPMD_2BLPSEVERRSECCNT	94 /* 2B LP severely errored secs cn*/
135 #define MDIO_PMAPMD_2BLOSWCNT		95  /* 2B LOSW counter */
136 #define MDIO_PMAPMD_2BLPLOSW		96  /* 2B LP LOSW */
137 #define MDIO_PMAPMD_2BUNAVSECCNT	97  /* 2B unavailable seconds counter*/
138 #define MDIO_PMAPMD_2BLPUNAVSECCNT	98  /* 2B LP unavailable seconds cnt */
139 #define MDIO_PMAPMD_2BSTATDEFECT	99  /* 2B state defects */
140 #define MDIO_PMAPMD_2BLPSTATDEFECT	100 /* 2B LP state defects */
141 #define MDIO_PMAPMD_2BNEGOCONSTEL	101 /* 2B negotiated constellation */
142 #define MDIO_PMAPMD_2BEXTPMDPARAM1	102 /* 2B extended PMD parameters 1 */
143 #define MDIO_PMAPMD_2BEXTPMDPARAM2	103 /* 2B extended PMD parameters 2 */
144 #define MDIO_PMAPMD_2BEXTPMDPARAM3	104 /* 2B extended PMD parameters 3 */
145 #define MDIO_PMAPMD_2BEXTPMDPARAM4	105 /* 2B extended PMD parameters 4 */
146 #define MDIO_PMAPMD_2BEXTPMDPARAM5	106 /* 2B extended PMD parameters 5 */
147 #define MDIO_PMAPMD_2BEXTPMDPARAM6	107 /* 2B extended PMD parameters 6 */
148 #define MDIO_PMAPMD_2BEXTPMDPARAM7	108 /* 2B extended PMD parameters 7 */
149 #define MDIO_PMAPMD_2BEXTPMDPARAM8	109 /* 2B extended PMD parameters 8 */
150 	/* Values 110 to 128 are reserved */
151 #define MDIO_PMAPMD_10GTSTAT		129 /* 10GBASE-T status */
152 #define MDIO_PMAPMD_10GTPASWPOLAR	130 /* 10G-T pair swap & polarity */
153 #define MDIO_PMAPMD_10GTTXPWBOSHRCH	131 /* 10G-T PWR backoff&PHY shrt rch*/
154 #define MDIO_PMAPMD_10GTTSTMODE		132 /* 10G-T test mode */
155 #define MDIO_PMAPMD_10GTSNROMARGA	133 /* 10G-T SNR operating margin chA*/
156 #define MDIO_PMAPMD_10GTSNROMARGB	134 /* 10G-T SNR operating margin chB*/
157 #define MDIO_PMAPMD_10GTSNROMARGC	135 /* 10G-T SNR operating margin chC*/
158 #define MDIO_PMAPMD_10GTSNROMARGD	136 /* 10G-T SNR operating margin chD*/
159 #define MDIO_PMAPMD_10GTMINMARGA	137 /* 10G-T minimum margin ch. A */
160 #define MDIO_PMAPMD_10GTMINMARGB	138 /* 10G-T minimum margin ch. B */
161 #define MDIO_PMAPMD_10GTMINMARGC	139 /* 10G-T minimum margin ch. C */
162 #define MDIO_PMAPMD_10GTMINMARGD	140 /* 10G-T minimum margin ch. D */
163 #define MDIO_PMAPMD_10GTSIGPWRA		141 /* 10G-T RX signal power ch. A */
164 #define MDIO_PMAPMD_10GTSIGPWRB		142 /* 10G-T RX signal power ch. B */
165 #define MDIO_PMAPMD_10GTSIGPWRC		143 /* 10G-T RX signal power ch. C */
166 #define MDIO_PMAPMD_10GTSIGPWRD		144 /* 10G-T RX signal power ch. D */
167 #define MDIO_PMAPMD_10GTSKEWDLY1	145 /* 10G-T skew delay 1 */
168 #define MDIO_PMAPMD_10GTSKEWDLY2	146 /* 10G-T skew delay 2 */
169 #define MDIO_PMAPMD_10GTFSTRETSTATCTRL	147 /* 10G-T fast retrain stat&ctrl */
170 	/* Values 148 to 149 are reserved */
171 #define MDIO_PMAPMD_10GKRPMDCTRL	150 /* 10G-KR PMD control */
172 #define MDIO_PMAPMD_10GKRPMDSTAT	151 /* 10G-KR PMD status */
173 #define MDIO_PMAPMD_10GKRLPCOEFUPD	152 /* 10G-KR LP coefficient update */
174 #define MDIO_PMAPMD_10GKRLPSTATRPT	153 /* 10G-KR LP status report */
175 #define MDIO_PMAPMD_10GKRLDCOEFFUPD	154 /* 10G-KR LD coefficient update */
176 #define MDIO_PMAPMD_10GKRLDSTATRPT	155 /* 10G-KR LD status report */
177 	/* Values 156 to 159 are reserved */
178 #define MDIO_PMAPMD_10GKXCTRL		160 /* 10G-KX control */
179 #define MDIO_PMAPMD_10GKXSTAT		161 /* 10G-KX status */
180 	/* Values 162 to 169 are reserved */
181 #define MDIO_PMAPMD_10GRFECABLTY	170 /* 10G-R FEC ability */
182 #define MDIO_PMAPMD_10GRFECCTRL		171 /* 10G-R FEC control */
183 #define MDIO_PMAPMD_10GRFECCOBLCNT1	172 /* 10G-R FEC corrected blks cnt1 */
184 #define MDIO_PMAPMD_10GRFECCOBLCNT2	173 /* 10G-R FEC corrected blks cnt2 */
185 #define MDIO_PMAPMD_10GRFECUNCOBLCNT1	174 /* 10G-R FEC uncorrect blks cnt1 */
186 #define MDIO_PMAPMD_10GRFECUNCOBLCNT2	175 /* 10G-R FEC uncorrect blks cnt2 */
187 	/* Values 176 to 32767 are reserved */
188 	/* Values 32768 to 65535 are vendor specific */
189 
190 /*
191  * MDIO WIS registers.
192  * Table 45-65
193  */
194 #define	MDIO_WIS_CTRL1		0	/* WIS control 1 */
195 #define	MDIO_WIS_STAT1		1	/* WIS status 1 */
196 #define	MDIO_WIS_DEVID1		2	/* WIS device identifier 1 */
197 #define	MDIO_WIS_DEVID2		3	/* WIS device identifier 2 */
198 #define	MDIO_WIS_SPEED		4	/* WIS speed ability */
199 #define	MDIO_WIS_DEVS1		5	/* WIS devices in package 1 */
200 #define	MDIO_WIS_DEVS2		6	/* WIS devices in package 2 */
201 #define	MDIO_WIS_10GCTRL2	7	/* 10G WIS control 2 */
202 #define	MDIO_WIS_10GSTAT2	8	/* 10G WIS status 2 */
203 #define	MDIO_WIS_10GTSTERRCNT	9	/* 10G WIS test-pattern error counter*/
204 	/* Values 10 to 13 are reserved */
205 #define	MDIO_WIS_PKGID1		14	/* WIS package identifier 1 */
206 #define	MDIO_WIS_PKGID2		15	/* WIS package identifier 2 */
207 	/* Values 16 to 32 are reserved */
208 #define	MDIO_WIS_10GSTAT3	33	/* 10G WIS status 3 */
209 	/* Values 34 to 36 are reserved */
210 #define	MDIO_WIS_FARENDPBERRCNT	37	/* WIS far end path block error count*/
211 	/* Value 38 is reserved */
212 #define	MDIO_WIS_J1XMIT1	39	/* 10G WIS J1 transmit 1 */
213 #define	MDIO_WIS_J1XMIT2	40	/* 10G WIS J1 transmit 2 */
214 #define	MDIO_WIS_J1XMIT3	41	/* 10G WIS J1 transmit 3 */
215 #define	MDIO_WIS_J1XMIT4	42	/* 10G WIS J1 transmit 4 */
216 #define	MDIO_WIS_J1XMIT5	43	/* 10G WIS J1 transmit 5 */
217 #define	MDIO_WIS_J1XMIT6	44	/* 10G WIS J1 transmit 6 */
218 #define	MDIO_WIS_J1XMIT7	45	/* 10G WIS J1 transmit 7 */
219 #define	MDIO_WIS_J1XMIT8	46	/* 10G WIS J1 transmit 8 */
220 #define	MDIO_WIS_J1RECV1	47	/* 10G WIS J1 receive 1 */
221 #define	MDIO_WIS_J1RECV2	48	/* 10G WIS J1 receive 2 */
222 #define	MDIO_WIS_J1RECV3	49	/* 10G WIS J1 receive 3 */
223 #define	MDIO_WIS_J1RECV4	50	/* 10G WIS J1 receive 4 */
224 #define	MDIO_WIS_J1RECV5	51	/* 10G WIS J1 receive 5 */
225 #define	MDIO_WIS_J1RECV6	52	/* 10G WIS J1 receive 6 */
226 #define	MDIO_WIS_J1RECV7	53	/* 10G WIS J1 receive 7 */
227 #define	MDIO_WIS_J1RECV8	54	/* 10G WIS J1 receive 8 */
228 #define	MDIO_WIS_FARENDLBIPERR1	55	/* 10G WIS far end line BIP errors 1 */
229 #define	MDIO_WIS_FARENDLBIPERR2	56	/* 10G WIS far end line BIP errors 2 */
230 #define	MDIO_WIS_LBIPERR1	57	/* 10G WIS line BIP errors 1 */
231 #define	MDIO_WIS_LBIPERR2	58	/* 10G WIS line BIP errors 2 */
232 #define	MDIO_WIS_PBERRCNT	59	/* 10G WIS path block error count */
233 #define	MDIO_WIS_SECBIPERRCNT	60	/* 10G WIS section BIP error count */
234 	/* Values 61 to 63 are reserved */
235 #define	MDIO_WIS_J0XMIT1	64	/* 10G WIS J0 transmit 1 */
236 #define	MDIO_WIS_J0XMIT2	65	/* 10G WIS J0 transmit 2 */
237 #define	MDIO_WIS_J0XMIT3	66	/* 10G WIS J0 transmit 3 */
238 #define	MDIO_WIS_J0XMIT4	67	/* 10G WIS J0 transmit 4 */
239 #define	MDIO_WIS_J0XMIT5	68	/* 10G WIS J0 transmit 5 */
240 #define	MDIO_WIS_J0XMIT6	69	/* 10G WIS J0 transmit 6 */
241 #define	MDIO_WIS_J0XMIT7	70	/* 10G WIS J0 transmit 7 */
242 #define	MDIO_WIS_J0XMIT8	71	/* 10G WIS J0 transmit 8 */
243 #define	MDIO_WIS_J0RECV1	72	/* 10G WIS J0 receive 1 */
244 #define	MDIO_WIS_J0RECV2	73	/* 10G WIS J0 receive 2 */
245 #define	MDIO_WIS_J0RECV3	74	/* 10G WIS J0 receive 3 */
246 #define	MDIO_WIS_J0RECV4	75	/* 10G WIS J0 receive 4 */
247 #define	MDIO_WIS_J0RECV5	76	/* 10G WIS J0 receive 5 */
248 #define	MDIO_WIS_J0RECV6	77	/* 10G WIS J0 receive 6 */
249 #define	MDIO_WIS_J0RECV7	78	/* 10G WIS J0 receive 7 */
250 #define	MDIO_WIS_J0RECV8	79	/* 10G WIS J0 receive 8 */
251 	/* Values 80 to 32767 are reserved */
252 	/* Values 32768 to 65535 are vendor specific */
253 
254 /*
255  * MDIO PCS registers.
256  * Table 45-82
257  */
258 #define	MDIO_PCS_CTRL1		0	/* PCS control 1 */
259 #define	MDIO_PCS_STAT1		1	/* PCS status 1 */
260 #define	MDIO_PCS_DEVID1		2	/* PCS device identifier 1 */
261 #define	MDIO_PCS_DEVID2		3	/* PCS device identifier 2 */
262 #define	MDIO_PCS_SPEED		4	/* PCS speed ability */
263 #define	MDIO_PCS_DEVS1		5	/* PCS devices in package 1 */
264 #define	MDIO_PCS_DEVS2		6	/* PCS devices in package 2 */
265 #define	MDIO_PCS_10GCTRL2	7	/* 10G PCS control 2 */
266 #define	MDIO_PCS_10GSTAT2	8	/* 10G PCS status 2 */
267 	/* Values 9 to 13 are reserved */
268 #define	MDIO_PCS_PKGID1		14	/* PCS package identifier 1 */
269 #define	MDIO_PCS_PKGID2		15	/* PCS package identifier 2 */
270 	/* Values 16 to 19 are reserved */
271 #define	MDIO_PCS_EEECAP		20	/* EEE capability register (802.3az) */
272 	/* Value 21 is reserved */
273 #define	MDIO_PCS_EEEWKERRCNT	22	/* EEE wake error counter (802.3az) */
274 	/* Value 23 is reserved */
275 #define	MDIO_PCS_10GXSTAT	24	/* 10G-X PCS status */
276 #define	MDIO_PCS_10GXSTSCTRL	25	/* 10G-X PCS test control */
277 	/* Values 26 to 31 are reserved */
278 #define	MDIO_PCS_10GRTSTAT1	32	/* 10G-R & 10G-T PCS status 1 */
279 #define	MDIO_PCS_10GRTSTAT2	33	/* 10G-R & 10G-T PCS status 2 */
280 #define	MDIO_PCS_10GRTPSEEDA1	34	/* 10G-R PCS test pattern seed A1 */
281 #define	MDIO_PCS_10GRTPSEEDA2	35	/* 10G-R PCS test pattern seed A2 */
282 #define	MDIO_PCS_10GRTPSEEDA3	36	/* 10G-R PCS test pattern seed A3 */
283 #define	MDIO_PCS_10GRTPSEEDA4	37	/* 10G-R PCS test pattern seed A4 */
284 #define	MDIO_PCS_10GRTPSEEDB1	38	/* 10G-R PCS test pattern seed B1 */
285 #define	MDIO_PCS_10GRTPSEEDB2	39	/* 10G-R PCS test pattern seed B2 */
286 #define	MDIO_PCS_10GRTPSEEDB3	40	/* 10G-R PCS test pattern seed B3 */
287 #define	MDIO_PCS_10GRTPSEEDB4	41	/* 10G-R PCS test pattern seed B4 */
288 #define	MDIO_PCS_10GRTPCTRL	42	/* 10G-R PCS test pattern control */
289 #define	MDIO_PCS_10GRTPERRCNT	43	/* 10G-R PCS test pattern err counter*/
290 	/* Values 44 to 59 are reserved */
291 #define	MDIO_PCS_10P2BCAP	60	/* 10P/2B capability */
292 #define	MDIO_PCS_10P2BCTRL	61	/* 10P/2B PCS control register */
293 #define	MDIO_PCS_10P2BPMEAVAIL1	62	/* 10P/2B PME available 1 */
294 #define	MDIO_PCS_10P2BPMEAVAIL2	63	/* 10P/2B PME available 2 */
295 #define	MDIO_PCS_10P2BPMEAGGRG1	64	/* 10P/2B PME aggregate 1 */
296 #define	MDIO_PCS_10P2BPMEAGGRG2	65	/* 10P/2B PME aggregate 2 */
297 #define	MDIO_PCS_10P2BPAFRXERRCNT 66	/* 10P/2B PAF RX error counter */
298 #define	MDIO_PCS_10P2BPAFSMLFRCNT 67	/* 10P/2B PAF small fragment counter */
299 #define	MDIO_PCS_10P2BPAFLARFLCNT 68	/* 10P/2B PAF large fragment counter */
300 #define	MDIO_PCS_10P2BPAFOVFLCNT 69	/* 10P/2B PAF overflow counter */
301 #define	MDIO_PCS_10P2BPAFBADFLCNT 70	/* 10P/2B PAF bad fragments counter */
302 #define	MDIO_PCS_10P2BPAFLSTFLCNT 71	/* 10P/2B PAF lost fragments counter */
303 #define	MDIO_PCS_10P2BPAFLSTSTFLCNT 72	/* 10P/2B PAF lost starts of fr. cnt */
304 #define	MDIO_PCS_10P2BPAFLSTENFLCNT 73	/* 10P/2B PAF lost ends of fr. count */
305 #define	MDIO_PCS_10GPRFECABLTY	74	/* 10G-PR & 10/1G-PRX FEC ability */
306 #define	MDIO_PCS_10GPRFECCTRL	75	/* 10G-PR & 10/1G-PRX FEC control */
307 #define	MDIO_PCS_10GPRCOFECCOCNT1 76	/*10(/1)G-PR(X) corrected FECcodecnt1*/
308 #define	MDIO_PCS_10GPRCOFECCOCNT2 77	/*10(/1)G-PR(X) corrected FECcodecnt2*/
309 #define	MDIO_PCS_10GPRUNCOFECCOCNT1 78	/*10(/1)G-PR(X)uncorrected FECcdecnt1*/
310 #define	MDIO_PCS_10GPRUNCOFECCOCNT2 79	/*10(/1)G-PR(X)uncorrected FECcdecnt2*/
311 #define	MDIO_PCS_10GPRBERMONTMRCTRL 80	/*10(/1)G-PR(X) BER monitor tmr ctrl */
312 #define	MDIO_PCS_10GPRBERMONSTAT 81	/*10(/1)G-PR(X) BER monitor status */
313 #define	MDIO_PCS_10GPRBERMONTHRCTRL 82	/*10(/1)G-PR(X) BER mntr thresh ctrl */
314 	/* Values 83 to 32767 are reserved */
315 	/* Values 32768 to 65535 are vendor specific */
316 
317 /*
318  * MDIO PHY XS registers.
319  * Table 45-108
320  */
321 #define	MDIO_PHYXS_CTRL1	0	/* PHY XS control 1 */
322 #define	MDIO_PHYXS_STAT1	1	/* PHY XS status 1 */
323 #define	MDIO_PHYXS_DEVID1	2	/* PHY XS device identifier 1 */
324 #define	MDIO_PHYXS_DEVID2	3	/* PHY XS device identifier 2 */
325 #define	MDIO_PHYXS_SPEED	4	/* PHY XS speed ability */
326 #define	MDIO_PHYXS_DEVS1	5	/* PHY XS devices in package 1 */
327 #define	MDIO_PHYXS_DEVS2	6	/* PHY XS devices in package 2 */
328 	/* Value 7 is reserved */
329 #define	MDIO_PHYXS_STAT2	8	/* PHY XS status 2 */
330 	/* Values 9 to 13 are reserved */
331 #define	MDIO_PHYXS_PKGID1	14	/* PHY XS package identifier 1 */
332 #define	MDIO_PHYXS_PKGID2	15	/* PHY XS package identifier 2 */
333 	/* Values 16 to 19 are reserved */
334 #define	MDIO_PHYXS_EEECAP	20	/* EEE capability register (802.3az) */
335 	/* Value 21 is reserved */
336 #define	MDIO_PHYXS_EEEWKERRCNT	22	/* EEE wake error counter (802.3az) */
337 	/* Value 23 is reserved */
338 #define	MDIO_PHYXS_10GXGXLNSTAT	24	/* 10G-X PHY XGXS lane status */
339 #define	MDIO_PHYXS_10GXGXSTSCTRL 25	/* 10G-X PHY XGXS test control */
340 	/* Values 26 to 32767 are reserved */
341 	/* Values 32768 to 65535 are vendor specific */
342 
343 /*
344  * MDIO DTE XS registers.
345  * Table 45-115
346  */
347 #define	MDIO_DTEXS_CTRL1	0	/* DTE XS control 1 */
348 #define	MDIO_DTEXS_STAT1	1	/* DTE XS status 1 */
349 #define	MDIO_DTEXS_DEVID1	2	/* DTE XS device identifier 1 */
350 #define	MDIO_DTEXS_DEVID2	3	/* DTE XS device identifier 2 */
351 #define	MDIO_DTEXS_SPEED	4	/* DTE XS speed ability */
352 #define	MDIO_DTEXS_DEVS1	5	/* DTE XS devices in package 1 */
353 #define	MDIO_DTEXS_DEVS2	6	/* DTE XS devices in package 2 */
354 	/* Value 7 is reserved */
355 #define	MDIO_DTEXS_STAT2	8	/* DTE XS status 2 */
356 	/* Values 9 to 13 are reserved */
357 #define	MDIO_DTEXS_PKGID1	14	/* DTE XS package identifier 1 */
358 #define	MDIO_DTEXS_PKGID2	15	/* DTE XS package identifier 2 */
359 	/* Values 16 to 19 are reserved */
360 #define	MDIO_DTEXS_EEECAP	20	/* EEE capability register (802.3az) */
361 	/* Value 21 is reserved */
362 #define	MDIO_DTEXS_EEEWKERRCNT	22	/* EEE wake error counter (802.3az) */
363 	/* Value 23 is reserved */
364 #define	MDIO_DTEXS_10GXGXLNSTAT	24	/* 10G DTE XGXS lane status */
365 #define	MDIO_DTEXS_10GXGXSTSCTRL 25	/* 10G DTE XGXS test control */
366 	/* Values 26 to 32767 are reserved */
367 	/* Values 32768 to 65535 are vendor specific */
368 
369 /*
370  * MDIO TC registers.
371  * Table 45-122
372  */
373 #define	MDIO_TC_CTRL1		0	/* TC control 1 */
374 	/* Value 1 is reserved */
375 #define	MDIO_TC_DEVID1		2	/* TC device identifier 1 */
376 #define	MDIO_TC_DEVID2		3	/* TC device identifier 2 */
377 #define	MDIO_TC_SPEED		4	/* TC speed ability */
378 #define	MDIO_TC_DEVS1		5	/* TC devices in package 1 */
379 #define	MDIO_TC_DEVS2		6	/* TC devices in package 2 */
380 	/* Values 7 to 13 are reserved */
381 #define	MDIO_TC_PKGID1		14	/* TC package identifier 1 */
382 #define	MDIO_TC_PKGID2		15	/* TC package identifier 2 */
383 #define	MDIO_TC_10P2BAGGDCCTRL	16	/* 10P/2B aggregation discovery ctrl */
384 #define	MDIO_TC_10P2BAGGDCSTAT	17	/* 10P/2B aggregation&discovery stat */
385 #define	MDIO_TC_10P2BAGGDCCODE1	18	/* 10P/2B aggregation discovery code1*/
386 #define	MDIO_TC_10P2BAGGDCCODE2	19	/* 10P/2B aggregation discovery code2*/
387 #define	MDIO_TC_10P2BAGGDCCODE3	20	/* 10P/2B aggregation discovery code3*/
388 #define	MDIO_TC_10P2BLPPMEAGGCTRL 21	/* 10P/2B LP PME aggregate control */
389 #define	MDIO_TC_10P2BLPPMEAGGDAT1 22	/* 10P/2B LP PME aggregate data 1 */
390 #define	MDIO_TC_10P2BLPPMEAGGDAT2 23	/* 10P/2B LP PME aggregate data 2 */
391 #define	MDIO_TC_10P2BCRCERRCNT	24	/* 10P/2B TC CRC error counter  */
392 #define	MDIO_TC_10P2BTPSCOVIOCNT1 25	/* 10P/2B TPS-TC coding viol. cnt. 1 */
393 #define	MDIO_TC_10P2BTPSCOVIOCNT2 26	/* 10P/2B TPS-TC coding viol. cnt. 2 */
394 #define	MDIO_TC_10P2BINDIC	27	/* 10P/2B TC indications */
395 	/* Values 28 to 32767 are reserved */
396 	/* Values 32768 to 65535 are vendor specific */
397 
398 /*
399  * MDIO Auto-Negotiation registers.
400  * Table 45-133
401  */
402 #define MDIO_AN_CTRL1		0   /* AN control 1 */
403 #define MDIO_AN_STAT1		1   /* AN status 1 */
404 #define MDIO_AN_DEVID1		2   /* AN device identifier 1 */
405 #define MDIO_AN_DEVID2		3   /* AN device identifier 2 */
406 	/* Value 4 is reserved */
407 #define MDIO_AN_DEVS1		5   /* AN devices in package 1 */
408 #define MDIO_AN_DEVS2		6   /* AN devices in package 2 */
409 	/* Values 7 to 13 are reserved */
410 #define MDIO_AN_PKGID1		14  /* AN package identifier 1 */
411 #define MDIO_AN_PKGID2		15  /* AN package identifier 2 */
412 #define MDIO_AN_ADVERT1		16  /* AN advertisement 1 */
413 #define MDIO_AN_ADVERT2		17  /* AN advertisement 2 */
414 #define MDIO_AN_ADVERT3		18  /* AN advertisement 3 */
415 #define MDIO_AN_LPBPABLTY1	19  /* AN LP base page ability 1 */
416 #define MDIO_AN_LPBPABLTY2	20  /* AN LP base page ability 2 */
417 #define MDIO_AN_LPBPABLTY3	21  /* AN LP base page ability 3 */
418 #define MDIO_AN_XNPXMIT1	22  /* AN XNP transmit 1 */
419 #define MDIO_AN_XNPXMIT2	23  /* AN XNP transmit 2 */
420 #define MDIO_AN_XNPXMIT3	24  /* AN XNP transmit 3 */
421 #define MDIO_AN_LPXNPABLTY1	25  /* AN LP XNP ability 1 */
422 #define MDIO_AN_LPXNPABLTY2	26  /* AN LP XNP ability 2 */
423 #define MDIO_AN_LPXNPABLTY3	27  /* AN LP XNP ability 3 */
424 	/* Values 28 to 31 are reserved */
425 #define MDIO_AN_10GTANCTRL	32  /* 10G-T AN control */
426 #define MDIO_AN_10GTANSTAT	33  /* 10G-T AN status */
427 	/* Values 34 to 47 are reserved */
428 #define MDIO_AN_BPETHSTAT	48  /* BP Ethernet status */
429 	/* Values 49 to 59 are reserved */
430 #define	MDIO_PCS_EEEADVERT	60  /* EEE advertisement (802.3az) */
431 #define	MDIO_PCS_EEELPABLTY	61  /* EEE LP ability (802.3az) */
432 	/* Values 62 to 32767 are reserved */
433 	/* Values 32768 to 65535 are vendor specific */
434 
435 /*
436  * MDIO Clause 22 extension registers.
437  * Table 45-143
438  */
439 	/* Values 0 to 4 are reserved */
440 #define MDIO_CL22E_DEVS1	5   /* Clause 22 ext. devices in package 1 */
441 #define MDIO_CL22E_DEVS2	6   /* Clause 22 ext. devices in package 2 */
442 #define MDIO_CL22E_FECCAP	7   /* FEC capability */
443 #define MDIO_CL22E_FECCTRL	8   /* FEC control */
444 #define MDIO_CL22E_FECBHCVIOCNT	9   /* FEC buffer head coding violation cnt. */
445 #define MDIO_CL22E_FECCOBLCNT	10  /* FEC corrected blocks counter */
446 #define MDIO_CL22E_FECUNCOBLCNT	11  /* FEC uncorrected blocks counter */
447 	/* Values 12 to 32767 are reserved */
448 
449 /*
450  * MDIO Vendor specific MMD 1 registers.
451  * Table 45-149
452  */
453 	/* Values 0 to 1 are vendor specific */
454 #define MDIO_VSMMD1_DEVID1	2   /* Vendor specific MMD 1 device ident. 1 */
455 #define MDIO_VSMMD1_DEVID2	3   /* Vendor specific MMD 1 device ident. 2 */
456 	/* Values 4 to 7 are vendor specific */
457 #define MDIO_VSMMD1_STAT	8   /* Vendor specific MMD 1 status register */
458 	/* Values 9 to 13 are vendor specific */
459 #define MDIO_VSMMD1_PKGID1	14  /* Vendor specific MMD 1 package ident 1 */
460 #define MDIO_VSMMD1_PKGID2	15  /* Vendor specific MMD 1 package ident 2 */
461 	/* Values 16 to 65535 are vendor specific */
462 
463 /*
464  * MDIO Vendor specific MMD 2 registers.
465  * Table 45-152
466  */
467 	/* Values 0 to 1 are vendor specific */
468 #define MDIO_VSMMD2_DEVID1	2   /* Vendor specific MMD 2 device ident. 1 */
469 #define MDIO_VSMMD2_DEVID2	3   /* Vendor specific MMD 2 device ident. 2 */
470 	/* Values 4 to 7 are vendor specific */
471 #define MDIO_VSMMD2_STAT	8   /* Vendor specific MMD 2 status register */
472 	/* Values 9 to 13 are vendor specific */
473 #define MDIO_VSMMD2_PKGID1	14  /* Vendor specific MMD 2 package ident 1 */
474 #define MDIO_VSMMD2_PKGID2	15  /* Vendor specific MMD 2 package ident 2 */
475 	/* Values 16 to 65535 are vendor specific */
476 
477 #endif /* _DEV_MII_MDIO_H_ */
478