mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-07 16:17:41 -04:00
net: ti: icssg-prueth: Add Power management support
Add suspend / resume APIs to support power management in ICSSG ethernet driver. Reviewed-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: MD Danish Anwar <danishanwar@ti.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
8fb86b0dca
commit
a46750a13b
@@ -1813,6 +1813,62 @@ static void prueth_remove(struct platform_device *pdev)
|
||||
prueth_put_cores(prueth, ICSS_SLICE0);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM_SLEEP
|
||||
static int prueth_suspend(struct device *dev)
|
||||
{
|
||||
struct prueth *prueth = dev_get_drvdata(dev);
|
||||
struct net_device *ndev;
|
||||
int i, ret;
|
||||
|
||||
for (i = 0; i < PRUETH_NUM_MACS; i++) {
|
||||
ndev = prueth->registered_netdevs[i];
|
||||
|
||||
if (!ndev)
|
||||
continue;
|
||||
|
||||
if (netif_running(ndev)) {
|
||||
netif_device_detach(ndev);
|
||||
ret = emac_ndo_stop(ndev);
|
||||
if (ret < 0) {
|
||||
netdev_err(ndev, "failed to stop: %d", ret);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int prueth_resume(struct device *dev)
|
||||
{
|
||||
struct prueth *prueth = dev_get_drvdata(dev);
|
||||
struct net_device *ndev;
|
||||
int i, ret;
|
||||
|
||||
for (i = 0; i < PRUETH_NUM_MACS; i++) {
|
||||
ndev = prueth->registered_netdevs[i];
|
||||
|
||||
if (!ndev)
|
||||
continue;
|
||||
|
||||
if (netif_running(ndev)) {
|
||||
ret = emac_ndo_open(ndev);
|
||||
if (ret < 0) {
|
||||
netdev_err(ndev, "failed to start: %d", ret);
|
||||
return ret;
|
||||
}
|
||||
netif_device_attach(ndev);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif /* CONFIG_PM_SLEEP */
|
||||
|
||||
static const struct dev_pm_ops prueth_dev_pm_ops = {
|
||||
SET_SYSTEM_SLEEP_PM_OPS(prueth_suspend, prueth_resume)
|
||||
};
|
||||
|
||||
static const struct prueth_pdata am654_icssg_pdata = {
|
||||
.fdqring_mode = K3_RINGACC_RING_MODE_MESSAGE,
|
||||
.quirk_10m_link_issue = 1,
|
||||
@@ -1830,6 +1886,7 @@ static struct platform_driver prueth_driver = {
|
||||
.driver = {
|
||||
.name = "icssg-prueth",
|
||||
.of_match_table = prueth_dt_match,
|
||||
.pm = &prueth_dev_pm_ops,
|
||||
},
|
||||
};
|
||||
module_platform_driver(prueth_driver);
|
||||
|
||||
Reference in New Issue
Block a user