diff mbox series

hwmon: jc42: Simplify pm ops handling

Message ID 23f24d6d-ae79-4014-b4df-dc19ddb88e3f@gmail.com (mailing list archive)
State Changes Requested
Headers show
Series hwmon: jc42: Simplify pm ops handling | expand

Commit Message

Heiner Kallweit Nov. 13, 2023, 7:20 p.m. UTC
Use pm_sleep_ptr/DEFINE_SIMPLE_DEV_PM_OPS to simplify the code.

Note: Apparently conditional compiling based on CONFIG_PM
wasn't optimal, it should have been CONFIG_PM_SLEEP.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
 drivers/hwmon/jc42.c | 14 ++------------
 1 file changed, 2 insertions(+), 12 deletions(-)

Comments

Guenter Roeck Nov. 14, 2023, 1:53 p.m. UTC | #1
On Mon, Nov 13, 2023 at 08:20:49PM +0100, Heiner Kallweit wrote:
> Use pm_sleep_ptr/DEFINE_SIMPLE_DEV_PM_OPS to simplify the code.
> 
> Note: Apparently conditional compiling based on CONFIG_PM
> wasn't optimal, it should have been CONFIG_PM_SLEEP.

Maybe that is apparent to you, but not to me, and I assume it won't
be apparent to others either. That warrants a real explanation,
not just "apparently".

Guenter
Heiner Kallweit Nov. 14, 2023, 2:16 p.m. UTC | #2
On 14.11.2023 14:53, Guenter Roeck wrote:
> On Mon, Nov 13, 2023 at 08:20:49PM +0100, Heiner Kallweit wrote:
>> Use pm_sleep_ptr/DEFINE_SIMPLE_DEV_PM_OPS to simplify the code.
>>
>> Note: Apparently conditional compiling based on CONFIG_PM
>> wasn't optimal, it should have been CONFIG_PM_SLEEP.
> 
> Maybe that is apparent to you, but not to me, and I assume it won't
> be apparent to others either. That warrants a real explanation,
> not just "apparently".
> 

See e.g. pm_generic_suspend(), it's NULL if CONFIG_PM_SLEEP isn't
defined. Another hint is the following from pm.h:

#ifdef CONFIG_PM_SLEEP
#define SET_SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
	SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn)
#else
#define SET_SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn)
#endif

CONFIG_PM_SLEEP implies CONFIG_PM, but we can have a setup where
CONFIG_PM is defined but CONFIG_PM_SLEEP is not. In this case
jc42_suspend/resume would be defined but not used by the PM core.

> Guenter

Heiner
diff mbox series

Patch

diff --git a/drivers/hwmon/jc42.c b/drivers/hwmon/jc42.c
index f958e830b..5cd0b8cc6 100644
--- a/drivers/hwmon/jc42.c
+++ b/drivers/hwmon/jc42.c
@@ -570,8 +570,6 @@  static void jc42_remove(struct i2c_client *client)
 	}
 }
 
-#ifdef CONFIG_PM
-
 static int jc42_suspend(struct device *dev)
 {
 	struct jc42_data *data = dev_get_drvdata(dev);
@@ -598,15 +596,7 @@  static int jc42_resume(struct device *dev)
 	return regcache_sync(data->regmap);
 }
 
-static const struct dev_pm_ops jc42_dev_pm_ops = {
-	.suspend = jc42_suspend,
-	.resume = jc42_resume,
-};
-
-#define JC42_DEV_PM_OPS (&jc42_dev_pm_ops)
-#else
-#define JC42_DEV_PM_OPS NULL
-#endif /* CONFIG_PM */
+static DEFINE_SIMPLE_DEV_PM_OPS(jc42_pm_ops, jc42_suspend, jc42_resume);
 
 static const struct i2c_device_id jc42_id[] = {
 	{ "jc42", 0 },
@@ -626,7 +616,7 @@  static struct i2c_driver jc42_driver = {
 	.class		= I2C_CLASS_SPD | I2C_CLASS_HWMON,
 	.driver = {
 		.name	= "jc42",
-		.pm = JC42_DEV_PM_OPS,
+		.pm = pm_sleep_ptr(&jc42_pm_ops),
 		.of_match_table = of_match_ptr(jc42_of_ids),
 	},
 	.probe		= jc42_probe,