2023-07-06 08:50:42

by Paul Cercueil

[permalink] [raw]
Subject: [PATCH] watchdog: starfive: Remove #ifdef guards for PM related functions

Use the new PM macros for the suspend and resume functions to be
automatically dropped by the compiler when CONFIG_PM or
CONFIG_PM_SLEEP are disabled, without having to use #ifdef guards.

This has the advantage of always compiling these functions in,
independently of any Kconfig option. Thanks to that, bugs and other
regressions are subsequently easier to catch.

Signed-off-by: Paul Cercueil <[email protected]>
---
drivers/watchdog/starfive-wdt.c | 10 +++-------
1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/drivers/watchdog/starfive-wdt.c b/drivers/watchdog/starfive-wdt.c
index 8058fca4d05d..7c8a1c5e75be 100644
--- a/drivers/watchdog/starfive-wdt.c
+++ b/drivers/watchdog/starfive-wdt.c
@@ -526,7 +526,6 @@ static void starfive_wdt_shutdown(struct platform_device *pdev)
starfive_wdt_pm_stop(&wdt->wdd);
}

-#ifdef CONFIG_PM_SLEEP
static int starfive_wdt_suspend(struct device *dev)
{
struct starfive_wdt *wdt = dev_get_drvdata(dev);
@@ -556,9 +555,7 @@ static int starfive_wdt_resume(struct device *dev)

return starfive_wdt_start(wdt);
}
-#endif /* CONFIG_PM_SLEEP */

-#ifdef CONFIG_PM
static int starfive_wdt_runtime_suspend(struct device *dev)
{
struct starfive_wdt *wdt = dev_get_drvdata(dev);
@@ -574,11 +571,10 @@ static int starfive_wdt_runtime_resume(struct device *dev)

return starfive_wdt_enable_clock(wdt);
}
-#endif /* CONFIG_PM */

static const struct dev_pm_ops starfive_wdt_pm_ops = {
- SET_RUNTIME_PM_OPS(starfive_wdt_runtime_suspend, starfive_wdt_runtime_resume, NULL)
- SET_SYSTEM_SLEEP_PM_OPS(starfive_wdt_suspend, starfive_wdt_resume)
+ RUNTIME_PM_OPS(starfive_wdt_runtime_suspend, starfive_wdt_runtime_resume, NULL)
+ SYSTEM_SLEEP_PM_OPS(starfive_wdt_suspend, starfive_wdt_resume)
};

static const struct of_device_id starfive_wdt_match[] = {
@@ -594,7 +590,7 @@ static struct platform_driver starfive_wdt_driver = {
.shutdown = starfive_wdt_shutdown,
.driver = {
.name = "starfive-wdt",
- .pm = &starfive_wdt_pm_ops,
+ .pm = pm_ptr(&starfive_wdt_pm_ops),
.of_match_table = starfive_wdt_match,
},
};
--
2.40.1



2023-07-06 13:24:20

by Guenter Roeck

[permalink] [raw]
Subject: Re: [PATCH] watchdog: starfive: Remove #ifdef guards for PM related functions

On 7/6/23 01:29, Paul Cercueil wrote:
> Use the new PM macros for the suspend and resume functions to be
> automatically dropped by the compiler when CONFIG_PM or
> CONFIG_PM_SLEEP are disabled, without having to use #ifdef guards.
>
> This has the advantage of always compiling these functions in,
> independently of any Kconfig option. Thanks to that, bugs and other
> regressions are subsequently easier to catch.
>
> Signed-off-by: Paul Cercueil <[email protected]>

Reviewed-by: Guenter Roeck <[email protected]>

> ---
> drivers/watchdog/starfive-wdt.c | 10 +++-------
> 1 file changed, 3 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/watchdog/starfive-wdt.c b/drivers/watchdog/starfive-wdt.c
> index 8058fca4d05d..7c8a1c5e75be 100644
> --- a/drivers/watchdog/starfive-wdt.c
> +++ b/drivers/watchdog/starfive-wdt.c
> @@ -526,7 +526,6 @@ static void starfive_wdt_shutdown(struct platform_device *pdev)
> starfive_wdt_pm_stop(&wdt->wdd);
> }
>
> -#ifdef CONFIG_PM_SLEEP
> static int starfive_wdt_suspend(struct device *dev)
> {
> struct starfive_wdt *wdt = dev_get_drvdata(dev);
> @@ -556,9 +555,7 @@ static int starfive_wdt_resume(struct device *dev)
>
> return starfive_wdt_start(wdt);
> }
> -#endif /* CONFIG_PM_SLEEP */
>
> -#ifdef CONFIG_PM
> static int starfive_wdt_runtime_suspend(struct device *dev)
> {
> struct starfive_wdt *wdt = dev_get_drvdata(dev);
> @@ -574,11 +571,10 @@ static int starfive_wdt_runtime_resume(struct device *dev)
>
> return starfive_wdt_enable_clock(wdt);
> }
> -#endif /* CONFIG_PM */
>
> static const struct dev_pm_ops starfive_wdt_pm_ops = {
> - SET_RUNTIME_PM_OPS(starfive_wdt_runtime_suspend, starfive_wdt_runtime_resume, NULL)
> - SET_SYSTEM_SLEEP_PM_OPS(starfive_wdt_suspend, starfive_wdt_resume)
> + RUNTIME_PM_OPS(starfive_wdt_runtime_suspend, starfive_wdt_runtime_resume, NULL)
> + SYSTEM_SLEEP_PM_OPS(starfive_wdt_suspend, starfive_wdt_resume)
> };
>
> static const struct of_device_id starfive_wdt_match[] = {
> @@ -594,7 +590,7 @@ static struct platform_driver starfive_wdt_driver = {
> .shutdown = starfive_wdt_shutdown,
> .driver = {
> .name = "starfive-wdt",
> - .pm = &starfive_wdt_pm_ops,
> + .pm = pm_ptr(&starfive_wdt_pm_ops),
> .of_match_table = starfive_wdt_match,
> },
> };


2023-07-07 08:21:10

by Xingyu Wu

[permalink] [raw]
Subject: Re: [PATCH] watchdog: starfive: Remove #ifdef guards for PM related functions

On 2023/7/6 16:29, Paul Cercueil wrote:
> Use the new PM macros for the suspend and resume functions to be
> automatically dropped by the compiler when CONFIG_PM or
> CONFIG_PM_SLEEP are disabled, without having to use #ifdef guards.
>
> This has the advantage of always compiling these functions in,
> independently of any Kconfig option. Thanks to that, bugs and other
> regressions are subsequently easier to catch.
>
> Signed-off-by: Paul Cercueil <[email protected]>
> ---
> drivers/watchdog/starfive-wdt.c | 10 +++-------
> 1 file changed, 3 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/watchdog/starfive-wdt.c b/drivers/watchdog/starfive-wdt.c
> index 8058fca4d05d..7c8a1c5e75be 100644
> --- a/drivers/watchdog/starfive-wdt.c
> +++ b/drivers/watchdog/starfive-wdt.c
> @@ -526,7 +526,6 @@ static void starfive_wdt_shutdown(struct platform_device *pdev)
> starfive_wdt_pm_stop(&wdt->wdd);
> }
>
> -#ifdef CONFIG_PM_SLEEP
> static int starfive_wdt_suspend(struct device *dev)
> {
> struct starfive_wdt *wdt = dev_get_drvdata(dev);
> @@ -556,9 +555,7 @@ static int starfive_wdt_resume(struct device *dev)
>
> return starfive_wdt_start(wdt);
> }
> -#endif /* CONFIG_PM_SLEEP */
>
> -#ifdef CONFIG_PM
> static int starfive_wdt_runtime_suspend(struct device *dev)
> {
> struct starfive_wdt *wdt = dev_get_drvdata(dev);
> @@ -574,11 +571,10 @@ static int starfive_wdt_runtime_resume(struct device *dev)
>
> return starfive_wdt_enable_clock(wdt);
> }
> -#endif /* CONFIG_PM */
>
> static const struct dev_pm_ops starfive_wdt_pm_ops = {
> - SET_RUNTIME_PM_OPS(starfive_wdt_runtime_suspend, starfive_wdt_runtime_resume, NULL)
> - SET_SYSTEM_SLEEP_PM_OPS(starfive_wdt_suspend, starfive_wdt_resume)
> + RUNTIME_PM_OPS(starfive_wdt_runtime_suspend, starfive_wdt_runtime_resume, NULL)
> + SYSTEM_SLEEP_PM_OPS(starfive_wdt_suspend, starfive_wdt_resume)
> };
>
> static const struct of_device_id starfive_wdt_match[] = {
> @@ -594,7 +590,7 @@ static struct platform_driver starfive_wdt_driver = {
> .shutdown = starfive_wdt_shutdown,
> .driver = {
> .name = "starfive-wdt",
> - .pm = &starfive_wdt_pm_ops,
> + .pm = pm_ptr(&starfive_wdt_pm_ops),
> .of_match_table = starfive_wdt_match,
> },
> };

Great, Thank you for the improvements.

Best regards,
Xingyu Wu