From: Satyam Gupta <sgsatyam@google.com>
To: Tzung-Bi Shih <tzungbi@kernel.org>
Cc: Benson Leung <bleung@chromium.org>,
Guenter Roeck <groeck@chromium.org>,
Gwendal Grignou <gwendal@chromium.org>,
Scott Collyer <scollyer@google.com>,
chrome-platform@lists.linux.dev, linux-kernel@vger.kernel.org,
Satyam Gupta <sgsatyam@google.com>
Subject: [PATCH v6 5/7] platform/chrome: cros_ec_sensorhub: Reset TS filter on ODR or mode changes
Date: Thu, 29 Oct 2026 09:28:44 +0000 [thread overview]
Message-ID: <20261029092846.1567475-6-sgsatyam@google.com> (raw)
In-Reply-To: <20261029092846.1567475-1-sgsatyam@google.com>
From: Scott Collyer <scollyer@google.com>
When a sensor changes Output Data Rate (ODR), or switches between active
streaming and low-frequency batching, the interval between EC interrupts
changes abruptly. Slopes measured over very different intervals then get
mixed in the same median filter history.
Reset the timestamp filter history when the interval between interrupts
changes by more than 10x compared to the previous interval.
Signed-off-by: Scott Collyer <scollyer@google.com>
Signed-off-by: Satyam Gupta <sgsatyam@google.com>
---
drivers/platform/chrome/cros_ec_sensorhub_ring.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/drivers/platform/chrome/cros_ec_sensorhub_ring.c b/drivers/platform/chrome/cros_ec_sensorhub_ring.c
index 46f44c6..cec33a7 100644
--- a/drivers/platform/chrome/cros_ec_sensorhub_ring.c
+++ b/drivers/platform/chrome/cros_ec_sensorhub_ring.c
@@ -304,6 +304,20 @@ cros_ec_sensor_ring_ts_filter_update(struct cros_ec_sensors_ts_filter_state
*/
m = clamp(m, -MAX_M, MAX_M);
+ /*
+ * Detect ODR (Output Data Rate) or mode changes (e.g., transition from
+ * active streaming to low-frequency batching). If the interval between
+ * interrupts changes by more than 10x in either direction, reset the
+ * filter history to avoid mixing slopes measured over very different
+ * intervals.
+ */
+ if (state->history_len > 1) {
+ s64 prev_dx = -state->x_history[1];
+
+ if (prev_dx > 0 && (-dx > 10 * prev_dx || prev_dx > 10 * -dx))
+ state->history_len = 0;
+ }
+
/* Empty filter if we haven't seen any action in a while. */
if (-dx > TS_HISTORY_BORED_US)
state->history_len = 0;
--
2.56.0.307.g5fe7bd680c-goog
next prev parent reply other threads:[~2026-10-29 9:29 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-29 9:28 [PATCH v6 0/7] platform/chrome: cros_ec_sensorhub: Timestamp wrap and drift filter fixes Satyam Gupta
2026-10-29 9:28 ` [PATCH v6 1/7] platform/chrome: cros_ec_sensorhub: Unwrap sample TS relative to FIFO TS Satyam Gupta
2026-10-29 9:28 ` [PATCH v6 2/7] platform/chrome: cros_ec_sensorhub: Reset TS filter on EC/AP time mismatch Satyam Gupta
2026-10-29 9:28 ` [PATCH v6 3/7] platform/chrome: cros_ec_sensorhub: Fix TS filter history shift index Satyam Gupta
2026-10-29 9:28 ` [PATCH v6 4/7] platform/chrome: cros_ec_sensorhub: Clamp clock drift slope to MAX_DRIFT_PPM Satyam Gupta
2026-10-29 9:28 ` Satyam Gupta [this message]
2026-10-29 9:28 ` [PATCH v6 6/7] platform/chrome: cros_ec_sensorhub: Increase TS_HISTORY_BORED_US to 2s Satyam Gupta
2026-10-29 9:28 ` [PATCH v6 7/7] platform/chrome: cros_ec_sensorhub: Drop sensor samples with past timestamps Satyam Gupta
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261029092846.1567475-6-sgsatyam@google.com \
--to=sgsatyam@google.com \
--cc=bleung@chromium.org \
--cc=chrome-platform@lists.linux.dev \
--cc=groeck@chromium.org \
--cc=gwendal@chromium.org \
--cc=linux-kernel@vger.kernel.org \
--cc=scollyer@google.com \
--cc=tzungbi@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®