Skip to content

Commit a00e6c3

Browse files
Joakim Zhanggregkh
authored andcommitted
can: flexcan: disable clocks during stop mode
[ Upstream commit 02f71c6 ] Disable clocks while CAN core is in stop mode. Signed-off-by: Joakim Zhang <qiangqing.zhang@nxp.com> Tested-by: Sean Nyekjaer <sean@geanix.com> Link: https://lore.kernel.org/r/20191210085721.9853-2-qiangqing.zhang@nxp.com Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> Signed-off-by: Sasha Levin <sashal@kernel.org>
1 parent e209509 commit a00e6c3

1 file changed

Lines changed: 20 additions & 10 deletions

File tree

drivers/net/can/flexcan.c

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1722,8 +1722,6 @@ static int __maybe_unused flexcan_suspend(struct device *device)
17221722
err = flexcan_chip_disable(priv);
17231723
if (err)
17241724
return err;
1725-
1726-
err = pm_runtime_force_suspend(device);
17271725
}
17281726
netif_stop_queue(dev);
17291727
netif_device_detach(dev);
@@ -1749,10 +1747,6 @@ static int __maybe_unused flexcan_resume(struct device *device)
17491747
if (err)
17501748
return err;
17511749
} else {
1752-
err = pm_runtime_force_resume(device);
1753-
if (err)
1754-
return err;
1755-
17561750
err = flexcan_chip_enable(priv);
17571751
}
17581752
}
@@ -1783,8 +1777,16 @@ static int __maybe_unused flexcan_noirq_suspend(struct device *device)
17831777
struct net_device *dev = dev_get_drvdata(device);
17841778
struct flexcan_priv *priv = netdev_priv(dev);
17851779

1786-
if (netif_running(dev) && device_may_wakeup(device))
1787-
flexcan_enable_wakeup_irq(priv, true);
1780+
if (netif_running(dev)) {
1781+
int err;
1782+
1783+
if (device_may_wakeup(device))
1784+
flexcan_enable_wakeup_irq(priv, true);
1785+
1786+
err = pm_runtime_force_suspend(device);
1787+
if (err)
1788+
return err;
1789+
}
17881790

17891791
return 0;
17901792
}
@@ -1794,8 +1796,16 @@ static int __maybe_unused flexcan_noirq_resume(struct device *device)
17941796
struct net_device *dev = dev_get_drvdata(device);
17951797
struct flexcan_priv *priv = netdev_priv(dev);
17961798

1797-
if (netif_running(dev) && device_may_wakeup(device))
1798-
flexcan_enable_wakeup_irq(priv, false);
1799+
if (netif_running(dev)) {
1800+
int err;
1801+
1802+
err = pm_runtime_force_resume(device);
1803+
if (err)
1804+
return err;
1805+
1806+
if (device_may_wakeup(device))
1807+
flexcan_enable_wakeup_irq(priv, false);
1808+
}
17991809

18001810
return 0;
18011811
}

0 commit comments

Comments
 (0)