Skip to contentSkip to conversation

FAILED: patch "[PATCH] iio: imu: inv_icm42600: fix timestamps after suspend if" failed to apply to 6.6-stable tree

PATCH In review [email protected] 3 participants 3 messages Jan 13, 2025

Subsystems (3)
lore
Share & tools
lore

[email protected]

author maintainer
#0 lore raw

The patch below does not apply to the 6.6-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.

To reproduce the conflict and resubmit, you may use the following commands:

git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.6.y
git checkout FETCH_HEAD
git cherry-pick -x 65a60a590142c54a3f3be11ff162db2d5b0e1e06
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2025011353-untried-juniper-fe92@gregkh' --subject-prefix 'PATCH 6.6.y' HEAD^..

Possible dependencies:

thanks,

greg k-h

------------------ original commit in Linus's tree ------------------

From 65a60a590142c54a3f3be11ff162db2d5b0e1e06 Mon Sep 17 00:00:00 2001
From: Jean-Baptiste Maneyrol <[email protected]>
Date: Wed, 13 Nov 2024 21:25:45 +0100
Subject: [PATCH] iio: imu: inv_icm42600: fix timestamps after suspend if
sensor is on

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.

drivers/iio/imu/inv_icm42600/inv_icm42600_core.c +6 -1
index e43538e536f0..ef9875d3b79d 100644
@@ -829,6 +829,8 @@ static int inv_icm42600_suspend(struct device *dev)
 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);
#1 lore raw

PATCH 1/1 iio: imu: inv_icm42600: fix timestamps after suspend if sensor is on

From: Jean-Baptiste Maneyrol <[email protected]>

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")
(cherry picked from commit 65a60a590142c54a3f3be11ff162db2d5b0e1e06)
---
 drivers/iio/imu/inv_icm42600/inv_icm42600_core.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c +7 -1
index a5e81906e37e..d938bc454397 100644
@@ -17,6 +17,7 @@
 #include <linux/regmap.h>
 
 #include <linux/iio/iio.h>
+#include <linux/iio/common/inv_sensors_timestamp.h>
 
 #include "inv_icm42600.h"
 #include "inv_icm42600_buffer.h"
@@ -725,6 +726,8 @@ static int inv_icm42600_suspend(struct device *dev)
 static int inv_icm42600_resume(struct device *dev)
 {
 	struct inv_icm42600_state *st = dev_get_drvdata(dev);
+	struct inv_sensors_timestamp *gyro_ts = iio_priv(st->indio_gyro);
+	struct inv_sensors_timestamp *accel_ts = iio_priv(st->indio_accel);
 	int ret;
 
 	mutex_lock(&st->lock);
@@ -745,9 +748,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_ts);
+		inv_sensors_timestamp_reset(accel_ts);
 		ret = regmap_write(st->map, INV_ICM42600_REG_FIFO_CONFIG,
 				   INV_ICM42600_FIFO_CONFIG_STREAM);
+	}
 
 out_unlock:
 	mutex_unlock(&st->lock);
Signature · 1 line
2.25.1
maintainer
#2 lore raw

Re: [PATCH 6.6.y] iio: imu: inv_icm42600: fix timestamps after suspend if sensor is on

[ Sasha's backport helper bot ]

Hi,

Found matching upstream commit: 65a60a590142c54a3f3be11ff162db2d5b0e1e06

WARNING: Author mismatch between patch and found commit:
Backport author: [email protected]
Commit author: Jean-Baptiste Maneyrol<[email protected]>

Status in newer kernel trees:
6.12.y | Present (different SHA1: 7982d8f24a9b)
6.6.y | Not found

Note: The patch differs from the upstream commit:
---
1: 65a60a590142 ! 1: 9c96f19a264e iio: imu: inv_icm42600: fix timestamps after suspend if sensor is on

    @@ Commit message
         Signed-off-by: Jean-Baptiste Maneyrol <[email protected]>
         Link: https://patch.msgid.link/20241113-inv_icm42600-fix-timestamps-after-suspend-v1-1-dfc77c394173@tdk.com
         Signed-off-by: Jonathan Cameron <[email protected]>
    +    (cherry picked from commit 65a60a590142c54a3f3be11ff162db2d5b0e1e06)
     
      ## drivers/iio/imu/inv_icm42600/inv_icm42600_core.c ##
    +@@
    + #include <linux/regmap.h>
    + 
    + #include <linux/iio/iio.h>
    ++#include <linux/iio/common/inv_sensors_timestamp.h>
    + 
    + #include "inv_icm42600.h"
    + #include "inv_icm42600_buffer.h"
     @@ drivers/iio/imu/inv_icm42600/inv_icm42600_core.c: static int inv_icm42600_suspend(struct device *dev)
      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);
    ++	struct inv_sensors_timestamp *gyro_ts = iio_priv(st->indio_gyro);
    ++	struct inv_sensors_timestamp *accel_ts = iio_priv(st->indio_accel);
      	int ret;
      
      	mutex_lock(&st->lock);
    @@ drivers/iio/imu/inv_icm42600/inv_icm42600_core.c: static int inv_icm42600_resume
      	/* 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);
    ++		inv_sensors_timestamp_reset(gyro_ts);
    ++		inv_sensors_timestamp_reset(accel_ts);
      		ret = regmap_write(st->map, INV_ICM42600_REG_FIFO_CONFIG,
      				   INV_ICM42600_FIFO_CONFIG_STREAM);
     +	}

---

Results of testing on various branches:

| Branch                    | Patch Apply | Build Test |
|---------------------------|-------------|------------|
| stable/linux-6.6.y        |  Success    |  Success   |