]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
hwmon: (raspberrypi) Add PM suspend/resume support
authorStefan Wahren <wahrenst@gmx.net>
Mon, 2 Dec 2024 11:58:32 +0000 (12:58 +0100)
committerGuenter Roeck <linux@roeck-us.net>
Sat, 14 Dec 2024 16:00:44 +0000 (08:00 -0800)
Add suspend/resume handler in order to stop firmware polling
during s2idle. This was just waking-up the system without a real
benefit.

Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
drivers/hwmon/raspberrypi-hwmon.c

index 10ef1e1f9458e3e560cfbf9416c87e610eb9d364..a2938881ccd2f74b80857fcab3dd98d376826f67 100644 (file)
@@ -128,10 +128,32 @@ static int rpi_hwmon_probe(struct platform_device *pdev)
        return 0;
 }
 
+static int rpi_hwmon_suspend(struct device *dev)
+{
+       struct rpi_hwmon_data *data = dev_get_drvdata(dev);
+
+       cancel_delayed_work_sync(&data->get_values_poll_work);
+
+       return 0;
+}
+
+static int rpi_hwmon_resume(struct device *dev)
+{
+       struct rpi_hwmon_data *data = dev_get_drvdata(dev);
+
+       get_values_poll(&data->get_values_poll_work.work);
+
+       return 0;
+}
+
+static DEFINE_SIMPLE_DEV_PM_OPS(rpi_hwmon_pm_ops, rpi_hwmon_suspend,
+                               rpi_hwmon_resume);
+
 static struct platform_driver rpi_hwmon_driver = {
        .probe = rpi_hwmon_probe,
        .driver = {
                .name = "raspberrypi-hwmon",
+               .pm = pm_ptr(&rpi_hwmon_pm_ops),
        },
 };
 module_platform_driver(rpi_hwmon_driver);