Linux Input/HID development
 help / color / mirror / Atom feed
From: Matt Ervin <matt@impsoftware.org>
To: linux-input@vger.kernel.org
Cc: Jiri Kosina <jikos@kernel.org>, Benjamin Tissoires <bentiss@kernel.org>
Subject: [PATCH] HID: i2c-hid: reset Synaptics SYNA32A4 on resume
Date: Sat, 10 Oct 2026 14:17:43 -0700	[thread overview]
Message-ID: <20261010211743.175600-1-matt@impsoftware.org> (raw)

On the HP OMEN Laptop 15-ek0xxx (board 878B), the Synaptics SYNA32A4
touchpad (06CB:CE17, hid-multitouch via i2c_hid_acpi) is quiet before
suspend but starts asserting its interrupt continuously within a few
seconds of resuming, at a steady ~590 interrupts/s, while producing no
input events. The storm does not stop on its own; it persists until the
device is reset.

The pad sits behind i2c_designware.1, which shares its IRQ with idma64
and snd_hda_intel, so each spurious report also costs ~58 interrupts on
the shared line:

  irq17 (i2c_designware.1): 33968/s   irq63 (SYNA32A4:00): 588/s
  irq17 (i2c_designware.1): 34116/s   irq63 (SYNA32A4:00): 588/s

That keeps CPU0 at ~40% hardirq and denies it deep C-states, measured
as 3.5x less C3 residency than a sibling core. Unbinding and rebinding
the i2c_hid_acpi driver, which resets the device, takes both rates to
zero and the touchpad keeps working normally afterwards.

This is the same failure mode that I2C_HID_QUIRK_RESET_ON_RESUME was
added for in commit 538f67407e2c ("HID: i2c-hid: reset Synaptics
SYNA2393 on resume"): spurious interrupts after resume until the device
is reset. Add the SYNA32A4 to the quirk table so it is reset on resume.

Tested on a 7.2.8 kernel with this change applied to the i2c-hid module:
with the stock module a suspend/resume cycle brought the touchpad IRQ to
585/s within ten seconds of resume; with the quirk, two consecutive
suspend/resume cycles stayed at 0/s and the touchpad kept working.

Signed-off-by: Matt Ervin <matt@impsoftware.org>
---
 drivers/hid/hid-ids.h              | 1 +
 drivers/hid/i2c-hid/i2c-hid-core.c | 2 ++
 2 files changed, 3 insertions(+)

diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index a9537b7..10e694f 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -1444,6 +1444,7 @@
 
 #define I2C_VENDOR_ID_SYNAPTICS     0x06cb
 #define I2C_PRODUCT_ID_SYNAPTICS_SYNA2393   0x7a13
+#define I2C_PRODUCT_ID_SYNAPTICS_SYNA32A4   0xce17
 
 #define USB_VENDOR_ID_SYNAPTICS		0x06cb
 #define USB_DEVICE_ID_SYNAPTICS_TP	0x0001
diff --git a/drivers/hid/i2c-hid/i2c-hid-core.c b/drivers/hid/i2c-hid/i2c-hid-core.c
index a8a9854..8ab7677 100644
--- a/drivers/hid/i2c-hid/i2c-hid-core.c
+++ b/drivers/hid/i2c-hid/i2c-hid-core.c
@@ -134,6 +134,8 @@ static const struct i2c_hid_quirks {
 		 I2C_HID_QUIRK_RESET_ON_RESUME },
 	{ I2C_VENDOR_ID_SYNAPTICS, I2C_PRODUCT_ID_SYNAPTICS_SYNA2393,
 		 I2C_HID_QUIRK_RESET_ON_RESUME },
+	{ I2C_VENDOR_ID_SYNAPTICS, I2C_PRODUCT_ID_SYNAPTICS_SYNA32A4,
+		 I2C_HID_QUIRK_RESET_ON_RESUME },
 	{ USB_VENDOR_ID_ITE, I2C_DEVICE_ID_ITE_LENOVO_LEGION_Y720,
 		I2C_HID_QUIRK_BAD_INPUT_SIZE },
 	{ I2C_VENDOR_ID_CIRQUE, I2C_PRODUCT_ID_CIRQUE_1063,

base-commit: 145c2b2e9a5c0f794fb4009bcb072ab19f8ccfcd
-- 
2.56.0


                 reply	other threads:[~2026-10-10 21:45 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=20261010211743.175600-1-matt@impsoftware.org \
    --to=matt@impsoftware.org \
    --cc=bentiss@kernel.org \
    --cc=jikos@kernel.org \
    --cc=linux-input@vger.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