1 /*        $NetBSD: mdio.h,v 1.10 2019/01/07 01:37:05 msaitoh Exp $    */
2 
3 /*-
4  * Copyright (c) 2013 The NetBSD Foundation, Inc.
5  * All rights reserved.
6  *
7  * This code is derived from software contributed to The NetBSD Foundation
8  * by Masanobu SAITOH.
9  *
10  * Redistribution and use in source and binary forms, with or without
11  * modification, are permitted provided that the following conditions
12  * are met:
13  * 1. Redistributions of source code must retain the above copyright
14  *    notice, this list of conditions and the following disclaimer.
15  * 2. Redistributions in binary form must reproduce the above copyright
16  *    notice, this list of conditions and the following disclaimer in the
17  *    documentation and/or other materials provided with the distribution.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
20  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
21  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
23  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29  * POSSIBILITY OF SUCH DAMAGE.
30  */
31 
32 #ifndef _DEV_MII_MDIO_H_
33 #define   _DEV_MII_MDIO_H_
34 
35 /*
36  * IEEE 802.3 Clause 45 definitions.
37  * From:
38  *        IEEE 802.3 2015
39  *        IEEE 802.3at
40  *        IEEE 802.3av
41  */
42 
43 /*
44  * MDIO Manageable Device (MMD) addresses.
45  * Table 45-1
46  */
47 #define   MDIO_MMD_PMAPMD               1
48 #define   MDIO_MMD_WIS                  2
49 #define   MDIO_MMD_PCS                  3
50 #define   MDIO_MMD_PHYXS                4
51 #define   MDIO_MMD_DTEXS                5
52 #define   MDIO_MMD_TC                   6
53 #define   MDIO_MMD_AN                   7
54 #define   MDIO_MMD_SEPPMA1    8
55 #define   MDIO_MMD_SEPPMA2    9
56 #define   MDIO_MMD_SEPPMA3    10
57 #define   MDIO_MMD_SEPPMA4    11
58 #define   MDIO_MMD_CL22EXT    29
59 #define   MDIO_MMD_VNDSP1               30
60 #define   MDIO_MMD_VNDSP2               31
61 
62 /*
63  * PMA/PMD registers.
64  * Table 45-3
65  */
66 #define MDIO_PMAPMD_CTRL1               0   /* PMA/PMD control 1 */
67 #define PMAPMD_CTRL1_RESET    0x8000              /* Reset */
68 #define PMAPMD_CTRL1_SPEED0   0x2000              /* Speed selection (LSB) */
69 #define PMAPMD_CTRL1_LOWPWR   0x0800              /* Low power */
70 #define PMAPMD_CTRL1_SPEED1   0x0040              /* Speed selection (MSB) */
71 #define PMAPMD_CTRL1_SPEED2   0x003c              /* Speed selection (over 1G) */
72 #define PMAPMD_CTRL1_LOOP_REM 0x0002              /* PMA remote loopback */
73 #define PMAPMD_CTRL1_LOOP_LOC 0x0001              /* PMA local loopback */
74 #define PMAPMD_CTRL1_SPEED_SEL52 (PMAPMD_CTRL1_SPEED0 | PMAPMD_CTRL1_SPEED1)
75 #define PMAPMD_CTRL1_SPEED_MASK         (PMAPMD_CTRL1_SPEED_SEL52 \
76               | PMAPMD_CTRL1_SPEED2)
77 #define PMAPMD_CTRL1_SPEED_10    0
78 #define PMAPMD_CTRL1_SPEED_100             PMAPMD_CTRL1_SPEED0
79 #define PMAPMD_CTRL1_SPEED_1G    PMAPMD_CTRL1_SPEED1
80 #define PMAPMD_CTRL1_SPEED_10G     PMAPMD_CTRL1_SPEED_SEL52
81 #define PMAPMD_CTRL1_SPEED_10PASS (PMAPMD_CTRL1_SPEED_SEL52 | (1 << 2))
82 #define PMAPMD_CTRL1_SPEED_40G            (PMAPMD_CTRL1_SPEED_SEL52 | (2 << 2))
83 #define PMAPMD_CTRL1_SPEED_100G   (PMAPMD_CTRL1_SPEED_SEL52 | (3 << 2))
84 #define PMAPMD_CTRL1_SPEED_25G    (PMAPMD_CTRL1_SPEED_SEL52 | (4 << 2))
85 #define PMAPMD_CTRL1_SPEED_2_5G   (PMAPMD_CTRL1_SPEED_SEL52 | (6 << 2))
86 #define PMAPMD_CTRL1_SPEED_5G     (PMAPMD_CTRL1_SPEED_SEL52 | (7 << 2))
87 
88 #define MDIO_PMAPMD_STAT1               1   /* PMA/PMD status 1 */
89 #define MDIO_PMAPMD_DEVID1              2   /* PMA/PMD device identifier 1 */
90 #define MDIO_PMAPMD_DEVID2              3   /* PMA/PMD device identifier 2 */
91 #define MDIO_PMAPMD_SPEED               4   /* PMA/PMD speed ability */
92 #define MDIO_PMAPMD_DEVS1               5   /* PMA/PMD devices in package 1 */
93 #define MDIO_PMAPMD_DEVS2               6   /* PMA/PMD devices in package 2 */
94 
95 #define MDIO_PMAPMD_CTRL2               7   /* PMA/PMD control 2 */
96 #define PMAPMD_CTRL2_PIASE    0x0200
97 #define PMAPMD_CTRL2_PEASE    0x0100
98 #define PMAPMD_CTRL2_TYPE_MASK          0x003f
99 #define PMAPMD_CTRL2_TYPE_100G_SR4      0x2f
100 #define PMAPMD_CTRL2_TYPE_100G_CR4      0x2e
101 #define PMAPMD_CTRL2_TYPE_100G_KR4      0x2d
102 #define PMAPMD_CTRL2_TYPE_100G_KP4      0x2c
103 #define PMAPMD_CTRL2_TYPE_100G_ER4      0x2b
104 #define PMAPMD_CTRL2_TYPE_100G_LR4      0x2a
105 #define PMAPMD_CTRL2_TYPE_100G_SR10     0x29
106 #define PMAPMD_CTRL2_TYPE_100G_CR10     0x28
107 #define PMAPMD_CTRL2_TYPE_40G_ER4       0x25
108 #define PMAPMD_CTRL2_TYPE_40G_FR        0x24
109 #define PMAPMD_CTRL2_TYPE_40G_LR        0x23
110 #define PMAPMD_CTRL2_TYPE_40G_SR4       0x22
111 #define PMAPMD_CTRL2_TYPE_40G_CR4       0x21
112 #define PMAPMD_CTRL2_TYPE_40G_KR4       0x20
113 #define PMAPMD_CTRL2_TYPE_10_1G_PRX_U4  0x1f
114 #define PMAPMD_CTRL2_TYPE_10G_PR_U4     0x1e
115 #define PMAPMD_CTRL2_TYPE_10_1G_PRX_D4  0x1d
116 #define PMAPMD_CTRL2_TYPE_10G_PR_D4     0x1c
117 #define PMAPMD_CTRL2_TYPE_10G_PR_U3     0x1a
118 #define PMAPMD_CTRL2_TYPE_10G_PR_U1     0x19
119 #define PMAPMD_CTRL2_TYPE_10_1G_PRX_U3  0x18
120 #define PMAPMD_CTRL2_TYPE_10_1G_PRX_U2  0x17
121 #define PMAPMD_CTRL2_TYPE_10_1G_PRX_U1  0x16
122 #define PMAPMD_CTRL2_TYPE_10G_PR_D3     0x15
123 #define PMAPMD_CTRL2_TYPE_10G_PR_D2     0x14
124 #define PMAPMD_CTRL2_TYPE_10G_PR_D1     0x13
125 #define PMAPMD_CTRL2_TYPE_10_1G_PRX_D3  0x12
126 #define PMAPMD_CTRL2_TYPE_10_1G_PRX_D2  0x11
127 #define PMAPMD_CTRL2_TYPE_10_1G_PRX_D1  0x10
128 #define PMAPMD_CTRL2_TYPE_10_T                    0x0f
129 #define PMAPMD_CTRL2_TYPE_100_TX        0x0e
130 #define PMAPMD_CTRL2_TYPE_1000_KX       0x0d
131 #define PMAPMD_CTRL2_TYPE_1000_T        0x0c
132 #define PMAPMD_CTRL2_TYPE_10G_KR        0x0b
133 #define PMAPMD_CTRL2_TYPE_10G_KX4       0x0a
134 #define PMAPMD_CTRL2_TYPE_10G_T                   0x09
135 #define PMAPMD_CTRL2_TYPE_10G_LRM       0x08
136 #define PMAPMD_CTRL2_TYPE_10G_SR        0x07
137 #define PMAPMD_CTRL2_TYPE_10G_LR        0x06
138 #define PMAPMD_CTRL2_TYPE_10G_ER        0x05
139 #define PMAPMD_CTRL2_TYPE_10G_LX4       0x04
140 #define PMAPMD_CTRL2_TYPE_10G_SW        0x03
141 #define PMAPMD_CTRL2_TYPE_10G_LW        0x02
142 #define PMAPMD_CTRL2_TYPE_10G_EW        0x01
143 #define PMAPMD_CTRL2_TYPE_10G_CX4       0x00
144 
145 #define MDIO_PMAPMD_10GSTAT2            8   /* 10G PMA/PMD status 2 */
146 #define MDIO_PMAPMD_10GTXDIS            9   /* 10G PMA/PMD transmit disable */
147 #define MDIO_PMAPMD_RXSIGDTCT           10  /* 10G PMD receive signal detect */
148 #define MDIO_PMAPMD_EXTABLTY            11  /* 10G PMA/PMD ext. ability reg */
149 #define MDIO_PMAPMD_P2MPABLTY           12  /* P2MP ability register(802.3av)*/
150 #define MDIO_PMAPMD_40G100GEXTABLTY     13  /* 40G/100G extended ability */
151 #define MDIO_PMAPMD_PKGID1              14  /* PMA/PMD package identifier 1 */
152 #define MDIO_PMAPMD_PKGID2              15  /* PMA/PMD package identifier 2 */
153 #define   MDIO_PMAPMD_EEECAP            16  /* PMA/PMD EEE capability */
154           /* Values 17 to 29 are reserved */
155 #define MDIO_PMAPMD_10P2BCTRL           30  /* 10P/2B PMA/PMD control */
156 #define MDIO_PMAPMD_10P2BSTAT           31  /* 10P/2B PMA/PMD status */
157 #define MDIO_PMAPMD_10P2BLPCTRL                   32  /* 10P/2B link partner PMA/D ctrl*/
158 #define MDIO_PMAPMD_10P2BLPSTAT                   33  /* 10P/2B link partner PMA/D stat*/
159           /* Values 34 to 35 are reserved */
160 #define MDIO_PMAPMD_10P2BLLOSCNT        36  /* 10P/2B link loss counter */
161 #define MDIO_PMAPMD_10P2BRXSNMGN        37  /* 10P/2B RX SNR margin */
162 #define MDIO_PMAPMD_10P2BLPRXSNMG       38  /* 10P/2B link partner RX SNR mgn*/
163 #define MDIO_PMAPMD_10P2BLINEATTN       39  /* 10P/2B line attenuation */
164 #define MDIO_PMAPMD_10P2BLPLINEATTN     40  /* 10P/2B link partner line atten*/
165 #define MDIO_PMAPMD_10P2BLQTHRES        41  /* 10P/2B line quality thresholds*/
166 #define MDIO_PMAPMD_10P2BLPLQLTHRES     42  /* 10P/2B link partner LQ thresh.*/
167 #define MDIO_PMAPMD_10PFECCOERRS        43  /* 10P FEC correctable errors cnt*/
168 #define MDIO_PMAPMD_10PFECUNCOERRS      44  /* 10P FEC uncorrectable err cnt*/
169 #define MDIO_PMAPMD_10PLPFECCOERRS      45  /* 10P LP FEC correctable err cnt*/
170 #define MDIO_PMAPMD_10PLPFECUNCOERRS    46  /* 10P LP FEC uncorrectable errcn*/
171 #define MDIO_PMAPMD_10PELECLENGTH       47  /* 10P electrical length */
172 #define MDIO_PMAPMD_10PLPELECLENGTH     48  /* 10P LP electrical length */
173 #define MDIO_PMAPMD_10PGENCONFIG        49  /* 10P PMA/PMD general config. */
174 #define MDIO_PMAPMD_10PPSDCONFIG        50  /* 10P PSD configuration */
175 #define MDIO_PMAPMD_10PDSDRCONF1        51  /* 10P downstream data rate cnf1 */
176 #define MDIO_PMAPMD_10PDSDRCONF2        52  /* 10P downstream data rate cnf2 */
177 #define MDIO_PMAPMD_10PDSRSCONF                   53  /* 10P downstream ReedSolomon cnf*/
178 #define MDIO_PMAPMD_10PUSDR1            54  /* 10P upstream data rate cnf1 */
179 #define MDIO_PMAPMD_10PUSDR2            55  /* 10P upstream data rate cnf2 */
180 #define MDIO_PMAPMD_10PUSRSCONF                   56  /* 10P upstream ReedSolomon cnf */
181 #define MDIO_PMAPMD_10PTONEGROUP1       57  /* 10P tone group 1 */
182 #define MDIO_PMAPMD_10PTONEGROUP2       58  /* 10P tone group 2 */
183 #define MDIO_PMAPMD_10PTONEPARAM1       59  /* 10P tone parameter 1 */
184 #define MDIO_PMAPMD_10PTONEPARAM2       60  /* 10P tone parameter 2 */
185 #define MDIO_PMAPMD_10PTONEPARAM3       61  /* 10P tone parameter 3 */
186 #define MDIO_PMAPMD_10PTONEPARAM4       62  /* 10P tone parameter 4 */
187 #define MDIO_PMAPMD_10PTONEPARAM5       63  /* 10P tone parameter 5 */
188 #define MDIO_PMAPMD_10PTONECTLACTN      64  /* 10P tone control action */
189 #define MDIO_PMAPMD_10PTONESTAT1        65  /* 10P tone status 1 */
190 #define MDIO_PMAPMD_10PTONESTAT2        66  /* 10P tone status 2 */
191 #define MDIO_PMAPMD_10PTONESTAT3        67  /* 10P tone status 3 */
192 #define MDIO_PMAPMD_10POUTINDICAT       68  /* 10P outgoing indicator bits */
193 #define MDIO_PMAPMD_10PININDICAT        69  /* 10P incoming indicator bits */
194 #define MDIO_PMAPMD_10PCYCLICEXTCNF     70  /* 10P cyclic extension config. */
195 #define MDIO_PMAPMD_10PATTAINDSDR       71  /* 10P attainable downstream DR */
196           /* Values 72 to 79 are reserved */
197 #define MDIO_PMAPMD_2BGENPARAM                    80  /* 2B general parameter */
198 #define MDIO_PMAPMD_2BPMDPARAM1                   81  /* 2B PMD parameter 1 */
199 #define MDIO_PMAPMD_2BPMDPARAM2                   82  /* 2B PMD parameter 2 */
200 #define MDIO_PMAPMD_2BPMDPARAM3                   83  /* 2B PMD parameter 3 */
201 #define MDIO_PMAPMD_2BPMDPARAM4                   84  /* 2B PMD parameter 4 */
202 #define MDIO_PMAPMD_2BPMDPARAM5                   85  /* 2B PMD parameter 5 */
203 #define MDIO_PMAPMD_2BPMDPARAM6                   86  /* 2B PMD parameter 6 */
204 #define MDIO_PMAPMD_2BPMDPARAM7                   87  /* 2B PMD parameter 7 */
205 #define MDIO_PMAPMD_2BPMDPARAM8                   88  /* 2B PMD parameter 8 */
206 #define MDIO_PMAPMD_2BCODEVIOERRCNT     89  /* 2B code violation errors cnt. */
207 #define MDIO_PMAPMD_2BLPCODEVIOERR      90  /* 2B LP code violation errors */
208 #define MDIO_PMAPMD_2BERRSECCNT                   91  /* 2B errored seconds counter */
209 #define MDIO_PMAPMD_2BLPERRSEC                    92  /* 2B LP errored seconds */
210 #define MDIO_PMAPMD_2BSEVERRSECCNT      93  /* 2B severely errored seconds cn*/
211 #define MDIO_PMAPMD_2BLPSEVERRSECCNT    94 /* 2B LP severely errored secs cn*/
212 #define MDIO_PMAPMD_2BLOSWCNT           95  /* 2B LOSW counter */
213 #define MDIO_PMAPMD_2BLPLOSW            96  /* 2B LP LOSW */
214 #define MDIO_PMAPMD_2BUNAVSECCNT        97  /* 2B unavailable seconds counter*/
215 #define MDIO_PMAPMD_2BLPUNAVSECCNT      98  /* 2B LP unavailable seconds cnt */
216 #define MDIO_PMAPMD_2BSTATDEFECT        99  /* 2B state defects */
217 #define MDIO_PMAPMD_2BLPSTATDEFECT      100 /* 2B LP state defects */
218 #define MDIO_PMAPMD_2BNEGOCONSTEL       101 /* 2B negotiated constellation */
219 #define MDIO_PMAPMD_2BEXTPMDPARAM1      102 /* 2B extended PMD parameters 1 */
220 #define MDIO_PMAPMD_2BEXTPMDPARAM2      103 /* 2B extended PMD parameters 2 */
221 #define MDIO_PMAPMD_2BEXTPMDPARAM3      104 /* 2B extended PMD parameters 3 */
222 #define MDIO_PMAPMD_2BEXTPMDPARAM4      105 /* 2B extended PMD parameters 4 */
223 #define MDIO_PMAPMD_2BEXTPMDPARAM5      106 /* 2B extended PMD parameters 5 */
224 #define MDIO_PMAPMD_2BEXTPMDPARAM6      107 /* 2B extended PMD parameters 6 */
225 #define MDIO_PMAPMD_2BEXTPMDPARAM7      108 /* 2B extended PMD parameters 7 */
226 #define MDIO_PMAPMD_2BEXTPMDPARAM8      109 /* 2B extended PMD parameters 8 */
227           /* Values 110 to 128 are reserved */
228 #define MDIO_PMAPMD_10GTSTAT            129 /* 10GBASE-T status */
229 #define MDIO_PMAPMD_10GTPASWPOLAR       130 /* 10G-T pair swap & polarity */
230 #define MDIO_PMAPMD_10GTTXPWBOSHRCH     131 /* 10G-T PWR backoff&PHY shrt rch*/
231 #define MDIO_PMAPMD_10GTTSTMODE                   132 /* 10G-T test mode */
232 #define MDIO_PMAPMD_10GTSNROMARGA       133 /* 10G-T SNR operating margin chA*/
233 #define MDIO_PMAPMD_10GTSNROMARGB       134 /* 10G-T SNR operating margin chB*/
234 #define MDIO_PMAPMD_10GTSNROMARGC       135 /* 10G-T SNR operating margin chC*/
235 #define MDIO_PMAPMD_10GTSNROMARGD       136 /* 10G-T SNR operating margin chD*/
236 #define MDIO_PMAPMD_10GTMINMARGA        137 /* 10G-T minimum margin ch. A */
237 #define MDIO_PMAPMD_10GTMINMARGB        138 /* 10G-T minimum margin ch. B */
238 #define MDIO_PMAPMD_10GTMINMARGC        139 /* 10G-T minimum margin ch. C */
239 #define MDIO_PMAPMD_10GTMINMARGD        140 /* 10G-T minimum margin ch. D */
240 #define MDIO_PMAPMD_10GTSIGPWRA                   141 /* 10G-T RX signal power ch. A */
241 #define MDIO_PMAPMD_10GTSIGPWRB                   142 /* 10G-T RX signal power ch. B */
242 #define MDIO_PMAPMD_10GTSIGPWRC                   143 /* 10G-T RX signal power ch. C */
243 #define MDIO_PMAPMD_10GTSIGPWRD                   144 /* 10G-T RX signal power ch. D */
244 #define MDIO_PMAPMD_10GTSKEWDLY1        145 /* 10G-T skew delay 1 */
245 #define MDIO_PMAPMD_10GTSKEWDLY2        146 /* 10G-T skew delay 2 */
246 #define MDIO_PMAPMD_10GTFSTRETSTATCTRL  147 /* 10G-T fast retrain stat&ctrl */
247           /* Values 148 to 149 are reserved */
248 #define MDIO_PMAPMD_BASERPMDCTRL        150 /* BASE-R PMD control */
249 #define MDIO_PMAPMD_BASERPMDSTAT        151 /* BASE-R PMD status */
250 #define MDIO_PMAPMD_BASERLPCOEFUPDL0    152 /* BASE-R LP coeffici. update ln0*/
251 #define MDIO_PMAPMD_BASERLPSTATRPTL0    153 /* BASE-R LP status report lane0 */
252 #define MDIO_PMAPMD_BASERLDCOEFFUPDL0   154 /* BASE-R LD coeffici. update ln0*/
253 #define MDIO_PMAPMD_BASERLDSTATRPTL0    155 /* BASE-R LD status report lane0 */
254 #define MDIO_PMAPMD_BASERSTAT2                    156 /* BASE-R PMD status 2 */
255 #define MDIO_PMAPMD_BASERSTAT3                    157 /* BASE-R PMD status 3 */
256           /* Values 158 to 159 are reserved */
257 #define MDIO_PMAPMD_1000KXCTRL                    160 /* 1000BASE-KX control */
258 #define MDIO_PMAPMD_1000KXSTAT                    161 /* 1000BASE-KX status */
259 #define MDIO_PMAPMD_PMAOVHDCTRL1        162 /* PMA Overhead Control 1 */
260 #define MDIO_PMAPMD_PMAOVHDCTRL2        163 /* PMA Overhead Control 2 */
261 #define MDIO_PMAPMD_PMAOVHDCTRL3        164 /* PMA Overhead Control 3 */
262 #define MDIO_PMAPMD_PMAOVHDSTAT1        165 /* PMA Overhead Status 1 */
263 #define MDIO_PMAPMD_PMAOVHDSTAT2        166 /* PMA Overhead Status 2 */
264           /* Values 167 to 169 are reserved */
265 #define MDIO_PMAPMD_BASERFECABLTY       170 /* BASE-R FEC ability */
266 #define MDIO_PMAPMD_BASERFECCTRL        171 /* BASE-R FEC control */
267 #define MDIO_PMAPMD_10GRFECCOBLCNTL     172 /* 10G-R FEC corrected blks cntL */
268 #define MDIO_PMAPMD_10GRFECCOBLCNTH     173 /* 10G-R FEC corrected blks cntH */
269 #define MDIO_PMAPMD_10GRFECUNCOBLCNTL   174 /* 10G-R FEC uncorrect blks cntL */
270 #define MDIO_PMAPMD_10GRFECUNCOBLCNTH   175 /* 10G-R FEC uncorrect blks cntH */
271           /* Values 176 to 178 are reserved */
272 #define MDIO_PMAPMD_CAUI4C2MRECCTLE     179 /* CAUI-4 Chip2Mod recomme. CTLE */
273 #define MDIO_PMAPMD_CAUI4C2CTERDIL0     180 /* CAUI-4 Ch2Ch TxEq RxDir lane0 */
274 #define MDIO_PMAPMD_CAUI4C2CTERDIL1     181 /* lane1 */
275 #define MDIO_PMAPMD_CAUI4C2CTERDIL2     182 /* lane2 */
276 #define MDIO_PMAPMD_CAUI4C2CTERDIL3     183 /* lane3 */
277 #define MDIO_PMAPMD_CAUI4C2CTETDEL0     184 /* CAUI-4 Ch2Ch TxEq TxDet lane0 */
278 #define MDIO_PMAPMD_CAUI4C2CTETDEL1     185 /* lane1 */
279 #define MDIO_PMAPMD_CAUI4C2CTETDEL2     186 /* lane2 */
280 #define MDIO_PMAPMD_CAUI4C2CTETDEL3     187 /* lane3 */
281           /* Values 188 to 199 are reserved */
282 #define MDIO_PMAPMD_RSFECCTRL           200 /* RS-FEC Control */
283 #define MDIO_PMAPMD_RSFECSTAT           201 /* RS-FEC Status */
284 #define MDIO_PMAPMD_RSFECCORRCWCNTL     202 /* RS-FEC correct. codeword cntL */
285 #define MDIO_PMAPMD_RSFECCORRCWCNTH     203 /* RS-FEC correct. codeword cntH */
286 #define MDIO_PMAPMD_RSFECUNCORRCWCNTL   204 /* RS-FEC uncorre. codeword cntL */
287 #define MDIO_PMAPMD_RSFECUNCORRCWCNTH   205 /* RS-FEC uncorre. codeword cntH */
288 #define MDIO_PMAPMD_RSFECLANEMAP        206 /* RS-FEC Lane Mapping */
289           /* Values 207 to 209 are reserved */
290 #define MDIO_PMAPMD_RSFECSMBLERRCNTL(x)     /* RS-FEC Symbol Error CntLow */ \
291                                                   (210 + ((x) * 2)) /* lane 0 to 3 */
292 #define MDIO_PMAPMD_RSFECSMBLERRCNTH(x)     /* RS-FEC Symbol Error CntHigh */ \
293                                                   (211 + ((x) * 2)) /* lane 0 to 3 */
294           /* Values 218 to 229 are reserved */
295 #define MDIO_PMAPMD_RSFECBIPERRCNT(x)       /* RS-FEC BIP Error Counter */ \
296                                                   (230 + (x)) /* lane 0 to 19 */
297 #define MDIO_PMAPMD_RSFECPCSLMAP(x)         /* RS-FEC PCS Lane Mapping */ \
298                                                   (250 + (x)) /* lane 0 to 19 */
299           /* Values 270 to 279 are reserved */
300 #define MDIO_PMAPMD_RSFECPCSALGNSTAT1   280 /* RS-FEC PCS Alignment Status 1 */
301 #define MDIO_PMAPMD_RSFECPCSALGNSTAT2   281 /* RS-FEC PCS Alignment Status 2 */
302 #define MDIO_PMAPMD_RSFECPCSALGNSTAT3   282 /* RS-FEC PCS Alignment Status 3 */
303 #define MDIO_PMAPMD_RSFECPCSALGNSTAT4   283 /* RS-FEC PCS Alignment Status 4 */
304           /* Values 284 to 299 are reserved */
305 #define MDIO_PMAPMD_BASERFECCORBLKCNTL(x)    /* BASE-R FEC Corr. Blk. CntL */ \
306                                                   (300 + ((x) * 2)) /* lane0 to 19 */
307 #define MDIO_PMAPMD_BASERFECCORBLKCNTH(x)    /* BASE-R FEC Corr. Blk. CntH */ \
308                                                   (301 + ((x) * 2)) /* lane0 to 19 */
309           /* Values 340 to 699 are reserved */
310 #define MDIO_PMAPMD_BASERFECUNCORBLKCNTL(x) /* BASE-R FEC UnCorr. Blk. CntL*/ \
311                                                   (700 + ((x) * 2)) /* lane0 to 19 */
312 #define MDIO_PMAPMD_BASERFECUNCORBLKCNTH(x) /* BASE-R FEC UnCorr. Blk. CntH*/ \
313                                                   (701 + ((x) * 2)) /* lane0 to 19 */
314           /* Values 740 to 1099 are reserved */
315 #define MDIO_PMAPMD_BASERLPCOEFUPD(x)       /* BASE-R LP coefficient update */\
316                                                   (1100 + (x)) /* lane0 to 9 */
317           /* Values 1110 to 1199 are reserved */
318 #define MDIO_PMAPMD_BASERLPSTATRPT(x)       /* BASE-R LP status report */ \
319                                                   (1200 + (x)) /* lane0 to 9 */
320           /* Values 1210 to 1299 are reserved */
321 #define MDIO_PMAPMD_BASERLDCOEFUPD(x)       /* BASE-R LD coefficient update */\
322                                                   (1300 + (x)) /* lane0 to 9 */
323           /* Values 1310 to 1399 are reserved */
324 #define MDIO_PMAPMD_BASERLDSTATRPT(x)       /* BASE-R LD status report */ \
325                                                   (1400 + (x)) /* lane0 to 9 */
326           /* Values 1410 to 1449 are reserved */
327 #define MDIO_PMAPMD_PMDTRAINPATTERN(x)      /* PMD training pattern */          \
328                                                   (1450 + (x)) /* lane0 to 3 */
329           /* Values 1454 to 1499 are reserved */
330 #define MDIO_PMAPMD_TSTPAT              1500 /* Test-pattern ability */
331 #define MDIO_PMAPMD_PRBSPATTSTCTRL      1501 /* PRBS pattern testing control */
332           /* Values 1502 to 1509 are reserved */
333 #define MDIO_PMAPMD_SQWVTSTCTRL                   1510 /* Square wave testing control */
334           /* Values 1511 to 1599 are reserved */
335 #define MDIO_PMAPMD_PRBSTXERRCNT(x)          /* PRBS Tx Error Counter */ \
336                                                   (1600 + (x)) /* lane0 to 9 */
337           /* Values 1610 to 1699 are reserved */
338 #define MDIO_PMAPMD_PRBSRXERRCNT(x)          /* PRBS Rx Error Counter */ \
339                                                   (1700 + (x)) /* lane0 to 9 */
340           /* Values 1710 to 1799 are reserved */
341 #define MDIO_PMAPMD_TSYNCCAP            1800 /* TimeSync PMA/PMD capability */
342 #define MDIO_PMAPMD_TSYNCTXMAXDLYL      1801 /* TimeSync PMAPMD TX MAXdelay L*/
343 #define MDIO_PMAPMD_TSYNCTXMAXDLYH      1802 /* TimeSync PMAPMD TX MAXdelay H*/
344 #define MDIO_PMAPMD_TSYNCTXMINDLYL      1803 /* TimeSync PMAPMD TX MINdelay L*/
345 #define MDIO_PMAPMD_TSYNCTXMINDLYH      1804 /* TimeSync PMAPMD TX MINdelay H*/
346 #define MDIO_PMAPMD_TSYNCRXMAXDLYL      1805 /* TimeSync PMAPMD RX MAXdelay L*/
347 #define MDIO_PMAPMD_TSYNCRXMAXDLYH      1806 /* TimeSync PMAPMD RX MAXdelay H*/
348 #define MDIO_PMAPMD_TSYNCRXMINDLYL      1807 /* TimeSync PMAPMD RX MINdelay L*/
349 #define MDIO_PMAPMD_TSYNCRXMINDLYH      1808 /* TimeSync PMAPMD RX MINdelay H*/
350           /* Values 1809 to 32767 are reserved */
351           /* Values 32768 to 65535 are vendor specific */
352 
353 /*
354  * WIS registers.
355  * Table 45-99
356  */
357 #define   MDIO_WIS_CTRL1                0         /* WIS control 1 */
358 #define   MDIO_WIS_STAT1                1         /* WIS status 1 */
359 #define   MDIO_WIS_DEVID1               2         /* WIS device identifier 1 */
360 #define   MDIO_WIS_DEVID2               3         /* WIS device identifier 2 */
361 #define   MDIO_WIS_SPEED                4         /* WIS speed ability */
362 #define   MDIO_WIS_DEVS1                5         /* WIS devices in package 1 */
363 #define   MDIO_WIS_DEVS2                6         /* WIS devices in package 2 */
364 #define   MDIO_WIS_10GCTRL2   7         /* 10G WIS control 2 */
365 #define   MDIO_WIS_10GSTAT2   8         /* 10G WIS status 2 */
366 #define   MDIO_WIS_10GTSTERRCNT         9         /* 10G WIS test-pattern error counter*/
367           /* Values 10 to 13 are reserved */
368 #define   MDIO_WIS_PKGID1               14        /* WIS package identifier 1 */
369 #define   MDIO_WIS_PKGID2               15        /* WIS package identifier 2 */
370           /* Values 16 to 32 are reserved */
371 #define   MDIO_WIS_10GSTAT3   33        /* 10G WIS status 3 */
372           /* Values 34 to 36 are reserved */
373 #define   MDIO_WIS_10GFARENDPBERRCNT 37 /* 10G WIS far end path block errcnt */
374           /* Value 38 is reserved */
375 #define   MDIO_WIS_J1XMIT(x)            /* 10G WIS J1 transmit */          \
376                                         (39 + ((x) / 2))/* 0to15. L8=even, H8=odd */
377 
378 #define   MDIO_WIS_J1RCV(x)             /* 10G WIS J1 receive */           \
379                                         (47 + ((x) / 2))/* 0to15. L8=even, H8=odd */
380 #define   MDIO_WIS_FARENDLBIPERR1       55        /* 10G WIS far end line BIP errors 1 */
381 #define   MDIO_WIS_FARENDLBIPERR2       56        /* 10G WIS far end line BIP errors 2 */
382 #define   MDIO_WIS_LBIPERR1   57        /* 10G WIS line BIP errors 1 */
383 #define   MDIO_WIS_LBIPERR2   58        /* 10G WIS line BIP errors 2 */
384 #define   MDIO_WIS_PBERRCNT   59        /* 10G WIS path block error count */
385 #define   MDIO_WIS_SECBIPERRCNT         60        /* 10G WIS section BIP error count */
386           /* Values 61 to 63 are reserved */
387 #define   MDIO_WIS_J0XMIT(x)            /* 10G WIS J0 transmit */          \
388                                         (64 + ((x) / 2))/* 0to15. L8=even, H8=odd */
389 
390 #define   MDIO_WIS_J0RCV(x)             /* 10G WIS J0 receive */           \
391                                         (72 + ((x) / 2))/* 0to15. L8=even, H8=odd */
392           /* Values 80 to 1799 are reserved */
393 #define MDIO_WIS_TSYNCCAP     1800 /* TimeSync WIS capability */
394 #define MDIO_WIS_TSYNCTXMAXDLYL         1801 /* TimeSync WIS TX MAXdelay L*/
395 #define MDIO_WIS_TSYNCTXMAXDLYH         1802 /* TimeSync WIS TX MAXdelay H*/
396 #define MDIO_WIS_TSYNCTXMINDLYL         1803 /* TimeSync WIS TX MINdelay L*/
397 #define MDIO_WIS_TSYNCTXMINDLYH         1804 /* TimeSync WIS TX MINdelay H*/
398 #define MDIO_WIS_TSYNCRXMAXDLYL         1805 /* TimeSync WIS RX MAXdelay L*/
399 #define MDIO_WIS_TSYNCRXMAXDLYH         1806 /* TimeSync WIS RX MAXdelay H*/
400 #define MDIO_WIS_TSYNCRXMINDLYL         1807 /* TimeSync WIS RX MINdelay L*/
401 #define MDIO_WIS_TSYNCRXMINDLYH         1808 /* TimeSync WIS RX MINdelay H*/
402           /* Values 1809 to 32767 are reserved */
403           /* Values 32768 to 65535 are vendor specific */
404 
405 /*
406  * PCS registers.
407  * Table 45-119
408  */
409 #define   MDIO_PCS_CTRL1                0         /* PCS control 1 */
410 #define   MDIO_PCS_STAT1                1         /* PCS status 1 */
411 #define   MDIO_PCS_DEVID1               2         /* PCS device identifier 1 */
412 #define   MDIO_PCS_DEVID2               3         /* PCS device identifier 2 */
413 #define   MDIO_PCS_SPEED                4         /* PCS speed ability */
414 #define   MDIO_PCS_DEVS1                5         /* PCS devices in package 1 */
415 #define   MDIO_PCS_DEVS2                6         /* PCS devices in package 2 */
416 #define   MDIO_PCS_10GCTRL2   7         /* 10G PCS control 2 */
417 #define   MDIO_PCS_10GSTAT2   8         /* 10G PCS status 2 */
418           /* Values 9 to 13 are reserved */
419 #define   MDIO_PCS_PKGID1               14        /* PCS package identifier 1 */
420 #define   MDIO_PCS_PKGID2               15        /* PCS package identifier 2 */
421           /* Values 16 to 19 are reserved */
422 #define   MDIO_PCS_EEECTRLCAP 20        /* EEE control and capability */
423           /* Value 21 is reserved */
424 #define   MDIO_PCS_EEEWKERRCNT          22        /* EEE wake error counter */
425           /* Value 23 is reserved */
426 #define   MDIO_PCS_10GXSTAT   24        /* 10G-X PCS status */
427 #define   MDIO_PCS_10GXSTSCTRL          25        /* 10G-X PCS test control */
428           /* Values 26 to 31 are reserved */
429 #define   MDIO_PCS_BASERTSTAT1          32        /* BASE-R & 10G-T PCS status 1 */
430 #define   MDIO_PCS_BASERTSTAT2          33        /* BASE-R & 10G-T PCS status 2 */
431 #define   MDIO_PCS_10GRTPSEEDA(x)                 /* 10G-R PCS test pattern seed A */ \
432                                         (34 + (x)) /* 0 to 3 */
433 #define   MDIO_PCS_10GRTPSEEDB                    /* 10G-R PCS test pattern seed B */ \
434                                         (38 + (x)) /* 0 to 3 */
435 #define   MDIO_PCS_10GRTPCTRL 42        /* 10G-R PCS test pattern control */
436 #define   MDIO_PCS_10GRTPERRCNT         43        /* 10G-R PCS test pattern err counter*/
437 #define   MDIO_PCS_BERHIORDERCNT        44        /* BER high order counter */
438 #define   MDIO_PCS_ERRBHIORDERCNT       45        /* Errored blocks high order counter */
439           /* Values 46 to 49 are reserved */
440 #define MDIO_PCS_MLBRPCSALGNSTAT1 50    /* Mlt-lane BASE-R PCS Align. Stat1 */
441 #define MDIO_PCS_MLBRPCSALGNSTAT2 51    /* Mlt-lane BASE-R PCS Align. Stat2 */
442 #define MDIO_PCS_MLBRPCSALGNSTAT3 52    /* Mlt-lane BASE-R PCS Align. Stat3 */
443 #define MDIO_PCS_MLBRPCSALGNSTAT4 53    /* Mlt-lane BASE-R PCS Align. Stat4 */
444           /* Values 54 to 59 are reserved */
445 #define   MDIO_PCS_10P2BCAP   60        /* 10P/2B capability */
446 #define   MDIO_PCS_10P2BCTRL  61        /* 10P/2B PCS control */
447 #define   MDIO_PCS_10P2BPMEAVAIL1       62        /* 10P/2B PME available 1 */
448 #define   MDIO_PCS_10P2BPMEAVAIL2       63        /* 10P/2B PME available 2 */
449 #define   MDIO_PCS_10P2BPMEAGGRG1       64        /* 10P/2B PME aggregate 1 */
450 #define   MDIO_PCS_10P2BPMEAGGRG2       65        /* 10P/2B PME aggregate 2 */
451 #define   MDIO_PCS_10P2BPAFRXERRCNT 66  /* 10P/2B PAF RX error counter */
452 #define   MDIO_PCS_10P2BPAFSMLFRCNT 67  /* 10P/2B PAF small fragment counter */
453 #define   MDIO_PCS_10P2BPAFLARFLCNT 68  /* 10P/2B PAF large fragment counter */
454 #define   MDIO_PCS_10P2BPAFOVFLCNT 69    /* 10P/2B PAF overflow counter */
455 #define   MDIO_PCS_10P2BPAFBADFLCNT 70   /* 10P/2B PAF bad fragments counter */
456 #define   MDIO_PCS_10P2BPAFLSTFLCNT 71   /* 10P/2B PAF lost fragments counter */
457 #define   MDIO_PCS_10P2BPAFLSTSTFLCNT 72 /* 10P/2B PAF lost starts of fr. cnt */
458 #define   MDIO_PCS_10P2BPAFLSTENFLCNT 73 /* 10P/2B PAF lost ends of fr. count */
459 #define   MDIO_PCS_10GPRFECABLTY        74        /* 10G-PR & 10/1G-PRX FEC ability */
460 #define   MDIO_PCS_10GPRFECCTRL         75        /* 10G-PR & 10/1G-PRX FEC control */
461 #define   MDIO_PCS_10GPRCOFECCOCNT1 76  /*10(/1)G-PR(X) corrected FECcodecnt1*/
462 #define   MDIO_PCS_10GPRCOFECCOCNT2 77  /*10(/1)G-PR(X) corrected FECcodecnt2*/
463 #define   MDIO_PCS_10GPRUNCOFECCOCNT1 78          /*10(/1)G-PR(X)uncorrected FECcdecnt1*/
464 #define   MDIO_PCS_10GPRUNCOFECCOCNT2 79          /*10(/1)G-PR(X)uncorrected FECcdecnt2*/
465 #define   MDIO_PCS_10GPRBERMONTMRCTRL 80          /*10(/1)G-PR(X) BER monitor tmr ctrl */
466 #define   MDIO_PCS_10GPRBERMONSTAT 81   /*10(/1)G-PR(X) BER monitor status */
467 #define   MDIO_PCS_10GPRBERMONTHRCTRL 82          /*10(/1)G-PR(X) BER mntr thresh ctrl */
468           /* Values 83 to 199 are reserved */
469 #define MDIO_PCS_BIPERRCNT(x)           /* BIP Error Counter */ \
470                                             (200 + (x)) /* lane 0 to 19 */
471           /* Values 220 to 399 are reserved */
472 #define MDIO_PCS_PCSLMAP(x)             /* PCS Lane Mapping */ \
473                                             (400 + (x)) /* lane 0 to 19 */
474           /* Values 420 to 1799 are reserved */
475 #define MDIO_PCS_TSYNCCAP     1800 /* TimeSync PCS capability */
476 #define MDIO_PCS_TSYNCTXMAXDLYL         1801 /* TimeSync PCS TX MAXdelay L*/
477 #define MDIO_PCS_TSYNCTXMAXDLYH         1802 /* TimeSync PCS TX MAXdelay H*/
478 #define MDIO_PCS_TSYNCTXMINDLYL         1803 /* TimeSync PCS TX MINdelay L*/
479 #define MDIO_PCS_TSYNCTXMINDLYH         1804 /* TimeSync PCS TX MINdelay H*/
480 #define MDIO_PCS_TSYNCRXMAXDLYL         1805 /* TimeSync PCS RX MAXdelay L*/
481 #define MDIO_PCS_TSYNCRXMAXDLYH         1806 /* TimeSync PCS RX MAXdelay H*/
482 #define MDIO_PCS_TSYNCRXMINDLYL         1807 /* TimeSync PCS RX MINdelay L*/
483 #define MDIO_PCS_TSYNCRXMINDLYH         1808 /* TimeSync PCS RX MINdelay H*/
484           /* Values 1809 to 32767 are reserved */
485           /* Values 32768 to 65535 are vendor specific */
486 
487 /*
488  * PHY XS registers.
489  * Table 45-164
490  */
491 #define   MDIO_PHYXS_CTRL1    0         /* PHY XS control 1 */
492 #define   MDIO_PHYXS_STAT1    1         /* PHY XS status 1 */
493 #define   MDIO_PHYXS_DEVID1   2         /* PHY XS device identifier 1 */
494 #define   MDIO_PHYXS_DEVID2   3         /* PHY XS device identifier 2 */
495 #define   MDIO_PHYXS_SPEED    4         /* PHY XS speed ability */
496 #define   MDIO_PHYXS_DEVS1    5         /* PHY XS devices in package 1 */
497 #define   MDIO_PHYXS_DEVS2    6         /* PHY XS devices in package 2 */
498           /* Value 7 is reserved */
499 #define   MDIO_PHYXS_STAT2    8         /* PHY XS status 2 */
500           /* Values 9 to 13 are reserved */
501 #define   MDIO_PHYXS_PKGID1   14        /* PHY XS package identifier 1 */
502 #define   MDIO_PHYXS_PKGID2   15        /* PHY XS package identifier 2 */
503           /* Values 16 to 19 are reserved */
504 #define   MDIO_PHYXS_EEECAP   20        /* EEE capability register */
505           /* Value 21 is reserved */
506 #define   MDIO_PHYXS_EEEWKERRCNT        22        /* EEE wake error counter */
507           /* Value 23 is reserved */
508 #define   MDIO_PHYXS_10GXGXLNSTAT       24        /* 10G-X PHY XGXS lane status */
509 #define   MDIO_PHYXS_10GXGXSTSCTRL 25   /* 10G-X PHY XGXS test control */
510           /* Values 26 to 1799 are reserved */
511 #define MDIO_PHYXS_TSYNCCSP     1800 /* TimeSync PHY XS capability */
512 #define MDIO_PHYXS_TSYNCTXMAXDLYL 1801 /* TimeSync PHY XS TX MAX delay L */
513 #define MDIO_PHYXS_TSYNCTXMAXDLYH 1802 /* TimeSync PHY XS TX MAX delay H */
514 #define MDIO_PHYXS_TSYNCTXMINDLYL 1803 /* TimeSync PHY XS TX MIN delay L */
515 #define MDIO_PHYXS_TSYNCTXMINDLYH 1804 /* TimeSync PHY XS TX MIN delay H */
516 #define MDIO_PHYXS_TSYNCRXMAXDLYL 1805 /* TimeSync PHY XS RX MAX delay L */
517 #define MDIO_PHYXS_TSYNCRXMAXDLYH 1806 /* TimeSync PHY XS RX MAX delay H */
518 #define MDIO_PHYXS_TSYNCRXMINDLYL 1807 /* TimeSync PHY XS RX MIN delay L */
519 #define MDIO_PHYXS_TSYNCRXMINDLYH 1808 /* TimeSync PHY XS RX MIN delay H */
520           /* Values 1809 to 32767 are reserved */
521           /* Values 32768 to 65535 are vendor specific */
522 
523 /*
524  * DTE XS registers.
525  * Table 45-175
526  */
527 #define   MDIO_DTEXS_CTRL1    0         /* DTE XS control 1 */
528 #define   MDIO_DTEXS_STAT1    1         /* DTE XS status 1 */
529 #define   MDIO_DTEXS_DEVID1   2         /* DTE XS device identifier 1 */
530 #define   MDIO_DTEXS_DEVID2   3         /* DTE XS device identifier 2 */
531 #define   MDIO_DTEXS_SPEED    4         /* DTE XS speed ability */
532 #define   MDIO_DTEXS_DEVS1    5         /* DTE XS devices in package 1 */
533 #define   MDIO_DTEXS_DEVS2    6         /* DTE XS devices in package 2 */
534           /* Value 7 is reserved */
535 #define   MDIO_DTEXS_STAT2    8         /* DTE XS status 2 */
536           /* Values 9 to 13 are reserved */
537 #define   MDIO_DTEXS_PKGID1   14        /* DTE XS package identifier 1 */
538 #define   MDIO_DTEXS_PKGID2   15        /* DTE XS package identifier 2 */
539           /* Values 16 to 19 are reserved */
540 #define   MDIO_DTEXS_EEECAP   20        /* EEE capability register */
541           /* Value 21 is reserved */
542 #define   MDIO_DTEXS_EEEWKERRCNT        22        /* EEE wake error counter */
543           /* Value 23 is reserved */
544 #define   MDIO_DTEXS_10GXGXLNSTAT       24        /* 10G DTE XGXS lane status */
545 #define   MDIO_DTEXS_10GXGXSTSCTRL 25   /* 10G DTE XGXS test control */
546           /* Values 26 to 1799 are reserved */
547 #define MDIO_DTEXS_TSYNCCAP     1800 /* TimeSync DTE XS capability */
548 #define MDIO_DTEXS_TSYNCTXMAXDLYL 1801 /* TimeSync DTE XS TX MAX delay L */
549 #define MDIO_DTEXS_TSYNCTXMAXDLYH 1802 /* TimeSync DTE XS TX MAX delay H */
550 #define MDIO_DTEXS_TSYNCTXMINDLYL 1803 /* TimeSync DTE XS TX MIN delay L */
551 #define MDIO_DTEXS_TSYNCTXMINDLYH 1804 /* TimeSync DTE XS TX MIN delay H */
552 #define MDIO_DTEXS_TSYNCRXMAXDLYL 1805 /* TimeSync DTE XS RX MAX delay L */
553 #define MDIO_DTEXS_TSYNCRXMAXDLYH 1806 /* TimeSync DTE XS RX MAX delay H */
554 #define MDIO_DTEXS_TSYNCRXMINDLYL 1807 /* TimeSync DTE XS RX MIN delay L */
555 #define MDIO_DTEXS_TSYNCRXMINDLYH 1808 /* TimeSync DTE XS RX MIN delay H */
556           /* Values 1809 to 32767 are reserved */
557           /* Values 32768 to 65535 are vendor specific */
558 
559 /*
560  * TC registers.
561  * Table 45-186
562  */
563 #define   MDIO_TC_CTRL1                 0         /* TC control 1 */
564           /* Value 1 is reserved */
565 #define   MDIO_TC_DEVID1                2         /* TC device identifier 1 */
566 #define   MDIO_TC_DEVID2                3         /* TC device identifier 2 */
567 #define   MDIO_TC_SPEED                 4         /* TC speed ability */
568 #define   MDIO_TC_DEVS1                 5         /* TC devices in package 1 */
569 #define   MDIO_TC_DEVS2                 6         /* TC devices in package 2 */
570           /* Values 7 to 13 are reserved */
571 #define   MDIO_TC_PKGID1                14        /* TC package identifier 1 */
572 #define   MDIO_TC_PKGID2                15        /* TC package identifier 2 */
573 #define   MDIO_TC_10P2BAGGDCCTRL        16        /* 10P/2B aggregation discovery ctrl */
574 #define   MDIO_TC_10P2BAGGDCSTAT        17        /* 10P/2B aggregation&discovery stat */
575 #define   MDIO_TC_10P2BAGGDCCODE1       18        /* 10P/2B aggregation discovery code1*/
576 #define   MDIO_TC_10P2BAGGDCCODE2       19        /* 10P/2B aggregation discovery code2*/
577 #define   MDIO_TC_10P2BAGGDCCODE3       20        /* 10P/2B aggregation discovery code3*/
578 #define   MDIO_TC_10P2BLPPMEAGGCTRL 21  /* 10P/2B LP PME aggregate control */
579 #define   MDIO_TC_10P2BLPPMEAGGDAT1 22  /* 10P/2B LP PME aggregate data 1 */
580 #define   MDIO_TC_10P2BLPPMEAGGDAT2 23  /* 10P/2B LP PME aggregate data 2 */
581 #define   MDIO_TC_10P2BCRCERRCNT        24        /* 10P/2B TC CRC error counter  */
582 #define   MDIO_TC_10P2BTPSCOVIOCNT1 25  /* 10P/2B TPS-TC coding viol. cnt. 1 */
583 #define   MDIO_TC_10P2BTPSCOVIOCNT2 26  /* 10P/2B TPS-TC coding viol. cnt. 2 */
584 #define   MDIO_TC_10P2BINDIC  27        /* 10P/2B TC indications */
585           /* Values 28 to 1799 are reserved */
586 #define MDIO_TC_TSYNCCAP      1800 /* TimeSync TC capability */
587 #define MDIO_TC_TSYNCTXMAXDLYL          1801 /* TimeSync TC TX MAX delay L */
588 #define MDIO_TC_TSYNCTXMAXDLYH          1802 /* TimeSync TC TX MAX delay H */
589 #define MDIO_TC_TSYNCTXMINDLYL          1803 /* TimeSync TC TX MIN delay L */
590 #define MDIO_TC_TSYNCTXMINDLYH          1804 /* TimeSync TC TX MIN delay H */
591 #define MDIO_TC_TSYNCRXMAXDLYL          1805 /* TimeSync TC RX MAX delay L */
592 #define MDIO_TC_TSYNCRXMAXDLYH          1806 /* TimeSync TC RX MAX delay H */
593 #define MDIO_TC_TSYNCRXMINDLYL          1807 /* TimeSync TC RX MIN delay L */
594 #define MDIO_TC_TSYNCRXMINDLYH          1808 /* TimeSync TC RX MIN delay H */
595           /* Values 1809 to 32767 are reserved */
596           /* Values 32768 to 65535 are vendor specific */
597 
598 /*
599  * Auto-Negotiation registers.
600  * Table 45-200
601  */
602 #define MDIO_AN_CTRL1                   0   /* AN control 1 */
603 #define AN_CTRL1_ANRESET      0x8000 /* AN reset */
604 #define AN_CTRL1_ENP                    0x2000 /* Extended Next Page  */
605 #define AN_CTRL1_AUTOEN                 0x1000 /* Auto-Negotiation enable */
606 #define AN_CTRL1_STARTNEG     0x0200 /* Restart Auto-Negotiation */
607 
608 #define MDIO_AN_STAT1                   1   /* AN status 1 */
609 #define MDIO_AN_DEVID1                  2   /* AN device identifier 1 */
610 #define MDIO_AN_DEVID2                  3   /* AN device identifier 2 */
611           /* Value 4 is reserved */
612 #define MDIO_AN_DEVS1                   5   /* AN devices in package 1 */
613 #define MDIO_AN_DEVS2                   6   /* AN devices in package 2 */
614           /* Values 7 to 13 are reserved */
615 #define MDIO_AN_PKGID1                  14  /* AN package identifier 1 */
616 #define MDIO_AN_PKGID2                  15  /* AN package identifier 2 */
617 #define MDIO_AN_ADVERT1                 16  /* AN advertisement 1 */
618 #define MDIO_AN_ADVERT2                 17  /* AN advertisement 2 */
619 #define MDIO_AN_ADVERT3                 18  /* AN advertisement 3 */
620 #define MDIO_AN_LPBPABLTY1    19  /* AN LP base page ability 1 */
621 #define MDIO_AN_LPBPABLTY2    20  /* AN LP base page ability 2 */
622 #define MDIO_AN_LPBPABLTY3    21  /* AN LP base page ability 3 */
623 #define MDIO_AN_XNPXMIT1      22  /* AN XNP transmit 1 */
624 #define MDIO_AN_XNPXMIT2      23  /* AN XNP transmit 2 */
625 #define MDIO_AN_XNPXMIT3      24  /* AN XNP transmit 3 */
626 #define MDIO_AN_LPXNPABLTY1   25  /* AN LP XNP ability 1 */
627 #define MDIO_AN_LPXNPABLTY2   26  /* AN LP XNP ability 2 */
628 #define MDIO_AN_LPXNPABLTY3   27  /* AN LP XNP ability 3 */
629           /* Values 28 to 31 are reserved */
630 #define MDIO_AN_10GTANCTRL    32  /* 10G-T AN control */
631 #define MDIO_AN_10GTANSTAT    33  /* 10G-T AN status */
632           /* Values 34 to 47 are reserved */
633 #define MDIO_AN_BPETHSTAT     48  /* BP Ethernet status */
634           /* Values 49 to 59 are reserved */
635 #define   MDIO_AN_EEEADVERT   60  /* EEE advertisement */
636 #define   AN_EEEADVERT_100G_CR4         0x2000    /* 100GBASE-CR4 */
637 #define   AN_EEEADVERT_100G_KR4         0x1000    /* 100GBASE-KR4 */
638 #define   AN_EEEADVERT_100G_KP4         0x0800    /* 100GBASE-KP4 */
639 #define   AN_EEEADVERT_100G_CR10        0x0400    /* 100GBASE-CR10 */
640 #define   AN_EEEADVERT_40G_CR4          0x0100    /* 40GBASE-CR4 */
641 #define   AN_EEEADVERT_40G_KR4          0x0080    /* 40GBASE-KR4 */
642 #define   AN_EEEADVERT_10G_KR 0x0040    /* 10GBASE-KR */
643 #define   AN_EEEADVERT_10G_KX4          0x0020    /* 10GBASE-KX4 */
644 #define   AN_EEEADVERT_1000_KX          0x0010    /* 1000BASE-KX */
645 #define   AN_EEEADVERT_10G_T  0x0008    /* 10GBASE-T */
646 #define   AN_EEEADVERT_1000_T 0x0004    /* 1000BASE-T */
647 #define   AN_EEEADVERT_100_TX 0x0002    /* 100BASE-TX */
648 
649 #define   MDIO_AN_EEELPABLTY  61  /* EEE LP ability */
650           /* bitmap is the same as MDIO_AN_EEEADVERT(7.60) */
651 
652           /* Values 62 to 32767 are reserved */
653           /* Values 32768 to 65535 are vendor specific */
654 
655 /*
656  * Clause 22 extension registers.
657  * Table 45-212
658  */
659           /* Values 0 to 4 are reserved */
660 #define MDIO_CL22E_DEVS1      5   /* Clause 22 ext. devices in package 1 */
661 #define MDIO_CL22E_DEVS2      6   /* Clause 22 ext. devices in package 2 */
662 #define MDIO_CL22E_FECCAP     7   /* FEC capability */
663 #define MDIO_CL22E_FECCTRL    8   /* FEC control */
664 #define MDIO_CL22E_FECBHCVIOCNT         9   /* FEC buffer head coding violation cnt. */
665 #define MDIO_CL22E_FECCOBLCNT 10  /* FEC corrected blocks counter */
666 #define MDIO_CL22E_FECUNCOBLCNT         11  /* FEC uncorrected blocks counter */
667           /* Values 12 to 32767 are reserved */
668 
669 /*
670  * Vendor specific MMD 1 registers.
671  * Table 45-218
672  */
673           /* Values 0 to 1 are vendor specific */
674 #define MDIO_VSMMD1_DEVID1    2   /* Vendor specific MMD 1 device ident. 1 */
675 #define MDIO_VSMMD1_DEVID2    3   /* Vendor specific MMD 1 device ident. 2 */
676           /* Values 4 to 7 are vendor specific */
677 #define MDIO_VSMMD1_STAT      8   /* Vendor specific MMD 1 status register */
678           /* Values 9 to 13 are vendor specific */
679 #define MDIO_VSMMD1_PKGID1    14  /* Vendor specific MMD 1 package ident 1 */
680 #define MDIO_VSMMD1_PKGID2    15  /* Vendor specific MMD 1 package ident 2 */
681           /* Values 16 to 65535 are vendor specific */
682 
683 /*
684  * Vendor specific MMD 2 registers.
685  * Table 45-220
686  */
687           /* Values 0 to 1 are vendor specific */
688 #define MDIO_VSMMD2_DEVID1    2   /* Vendor specific MMD 2 device ident. 1 */
689 #define MDIO_VSMMD2_DEVID2    3   /* Vendor specific MMD 2 device ident. 2 */
690           /* Values 4 to 7 are vendor specific */
691 #define MDIO_VSMMD2_STAT      8   /* Vendor specific MMD 2 status register */
692           /* Values 9 to 13 are vendor specific */
693 #define MDIO_VSMMD2_PKGID1    14  /* Vendor specific MMD 2 package ident 1 */
694 #define MDIO_VSMMD2_PKGID2    15  /* Vendor specific MMD 2 package ident 2 */
695           /* Values 16 to 65535 are vendor specific */
696 
697 #endif /* _DEV_MII_MDIO_H_ */
698