can: mcp251xfd: mcp251xfd_unregister(): simplify runtime PM handling
authorMarc Kleine-Budde <mkl@pengutronix.de>
Fri, 23 Oct 2020 06:41:25 +0000 (08:41 +0200)
committerMarc Kleine-Budde <mkl@pengutronix.de>
Thu, 24 Feb 2022 07:26:04 +0000 (08:26 +0100)
The mcp251xfd driver supports runtime PM enabled kernels, but also
works on !CONFIG_PM configurations.

This patch simplifies the runtime PM handling in the
mcp251xfd_unregister(). In the CONFIG_PM case, runtime PM has been
enabled in the mcp251xfd_probe() function, so we can disable it here.
For !CONFIG_PM builds call mcp251xfd_clks_and_vdd_disable() directly.

Link: https://lore.kernel.org/all/20220207131047.282110-4-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c

index 7e0c4e66238154e355db0c53a1ae025a5a2fd17b..49ce5ff34903a7f59bdec773ffb6c366f67a1aa9 100644 (file)
@@ -1768,10 +1768,10 @@ static inline void mcp251xfd_unregister(struct mcp251xfd_priv *priv)
 
        unregister_candev(ndev);
 
-       pm_runtime_get_sync(ndev->dev.parent);
-       pm_runtime_put_noidle(ndev->dev.parent);
-       mcp251xfd_clks_and_vdd_disable(priv);
-       pm_runtime_disable(ndev->dev.parent);
+       if (pm_runtime_enabled(ndev->dev.parent))
+               pm_runtime_disable(ndev->dev.parent);
+       else
+               mcp251xfd_clks_and_vdd_disable(priv);
 }
 
 static const struct of_device_id mcp251xfd_of_match[] = {