can: flexcan: avoid unbalanced pm_runtime_enable warning
authorHaibo Chen <haibo.chen@nxp.com>
Tue, 13 Dec 2022 09:43:51 +0000 (17:43 +0800)
committerMarc Kleine-Budde <mkl@pengutronix.de>
Mon, 19 Dec 2022 15:08:27 +0000 (16:08 +0100)
When do suspend/resume, meet the following warning message:
[   30.028336] flexcan 425b0000.can: Unbalanced pm_runtime_enable!

Balance the pm_runtime_force_suspend() and pm_runtime_force_resume().

Fixes: 8cb53b485f18 ("can: flexcan: add auto stop mode for IMX93 to support wakeup")
Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
Link: https://lore.kernel.org/all/20221213094351.3023858-1-haibo.chen@nxp.com
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
drivers/net/can/flexcan/flexcan-core.c

index 0aeff34..6d638c9 100644 (file)
@@ -2349,9 +2349,15 @@ static int __maybe_unused flexcan_noirq_resume(struct device *device)
        if (netif_running(dev)) {
                int err;
 
-               err = pm_runtime_force_resume(device);
-               if (err)
-                       return err;
+               /* For the wakeup in auto stop mode, no need to gate on the
+                * clock here, hardware will do this automatically.
+                */
+               if (!(device_may_wakeup(device) &&
+                     priv->devtype_data.quirks & FLEXCAN_QUIRK_AUTO_STOP_MODE)) {
+                       err = pm_runtime_force_resume(device);
+                       if (err)
+                               return err;
+               }
 
                if (device_may_wakeup(device))
                        flexcan_enable_wakeup_irq(priv, false);