diff options
| author | Russell King (Oracle) <[email protected]> | 2025-01-15 20:42:32 +0000 |
|---|---|---|
| committer | Jakub Kicinski <[email protected]> | 2025-01-17 01:22:59 +0000 |
| commit | a00e0d34c0362a69369f212b8be1be1f6f4c365d (patch) | |
| tree | 767c1e89af5038403fad4f5ccee9df7c338f4203 /drivers/net/phy/phy.c | |
| parent | net: mdio: add definition for clock stop capable bit (diff) | |
| download | kernel-a00e0d34c0362a69369f212b8be1be1f6f4c365d.tar.gz kernel-a00e0d34c0362a69369f212b8be1be1f6f4c365d.zip | |
net: phy: add support for querying PHY clock stop capability
Add support for querying whether the PHY allows the transmit xMII clock
to be stopped while in LPI mode. This will be used by phylink to pass
to the MAC driver so it can configure the generation of the xMII clock
appropriately.
Reviewed-by: Andrew Lunn <[email protected]>
Signed-off-by: Russell King (Oracle) <[email protected]>
Reviewed-by: Jacob Keller <[email protected]>
Link: https://patch.msgid.link/[email protected]
Signed-off-by: Jakub Kicinski <[email protected]>
Diffstat (limited to 'drivers/net/phy/phy.c')
| -rw-r--r-- | drivers/net/phy/phy.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index c008fe050245..d0c1718e2b16 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -1704,6 +1704,26 @@ void phy_mac_interrupt(struct phy_device *phydev) EXPORT_SYMBOL(phy_mac_interrupt); /** + * phy_eee_tx_clock_stop_capable() - indicate whether the MAC can stop tx clock + * @phydev: target phy_device struct + * + * Indicate whether the MAC can disable the transmit xMII clock while in LPI + * state. Returns 1 if the MAC may stop the transmit clock, 0 if the MAC must + * not stop the transmit clock, or negative error. + */ +int phy_eee_tx_clock_stop_capable(struct phy_device *phydev) +{ + int stat1; + + stat1 = phy_read_mmd(phydev, MDIO_MMD_PCS, MDIO_STAT1); + if (stat1 < 0) + return stat1; + + return !!(stat1 & MDIO_PCS_STAT1_CLKSTOP_CAP); +} +EXPORT_SYMBOL_GPL(phy_eee_tx_clock_stop_capable); + +/** * phy_eee_rx_clock_stop() - configure PHY receive clock in LPI * @phydev: target phy_device struct * @clk_stop_enable: flag to indicate whether the clock can be stopped |
