mirror of https://gitee.com/openkylin/linux.git
net: phy: provide phy_resume/phy_suspend helpers
This adds helper functions to resume and suspend a given phy_device by calling the corresponding driver callbacks if available. Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> Acked-by: Mugunthan V N <mugunthanvnm@ti.com> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
0898b448b3
commit
481b5d938b
|
@ -679,6 +679,30 @@ void phy_detach(struct phy_device *phydev)
|
|||
}
|
||||
EXPORT_SYMBOL(phy_detach);
|
||||
|
||||
int phy_suspend(struct phy_device *phydev)
|
||||
{
|
||||
struct phy_driver *phydrv = to_phy_driver(phydev->dev.driver);
|
||||
struct ethtool_wolinfo wol;
|
||||
|
||||
/* If the device has WOL enabled, we cannot suspend the PHY */
|
||||
wol.cmd = ETHTOOL_GWOL;
|
||||
phy_ethtool_get_wol(phydev, &wol);
|
||||
if (wol.wolopts)
|
||||
return -EBUSY;
|
||||
|
||||
if (phydrv->suspend)
|
||||
return phydrv->suspend(phydev);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int phy_resume(struct phy_device *phydev)
|
||||
{
|
||||
struct phy_driver *phydrv = to_phy_driver(phydev->dev.driver);
|
||||
|
||||
if (phydrv->resume)
|
||||
return phydrv->resume(phydev);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Generic PHY support and helper functions */
|
||||
|
||||
|
|
|
@ -548,6 +548,8 @@ struct phy_device *phy_device_create(struct mii_bus *bus, int addr, int phy_id,
|
|||
struct phy_device *get_phy_device(struct mii_bus *bus, int addr, bool is_c45);
|
||||
int phy_device_register(struct phy_device *phy);
|
||||
int phy_init_hw(struct phy_device *phydev);
|
||||
int phy_suspend(struct phy_device *phydev);
|
||||
int phy_resume(struct phy_device *phydev);
|
||||
struct phy_device * phy_attach(struct net_device *dev,
|
||||
const char *bus_id, phy_interface_t interface);
|
||||
struct phy_device *phy_find_first(struct mii_bus *bus);
|
||||
|
|
Loading…
Reference in New Issue