PM / devfreq: Convert to DEFINE_SIMPLE_DEV_PM_OPS()

Message ID 20260820072636.2049617-1-triet.hoang.dev@gmail.com (mailing list archive)
State New
Headers
Series PM / devfreq: Convert to DEFINE_SIMPLE_DEV_PM_OPS() |

Commit Message

Triet Hoang Aug. 20, 2026, 7:26 a.m. UTC
Convert the deprecated SIMPLE_DEV_PM_OPS
to DEFINE_SIMPLE_DEV_PM_OPS and pm_sleep_ptr().

This lets us drop the __maybe_unused annotations from the suspend and
resume callbacks, and reduces kernel size in case CONFIG_PM or
CONFIG_PM_SLEEP is disabled.

Signed-off-by: Triet Hoang <triet.hoang.dev@gmail.com>
---
 drivers/devfreq/rk3399_dmc.c     | 8 ++++----
 drivers/devfreq/sun8i-a33-mbus.c | 8 ++++----
 2 files changed, 8 insertions(+), 8 deletions(-)
  

Comments

sashiko-bot@kernel.org Aug. 20, 2026, 7:35 a.m. UTC | #1
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Low] The drivers incorrectly use `pm_sleep_ptr()` instead of `pm_ptr()` for assigning the `dev_pm_ops` structure pointer to the driver's `.pm` field.
--

--- Patch [1]: [PATCH] PM / devfreq: Convert to DEFINE_SIMPLE_DEV_PM_OPS() ---
commit a6ee24f192dd2bca22b18dedee330c5384183db0
Author: Triet Hoang <triet.hoang.dev@gmail.com>

PM / devfreq: Convert to DEFINE_SIMPLE_DEV_PM_OPS()

This commit converts the deprecated SIMPLE_DEV_PM_OPS to
DEFINE_SIMPLE_DEV_PM_OPS and drops __maybe_unused annotations. It also
updates the pm assignments to reduce kernel size when PM configs are
disabled.

> diff --git a/drivers/devfreq/rk3399_dmc.c b/drivers/devfreq/rk3399_dmc.c
> index dbdce7636ca5b..3ebc817fa6084 100644
> --- a/drivers/devfreq/rk3399_dmc.c
> +++ b/drivers/devfreq/rk3399_dmc.c
[ ... ]
> @@ -477,7 +477,7 @@ static struct platform_driver rk3399_dmcfreq_driver = {
>  	.remove = rk3399_dmcfreq_remove,
>  	.driver = {
>  		.name	= "rk3399-dmc-freq",
> -		.pm	= &rk3399_dmcfreq_pm,
> +		.pm	= pm_sleep_ptr(&rk3399_dmcfreq_pm),

[Severity: Low]
Should this use pm_ptr() instead of pm_sleep_ptr() for the structure pointer?
According to PM subsystem guidelines, pm_sleep_ptr() is intended for sleep
callbacks, while pm_ptr() should be used for the dev_pm_ops structure pointer
itself.

>  		.of_match_table = rk3399dmc_devfreq_of_match,
>  	},
>  };
> diff --git a/drivers/devfreq/sun8i-a33-mbus.c b/drivers/devfreq/sun8i-a33-mbus.c
> index 4bd5657558d6b..1636501c753ee 100644
> --- a/drivers/devfreq/sun8i-a33-mbus.c
> +++ b/drivers/devfreq/sun8i-a33-mbus.c
[ ... ]
> @@ -479,7 +479,7 @@ static struct platform_driver sun8i_a33_mbus_driver = {
>  	.driver	= {
>  		.name		= "sun8i-a33-mbus",
>  		.of_match_table	= sun8i_a33_mbus_of_match,
> -		.pm		= pm_ptr(&sun8i_a33_mbus_pm_ops),
> +		.pm		= pm_sleep_ptr(&sun8i_a33_mbus_pm_ops),

[Severity: Low]
Similar to the rk3399_dmc driver above, should this remain pm_ptr() for the
structure pointer instead of being changed to pm_sleep_ptr()?

>  	},
>  };
  

Patch

diff --git a/drivers/devfreq/rk3399_dmc.c b/drivers/devfreq/rk3399_dmc.c
index dbdce7636ca5..3ebc817fa608 100644
--- a/drivers/devfreq/rk3399_dmc.c
+++ b/drivers/devfreq/rk3399_dmc.c
@@ -243,7 +243,7 @@  static int rk3399_dmcfreq_get_cur_freq(struct device *dev, unsigned long *freq)
 	return 0;
 }
 
-static __maybe_unused int rk3399_dmcfreq_suspend(struct device *dev)
+static int rk3399_dmcfreq_suspend(struct device *dev)
 {
 	struct rk3399_dmcfreq *dmcfreq = dev_get_drvdata(dev);
 	int ret = 0;
@@ -263,7 +263,7 @@  static __maybe_unused int rk3399_dmcfreq_suspend(struct device *dev)
 	return 0;
 }
 
-static __maybe_unused int rk3399_dmcfreq_resume(struct device *dev)
+static int rk3399_dmcfreq_resume(struct device *dev)
 {
 	struct rk3399_dmcfreq *dmcfreq = dev_get_drvdata(dev);
 	int ret = 0;
@@ -282,7 +282,7 @@  static __maybe_unused int rk3399_dmcfreq_resume(struct device *dev)
 	return ret;
 }
 
-static SIMPLE_DEV_PM_OPS(rk3399_dmcfreq_pm, rk3399_dmcfreq_suspend,
+static DEFINE_SIMPLE_DEV_PM_OPS(rk3399_dmcfreq_pm, rk3399_dmcfreq_suspend,
 			 rk3399_dmcfreq_resume);
 
 static int rk3399_dmcfreq_of_props(struct rk3399_dmcfreq *data,
@@ -477,7 +477,7 @@  static struct platform_driver rk3399_dmcfreq_driver = {
 	.remove = rk3399_dmcfreq_remove,
 	.driver = {
 		.name	= "rk3399-dmc-freq",
-		.pm	= &rk3399_dmcfreq_pm,
+		.pm	= pm_sleep_ptr(&rk3399_dmcfreq_pm),
 		.of_match_table = rk3399dmc_devfreq_of_match,
 	},
 };
diff --git a/drivers/devfreq/sun8i-a33-mbus.c b/drivers/devfreq/sun8i-a33-mbus.c
index 4bd5657558d6..1636501c753e 100644
--- a/drivers/devfreq/sun8i-a33-mbus.c
+++ b/drivers/devfreq/sun8i-a33-mbus.c
@@ -312,7 +312,7 @@  static int sun8i_a33_mbus_hw_init(struct device *dev,
 	return 0;
 }
 
-static int __maybe_unused sun8i_a33_mbus_suspend(struct device *dev)
+static int sun8i_a33_mbus_suspend(struct device *dev)
 {
 	struct sun8i_a33_mbus *priv = dev_get_drvdata(dev);
 
@@ -321,7 +321,7 @@  static int __maybe_unused sun8i_a33_mbus_suspend(struct device *dev)
 	return 0;
 }
 
-static int __maybe_unused sun8i_a33_mbus_resume(struct device *dev)
+static int sun8i_a33_mbus_resume(struct device *dev)
 {
 	struct sun8i_a33_mbus *priv = dev_get_drvdata(dev);
 
@@ -470,7 +470,7 @@  static const struct of_device_id sun8i_a33_mbus_of_match[] = {
 };
 MODULE_DEVICE_TABLE(of, sun8i_a33_mbus_of_match);
 
-static SIMPLE_DEV_PM_OPS(sun8i_a33_mbus_pm_ops,
+static DEFINE_SIMPLE_DEV_PM_OPS(sun8i_a33_mbus_pm_ops,
 			 sun8i_a33_mbus_suspend, sun8i_a33_mbus_resume);
 
 static struct platform_driver sun8i_a33_mbus_driver = {
@@ -479,7 +479,7 @@  static struct platform_driver sun8i_a33_mbus_driver = {
 	.driver	= {
 		.name		= "sun8i-a33-mbus",
 		.of_match_table	= sun8i_a33_mbus_of_match,
-		.pm		= pm_ptr(&sun8i_a33_mbus_pm_ops),
+		.pm		= pm_sleep_ptr(&sun8i_a33_mbus_pm_ops),
 	},
 };
 module_platform_driver(sun8i_a33_mbus_driver);