Skip to content

Commit

Permalink
iio: bmi323: suspend and resume triggering on relevant pm operations
Browse files Browse the repository at this point in the history
Prevent external trigger sources to stop working after the device entering sleep: use iio_device_suspend_triggering and iio_device_resume_triggering helpers.

Signed-off-by: Denis Benato <[email protected]>
  • Loading branch information
Denis Benato committed Jul 24, 2024
1 parent ac5d0bd commit 5ce4e83
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 0 deletions.
1 change: 1 addition & 0 deletions drivers/iio/imu/bmi323/bmi323.h
Original file line number Diff line number Diff line change
Expand Up @@ -205,5 +205,6 @@
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
32 changes: 32 additions & 0 deletions drivers/iio/imu/bmi323/bmi323_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -2121,6 +2121,38 @@ 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);

int ret = iio_device_suspend_triggering(indio_dev);

return ret;
}

static int bmi323_core_runtime_resume(struct device *dev)
{
struct iio_dev *indio_dev = dev_get_drvdata(dev);

int ret = iio_device_resume_triggering(indio_dev);

return ret;
}

const struct dev_pm_ops bmi323_core_pm_ops = {
SET_RUNTIME_PM_OPS(bmi323_core_runtime_suspend,
bmi323_core_runtime_resume, NULL)
};

#else

const struct dev_pm_ops bmi323_core_pm_ops = {};

#endif

EXPORT_SYMBOL_NS_GPL(bmi323_core_pm_ops, IIO_BMI323);

MODULE_DESCRIPTION("Bosch BMI323 IMU driver");
MODULE_AUTHOR("Jagath Jog J <[email protected]>");
MODULE_LICENSE("GPL");
1 change: 1 addition & 0 deletions drivers/iio/imu/bmi323/bmi323_i2c.c
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,7 @@ MODULE_DEVICE_TABLE(of, bmi323_of_i2c_match);
static struct i2c_driver bmi323_i2c_driver = {
.driver = {
.name = "bmi323",
.pm = &bmi323_core_pm_ops,
.of_match_table = bmi323_of_i2c_match,
.acpi_match_table = bmi323_acpi_match,
},
Expand Down
1 change: 1 addition & 0 deletions drivers/iio/imu/bmi323/bmi323_spi.c
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ MODULE_DEVICE_TABLE(of, bmi323_of_spi_match);
static struct spi_driver bmi323_spi_driver = {
.driver = {
.name = "bmi323",
.pm = &bmi323_core_pm_ops,
.of_match_table = bmi323_of_spi_match,
},
.probe = bmi323_spi_probe,
Expand Down

0 comments on commit 5ce4e83

Please sign in to comment.