]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
iio: bmi323: suspend and resume triggering on relevant pm operations
authorDenis Benato <benato.denis96@gmail.com>
Wed, 7 Aug 2024 18:56:19 +0000 (20:56 +0200)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Sat, 10 Aug 2024 10:19:36 +0000 (11:19 +0100)
Prevent triggers from stop working after the device has entered sleep:
use iio_device_suspend_triggering and iio_device_resume_triggering helpers.

Signed-off-by: Denis Benato <benato.denis96@gmail.com>
Link: https://patch.msgid.link/20240807185619.7261-3-benato.denis96@gmail.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/imu/bmi323/bmi323.h
drivers/iio/imu/bmi323/bmi323_core.c
drivers/iio/imu/bmi323/bmi323_i2c.c
drivers/iio/imu/bmi323/bmi323_spi.c

index dff126d41658393ca49f28fc8e7b0f1920cf97f4..209bccb1f335cfb5a4f8b009cc20b8fe2fe93071 100644 (file)
 struct device;
 int bmi323_core_probe(struct device *dev);
 extern const struct regmap_config bmi323_regmap_config;
+extern const struct dev_pm_ops bmi323_core_pm_ops;
 
 #endif
index d708d1fe3e425477d12559956b2df82a0397fe6f..4b2b211a3e88c6af1699fc4a4c8e12f16c0c180c 100644 (file)
@@ -2121,6 +2121,29 @@ int bmi323_core_probe(struct device *dev)
 }
 EXPORT_SYMBOL_NS_GPL(bmi323_core_probe, IIO_BMI323);
 
+#if defined(CONFIG_PM)
+static int bmi323_core_runtime_suspend(struct device *dev)
+{
+       struct iio_dev *indio_dev = dev_get_drvdata(dev);
+
+       return iio_device_suspend_triggering(indio_dev);
+}
+
+static int bmi323_core_runtime_resume(struct device *dev)
+{
+       struct iio_dev *indio_dev = dev_get_drvdata(dev);
+
+       return iio_device_resume_triggering(indio_dev);
+}
+
+#endif
+
+const struct dev_pm_ops bmi323_core_pm_ops = {
+       SET_RUNTIME_PM_OPS(bmi323_core_runtime_suspend,
+                          bmi323_core_runtime_resume, NULL)
+};
+EXPORT_SYMBOL_NS_GPL(bmi323_core_pm_ops, IIO_BMI323);
+
 MODULE_DESCRIPTION("Bosch BMI323 IMU driver");
 MODULE_AUTHOR("Jagath Jog J <jagathjog1996@gmail.com>");
 MODULE_LICENSE("GPL");
index 3298e027c97e91d734f2c49d7119bf86083b4e35..0ba5d69d8329aed0efccad7def00c3af7574a281 100644 (file)
@@ -128,6 +128,7 @@ MODULE_DEVICE_TABLE(of, bmi323_of_i2c_match);
 static struct i2c_driver bmi323_i2c_driver = {
        .driver = {
                .name = "bmi323",
+               .pm = pm_ptr(&bmi323_core_pm_ops),
                .of_match_table = bmi323_of_i2c_match,
                .acpi_match_table = bmi323_acpi_match,
        },
index 571e1cd7ce725424f02cf1f50f2771abfa1c6cdf..9de3ade78d714d19170400ca3f2bb9bf5d7d7c96 100644 (file)
@@ -79,6 +79,7 @@ MODULE_DEVICE_TABLE(of, bmi323_of_spi_match);
 static struct spi_driver bmi323_spi_driver = {
        .driver = {
                .name = "bmi323",
+               .pm = pm_ptr(&bmi323_core_pm_ops),
                .of_match_table = bmi323_of_spi_match,
        },
        .probe = bmi323_spi_probe,