0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #ifndef _UAPI__LINUX_MDIO_H__
0012 #define _UAPI__LINUX_MDIO_H__
0013
0014 #include <linux/types.h>
0015 #include <linux/mii.h>
0016
0017
0018 #define MDIO_MMD_PMAPMD 1
0019
0020 #define MDIO_MMD_WIS 2
0021 #define MDIO_MMD_PCS 3
0022 #define MDIO_MMD_PHYXS 4
0023 #define MDIO_MMD_DTEXS 5
0024 #define MDIO_MMD_TC 6
0025 #define MDIO_MMD_AN 7
0026 #define MDIO_MMD_C22EXT 29
0027 #define MDIO_MMD_VEND1 30
0028 #define MDIO_MMD_VEND2 31
0029
0030
0031 #define MDIO_CTRL1 MII_BMCR
0032 #define MDIO_STAT1 MII_BMSR
0033 #define MDIO_DEVID1 MII_PHYSID1
0034 #define MDIO_DEVID2 MII_PHYSID2
0035 #define MDIO_SPEED 4
0036 #define MDIO_DEVS1 5
0037 #define MDIO_DEVS2 6
0038 #define MDIO_CTRL2 7
0039 #define MDIO_STAT2 8
0040 #define MDIO_PMA_TXDIS 9
0041 #define MDIO_PMA_RXDET 10
0042 #define MDIO_PMA_EXTABLE 11
0043 #define MDIO_PKGID1 14
0044 #define MDIO_PKGID2 15
0045 #define MDIO_AN_ADVERTISE 16
0046 #define MDIO_AN_LPA 19
0047 #define MDIO_PCS_EEE_ABLE 20
0048 #define MDIO_PCS_EEE_ABLE2 21
0049 #define MDIO_PMA_NG_EXTABLE 21
0050 #define MDIO_PCS_EEE_WK_ERR 22
0051 #define MDIO_PHYXS_LNSTAT 24
0052 #define MDIO_AN_EEE_ADV 60
0053 #define MDIO_AN_EEE_LPABLE 61
0054 #define MDIO_AN_EEE_ADV2 62
0055 #define MDIO_AN_EEE_LPABLE2 63
0056 #define MDIO_AN_CTRL2 64
0057
0058
0059 #define MDIO_PMA_10GBT_SWAPPOL 130
0060 #define MDIO_PMA_10GBT_TXPWR 131
0061 #define MDIO_PMA_10GBT_SNR 133
0062
0063 #define MDIO_PMA_10GBR_FSRT_CSR 147
0064 #define MDIO_PMA_10GBR_FECABLE 170
0065 #define MDIO_PCS_10GBX_STAT1 24
0066 #define MDIO_PCS_10GBRT_STAT1 32
0067 #define MDIO_PCS_10GBRT_STAT2 33
0068 #define MDIO_AN_10GBT_CTRL 32
0069 #define MDIO_AN_10GBT_STAT 33
0070 #define MDIO_B10L_PMA_CTRL 2294
0071 #define MDIO_PMA_10T1L_STAT 2295
0072 #define MDIO_PCS_10T1L_CTRL 2278
0073 #define MDIO_PMA_PMD_BT1 18
0074 #define MDIO_AN_T1_CTRL 512
0075 #define MDIO_AN_T1_STAT 513
0076 #define MDIO_AN_T1_ADV_L 514
0077 #define MDIO_AN_T1_ADV_M 515
0078 #define MDIO_AN_T1_ADV_H 516
0079 #define MDIO_AN_T1_LP_L 517
0080 #define MDIO_AN_T1_LP_M 518
0081 #define MDIO_AN_T1_LP_H 519
0082 #define MDIO_PMA_PMD_BT1_CTRL 2100
0083
0084
0085 #define MDIO_PMA_LASI_RXCTRL 0x9000
0086 #define MDIO_PMA_LASI_TXCTRL 0x9001
0087 #define MDIO_PMA_LASI_CTRL 0x9002
0088 #define MDIO_PMA_LASI_RXSTAT 0x9003
0089 #define MDIO_PMA_LASI_TXSTAT 0x9004
0090 #define MDIO_PMA_LASI_STAT 0x9005
0091
0092
0093
0094 #define MDIO_CTRL1_SPEEDSELEXT (BMCR_SPEED1000 | BMCR_SPEED100)
0095
0096 #define MDIO_CTRL1_SPEEDSEL (MDIO_CTRL1_SPEEDSELEXT | 0x003c)
0097 #define MDIO_CTRL1_FULLDPLX BMCR_FULLDPLX
0098 #define MDIO_CTRL1_LPOWER BMCR_PDOWN
0099 #define MDIO_CTRL1_RESET BMCR_RESET
0100 #define MDIO_PMA_CTRL1_LOOPBACK 0x0001
0101 #define MDIO_PMA_CTRL1_SPEED1000 BMCR_SPEED1000
0102 #define MDIO_PMA_CTRL1_SPEED100 BMCR_SPEED100
0103 #define MDIO_PCS_CTRL1_LOOPBACK BMCR_LOOPBACK
0104 #define MDIO_PHYXS_CTRL1_LOOPBACK BMCR_LOOPBACK
0105 #define MDIO_AN_CTRL1_RESTART BMCR_ANRESTART
0106 #define MDIO_AN_CTRL1_ENABLE BMCR_ANENABLE
0107 #define MDIO_AN_CTRL1_XNP 0x2000
0108 #define MDIO_PCS_CTRL1_CLKSTOP_EN 0x400
0109
0110
0111 #define MDIO_CTRL1_SPEED10G (MDIO_CTRL1_SPEEDSELEXT | 0x00)
0112
0113 #define MDIO_CTRL1_SPEED10P2B (MDIO_CTRL1_SPEEDSELEXT | 0x04)
0114
0115 #define MDIO_CTRL1_SPEED2_5G (MDIO_CTRL1_SPEEDSELEXT | 0x18)
0116
0117 #define MDIO_CTRL1_SPEED5G (MDIO_CTRL1_SPEEDSELEXT | 0x1c)
0118
0119
0120 #define MDIO_STAT1_LPOWERABLE 0x0002
0121 #define MDIO_STAT1_LSTATUS BMSR_LSTATUS
0122 #define MDIO_STAT1_FAULT 0x0080
0123 #define MDIO_AN_STAT1_LPABLE 0x0001
0124 #define MDIO_AN_STAT1_ABLE BMSR_ANEGCAPABLE
0125 #define MDIO_AN_STAT1_RFAULT BMSR_RFAULT
0126 #define MDIO_AN_STAT1_COMPLETE BMSR_ANEGCOMPLETE
0127 #define MDIO_AN_STAT1_PAGE 0x0040
0128 #define MDIO_AN_STAT1_XNP 0x0080
0129
0130
0131 #define MDIO_SPEED_10G 0x0001
0132 #define MDIO_PMA_SPEED_2B 0x0002
0133 #define MDIO_PMA_SPEED_10P 0x0004
0134 #define MDIO_PMA_SPEED_1000 0x0010
0135 #define MDIO_PMA_SPEED_100 0x0020
0136 #define MDIO_PMA_SPEED_10 0x0040
0137 #define MDIO_PCS_SPEED_10P2B 0x0002
0138 #define MDIO_PCS_SPEED_2_5G 0x0040
0139 #define MDIO_PCS_SPEED_5G 0x0080
0140
0141
0142 #define MDIO_DEVS_PRESENT(devad) (1 << (devad))
0143 #define MDIO_DEVS_C22PRESENT MDIO_DEVS_PRESENT(0)
0144 #define MDIO_DEVS_PMAPMD MDIO_DEVS_PRESENT(MDIO_MMD_PMAPMD)
0145 #define MDIO_DEVS_WIS MDIO_DEVS_PRESENT(MDIO_MMD_WIS)
0146 #define MDIO_DEVS_PCS MDIO_DEVS_PRESENT(MDIO_MMD_PCS)
0147 #define MDIO_DEVS_PHYXS MDIO_DEVS_PRESENT(MDIO_MMD_PHYXS)
0148 #define MDIO_DEVS_DTEXS MDIO_DEVS_PRESENT(MDIO_MMD_DTEXS)
0149 #define MDIO_DEVS_TC MDIO_DEVS_PRESENT(MDIO_MMD_TC)
0150 #define MDIO_DEVS_AN MDIO_DEVS_PRESENT(MDIO_MMD_AN)
0151 #define MDIO_DEVS_C22EXT MDIO_DEVS_PRESENT(MDIO_MMD_C22EXT)
0152 #define MDIO_DEVS_VEND1 MDIO_DEVS_PRESENT(MDIO_MMD_VEND1)
0153 #define MDIO_DEVS_VEND2 MDIO_DEVS_PRESENT(MDIO_MMD_VEND2)
0154
0155
0156 #define MDIO_PMA_CTRL2_TYPE 0x000f
0157 #define MDIO_PMA_CTRL2_10GBCX4 0x0000
0158 #define MDIO_PMA_CTRL2_10GBEW 0x0001
0159 #define MDIO_PMA_CTRL2_10GBLW 0x0002
0160 #define MDIO_PMA_CTRL2_10GBSW 0x0003
0161 #define MDIO_PMA_CTRL2_10GBLX4 0x0004
0162 #define MDIO_PMA_CTRL2_10GBER 0x0005
0163 #define MDIO_PMA_CTRL2_10GBLR 0x0006
0164 #define MDIO_PMA_CTRL2_10GBSR 0x0007
0165 #define MDIO_PMA_CTRL2_10GBLRM 0x0008
0166 #define MDIO_PMA_CTRL2_10GBT 0x0009
0167 #define MDIO_PMA_CTRL2_10GBKX4 0x000a
0168 #define MDIO_PMA_CTRL2_10GBKR 0x000b
0169 #define MDIO_PMA_CTRL2_1000BT 0x000c
0170 #define MDIO_PMA_CTRL2_1000BKX 0x000d
0171 #define MDIO_PMA_CTRL2_100BTX 0x000e
0172 #define MDIO_PMA_CTRL2_10BT 0x000f
0173 #define MDIO_PMA_CTRL2_2_5GBT 0x0030
0174 #define MDIO_PMA_CTRL2_5GBT 0x0031
0175 #define MDIO_PMA_CTRL2_BASET1 0x003D
0176 #define MDIO_PCS_CTRL2_TYPE 0x0003
0177 #define MDIO_PCS_CTRL2_10GBR 0x0000
0178 #define MDIO_PCS_CTRL2_10GBX 0x0001
0179 #define MDIO_PCS_CTRL2_10GBW 0x0002
0180 #define MDIO_PCS_CTRL2_10GBT 0x0003
0181
0182
0183 #define MDIO_STAT2_RXFAULT 0x0400
0184 #define MDIO_STAT2_TXFAULT 0x0800
0185 #define MDIO_STAT2_DEVPRST 0xc000
0186 #define MDIO_STAT2_DEVPRST_VAL 0x8000
0187 #define MDIO_PMA_STAT2_LBABLE 0x0001
0188 #define MDIO_PMA_STAT2_10GBEW 0x0002
0189 #define MDIO_PMA_STAT2_10GBLW 0x0004
0190 #define MDIO_PMA_STAT2_10GBSW 0x0008
0191 #define MDIO_PMA_STAT2_10GBLX4 0x0010
0192 #define MDIO_PMA_STAT2_10GBER 0x0020
0193 #define MDIO_PMA_STAT2_10GBLR 0x0040
0194 #define MDIO_PMA_STAT2_10GBSR 0x0080
0195 #define MDIO_PMD_STAT2_TXDISAB 0x0100
0196 #define MDIO_PMA_STAT2_EXTABLE 0x0200
0197 #define MDIO_PMA_STAT2_RXFLTABLE 0x1000
0198 #define MDIO_PMA_STAT2_TXFLTABLE 0x2000
0199 #define MDIO_PCS_STAT2_10GBR 0x0001
0200 #define MDIO_PCS_STAT2_10GBX 0x0002
0201 #define MDIO_PCS_STAT2_10GBW 0x0004
0202 #define MDIO_PCS_STAT2_RXFLTABLE 0x1000
0203 #define MDIO_PCS_STAT2_TXFLTABLE 0x2000
0204
0205
0206 #define MDIO_PMD_TXDIS_GLOBAL 0x0001
0207 #define MDIO_PMD_TXDIS_0 0x0002
0208 #define MDIO_PMD_TXDIS_1 0x0004
0209 #define MDIO_PMD_TXDIS_2 0x0008
0210 #define MDIO_PMD_TXDIS_3 0x0010
0211
0212
0213 #define MDIO_PMD_RXDET_GLOBAL 0x0001
0214 #define MDIO_PMD_RXDET_0 0x0002
0215 #define MDIO_PMD_RXDET_1 0x0004
0216 #define MDIO_PMD_RXDET_2 0x0008
0217 #define MDIO_PMD_RXDET_3 0x0010
0218
0219
0220 #define MDIO_PMA_EXTABLE_10GCX4 0x0001
0221 #define MDIO_PMA_EXTABLE_10GBLRM 0x0002
0222 #define MDIO_PMA_EXTABLE_10GBT 0x0004
0223 #define MDIO_PMA_EXTABLE_10GBKX4 0x0008
0224 #define MDIO_PMA_EXTABLE_10GBKR 0x0010
0225 #define MDIO_PMA_EXTABLE_1000BT 0x0020
0226 #define MDIO_PMA_EXTABLE_1000BKX 0x0040
0227 #define MDIO_PMA_EXTABLE_100BTX 0x0080
0228 #define MDIO_PMA_EXTABLE_10BT 0x0100
0229 #define MDIO_PMA_EXTABLE_BT1 0x0800
0230 #define MDIO_PMA_EXTABLE_NBT 0x4000
0231
0232
0233 #define MDIO_PHYXS_LNSTAT_SYNC0 0x0001
0234 #define MDIO_PHYXS_LNSTAT_SYNC1 0x0002
0235 #define MDIO_PHYXS_LNSTAT_SYNC2 0x0004
0236 #define MDIO_PHYXS_LNSTAT_SYNC3 0x0008
0237 #define MDIO_PHYXS_LNSTAT_ALIGN 0x1000
0238
0239
0240 #define MDIO_PMA_10GBT_SWAPPOL_ABNX 0x0001
0241 #define MDIO_PMA_10GBT_SWAPPOL_CDNX 0x0002
0242 #define MDIO_PMA_10GBT_SWAPPOL_AREV 0x0100
0243 #define MDIO_PMA_10GBT_SWAPPOL_BREV 0x0200
0244 #define MDIO_PMA_10GBT_SWAPPOL_CREV 0x0400
0245 #define MDIO_PMA_10GBT_SWAPPOL_DREV 0x0800
0246
0247
0248 #define MDIO_PMA_10GBT_TXPWR_SHORT 0x0001
0249
0250
0251
0252 #define MDIO_PMA_10GBT_SNR_BIAS 0x8000
0253 #define MDIO_PMA_10GBT_SNR_MAX 127
0254
0255
0256 #define MDIO_PMA_10GBR_FECABLE_ABLE 0x0001
0257 #define MDIO_PMA_10GBR_FECABLE_ERRABLE 0x0002
0258
0259
0260 #define MDIO_PMA_10GBR_FSRT_ENABLE 0x0001
0261
0262
0263 #define MDIO_PCS_10GBRT_STAT1_BLKLK 0x0001
0264
0265
0266 #define MDIO_PCS_10GBRT_STAT2_ERR 0x00ff
0267 #define MDIO_PCS_10GBRT_STAT2_BER 0x3f00
0268
0269
0270 #define MDIO_AN_10GBT_CTRL_ADVFSRT2_5G 0x0020
0271 #define MDIO_AN_10GBT_CTRL_ADV2_5G 0x0080
0272 #define MDIO_AN_10GBT_CTRL_ADV5G 0x0100
0273 #define MDIO_AN_10GBT_CTRL_ADV10G 0x1000
0274
0275
0276 #define MDIO_AN_10GBT_STAT_LP2_5G 0x0020
0277 #define MDIO_AN_10GBT_STAT_LP5G 0x0040
0278 #define MDIO_AN_10GBT_STAT_LPTRR 0x0200
0279 #define MDIO_AN_10GBT_STAT_LPLTABLE 0x0400
0280 #define MDIO_AN_10GBT_STAT_LP10G 0x0800
0281 #define MDIO_AN_10GBT_STAT_REMOK 0x1000
0282 #define MDIO_AN_10GBT_STAT_LOCOK 0x2000
0283 #define MDIO_AN_10GBT_STAT_MS 0x4000
0284 #define MDIO_AN_10GBT_STAT_MSFLT 0x8000
0285
0286
0287 #define MDIO_PMA_10T1L_CTRL_LB_EN 0x0001
0288 #define MDIO_PMA_10T1L_CTRL_EEE_EN 0x0400
0289 #define MDIO_PMA_10T1L_CTRL_LOW_POWER 0x0800
0290 #define MDIO_PMA_10T1L_CTRL_2V4_EN 0x1000
0291 #define MDIO_PMA_10T1L_CTRL_TX_DIS 0x4000
0292 #define MDIO_PMA_10T1L_CTRL_PMA_RST 0x8000
0293
0294
0295 #define MDIO_PMA_10T1L_STAT_LINK 0x0001
0296 #define MDIO_PMA_10T1L_STAT_FAULT 0x0002
0297 #define MDIO_PMA_10T1L_STAT_POLARITY 0x0004
0298 #define MDIO_PMA_10T1L_STAT_RECV_FAULT 0x0200
0299 #define MDIO_PMA_10T1L_STAT_EEE 0x0400
0300 #define MDIO_PMA_10T1L_STAT_LOW_POWER 0x0800
0301 #define MDIO_PMA_10T1L_STAT_2V4_ABLE 0x1000
0302 #define MDIO_PMA_10T1L_STAT_LB_ABLE 0x2000
0303
0304
0305 #define MDIO_PCS_10T1L_CTRL_LB 0x4000
0306 #define MDIO_PCS_10T1L_CTRL_RESET 0x8000
0307
0308
0309 #define MDIO_PMA_PMD_BT1_B10L_ABLE 0x0004
0310
0311
0312 #define MDIO_AN_T1_ADV_L_PAUSE_CAP ADVERTISE_PAUSE_CAP
0313 #define MDIO_AN_T1_ADV_L_PAUSE_ASYM ADVERTISE_PAUSE_ASYM
0314 #define MDIO_AN_T1_ADV_L_FORCE_MS 0x1000
0315 #define MDIO_AN_T1_ADV_L_REMOTE_FAULT ADVERTISE_RFAULT
0316 #define MDIO_AN_T1_ADV_L_ACK ADVERTISE_LPACK
0317 #define MDIO_AN_T1_ADV_L_NEXT_PAGE_REQ ADVERTISE_NPAGE
0318
0319
0320 #define MDIO_AN_T1_ADV_M_B10L 0x4000
0321 #define MDIO_AN_T1_ADV_M_MST 0x0010
0322
0323
0324 #define MDIO_AN_T1_ADV_H_10L_TX_HI_REQ 0x1000
0325 #define MDIO_AN_T1_ADV_H_10L_TX_HI 0x2000
0326
0327
0328 #define MDIO_AN_T1_LP_L_PAUSE_CAP LPA_PAUSE_CAP
0329 #define MDIO_AN_T1_LP_L_PAUSE_ASYM LPA_PAUSE_ASYM
0330 #define MDIO_AN_T1_LP_L_FORCE_MS 0x1000
0331 #define MDIO_AN_T1_LP_L_REMOTE_FAULT LPA_RFAULT
0332 #define MDIO_AN_T1_LP_L_ACK LPA_LPACK
0333 #define MDIO_AN_T1_LP_L_NEXT_PAGE_REQ LPA_NPAGE
0334
0335
0336 #define MDIO_AN_T1_LP_M_MST 0x0010
0337 #define MDIO_AN_T1_LP_M_B10L 0x4000
0338
0339
0340 #define MDIO_AN_T1_LP_H_10L_TX_HI_REQ 0x1000
0341 #define MDIO_AN_T1_LP_H_10L_TX_HI 0x2000
0342
0343
0344 #define MDIO_PMA_PMD_BT1_CTRL_CFG_MST 0x4000
0345
0346
0347
0348
0349
0350
0351
0352 #define MDIO_AN_EEE_ADV_100TX 0x0002
0353 #define MDIO_AN_EEE_ADV_1000T 0x0004
0354
0355
0356
0357
0358
0359 #define MDIO_EEE_100TX MDIO_AN_EEE_ADV_100TX
0360 #define MDIO_EEE_1000T MDIO_AN_EEE_ADV_1000T
0361 #define MDIO_EEE_10GT 0x0008
0362 #define MDIO_EEE_1000KX 0x0010
0363 #define MDIO_EEE_10GKX4 0x0020
0364 #define MDIO_EEE_10GKR 0x0040
0365 #define MDIO_EEE_40GR_FW 0x0100
0366 #define MDIO_EEE_40GR_DS 0x0200
0367 #define MDIO_EEE_100GR_FW 0x1000
0368 #define MDIO_EEE_100GR_DS 0x2000
0369
0370 #define MDIO_EEE_2_5GT 0x0001
0371 #define MDIO_EEE_5GT 0x0002
0372
0373
0374 #define MDIO_AN_THP_BP2_5GT 0x0008
0375
0376
0377 #define MDIO_PMA_NG_EXTABLE_2_5GBT 0x0001
0378 #define MDIO_PMA_NG_EXTABLE_5GBT 0x0002
0379
0380
0381 #define MDIO_PMA_LASI_RX_PHYXSLFLT 0x0001
0382 #define MDIO_PMA_LASI_RX_PCSLFLT 0x0008
0383 #define MDIO_PMA_LASI_RX_PMALFLT 0x0010
0384 #define MDIO_PMA_LASI_RX_OPTICPOWERFLT 0x0020
0385 #define MDIO_PMA_LASI_RX_WISLFLT 0x0200
0386
0387
0388 #define MDIO_PMA_LASI_TX_PHYXSLFLT 0x0001
0389 #define MDIO_PMA_LASI_TX_PCSLFLT 0x0008
0390 #define MDIO_PMA_LASI_TX_PMALFLT 0x0010
0391 #define MDIO_PMA_LASI_TX_LASERPOWERFLT 0x0080
0392 #define MDIO_PMA_LASI_TX_LASERTEMPFLT 0x0100
0393 #define MDIO_PMA_LASI_TX_LASERBICURRFLT 0x0200
0394
0395
0396 #define MDIO_PMA_LASI_LSALARM 0x0001
0397 #define MDIO_PMA_LASI_TXALARM 0x0002
0398 #define MDIO_PMA_LASI_RXALARM 0x0004
0399
0400
0401
0402 #define MDIO_PHY_ID_C45 0x8000
0403 #define MDIO_PHY_ID_PRTAD 0x03e0
0404 #define MDIO_PHY_ID_DEVAD 0x001f
0405 #define MDIO_PHY_ID_C45_MASK \
0406 (MDIO_PHY_ID_C45 | MDIO_PHY_ID_PRTAD | MDIO_PHY_ID_DEVAD)
0407
0408 static inline __u16 mdio_phy_id_c45(int prtad, int devad)
0409 {
0410 return MDIO_PHY_ID_C45 | (prtad << 5) | devad;
0411 }
0412
0413
0414 #define MDIO_USXGMII_EEE_CLK_STP 0x0080
0415 #define MDIO_USXGMII_EEE 0x0100
0416 #define MDIO_USXGMII_SPD_MASK 0x0e00
0417 #define MDIO_USXGMII_FULL_DUPLEX 0x1000
0418 #define MDIO_USXGMII_DPX_SPD_MASK 0x1e00
0419 #define MDIO_USXGMII_10 0x0000
0420 #define MDIO_USXGMII_10HALF 0x0000
0421 #define MDIO_USXGMII_10FULL 0x1000
0422 #define MDIO_USXGMII_100 0x0200
0423 #define MDIO_USXGMII_100HALF 0x0200
0424 #define MDIO_USXGMII_100FULL 0x1200
0425 #define MDIO_USXGMII_1000 0x0400
0426 #define MDIO_USXGMII_1000HALF 0x0400
0427 #define MDIO_USXGMII_1000FULL 0x1400
0428 #define MDIO_USXGMII_10G 0x0600
0429 #define MDIO_USXGMII_10GHALF 0x0600
0430 #define MDIO_USXGMII_10GFULL 0x1600
0431 #define MDIO_USXGMII_2500 0x0800
0432 #define MDIO_USXGMII_2500HALF 0x0800
0433 #define MDIO_USXGMII_2500FULL 0x1800
0434 #define MDIO_USXGMII_5000 0x0a00
0435 #define MDIO_USXGMII_5000HALF 0x0a00
0436 #define MDIO_USXGMII_5000FULL 0x1a00
0437 #define MDIO_USXGMII_LINK 0x8000
0438
0439 #endif