net: phylink: pcs: add 802.3 clause 45 helpers
Implement helpers for PCS accessed via the MII bus using 802.3 clause 45 cycles for 10GBASE-R. Only link up/down is supported, 10G full duplex is assumed. Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> Signed-off-by: David S. Miller <davem@davemloft.net>alistair/sensors
parent
74db1c18d8
commit
b8679ef8be
|
@ -2274,4 +2274,34 @@ void phylink_mii_c22_pcs_an_restart(struct mdio_device *pcs)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(phylink_mii_c22_pcs_an_restart);
|
EXPORT_SYMBOL_GPL(phylink_mii_c22_pcs_an_restart);
|
||||||
|
|
||||||
|
#define C45_ADDR(d,a) (MII_ADDR_C45 | (d) << 16 | (a))
|
||||||
|
void phylink_mii_c45_pcs_get_state(struct mdio_device *pcs,
|
||||||
|
struct phylink_link_state *state)
|
||||||
|
{
|
||||||
|
struct mii_bus *bus = pcs->bus;
|
||||||
|
int addr = pcs->addr;
|
||||||
|
int stat;
|
||||||
|
|
||||||
|
stat = mdiobus_read(bus, addr, C45_ADDR(MDIO_MMD_PCS, MDIO_STAT1));
|
||||||
|
if (stat < 0) {
|
||||||
|
state->link = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
state->link = !!(stat & MDIO_STAT1_LSTATUS);
|
||||||
|
if (!state->link)
|
||||||
|
return;
|
||||||
|
|
||||||
|
switch (state->interface) {
|
||||||
|
case PHY_INTERFACE_MODE_10GBASER:
|
||||||
|
state->speed = SPEED_10000;
|
||||||
|
state->duplex = DUPLEX_FULL;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(phylink_mii_c45_pcs_get_state);
|
||||||
|
|
||||||
MODULE_LICENSE("GPL v2");
|
MODULE_LICENSE("GPL v2");
|
||||||
|
|
|
@ -323,4 +323,6 @@ int phylink_mii_c22_pcs_set_advertisement(struct mdio_device *pcs,
|
||||||
const struct phylink_link_state *state);
|
const struct phylink_link_state *state);
|
||||||
void phylink_mii_c22_pcs_an_restart(struct mdio_device *pcs);
|
void phylink_mii_c22_pcs_an_restart(struct mdio_device *pcs);
|
||||||
|
|
||||||
|
void phylink_mii_c45_pcs_get_state(struct mdio_device *pcs,
|
||||||
|
struct phylink_link_state *state);
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue