Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 481b5d93 authored by Sebastian Hesselbarth's avatar Sebastian Hesselbarth Committed by David S. Miller
Browse files

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: default avatarSebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
Acked-by: default avatarMugunthan V N <mugunthanvnm@ti.com>
Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 0898b448
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line
@@ -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 */

+2 −0
Original line number Diff line number Diff line
@@ -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);