This is a note to let you know that I've just added the patch titled can: m_can_platform: don't call m_can_class_suspend in runtime suspend to the 5.4-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: can-m_can_platform-don-t-call-m_can_class_suspend-in-runtime-suspend.patch and it can be found in the queue-5.4 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From foo@baz Sat Oct 17 11:01:11 AM CEST 2020 From: Lucas Stach <l.stach@xxxxxxxxxxxxxx> Date: Tue, 11 Aug 2020 10:15:44 +0200 Subject: can: m_can_platform: don't call m_can_class_suspend in runtime suspend From: Lucas Stach <l.stach@xxxxxxxxxxxxxx> [ 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@xxxxxxxxxxxxxx> Link: https://lore.kernel.org/r/20200811081545.19921-1-l.stach@xxxxxxxxxxxxxx Acked-by: Dan Murphy <dmurphy@xxxxxx> Signed-off-by: Marc Kleine-Budde <mkl@xxxxxxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- drivers/net/can/m_can/m_can_platform.c | 2 -- 1 file changed, 2 deletions(-) --- a/drivers/net/can/m_can/m_can_platform.c +++ b/drivers/net/can/m_can/m_can_platform.c @@ -144,8 +144,6 @@ static int __maybe_unused m_can_runtime_ 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); Patches currently in stable-queue which might be from l.stach@xxxxxxxxxxxxxx are queue-5.4/can-m_can_platform-don-t-call-m_can_class_suspend-in-runtime-suspend.patch