]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
platform/chrome: cros_ec_sensorhub: Fix EC timestamp overflow
authorGwendal Grignou <gwendal@chromium.org>
Tue, 30 Jun 2020 07:52:03 +0000 (00:52 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 3 Sep 2020 09:29:16 +0000 (11:29 +0200)
[ Upstream commit e48bc01ed5adec203676c735365373b31c3c7600 ]

EC is using 32 bit timestamps (us), and before converting it to 64bit
they were not casted, so it would overflow every 4s.
Regular overflow every ~70 minutes was not taken into account either.

Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/platform/chrome/cros_ec_sensorhub_ring.c

index 24e48d96ed7663f3f8fda74b7ace2b71c93181f1..b1c641c72f51585d4d61dc601be679b1ff4ce22d 100644 (file)
@@ -419,9 +419,7 @@ cros_ec_sensor_ring_process_event(struct cros_ec_sensorhub *sensorhub,
                         * Disable filtering since we might add more jitter
                         * if b is in a random point in time.
                         */
-                       new_timestamp = fifo_timestamp -
-                                       fifo_info->timestamp  * 1000 +
-                                       in->timestamp * 1000;
+                       new_timestamp = c - b * 1000 + a * 1000;
                        /*
                         * The timestamp can be stale if we had to use the fifo
                         * info timestamp.