]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
iio: imu: inv_icm42600: fix timestamps after suspend if sensor is on
authorJean-Baptiste Maneyrol <jean-baptiste.maneyrol@tdk.com>
Wed, 13 Nov 2024 20:25:45 +0000 (21:25 +0100)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Sat, 7 Dec 2024 17:23:41 +0000 (17:23 +0000)
Currently suspending while sensors are one will result in timestamping
continuing without gap at resume. It can work with monotonic clock but
not with other clocks. Fix that by resetting timestamping.

Fixes: ec74ae9fd37c ("iio: imu: inv_icm42600: add accurate timestamping")
Cc: stable@vger.kernel.org
Signed-off-by: Jean-Baptiste Maneyrol <jean-baptiste.maneyrol@tdk.com>
Link: https://patch.msgid.link/20241113-inv_icm42600-fix-timestamps-after-suspend-v1-1-dfc77c394173@tdk.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c

index e43538e536f0abe63a38acab58bd0338c37ac35a..ef9875d3b79db116f9fb4f6d881a7979292c1792 100644 (file)
@@ -829,6 +829,8 @@ out_unlock:
 static int inv_icm42600_resume(struct device *dev)
 {
        struct inv_icm42600_state *st = dev_get_drvdata(dev);
+       struct inv_icm42600_sensor_state *gyro_st = iio_priv(st->indio_gyro);
+       struct inv_icm42600_sensor_state *accel_st = iio_priv(st->indio_accel);
        int ret;
 
        mutex_lock(&st->lock);
@@ -849,9 +851,12 @@ static int inv_icm42600_resume(struct device *dev)
                goto out_unlock;
 
        /* restore FIFO data streaming */
-       if (st->fifo.on)
+       if (st->fifo.on) {
+               inv_sensors_timestamp_reset(&gyro_st->ts);
+               inv_sensors_timestamp_reset(&accel_st->ts);
                ret = regmap_write(st->map, INV_ICM42600_REG_FIFO_CONFIG,
                                   INV_ICM42600_FIFO_CONFIG_STREAM);
+       }
 
 out_unlock:
        mutex_unlock(&st->lock);