]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
can: m_can_platform: don't call m_can_class_suspend in runtime suspend
authorLucas Stach <l.stach@pengutronix.de>
Tue, 11 Aug 2020 08:15:44 +0000 (10:15 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 29 Oct 2020 09:07:02 +0000 (10:07 +0100)
[ Upstream commit 81f1f5ae8b3cbd54fdd994c9e9aacdb7b414a802 ]

    0704c5743694 can: m_can_platform: remove unnecessary m_can_class_resume() call

removed the m_can_class_resume() call in the runtime resume path to get
rid of a infinite recursion, so the runtime resume now only handles the device
clocks.

Unfortunately it did not remove the complementary m_can_class_suspend() call in
the runtime suspend function, so those paths are now unbalanced, which causes
the pinctrl state to get stuck on the "sleep" state, which breaks all CAN
functionality on SoCs where this state is defined. Remove the
m_can_class_suspend() call to fix this.

Fixes: 0704c5743694 can: m_can_platform: remove unnecessary m_can_class_resume() call
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Link: https://lore.kernel.org/r/20200811081545.19921-1-l.stach@pengutronix.de
Acked-by: Dan Murphy <dmurphy@ti.com>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/net/can/m_can/m_can_platform.c

index 38ea5e600fb84c1f6becf06c90d967f1f4ba7529..e6d0cb9ee02f0e1002dc8f3784c2b45daf488a8c 100644 (file)
@@ -144,8 +144,6 @@ static int __maybe_unused m_can_runtime_suspend(struct device *dev)
        struct net_device *ndev = dev_get_drvdata(dev);
        struct m_can_classdev *mcan_class = netdev_priv(ndev);
 
-       m_can_class_suspend(dev);
-
        clk_disable_unprepare(mcan_class->cclk);
        clk_disable_unprepare(mcan_class->hclk);